<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-20769539</atom:id><lastBuildDate>Tue, 02 Mar 2010 22:06:23 +0000</lastBuildDate><title>Teun.ToString()</title><description>by Teun Duynstee</description><link>http://www.teuntostring.net/blog/</link><managingEditor>noreply@blogger.com (Teun)</managingEditor><generator>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-5531034468112419091</guid><pubDate>Wed, 10 Feb 2010 17:56:00 +0000</pubDate><atom:updated>2010-02-10T19:21:12.074+01:00</atom:updated><title>A framework for creating high-performance batch jobs - with ASCII art!</title><atom:summary type='text'>Hi all, I know, I haven't been posting for a while. I'm alive, really. Proof:

I just created a new project on Google project hosting called BatchFlow. It is a .NET framework to make it very easy to create highly performant, maintainable and manageable batch processing application. 

Sure, everyone can create a ConsoleApp that read in some file and creates another one, but if the volume is large </atom:summary><link>http://www.teuntostring.net/blog/2010/02/framework-for-creating-high-performance.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-4847904565717870935</guid><pubDate>Wed, 29 Jul 2009 08:11:00 +0000</pubDate><atom:updated>2009-09-08T20:26:09.595+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>performance</category><category domain='http://www.blogger.com/atom/ns#'>velocityconf</category><category domain='http://www.blogger.com/atom/ns#'>firebug</category><title>Announcing Log to Netpanel</title><atom:summary type='text'>
This blog post announces a free Firebug extension I wrote, inspired by my visit to the Velocity 2009 conference and especially the workshop by Steve Souders and the talk by (among others) Jan Odvarko on Firebug and its extensibility [end of this video].


When finding performance bottlenecks in web pages, it can be very useful to look at the exact timing of the network traffic from the </atom:summary><link>http://www.teuntostring.net/blog/2009/07/announcing-log-to-netpanel.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-5880759228216770724</guid><pubDate>Thu, 25 Jun 2009 05:48:00 +0000</pubDate><atom:updated>2009-06-25T09:01:36.924+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>velocityconf</category><title>Chunked transfer and Response.Flush</title><atom:summary type='text'>
I've been attending O'Reilly's Velocity Conference over the past days and I must say that I've learned quite a few things about web performance that I didn't know. One subject that came up in several talks was using "Transfer-Encoding: Chunked" to allow for sending to topmost part of the page to the client while most of the work for the page hasn't even started. Example:


If you look at this </atom:summary><link>http://www.teuntostring.net/blog/2009/06/chunked-transfer-and-responseflush.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-6504564929555935657</guid><pubDate>Wed, 22 Apr 2009 10:30:00 +0000</pubDate><atom:updated>2009-04-22T14:05:28.135+02:00</atom:updated><title>Securing my online presence</title><atom:summary type='text'>
It will become even more important than today to be able to influence what people find when they google your name. Eventually, they will find out everything you publicly wrote or said and many things you did in public places. Search engines will not only turn up the stupid questions you posted on forums 20 years ago, but also recognize you in pictures of frat parties 30 years ago.


But then </atom:summary><link>http://www.teuntostring.net/blog/2009/04/securing-my-online-presence.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-8857811908325290248</guid><pubDate>Fri, 10 Apr 2009 07:32:00 +0000</pubDate><atom:updated>2009-04-10T09:57:19.962+02:00</atom:updated><title>Funda live: now as a mapplet</title><atom:summary type='text'>A colleague pointed out that my iGoogle gadget for looking at the live search behavior on funda.nl, while cool, would be better implemented as a mapplet. I guess that this it true for most gadgets that have a map as their main UI. So this morning, while sick in bed, I looked over the docs for mapplets. Turns out to be really easy to convert a gadget to a mapplet: they basically are gadgets with a</atom:summary><link>http://www.teuntostring.net/blog/2009/04/funda-live-now-as-mapplet.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-1015951232170799367</guid><pubDate>Wed, 11 Mar 2009 09:26:00 +0000</pubDate><atom:updated>2009-03-11T10:43:22.090+01:00</atom:updated><title>See searching patterns on funda.nl live</title><atom:summary type='text'>

I just finished a hobby project where I try to visualize the live searching patterns of users on our site (www.funda.nl, the premier Dutch real estate site). What I basically do is track the geographical region containing the current search results. I then plot these areas in a Google Map on iGoogle with some light animation. You can click the areas to see the actual URL used to find results in</atom:summary><link>http://www.teuntostring.net/blog/2009/03/see-searching-patterns-on-fundanl-live.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-3063644951128499443</guid><pubDate>Wed, 03 Dec 2008 14:18:00 +0000</pubDate><atom:updated>2008-12-03T15:56:50.582+01:00</atom:updated><title>Microsoft's Velocity compared to memcached</title><atom:summary type='text'>As a long time .NET platform fan, I've always found it a pity that for lightweight distributed caching, I had to rely on a command line Linux-like tool (memcached). The win32 version works really well and I am a happy user, but an installer would have been nice and maybe a control panel applet. The kind of sugar coating we like so much. Oh, and extensibility with .NET plugins would have been </atom:summary><link>http://www.teuntostring.net/blog/2008/12/microsofts-velocity-compared-to.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-3962557950837131637</guid><pubDate>Tue, 08 Apr 2008 11:02:00 +0000</pubDate><atom:updated>2008-04-08T14:23:36.670+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Cloud computing</category><title>Google App Engine: golden cage?</title><atom:summary type='text'>
Yesterday, Google announced it's entry in the cloud computing game. Amazon Web Services has long been the only serious player (with S3, EC2 and SimpleDB), but now the other large online powers are lining up. Microsoft has unveiled a number of online components that would fit into a comparable image (SSDS, SkyDrive, BizTalk services). Expectations were that Google would open up it's BigTable </atom:summary><link>http://www.teuntostring.net/blog/2008/04/google-app-engine-golden-cage.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-2299708609060939951</guid><pubDate>Fri, 28 Mar 2008 17:09:00 +0000</pubDate><atom:updated>2008-03-28T18:25:10.760+01:00</atom:updated><title>Note to self: combining base path and relative path to an absolute path in C#</title><atom:summary type='text'>
Just to keep myself from figuring this out every time again. ;)

When building a URL from a base URL (say: http://www.teuntostring.net/blog/2008) and a relative path (say: ../../blog/index.html), the .NET framework supports us nicely with the Uri class. Just say:


Uri baseUrl = new Uri("http://www.teuntostring.net/blog/2008");
Uri abs = new Uri(baseUrl, "../../blog/index.html");


This works </atom:summary><link>http://www.teuntostring.net/blog/2008/03/note-to-self-combining-base-path-and.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-1621561242767702318</guid><pubDate>Tue, 19 Feb 2008 17:13:00 +0000</pubDate><atom:updated>2008-03-10T10:13:54.018+01:00</atom:updated><title>[Dutch] Ontwikkeling bij funda.nl - doe mee!</title><atom:summary type='text'>
In dit stukje ga ik je overhalen om te solliciteren bij funda en lid te worden van ons team. Ik denk namelijk dat funda voor een ontwikkelaar één van de leukste, uitdagendste en inspirerendste plekken is om te werken. 

Funda is het bedrijf achter enkele websites, waaronder funda.nl. Funda.nl is het soort website waarover iedereen een mening heeft en die voor veel Nederlanders op de short-list </atom:summary><link>http://www.teuntostring.net/blog/2008/02/dutch-ontwikkeling-bij-fundanl-doe-mee.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-6636801029999384254</guid><pubDate>Fri, 25 Jan 2008 08:25:00 +0000</pubDate><atom:updated>2008-02-10T17:09:56.256+01:00</atom:updated><title>Using Selenium to test ASP.NET Ajax UpdatePanel postbacks</title><atom:summary type='text'>Selenium is a really nice tool to do web (regression) testing. With Selenium Remote Control, you can run tests from your C# unit testing code and perform tests on a "remote controlled" browser instance. Very nice.

Recently one of my tests suddenly failed after adding ASP.NET AJAX UpdatePanels to the page. The problem turned out to be that after a Click, we normally issue a WaitForPageToLoad </atom:summary><link>http://www.teuntostring.net/blog/2008/01/using-selenium-to-test-aspnet-ajax.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-6194699299227496901</guid><pubDate>Sat, 12 Jan 2008 18:34:00 +0000</pubDate><atom:updated>2008-01-12T23:15:41.506+01:00</atom:updated><title>Searching, sorting, filtering... all client side with Exhibit</title><atom:summary type='text'>Sometimes you just run into a piece of technology that is so cool, that you wish you could make up a way to use it in a professional setting. Exhibit from the Simile project at MIT is such a technology. It brings a certain class of web application to the masses. Displaying data in compelling user interfaces that allow for searching, sorting, filtering, etc. used to be the domain of database </atom:summary><link>http://www.teuntostring.net/blog/2008/01/searching-sorting-filtering-all-client.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-8795058082955874948</guid><pubDate>Sun, 16 Dec 2007 22:30:00 +0000</pubDate><atom:updated>2007-12-16T23:40:13.672+01:00</atom:updated><title>Distribute your cache like the big boys do</title><atom:summary type='text'>Suppose you have a fairly high volume, database intensive, ASP.NET website. Chances are that you have multiple front-end webservers in a loadbalanced farm. The front-end scales nicely this way. Depending on your load and the complexity of your queries, sooner or later, your database will become your bottleneck. Among other tricks (such as reviewing your queries, upgrading hardware, partitioning </atom:summary><link>http://www.teuntostring.net/blog/2007/12/distribute-your-cache-like-big-boys-do.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-2813563980131266332</guid><pubDate>Fri, 17 Aug 2007 12:31:00 +0000</pubDate><atom:updated>2007-08-17T14:45:28.973+02:00</atom:updated><title>Finally fixed the problem w/ reporting over WSS3/MOSS lists</title><atom:summary type='text'>Sorry that this took so long. Many people have reported that using the Reporting Services Extension for SharePoint Lists gives an error when used against WSS3 or MOSS 2007, the latest incarnations of SharePoint.

For a long time, I couldn't find the time to fix the problem. I did not have a developement environment with Reporting Services anymore, so setting everything up again was not something </atom:summary><link>http://www.teuntostring.net/blog/2007/08/finally-fixed-problem-w-reporting-over.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>11</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-4943839629013882713</guid><pubDate>Thu, 26 Jul 2007 09:57:00 +0000</pubDate><atom:updated>2007-07-26T12:40:06.887+02:00</atom:updated><title>Using Surveys on anonymous access SharePoint sites</title><atom:summary type='text'>One of the nicer features of SharePoint are Surveys. They allow you to create a set of questions (both multiple choice and open) and have users of the site fill them in. It allows for selections from a set list, rating scales (where you rate a number of items along ascale from, say, 'not at all' to 'extremely') and even flow logic (where the outcome of one question causes certain questions to be </atom:summary><link>http://www.teuntostring.net/blog/2007/07/using-surveys-on-anonymous-access.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>20</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-1922755066325564432</guid><pubDate>Mon, 28 May 2007 15:18:00 +0000</pubDate><atom:updated>2007-05-28T17:24:51.998+02:00</atom:updated><title>My new book: The Web Part Infrastructure Uncovered</title><atom:summary type='text'>
Here it is! My new book(let). I finished the content quite some time ago, but then had to create a nice cover and do all of the promotional blurb text etc. For some reason, I wanted to do it all myself this time. Took me quite some extra time, but I feel really proud now.


I am also really impressed by the printing quality delivered by Lulu.com. Printing on demand is really ready to compete </atom:summary><link>http://www.teuntostring.net/blog/2007/05/my-new-book-web-part-infrastructure.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-361670488842091677</guid><pubDate>Wed, 28 Mar 2007 17:50:00 +0000</pubDate><atom:updated>2007-03-28T20:48:26.462+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sharepoint</category><title>Gantt chart for WSS 3</title><atom:summary type='text'>Some people have recently asked me about using my Gantt chart web part on WSS3 or MOSS 2007. I assumed that it would just work, WSS3 being more or less backward compatible with WSS2, but alas.
It turns out that the web part itself works just fine, but the MSI installer that worked like a charm on WSS2, fails tragically on WSS3. So I just packaged the web part in a WSS3 solution. You can download </atom:summary><link>http://www.teuntostring.net/blog/2007/03/gantt-chart-for-wss-3.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>19</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-116871706372866731</guid><pubDate>Sat, 13 Jan 2007 19:32:00 +0000</pubDate><atom:updated>2007-01-14T22:54:46.214+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sharepoint</category><title>TIP: Sending mail from SharePoint</title><atom:summary type='text'>Sending an e-mail from code in .NET isn't very hard, but you will have to configure an SMTP server. When your code runs inside SharePoint (WSS 3 or MOSS 2007), this shouldn't be necessary, as SharePoint already knows a working SMTP server (it uses this to send out alert e-mails and other mail). To use this and bypass the configuration bogus, send e-mail using this snippet:



using </atom:summary><link>http://www.teuntostring.net/blog/2007/01/tip-sending-mail-from-sharepoint.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-116841833138883661</guid><pubDate>Wed, 10 Jan 2007 08:30:00 +0000</pubDate><atom:updated>2007-01-10T09:41:13.333+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sharepoint</category><title>Sources of the GanttChart web part</title><atom:summary type='text'>Someone asked for the sources of the GanttChart web part. While I intend the part to be available for everyone free of charge, I haven't decided on any formal licence yet. I promise not to sue you if you use this code, both for commercial and non-commercial uses.  You have no permission to remove the link to my blog from the editor interface, though. Everything provided "as is". 


Download the </atom:summary><link>http://www.teuntostring.net/blog/2007/01/sources-of-ganttchart-web-part.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-116654323099637854</guid><pubDate>Tue, 19 Dec 2006 15:37:00 +0000</pubDate><atom:updated>2006-12-20T19:09:38.863+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sharepoint</category><title>Using Windows SharePoint Services 3.0 as a web site development platform</title><atom:summary type='text'>Recently, I have been working on a project where we created a fairly straight-forward web site for anonymous use on the internet, using WSS 3.0 as our platform. In earlier versions of the sharePoint product, this was not possible, as it did not (really) support anonymous use and the only authentication scenario was using windows user accounts. This restricted the use of SharePoint to a strictly </atom:summary><link>http://www.teuntostring.net/blog/2006/12/using-windows-sharepoint-services-30.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>10</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-116256155563561488</guid><pubDate>Fri, 03 Nov 2006 13:35:00 +0000</pubDate><atom:updated>2006-11-07T14:04:04.836+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>aspnet_webparts</category><title>The Web Part Infrastructure Uncovered - first draft ready, proof readers wanted</title><atom:summary type='text'>
Update: I have enough proof readers now. Unless you really, really, really want to join, don't bother volunteering anymore. Thanks to the people who are helping out!


I took a few days this week to finish my work on the 'web parts book' I have been working on every now and then for the past year. I was hard to keep my focus on it; respect in hindsight to the editors at WROX who hurried me into </atom:summary><link>http://www.teuntostring.net/blog/2006/11/web-part-infrastructure-uncovered.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-115580724664277765</guid><pubDate>Thu, 17 Aug 2006 09:34:00 +0000</pubDate><atom:updated>2006-08-17T12:16:52.896+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>aspnet_webparts</category><title>Disable the edit verb on a web part: practically impossible</title><atom:summary type='text'>
This thread on ASP.NET forums called my attention to a fact about ASP.NET 2 web parts that I had never noticed before. When you set AllowClose on a web part to False, the web part infrastructure will hide the Close verb from the user. The setting will not only prevent the action of Closing with an exception, but will also hide forbidden options in the UI.


However, when you set AllowEdit to </atom:summary><link>http://www.teuntostring.net/blog/2006/08/disable-edit-verb-on-web-part.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-115341141079086074</guid><pubDate>Thu, 20 Jul 2006 15:50:00 +0000</pubDate><atom:updated>2006-07-20T18:09:08.316+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sharepoint</category><title>At last: the GanttChart web part with installer and user friendly editor</title><atom:summary type='text'>Many people have (politely) asked me to provide an installer with the Gantt chart web part, because they were not comfortable with editing configuration files and placing dll files in the GAC manually.

Over the past half year, I have been promising these people that I was working on it, but that it would take some time. Well: rejoice! I have just uploaded the MSI installer for the web part. And </atom:summary><link>http://www.teuntostring.net/blog/2006/07/at-last-ganttchart-web-part-with.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>13</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-114735303480641657</guid><pubDate>Thu, 11 May 2006 12:22:00 +0000</pubDate><atom:updated>2006-05-12T09:20:12.693+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>aspnet_webparts</category><title>Working on a book about the Web Part Infrastructure</title><atom:summary type='text'>"I might as well put it out there to trick myself into finishing it"

I have been working for a wile now on a book on the Web Part Infrastructure in ASP.NET 2.0. I had been working on this before, when the software was still beta1, but somewhere along the way, I lost interest (and discipline) and I stopped working on it. Now, I have taken the old chapters, the old sample code, converted it and </atom:summary><link>http://www.teuntostring.net/blog/2006/05/working-on-book-about-web-part.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-20769539.post-114563509074010675</guid><pubDate>Fri, 21 Apr 2006 15:28:00 +0000</pubDate><atom:updated>2006-04-21T18:06:47.426+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>aspnet_webparts</category><title>Reading and modifying the configuration of web parts from an external tool</title><atom:summary type='text'>The Web Part Infrastructure in ASP.NET 2 offers a very neat system that allows users to configure and personalize parts of a web page, dragging the web parts to their preferred position, etc... When you are administering a web site that works with web parts, you'll soon want to know how many of your users actually personalized their page. And what settings did they use? Surely, you can find this </atom:summary><link>http://www.teuntostring.net/blog/2006/04/reading-and-modifying-configuration-of.html</link><author>noreply@blogger.com (Teun)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>12</thr:total></item></channel></rss>