Warning: include_once(/home/public/articles/wp-content/plugins/akismet/) [function.include-once]: failed to open stream: Unknown error: 0 in /home/public/articles/wp-settings.php on line 473

Warning: include_once() [function.include]: Failed opening '/home/public/articles/wp-content/plugins/akismet/' for inclusion (include_path='.:/usr/local/php5/lib/php/') in /home/public/articles/wp-settings.php on line 473

Warning: Cannot modify header information - headers already sent by (output started at /home/public/articles/wp-settings.php:473) in /home/public/articles/wp-includes/feed-rss.php on line 8
Ryan Kohn http://ryan.kohn.ca/articles a passionate Toronto-area software developer. Fri, 07 May 2010 15:34:15 +0000 http://backend.userland.com/rss092 en Debug Windows services in C# using reflection [This example is for .NET 3.5 and Visual Studio 2008] I recently had to fix a bug in a Windows service written in C#. Unfortunately, Windows services are not straightforward to run in debug mode. This led me to try two solutions that I found lacking. I ended up using a ... http://ryan.kohn.ca/articles/how-to-debug-a-windows-service-in-csharp-using-reflection/ How to close the last/only tab in Firefox 3.5 I recently downloaded the latest version of Firefox. I quickly discovered that one of my favourite features was gone: the ability to close a tab if it's the only one open. It's turns out that the feature isn't missing; it's just no longer enabled by default. I figure this makes sense ... http://ryan.kohn.ca/articles/how-to-close-a-single-tab-in-firefox-35/ Trusting your users is hard for you, but good for them Default options should handle the most common, most trustworthy case. Gmail got this right when they stopped asking for confirmation for users’ actions and started allowing people to undo them instead. For example, most of the time, I am sure I want to trash that email, so asking for confirmation does ... http://ryan.kohn.ca/articles/trusting-your-users-is-hard-for-you-but-good-for-them/ Grow great software without getting hung up on the past Smart people can invent solutions to problems you don't actually have yet. The problem is, it's easy to think of problems you don't have yet. Stopping to solve them all now is a recipe for paralysis. -- Chip Morningstar, Smart People Can Rationalize Anything It’s important to focus on your current difficulties. ... http://ryan.kohn.ca/articles/grow-great-software-without-getting-hung-up-on-the-past/ Using a Database to Store Transient Data The Motivation Off The Clock was initially built to analyze phone usage data pulled from a database, but I also wanted to be able to analyze transient data. Storing transient data in a database is a great way to accomplish this; it allows the analysis code to treat the transient data ... http://ryan.kohn.ca/articles/using-a-database-to-store-transient-data/