Wednesday, September 27, 2006
Microsoft Resolves Controversy (WTG!)
Shortly after I published my previous blog post regarding the Made In Express Contest controversy, Microsoft contacted me. They said that they had conducted a review of the final results and had decided to award the amount of the Grand Prize to both of the First Place winners!
So what swayed Microsoft into changing their attitude? I am not saying that my blog post did it, but I like to think that it played a part in their decision. Another huge contributor to this decision was Channel9 user Minh (thank you!), who called up Mark Jewett at Microsoft to get some answers. The phone conversation was recorded and you can download the mp3 from here.
Way to go, Mark Jewett and Microsoft! I know that you took a a lot of abuse in the C9 forums but the way that you resolved the situation impresses me. Thank you!
Tuesday, September 26, 2006
The Big Controversy Regarding the Winner(s)
C9 posters demand that the winning team in Made In Express Contest will be disqualified from the competition and their $10,000 prize revoked. They point at evidence that the winner, professor Ernie Hall, did not abide by the rules by using already developed code and working in a team.
I have been lurking in the C9 forums for the last few days, following the heated debate. Three forum threads    totaling over 200 posts to date, cover it all. The posters include Mark Jewett, the MS guy behind the contest, as well as two out of the three judges, Chris Pirillo and Robert Scoble.
I assume the rest of the finalists have been following the C9 discussion as well, but so far all of them have kept mum. As the runner-ups, I and Ali Khalid, are identified as the big losers in all of this (a mere $9,000), I decided to make my opinion heard.
First of all I must admit that Ernie's robot AI entry was my favorite as well. I think that it really showcases Express Edition's versatility when it comes to product ideas. That's probably why Microsoft liked it too. However, when I look at all the hard facts about the rules and compare them with Ernie's submission it is quite obvious that something is wrong here. It becomes clear by just reading any of his blog entries where he is posting C# source code. In the file header it is clearly written that someone else wrote the code in 2005. Many of the header files in his submitted source code have timestamps from 2005 and are signed by other developers.
If you download the source code you will also see that the code was not
initially written in Express Edition, but rather converted to this
format at a later stage. The presence of the
I am glad that the C9 forum opened up my eyes to this as I was too busy
coding FeedJournal than to check if my competitors were adhering to the
rules during the contest. Anyway, according to Microsoft's forum answers
it seems unlikely that they will do anything about this. Instead their
official response is rather dry:
Tuesday, September 19, 2006
FeedJournal is Awarded First Place in Microsoft Contest
Yesterday, Microsoft announced that my newspaper project FeedJournal had been awarded First Place in their Made In Express Contest. As regular readers of my blog know, my brainchild FeedJournal is the .NET application I am writing to revolutionize the way you read newspapers.
The judges (Chris Pirillo, LockerGnome; Phillip Torrone, MAKE Magazine; Robert Scoble, Scobleizer) motivation read:
Jonas helped us all take a step closer to publishing our own newspaper based on the news we care about. FeedJournal is actually a little glimpse of the future…it will likely be a common way for readers to ‘roll their own’ magazines in the near future.
This is probably my finest moment ever in my long software development career and I want to thank Microsoft for arranging the contest and everyone who has supported the project by dropping emails or blog comments. And I want to send a special thank you to my wife and baby daughter for having patience with my late evening development sessions during this time.
Tuesday, August 29, 2006
FeedJournal Voting - Last Chance
Thank you for your support.
Thursday, August 17, 2006
FeedJournal Database Decisions
Pirillo has something to say about the Made
In Express Contest. Considering he is one of the judges in the
contest, I am definitely listening. This is his verdict about my own
Considering his overall harsh judgment of the projects I consider this
pretty favorable, and indeed he goes on to mention FeedJournal as one of
his four favorite entries. However, let's consider his criticism for a
moment. The SQL Server 2005 Express Edition is a required component in
the contest as long as you want to have a database. FeedJournal
definitely needs one. Here is a section from the contest rules:
Of course Mr Pirillo is spot on in his criticism, and the database issue does not come as any surprise to me. The fact is that the required runtime for SQL Server Express Edition is 55MB, 10 times larger than the setup files for the actual FeedJournal application! I already touched upon this in a previous blog entry where I considered using SQL Server Everywhere Edition.
The good news is that there is already a solution to the problem! FeedJournal is using a database wrapper class, making it trivial to switch database engines. Since the start of the development I have been secretly working on a separate configuration using the open-source System.Data.SQLite database. Compared with SQL Server's 55MB runtime, SQLite weighs in at a mere 400kb using a single DLL file. w00t!! Sure, SQLite offers less design time support from inside Visual Studio, but it is a small price to pay in comparison.
FeedJournal versions using SQLite are fully functional and has been running in my personal test environment all the time. These will be released for beta testing in a few weeks time, most likely after the contest ends in order to abide by the rules.
Wednesday, August 16, 2006
FeedJournal v1.0 and Contest Voting
This also implies that you can finally download FeedJournal v1.0 from the the Made In Express link above. Despite the name it is a beta test version, while I am continuing to work on v2.0. Visit feedjournal.com for more information.
Sunday, August 06, 2006
Contest Deadline for FeedJournal
The time has come to let go of FeedJournal v1.0. I have been working on it for months and thinking about it for even longer. Without the definite contest deadline hanging over me, I think it would have been difficult for me to resist adding more features before publicizing it. But, in the end it's for the better. FeedJournal needs to get out there and get some real-world testing before it can mature into higher versions with a larger feature set.
I definitely don't see this contest submission as the end of the line for FeedJournal, more like a baby's first steps. I choose to look at this version as a public beta test. Although v1.0 has been thoroughly tested I have decided to let it expire on October 1st, forcing users to upgrade to a higher version. Much like a beta or release candidate would work.
The time has also come for me to sum up the experience of having competed in Made In Express Contest.
Sometimes I have felt isolated, that I don't have any cubicle neighbors or managers to discuss design choices or feature priorities with. Then I realize that there are huge numbers of other single developers out there doing the same thing, 12 of us happen to be in this contest. And if we want to break our isolation we can, help is always just a forum post, instant message or email away. And I choose to see it as a challenge, that we have responsibility for all the implementation choices, design decisions and even marketing options. A challenge which is there to empower us as providers of a service or application.
Sometimes I have been feeling that time was not enough. Who are these people at Microsoft letting us run like crazy implementing these projects in just a couple of months? Do they get a kick out of seeing us burning the midnight oil? Well, even though I am sure it has been a hectic summer for the whole dozen of us finalists, seeing it coming to an end now I just want to keep on running. To keep pushing out more features and squashing bugs. The contest deadline has forced me to set up an infrastructure for publishing an installation program, finishing the help text and generally smoothing the rough edges. All of this means that I can take v1.0 and start pushing out upgrades if there is an interest out there. And from what I have seen in the blogosphere, there is.
No matter how tough it has been for the last months, one thing is for sure: it has been a blast! Good luck to all of us in the contest! Both regarding the judges' verdict and the future life of our projects.
The deadline for the contest is tonight (6th) at midnight, and the submissions should become available on Microsoft's contest site shortly thereafter. I will post a link on this blog as soon as I have more information.
Friday, August 04, 2006
SQL Server Everywhere Edition Requirements
The Community Technology Preview (CTP) of Microsoft SQL Server 2005 Everywhere Edition requires Windows XP SP2 or Windows Vista. If Windows 2000 is unsupported I will have to look at other solutions instead for the future. I tried to convert my database from Express's MDF format into Everywhere's SDF format, but ran into problems. With the short time remaining to the version 1.0 deadline (contest submission) the database optimization is something that will have to wait. Now is not the time to introduce more risk in the project.
I also decided to go with the ClickOnce system of deploying the application, which is helping out. It comes especially in handy with the installation of the runtime environments for .NET 2.0 and SQL Server Express. ClickOnce automatically figures out if the user needs to get these installed without me having to write a single line of code/script, which is really neat.
Thursday, August 03, 2006
Help Format Confusion
As I previously blogged about I was using Shalom Help Maker to generate my help file. After spending some time with this and finally completing the user documentation, I was ready to insert it into FeedJournal. The it suddenly hit me: this is not the right help format! The Danish Shalom Help Maker is generating help files in the old Windows .HLP format, which has been obsolete for some years now. What I need is CHM format, which I had up till now deluded myself into believing I was working with. Ouch!
OK, there must be some way of converting my HLP file into CHM, right? Nope, at least nothing free, and all of the programs I tried generated an error during the conversion. Finally, after much hunting I found a link to a freeware application on the excellent forums at Joel on Software. The program was called HelpMaker, and sure enough its conversion feature also choked on my HLP file, but I was able to copy/paste the content to generate a CHM file. HelpMaker also offer to possibility to compile to many different formats: CHM, HLP, MSDN format, RTF, and HTML. All in all, the process using HelpMaker was much easier than that of HTML Help Workshop, the free and official vanilla solution.
I took the opportunity to compile an output for the web at the same time as I compiled the CHM file. The web based help files are available here.
Now, if I only had realized my mistake earlier, I would have saved many hours that I now spent working on the wrong format. Doh!
Two days left for FeedJournal's contest submission and I am trying to prioritize which items have higher priority than others to complete. Right now I am working on the text of the CHM help file and I hope to finish it soon. After that (if there will be enough time) I want to see if I can easily switch to SQL Server Everywhere Edition, which should boost performance on low-end PCs quite a bit.
Before submission I also want to make sure that the install scripts are completed. I haven't decided between ClickOnce and InnoSetup yet. I have previous positive experiences with InnoSetup, but Microsoft's ClickOnce also seems nice in that it can support transparent upgrades and it integrates the .NET 2.0 framework installation automatically.
I will also need to write an build instructions document, which should be straightforward in my case. One item which is not obvious to me is if I should deliver the third-party open-source libraries I use in source code format or as precompiled assemblies. I fired away an email to the contest coordinator, to get an answer to that one.
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?
Monday, July 31, 2006
Bots Soon to High-Card HumansThe online poker rooms are flourishing in what seems to be the Eldorado of our time. But not for long. Around the corner lurk the bots, or computer programs designed for playing poker, currently in hard training to win your hard-earned cash.
Ten years ago I was an avid poker player, constantly on the lookout for new games. Most of my friends that I used to play for nickels and dimes are still playing today. They have taken their chip stacks online, and the limits have increased, but from the look of it they are doing well financially. Online poker ten years back consisted of a yearly e-mail tournament and games played over Internet Relay Chat (IRC), including first-generation bots. Online discussions took place on a spam-filled USENET newsgroup; in short, the situation wasn't very exciting. Today, you can hardly enter any web site without seeing advertising for online poker, with poker sites and fora mushrooming. According to Party Gaming, online poker generated $2.6 billion in gross gaming yield and represented 20% of global online gaming revenue during 2005. To call the development during these ten years an explosion would be an understatement.
But artificial intelligence is about to take over the tables. We have already seen it happen in chess, Deep Blue beat world champion Gary Kasparov in 1997; in checkers; and in backgammon. In these games it is believed that the best software program is superior to, or at least on par with, the world's best human players. Poker is somewhat different than chess and backgammon, but they do share a lot of common ground. In poker the cards decide the outcome of a single hand, and in backgammon the dice decide the outcome of a single game. But in the long run the winner is the one who makes the best choices. The skill level of the computer players are steadily improving, but it is not only smart algorithms that make them a tough opponent for a human. Poker players are notorious for playing long sessions and in the wee hours, the quality of play is decreasing at the same rate as the players' eyelids are closing. Poker bots don't have this problem, nor are they affected by the other major shortcoming of a human poker player: being on tilt, or playing suboptimal out of anger from losing a recent pot.
The game of online poker, with its huge revenue, is an attractive market for bot writers. Sure, online poker rooms prohibit bots; but in reality, there are a lot of poker bots that go undetected. With software dominating the world of chess, checkers and backgammon; poker is the next game. Online poker is not the same lucrative business it was a few years ago, the competition has stiffened and I am convinced that bots already have started to take a piece of the action. I predict that in just a few years a majority of the big money winners in online poker are bots. When that situation occurs it is questionable if online poker can survive at the same level as we see today. With more poker bots getting closer and closer to an optimal game, the playing field will be more even, and the earnings will not be enough to beat the poker rooms' fees, unless some unwary humans will stick around to feed them.
Building a poker bot to play in an online poker room where its participation is banned requires more than writing logic needed at the poker table. The poker servers are fighting tooth and nail in a war for their very existence. They are adopting multiple measures of defense: spyware-like functionality that monitors running processes on your computer, pop-up screens (a.k.a. bot challenges), playing patterns, etc. This war between sites and bots is not fought in the open, both sides prefer to keep a low profile here. The sites do not want to scare away their human clientele, while the bots are fighting detection. Because of their clandestine existence, it is difficult to evaluate the exact state of poker bots today. Some universities are doing research in the field and the University of Alberta seems to lead the way.
It is exciting to know that my fellow finalist Daniel Crenna is writing a framework for hooking up poker bots to play against each other. I hope that his endeavor will help budding poker bot authors to improve their software. It will be very exciting to see the final results of this project! A similar commercial product, Poker Academy, is also available on the market.
Friday, July 28, 2006
Time for Code Freeze
Time, quality, resources and scope. Those are the four variables in software project management. As the deadline closes in I only have the luxury to change scope. Sure, there are more features I planned to get into this version, but the scope will be cut in order to make the release stable and have a timely delivery. Time is a rare resource for me these days with being a new father , having a full-time job, following the latest news about the regional conflict, and blogging/developing FeedJournal . Despite that, I am proud of what I have accomplished so far with my project in Visual C# 2005 Express Edition.
One week remains until release, and the time has come for Code Freeze: no more new features. Until August 6th I will work on finalizing documentation, web site, and of course testing.
FeedJournal will become a commercial project in version 2.0. Until then the fully functional version 1.0 will be the one submitted for the Made In Express Contest under a shared source license. That basically means that the source is available but there are no rights to use this source code in your own projects. I plan to add plenty of cool features before a commercial release plus some optimizations under the hood. I would like to thank everyone who contacted me with feature requests or comments. What you should expect to see in future versions are:
There are also some ideas I had envisioned early on in the project, prior to starting implementation, that have been moved to the recycle bin. Nothing strange with this, it is a normal reality check once you get down to the fine points of how things are supposed to work. For example, I had planned to rank articles according to web popularity (Technorati, Digg, delicious, Google, Yahoo, etc.). After much research of the various service APIs it is clear to me that this is simply not possible. Having x articles would mean sending x web requests to the various services. Until they support a technique for bundling together multiple requests into one, this feature will not be a part of FeedJournal.
In the meantime, I am looking for serious beta testers for future FeedJournal versions who will be rewarded for constructive feedback and testing.
Friday, July 21, 2006
FeedJournal Sample Issue
Yes folks, we have a world premiere, the first sample of a FeedJournal issue is available for your viewing pleasure! Let me remind you that the purpose of the FeedJournal project is to generate a PDF newspaper based on RSS feeds, intended for printing. The PDF file is available for download here. In order to open it you will need Adobe Reader or Foxit Reader.
The content spans a selection of last week’s blog entries from the Made In Express Contest finalists. I chose these feeds, not because I want to plug the contest, but because I want to avoid breeching copyright law for republishing other blogs’ articles.
So what can you see in this sample issue? The following settings are in use: A4 paper size (a European standard), 4 columns, 0 points line spacing, 8 points column spacing, 30 points page margin and 10 points margin between headline and article text. Furthermore, the headline is Times New Roman (22 pt bold), article text is Times New Roman (8pt), publishing date is Lucida Console (5pt) and news source is Arial (9pt italic). All of these settings, and others, can be customized from the application’s Options dialog.
But there are also things that you cannot see in the sample. Like for example images. Beside the masthead (newspaper lingo for the first page logo), there are no images. Future versions of FeedJournal will include support for images contained in blog entries. Another thing not visible in the sample issue is the already implemented support for long articles to jump between pages if they do not fit. The reason is simply that there weren’t any long articles available in the selected time span.
And let me finally take the opportunity to congratulate my fellow finalists for getting published in the newspaper! ;-)
I would appreciate any feedback regarding the sample issue, don’t hesitate to contact me by using blog comments or e-mail me at email@example.com.
Monday, July 17, 2006
Rockets and Progress
In an instant the situation here has deteriorated. Rockets explode closer and closer to our home (so far a safe distance away), and it will surely take time before we will see and end to it all. Native Israelis are more relaxed about the situation, more adapted, or perhaps it's just an image they are putting up. Having recently become a father makes me worry about my family's security. Between closely monitoring the latest headlines, spending time with our 1.5 month old daughter Noa and working my butt off at my day-job, the contest deadline is slowly closing in.
I started to write the FeedJournal help file but I haven't decided on a format yet. HTML is attractive because I can easily host an online version of the help files, while keeping them up to date with minimal maintenance. CHM files are more standard and look more professional though. The jury is still out...
The application itself is starting to be finalized and I haven't forgotten my promise to submit a sample PDF newspaper issue here. Patience! For now here is a screenshot of the main window.
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):
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
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.
Wednesday, May 24, 2006
Choosing FeedJournal output format
When I first started spawning ideas about an RSS reader that would print the articles as a regular newspaper, I had a tough choice to make between output formats. My main options were:
There are also other document formats (RTF, etc) I considered but quickly rejected.
Let's look at each of these formats in order to see how I came to my final decision. The main factor guiding my choice was having the result look professional, with justified multicolumn paragraphs for instance.
The thing is that I would love to be creating an HTML page with CSS
styling because of the portability. Basically the full published issue
would be contained in one HTML page (with a few hyperlinked image
files). This package would open on any computer with a decent web
browser. Also, page breaks are readily available using the
The MS Word or RTF choices are immediately more attractive because they expose an API to create the documents, which should produce more maintainable source code. On the other hand the Word format is a closed format as well as the API.
Then we have the third option, PDF, which on the surface doesn't offer any benefits over MS Word (besides being an open format), only a more quirky client which by default takes ages to start up. But some research-hours later and after finding iTextSharp I reached the conclusion that PDF is the way to go for FeedJournal! iTextSharp is an excellent open-source component written in C# for generating PDF files using the .NET platform. Using an open-source API for creating the PDFs is a significant improvement for a developer, allowing deep debugging of code sections and finding the root cause of exceptions. And should I find a bug or limitation in the component I have full control over the source and can fix it without being dependent on others.
Then of course there is the additional benefit of supporting the new ubercool eInk gadgets hitting the market right now, with all of them supporting PDF natively. More about these in future blog posts.
Saturday, May 20, 2006
As I have mentioned on the blog before, the big project I am working on right now is a feed aggregator in the form of a paper newspaper. This application is currently being developed using the .NET 2.0 framework. By using this development environment I automatically qualified to enter Microsoft's $10,000 Made In Express Contest where the idea was picked along with 11 other finalists.
I have previously used the name "RSS Star" for the project, but from now on the name will be FeedJournal. Information about this project is available at www.feedjournal.com - and as part of Microsoft's contest I will also be blogging at http://spaces.msn.com/madeinexpress6