Preamble
Tweet is a plugin for Yahoo! Search. Such plugins are called SearchMonkeys in honor of Greasemonkey for FireFox browser. Like Greasemonkey, SearchMonkey allows developers to enhance the experience, the search experience in this case. SearchMonkeys can enhance presentation with images and additional links or by combining Yahoo!'s Search index with other structured data.
Yahoo! Search users can add SearchMonkey applications to their profile on an opt-in basis. Add Tweet to yours if you like to get much improved search results for Twitter user profiles.
Current Twitter search results
While Twitter user profiles are being indexed by all major Search engines, their summary is extremely poor. Google and Yahoo's results are nearly identical. Yahoo!'s summary of my profile (below) doesn't even include my full name (Bart Teeuwisse), which is on the page.
SearchMonkey to the rescue1
Luckily with SearchMonkey you can replace standard summaries with enhanced summaries. To improve Yahoo!'s Twitter user profile search results I wrote a SearchMonkey application called tweet that is triggered for all URLs matching *.twitter.com/*. Tweet calls Twitter's API to fetch user profile information not in the Yahoo! Search index. The result is a rich overview of a Twitter user, including last message (aka. tweet).
Tweet's challenges
Sounds simple doesn't it? Contact Twitter's API, get profile, present profile. The SearchMonkey's architecture splits this into 2 monkeys:
- A data monkey to contact Twitter's API to get the profile, and
- A presentation monkey (Tweet) to present said profile.
Well, not quite.
Speed, speed, speed
It turns out that execution speed of a SearchMonkey is key. To make the SearchMonkey Gallery a presentation monkey such as Tweet has to complete within a fraction of a second. Any call to fetch 3rd party takes too long to satisfy this requirement. Certainly calling Twitter's API whose fluctuating response times are all over the map.
Secondly, Twitter's profile API call takes a user ID, which first has to be extracted from Yahoo!'s indexed data. An additional data SearchMonkey can do that and whose output is the input to Tweet's profile feching data monkey. However, this chaining of data monkeys makes Tweet only slower.
Thirdly -as I mentioned earlier- Twitter's API has wildly varying response times. And is by no means predictable enough to guarantee a prompt response. Furthermore Twitter is having scaling issues already. Adding a SearchMonkey that calls Twitter's API for up to 10 search results for each query could make things should Tweet gain many opt-in users.
Perhaps caching can help? The SearchMonkey platform does has some caching. Unfortunately SearchMonkey developers have no control over SearchMonkey's cache. Emperical data suggests that SearchMonkeys are cached for only a few minutes. Tweet could be cached much longer without sacrificing functionality.
SearchMonkey + AppEngine = Fast Data Monkey
To mitigate these challenges I decided to use a proxy of my own in between SearchMonkey & Twitter.
- A proxy that could scale, should Tweet become popular.
- A proxy where I could control my own cache.
- And a proxy that eliminates the need for an additional data Monkey to extract the Twitter user ID from the search result.
- And lastly a proxy that returns DataRSS to minimize (XSLT) transformations in SearchMonkey.
Why not Yahoo! Pipes?
I first turned to Yahoo! Pipes, but Pipes doesn't give me caching control and the only XML output format is RSS not DataRSS. So I turned to Google's App Engine instead, which satisfies all my requirements. It offers Memcache caching, is build to scale, allows me to extract the Twitter user ID, make the Twitter API call and transform its response to DataRSS.
Developing for Google App Engine
Even though this is my 1st Python application worth mentioning, I didn't have too much trouble writing it. App Engine's documentation combined with Python's tutorials were sufficient to answer my questions. The biggest obstacle I encountered is the lack of good XML/XLT libraries for Python. There isn't a clear winner to begin with and App Engine's restriction to pure Python libraries eliminates all candidates, as I learned the hard way.
I really like the Googel App Engine SDK. No hassle configuring a web server or data base. No need to be online even. I developped about half the proxy while vanpooling to and from work!
How the proxy works
My proxy takes the URL of the search result as input from SearchMonkey. Given the trigger URL pattern these are all URLs to *.twitter.com. E.g. twitter.com, explore.twitter.com or m.twitter.com. The proxy first extracts the Twitter user ID, if any. In Twitter's URL schema, user IDs are the 1st part of the URLs path. E.g. bartt in twitter.com/bartt or twitter.com/bartt/friends
It then checks the Memcache for a profile for this ID. If it has one it composes the DataRSS response and exits. If it doesn't it calls Twitter's API. Succesfull API calls are parsed and stored in Memcache for -currently- 2 hours, before composing a DataRSS response. Failed calls return an empty DatRSS response.
Fast enough?
My proxy speeds up cached profiles by a factor 3x to 10x. Most of the time, that is. Despite App Engine's claim to scale, it does have performance issues from time to time. App Engine had an outage for a day while I tested my proxy for example.
Odly enough, Twitter's API holds the record of the fastest response time, yet its average is many times App Engine's average response time (for cached profiles). App Engine's response time is very stable - about 200 milliseconds round trip from a west coast data center.
This doesn't make Tweet fast enough to be included into the SearchMonkey Gallery though. Not only is the proxy not fast enough, to that you'll have to add the XSLT process and 'render' times by SearchMonkey. Still, Tweet is now eminently more usable and shields Twitter from API overload.
Tweet & FriendNet combined
Combine Tweet with FriendNet, one of my other monkeys for an even richer search result. FrienNet displays profiles and contacts embedded in the page. It combines hCard profiles with XFN links embedded on the page to present a social graph.
In collapsed mode -the default- FriendNet shows the number of profiles, cards and contacts found on the page by Yahoo! Search.
Expanded, FriendNet shows details of Twitter friends.
Create your own SearchMonkeys
Got your own ideas for improving Yahoo! Search? Start monkeying around! You find everything you need at SearchMonkey on the Yahoo Developer Network.
Check out the SearchMonkey Gallery for more monkeys you can use. Or take my Better Amazon monkey for a spin.
-
You'll need to have tweet installed to get the same result.
RSpec is a Behaviour Driven Development framework for Ruby for writing and executing examples of how an application should behave. A Story Framework for describing behaviour at application level & a Spec Framework for describing behaviour at object level.
FrienNet displays profiles and contacts embedded in the page. This infobar is presented only for pages that have hCard profiles embedded. FriendNet combines hCard profiles with XFN links embedded on the page to present a social graph.
FriendNet is a plugin for Yahoo! Search. Such plugins are called SearchMonkeys in honor of Greasemonkey for FireFox browser. Like Greasemonkey, SearchMonkey allows developers to enhance the experience, the search experience in this case. SearchMonkeys can enhance presentation with images and additional links or by combining Yahoo!'s Search index with other structured data.
Yahoo! Search users can add SearchMonkey applications to their profile on an opt-in basis. Add FriendNet to yours if you like to make your search more social aware.
FriendNet leverages microformats indexed by Yahoo! Search to make visible embedded user profiles and social connections. Numerous sites enrich the HTML markup of their pages with hCard and XFN microformats to make profile information and social connections machine readable.
Following are several examples of profiles and social connections presented by FriendNet.
We all know and love photo sharing site Flickr. But did you know that people pages are marked up with microformats?
The example below shows Yahoo!'s standard summary for my Flickr profile followed by FriendNet's display of profiles and connections found on this page: 3 profiles, 10 contacts and 1 hCard. (For brevity not all contacts are shown.)
Above the grey line is FriendNet's synopsis. If you search for Flickr profiles 1 you'll notice FriendNet's synopsis below results that contain hCard markup. Below the grey line are the expanded details for FriendNet which one gets by clicking the blue triangle in the synopsis.
The 1st profile comes from the 1 embeded hCard. The 2 other profiles come from me XFN links. The hCard only included my full name and location. If Flickr adds my buddy icon it would replace the placeholder smiley.
The 10 contacts are all XFN links marked contact. FriendNet combines XFN links and hCards by the hCard's homepage URL for a richer presentation. As Flickr didn't have any hCards marked up for my contacts, FriendNet displays just the URLs. FriendNet's Twitter example further down the page shows how combining hCards and XFN links enriches the presentation.
FriendNet also turns Yahoo! Search into a social graph walker. Click on the magnifying glass next to a profile or connection to inspect the 'social graph' of that profile or connection.
A personal blog
FriendNet works with any kind of site that has embedded hCards. Take Dougal Campbell's personal blog for example. His homepage includes links to a number of contacts which he has tagged as 'colleague', 'acquaintance', 'met', etc. to indicate his relationship with them. See what FriendNet presents for Dougal's last connaction at Yahoo! Search.
Dougal doesn't have a XFN me link to dougal.gunters.org, which is why FriendNet placed Dougal's own hCard in the contact section instead of under his profiles.
The University of Notre Dame
The University of Notre Dame 1 simply included 1 hCard with the universities contact information. Simple but effective.
Pownce
Pownce is another social messenging site. A bit like Twitter except that you can also send links, files and events. And a whole lot more confusing. As the example below shows, their use of hCards could be improved. The name and photo of my 1 contact on pownce weren't included in the hCard. If they add them FriendNet will dutifully show them. Add an XFN me link to pownce.com/bartt/ and my hCard will move from the contact list into the profile list where it belongs.
Twitter is a service for friends, family and co-workers to send quick updates on what they are doing. Twitter has been growing like a weed.
Twitter's use of hCard and XFN is pretty good. Both my Twitter profile and my contacts have been marked up with hCard and XFN. The combination of hCard and XFN data yields an enriched presentation. Contacts are listed by their full name and buddy icon. Compare this to Flickr's example where contacts are listed as URLs. The one improvement Twitter could make is including my buddy icon and location in my hCard.
Note: I'm working on another SearchMonkey called Tweet for enhanced presentation of Twitter profiles. You see Tweet's synopsis in the above example. More about Tweet in a later post.
Yahoo! Finance
Doing a blanket search for hCards on Yahoo! Search 1 I came upon some interesting use of hCards. Yahoo! Finance for example uses it to list their financial experts.
Create your own SearchMonkeys
Got your own ideas for improving Yahoo! Search? Start monkeying around! You find everything you need at SearchMonkey on the Yahoo Developer Network.
Check out the SearchMonkey Gallery for more monkeys you can use. Or take my Better Amazon monkey for a spin.
-
You'll need to have FriendNet installed.
BookMooch lets you give away books you no longer need in exchange for books you want. Every time you give someone a book, you earn a point and can get any book you want at BookMooch. Once you've read a book, you can keep it or put it back into BookMooch.
hReview is a simple, open, distributed format, suitable for embedding reviews (of products, services, businesses, events, etc.) in HTML, XHTML, Atom, RSS, and arbitrary XML. hReview is one of several microformats open standards.
This ontology attempts to model a subset of vCards in RDF using modern (circa 2005) RDF best practices. The subset selected is the same subset that the microformats community has adopted for use in hCard.
hCard is a simple, open, distributed format for representing people, companies, organizations, and places, using a 1:1 representation of vCard (RFC2426) properties and values in semantic HTML or XHTML.
This specification describes the FOAF language, defined as a dictionary of named properties and classes using W3C's RDF technology.
This guide collects links to Semantic Web toolkits for different programming languages and gives an overview about the features of each toolkit, the strength of the development effort and the toolkit's user community.
# Explore our free house plans and find the right design for your lifestyle.
# Customize your house plan with help from our experts.
# Share your experience and learn from others on the FreeGreen Blog.
This tutorial will introduce you to gadgets and OpenSocial, and will walk you through the steps required to build a simple social gadget where you can give gifts to your friends
This tutorial focuses on a simple photo-sharing app that uses a 3rd-party server to host photos and associated metadata. We implement the app in the cloud; using Google App Engine, and leveraging Amazon's S3 data storage service.
A syntax for expressing URIs in a generic, abbreviated syntax. The target audience for this document is Language designers, not the users of those Languages.
WorldCat connects you to the collections and services of more than 10,000 libraries worldwide
Your users are able to see complementary sources of information, look up physical items in WorldCat libraries, link to electronic resources such as full-text articles, and quickly access library-based information customized to their interests.
We have about 30 million records. We built the database infrastructure and the wiki interface, and you can search book records, narrow results by facet, and search the full text of 230K scanned books. Open Library is a project of the Internet Archive
Glue Pages unite your Classic Search Results with visual information from the best sites anywhere on the Web. In one click, browse through images, videos, articles, and more all on one page! You spend more time learning and less time searching.
The Library Catalog, your account, local history & more
252 allowed entities in HTML 4 and XHTML 1.0, as outlined in section 24 of the official HTML 4 specifications, published by the W3C. The entities have been divided and color coded into the following logical categories for the purpose of orgainization.
Enhance user experience with 'Send to Mobile' button that sends content you specify to any mobile via SMS.
Ad inventory that delivers 130 character adverts on user requested SMS content.
Use API to add integrated SMS funcitonality directly to your apps.
Rules found in years developing, teaching and implementing unobtrusive JavaScript.They have helped me deliver products faster, with much higher quality and easier to maintain.
Wilson Miner is a designer and web developer in San Francisco.
ShareThis for Publishers. Use ShareThis on your site for: Increased Content Distribution, Less Clutter & Free Tracking
Get users signed in as quickly and efficiently as possible. Provide a simple, consistent, provider neutral interface, and educate the user about OpenID during sign in. Make OpenID easier for the user to the benefit of relying parties and OpenID providers.
ImageMagick can read, convert and write images in a variety of formats. Translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
Autotest is a great tool to speed up test-driven development with Ruby or Ruby on Rails. It automatically runs a subset of your test suite on changes. This article will get you up and running in no time, so that you may concentrate on writing code.
Faster, Lighter, More Agile. Like Ruby on Rails, Merb is an MVC framework. Unlike Rails, Merb is ORM-agnostic, JavaScript library agnostic, and template language agnostic, preferring plugins over a monolithic library with everything in the core.
PicLens instantly transforms your browser into a full-screen, 3D experience for viewing images on the web. Photos will come to life via a cinematic presentation that goes well beyond the confines of the traditional browser window.
Designed for humans first and machines second, microformats are a set of simple, open data formats built upon existing and widely adopted standards.
The Static Maps API lets you embed a Google Maps image on your webpage without requiring JavaScript. The Google Static Map service creates your map based on URL parameters sent through a standard HTTP request and returns the map as an image.
Real-time torrent comparison search engine
Google Calendar Sync allows you to sync events between Google Calendar and Microsoft Outlook Calendar. You'll be able to determine the direction of information flow, as well as the sync frequency
ruby-debug allows you to see "inside" a program as it executes. It can do 4 things to help catch bugs: Start your script, specifying its behavior. Make your script stop on specified conditions. Examine what has happened. Change things in your script.
Create a destination for the things you're talking about. Share your things with your friends, meet new people.
Graph your Twitter Stats including Tweets per hour, Tweets per month & Tweet timeline
PuTTYcyg is a patched version of PuTTY that, in addition to telnet, rlogin, ssh, and serial onnections, can also be used as a local Cygwin terminal instead of the Windows console or xterm.
rcodetools is a collection of Ruby coding tools. It includes xmpfilter and other dev. tools, plus emacs and vim interfaces. rcodetools comprises of xmpfilter, rct-complete, rct-doc, rct-meth-args, rct-fork, rct-fork-client, ruby-toggle-file & rbtest.
FastRI is an alternative to the "ri" documentation browser for Ruby. FastRI can operate in standalone mode (without using a DRb server, see below), so it can now fully replace ri for most intents and purposes.
rcov is a code coverage tool for Ruby. It is commonly used for viewing overall test coverage of target code. It features: fast execution, multiple analysis modes, differential code coverage, colorblind-friendliness and more.
connect.c is the simple relaying command to make network connection via SOCKS and https proxy. It is mainly intended to be used as proxy command of OpenSSH.
Drop.io enables you to create simple private exchange points called drops. The service has no email signup and no "accounts." Each drop is private, and only as accessible as you choose to deliberately make it. Access drops via web, email, phone or widget.
Piston is a utility that eases vendor branch management. This is similar to svn:externals, except you have a local copy of the files, which you can modify at will.
DRb allows an object in one Ruby process to invoke methods in another Ruby process on the same or a different machine. The Ruby standard library contains DRb core classes. The full package adds ACLs, distributed task management system and samples.
BackgrounDRb is a Ruby job server and scheduler. It is to be used with Ruby on Rails for offloading long-running tasks. Since Rails blocks while serving a request it is best to move long-running tasks off into a process that is divorced from the request.
Ruby on Rails platform build on top of Amazon's Elastic Computing Cloud (EC2) with in browser editing.
It has long been common practise to use recurring solutions to solve common problems. Such solutions are also called design patterns. Collections of software design patterns are standard reference points for the experienced user interface designer.
The mission of the Santa Cruz County Resource Conservation District is to help people protect, conserve, and restore natural resources through information, education, and technical assistance programs.
You already enjoy a bunch of great services with your Yahoo! account. With OpenID, your Yahoo! account now lets you go beyond Yahoo!. Plus, the free Yahoo! Sign-In Seal will help protect you from password theft, also known as phishing.
This portion of moby.com, 'film music', is for independent and non-profit filmmakers, film students, and anyone in need of free music for their independent, non-profit film, video, or short.
These Photoshop brushes, patterns, and tutorials are all for usage in Photoshop 7+. They are free.
We're Textile Outfitters - the best darned place to get EVERYTHING you need to MAKE your own high-quality outdoor activewear. And we mean EVERYTHING - from patterns to fabrics to accessories to notions to hardware to linings to great information.
IronPython is a .NET Python implementation. It supports an interactive console with dynamic compilation. It is well integrated with the .NET Framework and makes .NET libraries easily available to Python, while maintaining full compatibility with Python.
The Google Chart API returns a PNG-format image in response to a URL. Several types of image can be generated: line, bar, and pie charts for example. For each image type you can specify attributes such as size, colors, and labels.
Nicely organized collection of links to ajax, blog, flash, fonts and many more topics.
Ferret is a high-performance, full-featured text search engine library written for Ruby. It is inspired by Apache Lucene Java project.
The well-known PDFlib software suite is a library which allows programmers to generate and manipulate PDF files and integrate this ability into any application or server environment.
Manage tasks quickly and easily. Get reminded, anywhere. Organize the way you want to.
Organize the way you want to. Work together to get things done. Add tasks wherever you are.
Today I'm publishing 3 Ruby on Rails plugins:
- Crumblr, a Ruby on Rails plugin to protect against Cross-Site Request Forgery.
- ImageBundle, a Ruby on Rails plugin to automatically bundle local images into CSS sprites.
- StringExt, a Ruby on Rails plugin that adds class method rand to class String.
I won't go into details here, their documentation speaks for itself.
All plugins are listed on Agile Web Development's Ruby on Rails plugin directory: Crumblr, ImageBundle & StringExt.
If you haven't already, install rapt, a script/plugin replacement. Rapt taps directly into Agile Web Development's plugin directory. Now you can search the plugin directory instead of having to hunt for plugin sources.
Let me know what you think about these plugins.
Who else wants better hosting? Oversold capacity. Slow performance. Restricted access. Misconfigured software. Who wants better hosting? You do. Quad processor machines, RAID1 drives, Tier-1 bandwidth and root access. Managed with a customized Xen VPS.
In this article we’d like to present an overview of over 40 excellent free fonts you might use for your professional designs in 2008.
Firebug is an extension for Firefox, but what happens when you need to test your pages in Internet Explorer, Opera, and Safari? The solution is Firebug Lite, a JavaScript file you can insert into your pages to simulate the Firebug console in all browsers.
The Javascript Bubbling Library is a set of plugins, behaviors and widgets, for building event-driven web applications using the bubble-up technique. The Bubbling Library can be used to extend the YUI Library.
Blueprint is a CSS framework, which aims to cut down on your CSS development time. It gives you a solid CSS foundation to build your project on top of, with an easy-to-use grid, sensible typography, and even a stylesheet for printing.
The best way to do rounded corners, drop shadows, translucent backgrounds, and other tasty browser candy. Here are techniques from three of Yahoo!'s finest front-end engineers, Scott Schiller, Leslie Sommer, and Hedger Wang.
Global variables are evil. Everthing in YUI makes use of members within the YAHOO object or variables scoped to members. Douglas Crockford teaches a singleton pattern for this discipline called the "module pattern."
What can you do if you can’t use eval()?
How do I get round using certain characters/words?
How do you call anonymous functions?
How can you create a string?
I really need this character but it’s not allowed, how do I get it?
etc...
My UIUC Yahoo Hack Day entry. Influenced by YUI Grid Builder, Pages emulates an advanced WYSIWYG web page builder inside the browser. Use to build the perfect layout and then customize your web page by double-clicking to edit content in the HTML Editor.
Let Elf help you manage your library loans and holds. Track your library books.
An overview of calendar scripts (Ajax, PHP, DHTML etc.), applications, tools and related services, including CSS-styling of online calendars and web-services you can use to generate a printable weekly planners and monthly and yearly calendars for free.
Casper's hand outlined on paper. He must have been about 15 months at the time.
The Levelator adjusts the audio levels within your podcast or other audio file for variations. It's not a compressor, normalizer or limiter although it contains all three. It's much more than those tools, and it's much simpler to use.
This document describes an XML format (vocabulary) for the exchange of structured locale data. This format is used in the Unicode Common Locale Data Repository.
Transparent messages are simply large and translucent messages displayed over the contents of your screen. They fade away when the user takes any action (like typing or moving the mouse). In practice, the message is both noticeable yet unobtrusive.
This form will allow you to encode your e-mail address through the use of Character Entities, transforming your ascii email address into its equivalent decimal entity.
Specifications for 4 normalized forms of Unicode text. In these forms, equiv. text (canonical or compatibility) will have ident. binary repr. When strings are in a normalized form, they can be assured that equiv. strings have a unique binary repr.
This document describes an XML format (vocabulary) for the exchange of structured locale data. This format is used in the Unicode Common Locale Data Repository.
Over 195,000 new novels are published by traditional publishers in the U.S. every year. Of those, 70% sell fewer than 500 copies. Yikes. To be in the other 30% of authors, you must seize every promotional advantage you can.
Swiss Legacy, by the initiative of Xavier Encinas, is a collaborative blog focused on typography, swiss graphic design and grid.
A tutorial guide for implementing OpenID support with a web site that already has user accounts. How to easily let new users sign up for an account using their OpenID URL and how to let existing users attach their OpenID(s) so they can sign in using them.
PHP.net style documentation for Rails
Provides a smooth transition for programmers into the world of Ruby on Rails. We focus on providing the information you need in an easily digestible format, with real-world examples and community driven comments.
Welcome to the Ruby Standard Library Documentation collection, brought to you by the ruby-doc project. Whether you are browsing online or offline, we hope that your use of Ruby's standard library will become more productive as a result of this effort.
ruby-doc.org is hosted and maintained by James Britt and Neurogami, LLC, a Ruby consulting company. The site was created in 2002 as part of the Ruby Documentation Project to promote the Ruby language and to help other Ruby hackers.
Rails is a web-application and persistence framework that includes everything needed to create database-backed web-applications according to the Model-View-Control pattern of separation.
This guide contains everything you'll need to learn how to build great IVR applications with VoiceXML: tutorials, sample code, detailed language specification & element reference, covering everything from VoiceXML best practices to advanced topics.
This document specifies VoiceXML, designed for creating audio dialogs that feature synthesized speech, digitized audio, recognition of spoken and DTMF key input, recording of spoken input, telephony, and mixed initiative conversations.
RFacebook is a Ruby interface to the Facebook API. It hides all the nitty-gritty details behind a beautiful Ruby front-end, allowing you to focus on writing great code.
There's font styles, margin, padding, color and what not. But there's a wall that people will run into... that point where a number of key elements need to come together to create a solid CSS-based layout that is consistent cross-browser.
RM-Install, powered by BitRock, is a free, multi-platform, enterprise-class Ruby on Rails stack enabling instantly developing and deploying great Rails applications without the worry of installing or maintaining the various integrated software components.
Your Google webmaster tools account provides information about your added sites, Sitemaps, their latest updates, and also allows you to add new Sitemaps for crawling by Google.
ISN provides an easy way to acquire globally-unique and globally-routable subscriber numbers for new communications services. ISNs are free, fast, and forever yours. ISN is also protocol neutral and may be used to support SIP, XMPP, H.323 and others.
Get the Flash Player to see this player.
I've started to experiment with SketchUp. SketchUp is an
amazing 3D modelling program. Using simple geometric building
blocks one can create sophisticated realistic 3D models. I'm going
to use SketchUp to design our new workshop/barn.
A few years ago Tatyana took me to see this house in the shape of
a barn that she had come across. I took some pictures of it
because we both liked the shape. SketchUp allowed me to load the
image and create a model of it. The result you see on the
left. Play the video to see the model rotate. The photo of the
barn has been draped over the model to texture it.
It turns out that the ratio of length and width of the model
exactly match the ratio we could build a barn in on the site we
have in mind.
Mart Teeuwisse, son of Joep Teeuwisse and Thera Naber, brother of Pim Teeuwisse was born Sep 2, 2007 at 7:25AM in Assen, the Netherlands.
Two weeks overdue Mart, entered our family later then anticipated but in good health. Mart weighted 4215 grams and is about 50 centimeters tall.
Congratulations Thera, Joep & Pim with your new family member. We hope to see you this fall at your home.
Hiep hiep hoera, Mart!
Interview stories from major companies.
Dutch version of AOL Video.
Dutch language version of YouTube.
Dutch language version -language selection dependent- of MySpaceTv
This is a complex area, made harder by browser oddities. This page deals with practical issues, and looks at some of the principles behind them. Since 2005 the robust approach is to use utf-8 encoded forms, expecting it to be submitted back in utf-8.
MTV's redesigned home page sports CSS only drop-down menus that are fast and SEO friendly. Redesign by Dan Cederholm.
Digital photography is fun, and would be more fun without exposure problems. They occur in situations, where light is most beautiful. Digital cameras can't cope with intensive interplay of light and shadow.
Map your SSH server as a Windows network drive with SftpDrive. Our SFTP file system network enables all your Windows applications
Oversized postcard sent out to Tatyanna Teeuwisse's clients to inform them of Tatyanna's new contact information.