« Blogging | Main | Made In Express Contest »

Monday, November 13, 2006

Hack.net v2.0

I have been knocking my head bloody against v2.0 of hack.net for over half a year now. This bugger seems even more diabolic than the first version of the puzzle, which wasn't solved until a few years after its initial publication. Every time I think I have come up with some clever approach how to solve the first stage, but no significant breakthrough so far. I am pretty sure that those curly brackets are a part of getting to the next step... How about a subtle hint, Ryan?

Anyone else out there working on it?

Thursday, November 02, 2006

Moving Incoming Newsletters and Alerts to RSS

Spam and inbox overload is one of the unavoidable pains of an active online life, right? Well, not necessarily so. There are a few proven techniques for how to get rid of unwanted e-mail from your inbox. One of them is to be very restrictive about giving out your personal e-mail address, another involves investing in advanced anti-spam filters. But how do you go about signing up for newsletters and other information from sites that you are not trusting? 

I am happy with my current setup for solving these problems and thought that I would share it with you.

The service I am using is free and called MailBucket. It is simply an email address with the suffix "@mailbucket.org" that is free for you to claim. Let's say you want to use the e-mail address joe@mailbucket.org - you simply type this address in the e-mail field when subscribing to for example a newsletter. Then add a subscription in your favorite RSS reader to http://www.mailbucket.org/joe.xml and read the incoming messages from there. Of course, this setup does not allow you to easily reply to messages but typically this is not anything you will do when subscribed to a newsletter. If you eventually decide that you don't want to receive their messages any longer you simply delete the feed from your RSS reader. To find a unique e-mail address I am building my username (the part before the @ in the e-mail address) by using a unique prefix, a dash ("-"), and the name of the service (for example joe-bookcrossing@mailbucket.org). You can find out more about MailBucket's excellent free service at http://www.mailbucket.org.

Of course it is not advisable to use a MailBucket address when signing up for a service where a secret password or other confidential information will be sent to you, because all feeds are public and unprotected. For a few months I have been a happy user, subscribing to news alerts from for example BookCrossing and TopCoder as well as various Yahoo Groups. It also automatically provides me with a convenient way of categorizing my incoming messages compared with using my regular e-mail address for everything.

Saturday, August 26, 2006

Competitive Programming

I am a competitive guy. People who know me well, know that I always go to the bottom of things; have a passing interest in anything will never happen to me. It's either all or nothing. For years, I have been looking for ways to funnel my energies into some kind of online community. Requirements are that it should be engaging, competetive and educational. I have been taking quite a few stabs at different online gaming communities but they haven't turned out to be what I am looking for.

I am happy to say that finally, I think I have found the niche I have been hunting. TopCoder.com. TopCoder is an online community for people who love programming. Or rather, it was; today it has grown to cater for architects, testers and graphics artists as well. The basic concept is that you participate in contests where you need to solve three algorithm problems in a language of your choice (mine is .NET C#). The faster you solve it the more points you score. Given that the system tests pass your implementation, that is. Or that no competitor will challenge your implementation with a unit test. That's the weekly competition TopCoder is running, and which is divided into two divisions according to your rating. Sometimes one of the sponsors throw in money in the prize pot to make it more interesting. On top of this there are weekly design and implementation challenges where the best submissions will be awarded enough cash to make it worth having a look at.

There is just one thing missing from TopCoder, and that is that they should allow remote pair programming competitions or us agile geeks. Just read the story of this guy who tried it.

Monday, August 07, 2006

I'm Excited, and Writely So

When writing drafts for this blog, I have been struggling with how to type up the articles. Sometimes I am working on different computers and I need an easy way of moving the documents between locations. So far I have been using a USB drive where I store the documents. This has the drawback of needing the same application installed on all computers. Another option is setting up an automatic synchronization between shared computers but it doesn't work for me because some of them are blocked behind a firewall.

Enter the new paradigm of online word processors! The idea is that your documents are edited using your web browser and the files are hosted on the service's website. You can choose to share or protect each document, and despite being a new phenomenon there are already a few interesting players on the market. All of these online services automatically integrate many additional features useful for bloggers. They offer spell-checking, document sharing for review, real-time collaboration, history of changes, and direct publishing to your blog. And they are all free of charge to use! The best ones are overviewed at About.com.

My personal favorite is Writely, which really stands out from the competition. The interface is slick and simple to use. There are all the features that you expect and more. It includes comments, handy keyboard shortcuts for accessing common functions, and importing of common file formats. Technology like this really excites me! Writely was acquired a few months ago by Google, and has temporarily disabled users registration, but there is a backdoor.

Wednesday, August 02, 2006

The Demise of nDoc

Some of my fellow finalists have blogged about their intended usage of nDoc as a documentation tool for their source code. nDoc is hugely popular for automatic documentation of .NET code, using Visual Studio's support for XML comments in the source code. A week ago, nDoc went into a coma, when its single maintainer, Kevin Downs, announced his resignation from the open-source project. The problem, which in many cases are symptomatic of open-source projects, is that a majority of these projects are driven by one or a few enthusiast individuals, and their lifespan is directly related to how long it lasts until these individuals lose interest. It is rare to see a dying project being rescued by another developer, who keeps it running. Problems selling the software is the usual reason for the death of a commercial application. This sort of death is less painful for the software market, since the user base is potentially much smaller.

The love-hate relationship between open-source developers and small software vendors is about if software should be free or not. Developers of commercial software feel that the open-source community is undervaluing their work. Often they are frightened to see their carefully designed and evolved application being blatantly copied by an open-source initiative. This is not stopping the same developers from using open-source software though, no matter if it is a freely licensed library for their commercial software or an open source office suite or web browser.

Kevin Downs resignation is sad for the wide user-base of nDoc, but there is a light in the end of the tunnel. Microsoft recently launched a technology preview of Sandcastle, a project with a lot of similarities to nDoc. Sandcastle is bound to be more responsive to technology changes than nDoc was, where users have been waiting a long time for .NET 2.0 support. Here we see an example of an open-source product being replaced by a project that is being developed by a regular company. In recent time, we have been seeing a lot of stories that are the other way around. Kevin mentions in his "resignation letter" that if donations had been bigger he would have had an incentive to continue with the project. That leads me to ask why he not changes the license of nDoc and starts to charge for it?

Tuesday, July 11, 2006

SQL Server 2005 - Everywhere Edition

Microsoft recently announced a new edition in their SQL Server 2005 family of products: Everywhere Edition. This is a free and lightweight version of SQL Server 2005.

So what is different from the Express Editions that is required for us Made In Express Finalists? I can only talk for myself but the Everywhere Edition would be more suitable than the Express Edition for my Windows Forms application for a number of reasons (source: Steel Price's blog):

  • runtime size is only 1.4MB (in-process),
  • single data file without transition log,
  • smaller redistributable package,
  • embeddable in applications.

In short, Everywhere Edition is more system resource friendly! Of course, there are some limitations in Everywhere, compared with Express, for example it cannot run as a service and lacks multiuser support. These issues are not relevant for my project FeedJournal though.

So what do you say Microsoft: can we use the Everywhere Edition in Made In Express Contest?

Saturday, July 01, 2006

Microsoft CodePlex

A few days ago Microsoft officially launched their open-source project hosting web site CodePlex. It is great to see Microsoft finally embracing and supporting the open-source community with an initiative like this. Like all web launches these days CodePlex is a work in progress, and even though the functionality is still a little thin, I see great projects coming out of it very soon. What makes CodePlex stand out compared to the established player, Sourceforge, is the user interface and user friendliness. Sure, it is limited to .NET projects but isn't that what we all are passionate about?

FeedJournal will not be hosted on CodePlex, but I will definitely consider submitting other projects of mine there, or joining something interesting. The reason I will keep FeedJournal off CodePlex is that I plan to take FeedJournal commercial after the publication of the free 1.0 version, which I will submit to Made In Express Contest.

Monday, June 05, 2006

Project Management with ToDoList

Reading my fellow finalist Douglas Steen's entry about bug tracking tools, I am totally agreeing with him that it would be great to have a lightweight bug-tracking tool built into Express. Sure enough, we have the Task List pane where tasks can be sorted and having a priority but that's not really accomplishing anything substantial.

Douglas chose a web-based bug tracking system and he mentioned another web-based system. Hunting the Internet will lead you to yet other web-based systems. Why does 99% of bug-tracking systems have to be run in the browser? I hate the browser: it is less responsive than a native Windows application as well as usually lacking a menu and having quirky keyboard support.

Just because a system is multiuser doesn't mean that the browser is the only interface. The large advantage I see of using the browser is that no client software will need to be installed and we will support multiple operating systems, but I would happily trade this for a native Windows interface.

I was hunting high and low for the Holy Grail of bug tracking systems until a couple of months ago, when I finally discovered a wonderful freeware application called ToDoList.

ToDoList is the perfect application for a single developer who wants to manage any project. The interface is a bit on the complicated side, but can be customized it to suit your own requirements. For each hierarchical item you can add formatted comments, priority, estimation, tags, dependencies, etc etc. There is also a possibility to export the task list to XML for web publication along with a zillion other neat features.

ToDoList is hosted on CodeProject and is being actively developed with new features at a continuous pace. Try it, you won't regret it! I am actually writing each draft of my blog entries inside ToDoList.

The Feed Format Jungle

I have started the implementation of my project in C# Express Edition, and one of the first things I have stumbled upon is the frustration of having to deal with many different XML feed standards. There are RSS and Atom, each of them with several different sub-versions. But that's not all. We also have a slew of Internet cowboy hackers who don't have any desire at all to follow these standards. In short, RSS/Atom land is a jungle. Time to take out the machete! When researching the options of a suitable machete for the feed jungle, the following 3 caught my attention:

  1. Atom.NET + RSS.NET
  2. IP*Works
  3. Microsoft's RSS library, included in IE7
  4. Rolling my own component based on .NET's XML support


These are two separate open-source libraries, implemented in C# .NET, which enables users to work with the two feed standards and all of their sub-standards through a .NET programming interface. Unfortunately the two components expose two interfaces without much similarity. In addition to this the program is not in active development any longer Instead the author is creating a commercial closed source version of the components.


When registering the copy of Visual Studio 2005 Express Edition, one of the freebies that Microsoft offer you is a license of IP*Works' RSS component. The word free was misleading me for a while, until I realized that I was being offered a free developer license only, without any rights to distribute the component with the applications you are building in Express.

Microsoft's RSS library, included in IE7

With the upcoming Internet Explorer 7 (included in Beta2), Microsoft has really outdone themselves with the RSS/Atom support. Included in the browser will be a feed repository that any application can use to know which feeds are of interest to a user. Also articles and their read/unread state will be stored here. However, IE7 requires Windows XP or above, cutting off a large piece of the current end-user segment.

Rolling my own component based on .NET's XML support

Of course, being a developer, you are always attracted by the possibility of rolling everything yourself. However, considering the abundance of RSS/Atom formats out there, this would be suicide if I attempted this during the short time available to build FeedJournal within the contest.


After some prototyping with the different options I decided to go with the open-source Atom.NET and RSS.NET components. However, I quickly noticed some bugs and limitations, that I fixed in the components (the wonder of open-source!). I am wrapping Atom.NET and RSS.NET in my own classes "Article" and "Feed" which have different constructors for the different feed types.

Sunday, June 04, 2006

Ode to Visual Studio Express Edition

Using the Visual Studio Express editions to build a software product is a delight. I have been using Visual Studio for years, and can testify to the great quality of Microsoft's development tools. When asked about my favorite application all categories, I always answer VS. With the latest Express editions, Microsoft have outdone themselves again. Beside making the IDE available for free, there are many important new features in this package.

My hands-down favorite feature must be the built-in refactoring support. I have been a huge fan of Martin Fowler's landbreaking book "Refactoring", since its publication in 1999. Since I have been mainly developing in C/C++ during my development career, I have not had the privilege of using any refactoring tool professionally. (refactoring is dependent on reflection support, which is difficult to achieve, if not impossible, in C++ with all of its powerful features). With the advent of .NET and the initial versions of Visual Studio .NET, came the first 3rd party commercial refactoring tools, which were pretty decent but costly. I am very pleased to see Microsoft taking this step and integrating refactoring support within the IDE. The most common refactoring, "Extract Method" (to make a selected part of a method a new method) is included as well as "Rename class/method/variable". The only refactorings I am really missing from this basic package are "Extract Subclass" (to create a new class from a set of class methods) and "Move Method" (to move a method to a different class).

Other neat new things I like about the Express edition are the keyboard customizations, code snippets and code templates.

OK, that's all fine and dandy, but what can be improved? Well, I realize we are talking about first-class software that is being given away free of charge here, but it is still annoying me to see that there is no way to integrate source control in the Express editions. I would have liked to run the free Subversion system integrated in C# Express. It is also annoying that add-ons are not officially supported, although a few notable exceptions exist: nUnit and SQLite are both using unofficial workarounds to enable their components to integrate with the Express Editions.

Saturday, May 06, 2006

Currency conversion in browser

One of the most useful Firefox extensions I have installed must be ViewMyCurrency, which helps me to convert currencies inside the browser. Basically you define which currency you want all prices to be converted into and then many major world currencies will automatically be converted and displayed along with your own currency inside any web page.

If you regularly browse sites with prices not in your preferred currency you will greatly benefit from this extension. I have been using it for several months now both at work and and at home, and I can't imagine surfing without it. Highly recommended, and of course free!

Thursday, April 27, 2006

HOWTO: Not sleep in

For a long time I have been trying to get up early and spend less time in bed. Now I know how to do this! Check out Steve Pavlina's great article "How to Get Up Right Away When Your Alarm Goes Off"

Friday, April 21, 2006

Book review: Micro-ISV: From Vision to Reality

As I mentioned in an earlier post I was reading the book Micro-ISV: From Vision to Reality by Bob Walsh. Now I've finished it and must say that it is packed with very sound advice for a startup software business. While containing a lot of screenshots, filling up the pages, these also make it convenient to read the book offline and still getting a glimpse of the sites mentioned in the text. A short introduction to Getting things Done is also included.

All stages of the business is covered, from finding an idea, choosing a company and domain name through development and on to marketing, selling and support. Interviews with various micro-ISVs are sprinkled throughout the text, and serve as a reality check in some cases. It is entertaining to read Bob Walsh's book and his sense of humour keeps the reading a pleasant experience.

Watch this space for my own venture into the micro-ISV world.

Monday, April 10, 2006

New Hack.net puzzle?

Hack.net has been updated with a new image that looks an awful lot like a new puzzle. The old link (the hidden dot at the end of the page) is still pointing to www.ninebows.com which has not been recently updated. Ryan hinted a while back in his blog that there will be a new puzzle after Ninebows so it seems as if Christmas/Hannukkah came early this year.

The new step at hack.net seems mysterious indeed, but I will do my best to defend my current ninebows solver title...

Saturday, April 08, 2006

What's in a name?

"What's in a name? That which we call a rose by any other name would smell as sweet; so Romeo would, were he not Romeo call'd, retain that dear perfection which he owes without that title. Romeo, doff thy name, and for that name which is no part of thee take all myself."

Juliet did not run a µ-ISV, but she did realize the importance of having a fitting name. Naming a company is not a trivial thing, and I have been struggling with finding a good name that has an available .com-domain as well. From Walsh's book I found a reference to "The Igor Naming Guide" which is available for free at http://www.igorinternational.com/process/naming-guide-product-company-names.php. This seems to be an excellent overview and I hope to have a name ready by the time I finish reading the PDF.

Sunday, April 02, 2006


I have always been a sucker for pretty wallpaper, especially satellite images of Earth. I think I have been trying everything available, but always found myself uninstalling it after a couple of days, usually because these things are resource hogs.

But now I have finally found something with looks and runs like a charm: Desktop Earth 2.0. It is freeware wallpaper that includes satellite images from NASA with resolutions up to 2560x1280. It also has cloud overlays (updated from satellite images). It runs either as active desktop or as normal wallpaper. Check it out now!

© Jonas Martinsson 1995-2006