<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-20769539</id><updated>2009-06-25T09:19:25.759+02:00</updated><title type='text'>Teun.ToString()</title><subtitle type='html'>by Teun Duynstee</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.teuntostring.net/blog/atom.xml'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20769539.post-5880759228216770724</id><published>2009-06-25T07:48:00.009+02:00</published><updated>2009-06-25T09:01:36.924+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='velocityconf'/><title type='text'>Chunked transfer and Response.Flush</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/5880759228216770724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=5880759228216770724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/5880759228216770724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/5880759228216770724'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2009/06/chunked-transfer-and-responseflush.html' title='Chunked transfer and Response.Flush'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-6504564929555935657</id><published>2009-04-22T12:30:00.003+02:00</published><updated>2009-04-22T14:05:28.135+02:00</updated><title type='text'>Securing my online presence</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/6504564929555935657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=6504564929555935657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/6504564929555935657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/6504564929555935657'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2009/04/securing-my-online-presence.html' title='Securing my online presence'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-8857811908325290248</id><published>2009-04-10T09:32:00.002+02:00</published><updated>2009-04-10T09:57:19.962+02:00</updated><title type='text'>Funda live: now as a mapplet</title><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</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/8857811908325290248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=8857811908325290248' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/8857811908325290248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/8857811908325290248'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2009/04/funda-live-now-as-mapplet.html' title='Funda live: now as a mapplet'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-1015951232170799367</id><published>2009-03-11T10:26:00.003+01:00</published><updated>2009-03-11T10:43:22.090+01:00</updated><title type='text'>See searching patterns on funda.nl live</title><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</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/1015951232170799367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=1015951232170799367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/1015951232170799367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/1015951232170799367'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2009/03/see-searching-patterns-on-fundanl-live.html' title='See searching patterns on funda.nl live'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-3063644951128499443</id><published>2008-12-03T15:18:00.003+01:00</published><updated>2008-12-03T15:56:50.582+01:00</updated><title type='text'>Microsoft's Velocity compared to memcached</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/3063644951128499443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=3063644951128499443' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/3063644951128499443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/3063644951128499443'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2008/12/microsofts-velocity-compared-to.html' title='Microsoft&apos;s Velocity compared to memcached'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-3962557950837131637</id><published>2008-04-08T13:02:00.005+02:00</published><updated>2008-04-08T14:23:36.670+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><title type='text'>Google App Engine: golden cage?</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/3962557950837131637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=3962557950837131637' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/3962557950837131637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/3962557950837131637'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2008/04/google-app-engine-golden-cage.html' title='Google App Engine: golden cage?'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-2299708609060939951</id><published>2008-03-28T18:09:00.003+01:00</published><updated>2008-03-28T18:25:10.760+01:00</updated><title type='text'>Note to self: combining base path and relative path to an absolute path in C#</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/2299708609060939951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=2299708609060939951' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/2299708609060939951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/2299708609060939951'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2008/03/note-to-self-combining-base-path-and.html' title='Note to self: combining base path and relative path to an absolute path in C#'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-1621561242767702318</id><published>2008-02-19T18:13:00.007+01:00</published><updated>2008-03-10T10:13:54.018+01:00</updated><title type='text'>[Dutch] Ontwikkeling bij funda.nl - doe mee!</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/1621561242767702318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=1621561242767702318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/1621561242767702318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/1621561242767702318'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2008/02/dutch-ontwikkeling-bij-fundanl-doe-mee.html' title='[Dutch] Ontwikkeling bij funda.nl - doe mee!'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-6636801029999384254</id><published>2008-01-25T09:25:00.000+01:00</published><updated>2008-02-10T17:09:56.256+01:00</updated><title type='text'>Using Selenium to test ASP.NET Ajax UpdatePanel postbacks</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/6636801029999384254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=6636801029999384254' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/6636801029999384254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/6636801029999384254'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2008/01/using-selenium-to-test-aspnet-ajax.html' title='Using Selenium to test ASP.NET Ajax UpdatePanel postbacks'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-6194699299227496901</id><published>2008-01-12T19:34:00.000+01:00</published><updated>2008-01-12T23:15:41.506+01:00</updated><title type='text'>Searching, sorting, filtering... all client side with Exhibit</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/6194699299227496901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=6194699299227496901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/6194699299227496901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/6194699299227496901'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2008/01/searching-sorting-filtering-all-client.html' title='Searching, sorting, filtering... all client side with Exhibit'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-8795058082955874948</id><published>2007-12-16T23:30:00.000+01:00</published><updated>2007-12-16T23:40:13.672+01:00</updated><title type='text'>Distribute your cache like the big boys do</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/8795058082955874948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=8795058082955874948' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/8795058082955874948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/8795058082955874948'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2007/12/distribute-your-cache-like-big-boys-do.html' title='Distribute your cache like the big boys do'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-2813563980131266332</id><published>2007-08-17T14:31:00.000+02:00</published><updated>2007-08-17T14:45:28.973+02:00</updated><title type='text'>Finally fixed the problem w/ reporting over WSS3/MOSS lists</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/2813563980131266332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=2813563980131266332' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/2813563980131266332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/2813563980131266332'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2007/08/finally-fixed-problem-w-reporting-over.html' title='Finally fixed the problem w/ reporting over WSS3/MOSS lists'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-4943839629013882713</id><published>2007-07-26T11:57:00.000+02:00</published><updated>2007-07-26T12:40:06.887+02:00</updated><title type='text'>Using Surveys on anonymous access SharePoint sites</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/4943839629013882713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=4943839629013882713' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/4943839629013882713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/4943839629013882713'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2007/07/using-surveys-on-anonymous-access.html' title='Using Surveys on anonymous access SharePoint sites'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-1922755066325564432</id><published>2007-05-28T17:18:00.000+02:00</published><updated>2007-05-28T17:24:51.998+02:00</updated><title type='text'>My new book: The Web Part Infrastructure Uncovered</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/1922755066325564432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=1922755066325564432' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/1922755066325564432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/1922755066325564432'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2007/05/my-new-book-web-part-infrastructure.html' title='My new book: The Web Part Infrastructure Uncovered'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-361670488842091677</id><published>2007-03-28T19:50:00.000+02:00</published><updated>2007-03-28T20:48:26.462+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>Gantt chart for WSS 3</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/361670488842091677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=361670488842091677' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/361670488842091677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/361670488842091677'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2007/03/gantt-chart-for-wss-3.html' title='Gantt chart for WSS 3'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-116871706372866731</id><published>2007-01-13T20:32:00.000+01:00</published><updated>2007-01-14T22:54:46.214+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>TIP: Sending mail from SharePoint</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/116871706372866731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=116871706372866731' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116871706372866731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116871706372866731'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2007/01/tip-sending-mail-from-sharepoint.html' title='TIP: Sending mail from SharePoint'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-116841833138883661</id><published>2007-01-10T09:30:00.000+01:00</published><updated>2007-01-10T09:41:13.333+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>Sources of the GanttChart web part</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/116841833138883661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=116841833138883661' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116841833138883661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116841833138883661'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2007/01/sources-of-ganttchart-web-part.html' title='Sources of the GanttChart web part'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-116654323099637854</id><published>2006-12-19T16:37:00.000+01:00</published><updated>2006-12-20T19:09:38.863+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>Using Windows SharePoint Services 3.0 as a web site development platform</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/116654323099637854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=116654323099637854' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116654323099637854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116654323099637854'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/12/using-windows-sharepoint-services-30.html' title='Using Windows SharePoint Services 3.0 as a web site development platform'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-116256155563561488</id><published>2006-11-03T14:35:00.000+01:00</published><updated>2006-11-07T14:04:04.836+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aspnet_webparts'/><title type='text'>The Web Part Infrastructure Uncovered - first draft ready, proof readers wanted</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/116256155563561488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=116256155563561488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116256155563561488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/116256155563561488'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/11/web-part-infrastructure-uncovered.html' title='The Web Part Infrastructure Uncovered - first draft ready, proof readers wanted'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-115580724664277765</id><published>2006-08-17T11:34:00.000+02:00</published><updated>2006-08-17T12:16:52.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aspnet_webparts'/><title type='text'>Disable the edit verb on a web part: practically impossible</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/115580724664277765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=115580724664277765' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/115580724664277765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/115580724664277765'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/08/disable-edit-verb-on-web-part.html' title='Disable the edit verb on a web part: practically impossible'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-115341141079086074</id><published>2006-07-20T17:50:00.000+02:00</published><updated>2006-07-20T18:09:08.316+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>At last: the GanttChart web part with installer and user friendly editor</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/115341141079086074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=115341141079086074' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/115341141079086074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/115341141079086074'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/07/at-last-ganttchart-web-part-with.html' title='At last: the GanttChart web part with installer and user friendly editor'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-114735303480641657</id><published>2006-05-11T14:22:00.000+02:00</published><updated>2006-05-12T09:20:12.693+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aspnet_webparts'/><title type='text'>Working on a book about the Web Part Infrastructure</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/114735303480641657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=114735303480641657' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114735303480641657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114735303480641657'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/05/working-on-book-about-web-part.html' title='Working on a book about the Web Part Infrastructure'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-114563509074010675</id><published>2006-04-21T17:28:00.000+02:00</published><updated>2006-04-21T18:06:47.426+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aspnet_webparts'/><title type='text'>Reading and modifying the configuration of web parts from an external tool</title><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 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/114563509074010675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=114563509074010675' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114563509074010675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114563509074010675'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/04/reading-and-modifying-configuration-of.html' title='Reading and modifying the configuration of web parts from an external tool'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-114545702576944516</id><published>2006-04-19T15:17:00.000+02:00</published><updated>2006-04-19T16:32:13.226+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reporting services'/><title type='text'>Allowing blanks in the parameters of a report</title><summary type='text'>In the new version of the SharePoint extension for Reporting Services, I added a feature that may need some explanation. All reports that use the extension will automatically have a parameter called SiteUrl. This parameter can be used to override the site URL that is configured in the connection string. If you leave the parameter blank, the value from the connection string will still be used. One</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/114545702576944516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=114545702576944516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114545702576944516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114545702576944516'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/04/allowing-blanks-in-parameters-of.html' title='Allowing blanks in the parameters of a report'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20769539.post-114545137085096535</id><published>2006-04-19T12:15:00.000+02:00</published><updated>2006-04-19T15:08:32.663+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reporting services'/><title type='text'>Using the SharePoint Lists extension on Reporting Services 2005</title><summary type='text'>I'm back! Had a great time in Egypt, had a first rank look at the total solar eclipse on March 29th. I feel like going to work again....

So, let's start with something that has been requested a few times during my vacation: how about using the Reporting Services extension for SharePoint Lists on SSRS 2005? I received some reports from people that it didn't "just work", so I installed SSRS 2005 </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/114545137085096535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20769539&amp;postID=114545137085096535' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114545137085096535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20769539/posts/default/114545137085096535'/><link rel='alternate' type='text/html' href='http://www.teuntostring.net/blog/2006/04/using-sharepoint-lists-extension-on.html' title='Using the SharePoint Lists extension on Reporting Services 2005'/><author><name>Teun</name><uri>http://www.blogger.com/profile/18084804713319805149</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05094732609172802111'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>27</thr:total></entry></feed>