Just Released: Configuration Section Designer#

I just released my first domain specific language to the public! The Configuration Section Designer is a Visual Studio add-in that allows you to graphically design .NET Configuration Sections and automatically generates all the required code and a schema definition (XSD) for them.

The Configuration Section Designer In Action

For all information, downloads, source code, work item tracking and discussions visit http://www.codeplex.com/csd.

The Configuration Section Designer is built on Visual Studio 2008 with the very excellent DSL Tools. Instead of publishing it here on the blog as I normally do with my pet projects, I've decided to host it as open source software on CodePlex so that hopefully other people will find it interesting enough to contribute and make it even more powerful. This also gives me the chance to test-drive CodePlex in a real project, and so far it's been working great so I'll probably be moving more projects to it.

Anyway, if you have Configuration Sections that you're currently writing by hand, I encourage you to try this and let me know how it works for you. I'm pretty excited about it, I've only published it yesterday evening and it's already got over 40 downloads and a good feature suggestion of someone that's been porting his hand-written code to the designer! Good times!

Blog | Programming | .NET | DSLs | CSD
Sunday, December 30, 2007 5:21:30 PM (Romance Standard Time, UTC+01:00) #    Comments [1]  | 


Just Released: E = m c² v2.1!#

It's taken way too long to remind myself to release a new version of E = m c² - so finally, here goes: v2.1 is out the door! It even comes with source code again! What a perfect Christmas present for 3.4 gazillion E = m c² users*! Actually, there are quite a lot of extra features so if I would've released a bit more sensibly over the last months then it probably would've been v2.4 or so already. Anyway...

E = m c² is a free utility that can check various sources for messages, then filter and redistribute them.

A typical example is checking your mailbox and showing you a popup window if there are new messages, but it goes far beyond that since it's fully extensible using plugins. For example, you can check RSS files for new blog posts, monitor when a server comes online or goes offline, play a soundfile when new messages arrive, send a summary email, run a program, write to an RSS file, ...

Basically, you can make E = m c² do all you can think of! And it can do your laundry too (Pro version only**)!

What's new in this version?

  • I'm also releasing the source code from now on (built on .NET 2.0 with Visual Studio 2005).
  • Added support for trigger plugins to provide a list of messages of their own when they trigger. This allows non-pull scenarios to be supported as well (i.e. not only receiving messages by "pulling" Source plugins, but "pushing" to deliver messages from within a trigger immediately).
  • Added support for "hosted" plugins, which don't actively participate in the message cycle but are just running in the context of E = m c². This means they don't handle messages but they can still have their own settings and commands. This can be convenient to host small pieces of functionality with settings that would otherwise require a standalone application.
  • Duplicated the "Change Background" as a separate "hosted" plugin so you can also use it as is, outside of the message cycle.
  • The "Change Background" plugins now support other background styles than just "stretch". The new StretchedWithAspectRatio option retains the aspect ratio of the original image while stretching it to fit the screen.
  • Added "Yahoo! Mail" plugin that retrieves messages from Yahoo! Mail (but you need to make sure that your account is still using the "classic" user interface for this to work).
  • Added "Network Changed" trigger, which triggers when the network changes (e.g. when you plug in or out of a network).
  • Added "Debug" publisher, which writes messages to the Windows debug stream.
  • The "Viewer" can now have message styles to color rows depending on certain message properties, e.g. the source of a message or its subject.
  • The "Viewer" can now be configured to have an initial window state, e.g. to make it start as maximized.
  • The template processor can now also use reflected properties, so not just the built-in tokens as before - e.g. $(Sender) - but also tokens that are taken from the value of a property on the (optionally subclassed) message at runtime. This provides better templating support for messages that are subclassed from the base EmcMessage class.
  • The "RSS Source" plugin now attempts to remember the read items between sessions of the application.
  • The "RSS Publisher" plugin now also writes the message recipients to the RSS feed so that a client also has access to the original message recipients.

You can find all information, screenshots, downloads, and even tutorials on writing plugins at the dedicated website: http://jelle.druyts.net/emc/.

Now I can continue working on the next version, which should turn out to be quite interesting. I already have a number of features lined up and semi-implemented that will take it to a next level. So I think that'll make it v3.0 and non-arguably the most interesting download of 2008 galaxywide***.

I'm even thinking of changing the name to something more meaningful and search-engine-friendly. I don't want to keep steeling Google Love™ from my good friend Albert, you know... So any suggestions would be welcome, and if yours makes it then you'll get a Pro version for free**!

* Usage information obtained by bribing a guy with a moustache who works at a local internet provider and promised me the number of downloads was legit.
** Ha ha! There isn't really a Pro version!
*** I might be a bit biased.

Blog | General | Programming | .NET | Emc | Download
Friday, December 28, 2007 2:15:25 PM (Romance Standard Time, UTC+01:00) #    Comments [0]  | 


Setting up Source Server for TFS Builds#

[Update 30/04/2008] Fixed issue for Build Definition names that contain spaces.

[Update 08/07/2008] Updated for new version of Debugging Tools for Windows; added Troubleshooting chapter.

[Update 05/08/2008] Updated "srcsrv.ini" file contents for new version of Source Server script (does not include cmd.exe anymore).

[Update 20/03/2009] Added troubleshooting part for "Illegal characters in path" error.

[Update 30/03/2009] Updated "Illegal characters in path" patch to also include the srcsrv.dll file (in addition to symsrv.dll).

I've read about symbol servers and source servers before (in John Robbins' excellent Debugging Microsoft .NET 2.0 Applications book, for example, and also due to the recent news that Visual Studio 2008 will support source-code debugging of the .NET Framework Libraries), but never really got around to trying them out since they seemed pretty complex to set up. However, I've recently set up a source server on a Team Foundation build server (twice!), and my eyes have now gone wide open: anybody who references assemblies built by those TFS build servers can now seamlessly debug them.

When an assembly is "source server-enabled", the pdb file will contain the full path and the exact version of the file in source control that was used to build that assembly. If the debugger then enters a method, Visual Studio automatically downloads that correct file, places it in a local cache, and opens it for debugging. This is super sweet!

Now the hard work is already done and available in the Debugging Tools for Windows, but there are some extra steps to take if you want to integrate this in a real Team Build (i.e. on the TFS build server instead of on a local machine) and it also lacks some additional information to get everything working. So I put together a full document that covers all aspects of setting up a source server, modifying the Team Build script, configuring the project files, and finally configuring the development machines.

The full document (PDF) can be downloaded here, and you can read the one-page summary that briefly covers the required steps below. I cannot recommend setting up a source server enough, it's free and takes less than an hour if you simply follow the procedure, and the advantages are - hopefully - obvious.

Setting up Source Server for TFS Builds.pdf (0,98 MB)

Note that this procedure works for both TFS 2005 as TFS 2008, and both VS 2005 as VS 2008.

Installing Source Server on the Build Server

  • Install the Debugging Tools for Windows (at least the "Source Server" component)
  • Install Perl (e.g. ActivePerl)
  • In the tfsindex.cmd file in the Debugging Tools for Windows directory, change the last line to
@call "%~dp0SSIndex.cmd" -SYSTEM=TFS -SYMBOLS=%1 %*
  • In the srcsrv.ini file in that directory, set MYSERVER to the exact URL of your Team Foundation Server (Application Tier)
  • Add the full path to TF.exe (usually "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE" for VS 2005 or "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE" for VS 2008) to the system's Path environment variable
  • Restart the "Team Build Service" (for TFS 2005) or "Visual Studio Team Foundation Build" (for TFS 2008) Windows service
Enabling Source Server in the Team Build Script
  • Add a new target to TFSBuild.proj to be run on "AfterCompile" that calls tfsindex.cmd:
<Target Name="RunSourceServerIndexing">
<Exec Command="&quot;C:\Program Files\Debugging Tools for Windows (x86)\srcsrv\tfsindex.cmd&quot; &quot;$(BinariesRoot)&quot;"
        WorkingDirectory="$(SolutionRoot)" /> </Target> <Target Name="AfterCompile"
        DependsOnTargets="RunSourceServerIndexing" />
Configuring the Project Files
  • Set the Debug Info in Project Properties / Build / Advanced to "full" (Debug configuration) or "pdb-only" (Release configuration)
Configuring the Development Machines
  • In Visual Studio / Tools / Options / Debugging / General: check the "Enable source server support" checkbox
  • Create a new text file named srcsrv.ini in the Visual Studio directory (usually "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE" for VS 2005 or "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE" for VS 2008) that contains the exact following text:
[trusted commands] 
TF.exe view
Sunday, December 9, 2007 7:16:12 PM (Romance Standard Time, UTC+01:00) #    Comments [1]  | 


Flickr Schedulr v1.2#

I've just pushed the button to release Flickr Schedulr v1.2.

Flickr Schedulr is a Windows desktop application that automatically uploads pictures to Flickr based on a schedule (e.g. to post a new picture every day at a certain time). It allows you to create a queue of pictures to be uploaded, along with their titles, descriptions, tags, and the photoset into which they should end up. This effectively takes the hassle of uploading pictures at regular intervals away, and allows you to go out and have fun shooting pictures (or drinking beer) while your photoblog is maintained for you.

What's new in this version?

  • You can now choose Groups and multiple Photosets to associate your pictures with.
  • I'm also releasing the source code from now on (built on .NET 2.0 with Visual Studio 2008).
  • I've set up a dedicated Schedulr Group on Flickr, a community site where you can ask questions, give comments, complain about bugs (what, bugs?!) and post pictures - uploaded with Schedulr of course!

As always, you can find all information, screenshots and downloads on the dedicated site at http://jelle.druyts.net/schedulr.

Happy Flickring!

Tuesday, December 4, 2007 8:43:07 PM (Romance Standard Time, UTC+01:00) #    Comments [0]  | 


All content © 2015, Jelle Druyts
On this page
Top Picks
Total Posts: 351
This Year: 0
This Month: 0
This Week: 0
Comments: 530
This is my personal website, not my boss', not my mother's, and certainly not the pope's. My personal opinions may be irrelevant, inaccurate, boring or even plain wrong, I'm sorry if that makes you feel uncomfortable. But then again, you don't have to read them, I just hope you'll find something interesting here now and then. I'll certainly do my best. But if you don't like it, go read the pope's blog. I'm sure it's fascinating.

Powered by:
newtelligence dasBlog 2.3.12105.0

Sign In