Saturday, November 25, 2006

Emails to the FeedJournal Domain

I just had a large backlog of e-mails delivered to me. They were all addressed to any of the e-mail addresses in my feedjournal.com domain. There were e-mails all the way back from the end of August until today. Of course, this is an extremely costly thing to have happen to an ยต-ISV and especially at a time around a product launch.

I have been speaking to both my domain name registrar and my hosting provider and problem is now solved once and for all. You should all feel free to safely use the feedjournal.com addresses for contacting me in the future.

I am terribly sorry for everyone who tried to contact me during this time (31st Aug - today) and never received a reply. I am now starting to process the e-mail backlog and reply to each and everyone of you.

Sunday, November 19, 2006

FeedJournal v2.0 is Available

After a few sabbatical months in the aftermath of the Made In Express Contest, it is finally time for FeedJournal v2.0 to see the light of day. Functionality-wise there are no major differences between v1.0 and v2.0 - all the changes have occurred behind the scenes. The database is now using on a much leaner engine, considerably speeding up the download size and installation process. On top of this, the new version is going shareware, with a 30-day trial version without any limitations. The price for a single computer license is $39.95, but during 2006 there is an introductory offer of $29.95.

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 [1] [2] [3] 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 _UpgradeReport_Files folder proves this.

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:

Thank you for your feedback regarding the Made In Express Contest. We have reviewed your complaint and have determined that the Contest was operated in accordance with the official rules. We appreciate your interest and look forward to your participation in next years contest.

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

Last chance to vote for FeedJournal in Made In Express Contest! Anyone is free to vote and the booths will close on September 1st!

Thank you for your support.

Thursday, August 17, 2006

FeedJournal Database Decisions

Chris 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 entry, FeedJournal:


Still has a long way to go, but I'd say that sample output is quite nifty. The only thing that keeps me from installing and recommending the app wholeheartedly is the need to install SQL Server 2005 Express Edition first - which I'm not going to do on my desktop. Suggestion: push forward with this one, but rely on something else for feed information storage (sorry, but installing SQL is overkill for users like myself).




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:


Submitted Projects must compile successfully in Visual Studio 2005 Express Editions (any edition), and use SQL Server 2005 (any edition) for any database storage or data access code.


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

In Made In Express Contest it is now up to the public to vote for the project they like best. FeedJournal is one out of the 11 projects you can vote for. Please make a visit and choose your favorite!

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 6, 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 4, 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 3, 2006

Finishing Touches

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.

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!

Tuesday, August 1, 2006

Promoting FeedJournal

Small software businesses, or ยต-ISVs, are cropping up everywhere nowadays. A big challenge for them is to get a foothold in the industry and claim a piece of the market. Then they need to keep that attention.

In Bob Walsh's excellent " Micro-ISV: From Vision to Reality", I learned that a blog can be an excellent vehicle for spreading the word about your product. It can also help to make sure you are keeping your customer's attention focused, by having them subscribe to your blog's RSS feed. The Blogosphere is a fast-moving media where the attention span sometimes lasts shorter than it takes to read a headline. The cross-pollination in the blogosphere is an interesting phenomenon which I hope to be able to leverage some more in the future.

For now, I decided to add a new section to FeedJournal's web site. The new section is called "In Blogs", with the obvious allusion to "In the Press", and will contain interesting mentions about my application from the blogosphere. I know, FeedJournal is not even out for beta testing yet, but it is never too early to start marketing, right? And besides, I can't resist the kick I get out of seeing my name mentioned in other people's blogs!

As a side note, after months of owning the domain feedjournal.com, I finally figured out how to configure the DNS so that I can use my hosting service with the domain. Until now I was using GoDaddy's forwarding functionality together with a masking technique. Now the hosting is set up like it should.

Sunday, July 30, 2006

Writing Documentation

Writing software documentation is probably the most boring part of a project for a developer. However, having blogged during the development process makes it easier. I am able to take some blog entries and paste them into the help files with very little editing. Also, by continuously writing blog articles during the past months, it is easier to fight writer's block.

I am using the free Shalom Help Maker to generate a standard CHM-file, easily accessible from within FeedJournal. Writing the help files is instructive because it places you in the user's shoes, and any design flaw becomes much more apparent. However, I have been working hard to keep the application design simple, and I hope that it is intuitive enough for users, so that they will not need to resort to the help system.

Saturday, July 29, 2006

Deep Linking from RSS

One of the more unique and perhaps controversial features of FeedJournal is that it can filter out the meat of an article published on the web.

How does it accomplish this? FeedJournal has four ways of retrieving the actual content for the next issue.

Actual Content
In the trivial case, a site (like this blog for example) decides to include the full article text within its RSS feed. FeedJournal simply published the content; no surprises here. By the way, this is how all standard RSS aggregators work. The problem is when a site decides to only publish summaries or teasers of the full article text. FeedJournal needs to deal with this because it is an offline RSS reader, users cannot click on their printed newspaper to read the full article.

Linked Content
The <link> tag inside the RSS feed specifies the URL for the full article. In case the RSS only includes summaries of the full articles, FeedJournal retrieves the text from this URL.

Rewritten Link
In most cases, just following this link is not a good solution. The web page typically includes lots of irrelevant content, like a navigation menu, a blogroll, or other articles. FeedJournal lets the user write a regular expression for each feed, automatically rewriting the article’s URL to the URL of the printer-friendly version. As an example the URL to a full article in International Herald Tribune is http://www.iht.com/articles/2006/07/28/news/mideast.php while the link to the printer-friendly version is http://www.iht.com/bin/print_ipub.php?file=/articles/2006/07/28/news/mideast.php By inserting bin/print_ipub.php?file=/ in the middle of the URL we will reach the printer-friendly article. This article is much more suitable for publishing in FeedJournal, because it more or less only contains the meat of the article.

Filtered Content
“More or less”, I said in the last sentence. There are usually some unwanted elements left in the printer-friendly version, like a header and a footer. These can be filtered out by letting FeedJournal begin the article after a specified substring in the HTML document source. Likewise, another substring can be selected as ending the relevant content.

By applying these functions it is possible to scoop, or extract, the meat of almost any web published article. Of course it is only necessary to do this once for every feed. To my knowledge, FeedJournal is the only aggregator who has the functionality described in the last three sections.

Is this legal, you ask? Wouldn’t a site owner require each user to actually visit the web site to read the content and click on all those fancy ads sprinkled all over? Well, my stance is that if the content is freely available on the web, I am free to do whatever I want with it for my own purposes. Keep in mind that we are not actually republishing the site’s content, we are only filtering it for our own use. Essentially, I think of this as a pop-up or ad blocker running in your browser.

What is interesting to note is that some web sites have tried to include in their copyright notice a paragraph limiting the usage of their content. Digg.com, for example, initially had a clause in the their copyright effectively prohibiting RSS aggregators from using their RSS feeds! Today, it is removed.

As long as FeedJournal is used for personal use, and the issues are not sold or made available publicly, I do not see any legal problems with the deep linking.

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:

  • Sections
  • Layout templates
  • Images
  • Browser integration for publishing a selected web page in the next issue
  • PDF import (nice for those online crossword puzzles and Sudokus)
  • Advanced article scoring using user-defined keywords and extended RSS tags
  • Scheduled publishing and printing
  • HTTP authentication and cookie support
  • Improved throttling support and adhering to servers’ TTL setting

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 contact@feedjournal.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.

Wednesday, July 5, 2006

Why FeedJournal? (or why the information age matters)

The idea of an RSS syndicated newspaper came to me when I was subscribing to a morning newspaper last year. I hadn't had a morning paper for years then, so it was all a bit new to me. I really enjoyed to have access to news hot off the press, which I could read without having to stare into the computer monitor; for example in the comfort of my bed, sofa, or while traveling. But there were two things I strongly disliked about it: the monthly subscription was fairly expensive and I didn't really care for a majority of the content in the newspaper. The competing newspaper had a few sections that I would much rather read, but I couldn't afford to spend my time reading more than one morning newspaper. I knew that there were better ways out there for accessing relevant news in a comfortable way. I just needed to find them.

Content is king. There are no two ways about it. When people were talking about the information age ten-fifteen years ago I didn't get it. I didn't see how the management and distribution of content could become so central in a society that it would name a whole time period. But I am starting to see it now, how a low signal-to-noise ratio can kill the greatest endeavor; how the delivery of timely and to the point information can be of extreme value; and how the production of high quality content in itself can form an outstanding business plan.

I’ll say it again, the "production of high quality content in itself can form an outstanding business plan". Traditionally and historically the great content producers also had to be great content deliverers in order to survive. They had to make sure that the newspapers or books were printed and delivered to make any kind of business. Today, all of this has changed. Today, we have electronic delivery of the same content that used to make up newspapers and books, through for example the World Wide Web.

But along with the change of delivery method we as customers are losing out on some of the great and time-proven ways of accessing the content. We need to make a compromise between reading a newspaper online with all the latest events, or in paper format using news that in our fast-paced life are already old (just by a few hours but still old). This is where FeedJournal comes into play. FeedJournal serves as a content deliverer and presents information from whichever sources you want in a traditional format that was the default way of reading news for a very, very long time.

Of course, this is just one out of many of FeedJournal’s benefits over a traditional newspaper. It also empowers the user with the option of collecting multiple feeds to create a newspaper that is tailored for her own needs: with the local team’s results, the stock portfolio’s development or even personal e-mail. It gives the user the possibility to choose the deadline to be the exact moment she wants, not six hours before it will actually be read. And of course the paper size can be decided: A4, A3, letter size or why not an index card version that you can put in your Hipster-PDA? Gone are the monthly subscription fees for delivery, you only need to pay for the actual content in case your favorite news source doesn’t provide it for free on the web already.

Sunday, June 25, 2006

Newspaper Design Algorithm

As I was mentioning in an earlier blog entry, the part of the FeedJournal project which I have been feeling most insecure about is how to design the algorithm for laying out the articles in the newspaper. This is a critical step for a number of reasons: it has to look like a newspaper, it has to read like a newspaper, and it has to be pretty (the output PDF is essentially a part of the FeedJournal GUI).

Anyway, I am happy to report that significant progress have been in this area. I developed an algorithm which dynamically creates a newspaper with customizable:

  • number of paragraphs
  • margins
  • paper size
  • font
  • spacing between rows and various article elements

I have also implemented support for a headline font size which is a function of the article's importance/size.

Together with the masthead (newspaper lingo for the first page logotype) the whole creation starts to look pretty snazzy, if I get to say it myself.

The algorithm implementing the layout is pretty simple, but efficient. First, I gather the collection of articles which are due to be published in the upcoming issue. I sort these according to size/importance; this step is made very simple by the new Generics classes in .NET 2.0. Then I take the first article which fits into the next available space on the current page and remove the article from the collection and mark the page space as occupied. If no article fits the remaining space I will publish what fits on the page and add a page jump to another page where the article is continued. Basically that's all there is too it, and this algorithm works very well so far.

In one of the coming blog posts I will attach a sample PDF file to showcase FeedJournal.

Monday, June 19, 2006

SQL Server Strangeness

So I got up at 4:30 today in order to get some serious work done on FeedJournal before going to work or the baby wakes up. Well that was my plan at least. The first part went fine; I got out of bed, went for a short run and showered. By then the baby was awake though so I had to do some multitasking with one arm holding the baby, while the other hacking away at the keyboard. But that's actually much nicer than it sounds. Seriously.

Pretty soon I run into problems with my SQL database that has been working flawlessly until now. Whenever I tried to connect to it I was thrown an SqlException: "Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed." At first I thought it was due to an incorrect connection string but everything seemed fine and the database was in the right location. So I hit the waves of the WWW to try to find anyone with similar problems out there. Loads of people had run into the same problem, but in most cases they were using Remote Desktop, which was the root of their problems. I'm not using that, so I was left to my own devices again.

I tried to restart the development environment. I tried to manually restart the SQL Server services, but to no avail. It wasn't until I did a reboot that the problem went away, and now everything is working fine again. Crossing my fingers.

Sunday, June 18, 2006

NP-Complete

I have been sick with the flu for the last week and still don't feel so great. For this reason the programming hasn't really proceeded as I expected. However, I have been doing a lot of thinking in my head about the database and class designs. As soon as I feel better I will work on laying out the PDF newspaper dynamically, which I realize will be a tough nut to crack.

Basically the problem is related to the classic computer science problem of bin packing, which is NP-complete. NP-complete is a computer science term, standing for "non-deterministic polynomial time". It basically means that there is no simple solution to the problem. My approach will be to take some shortcuts and make compromises so that the layout will be acceptable from a design viewpoint, while not digging myself into a hole with a too complex layout algorithm

In the meantime, while waiting for the fever to go away, I am reading some academic papers on newspaper layout and bin packing solutions. I don't think it will help my sickness, but it does make me sleepy.

Monday, June 5, 2006

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

Atom.NET + RSS.NET

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.

IP*Works

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.

Conclusion

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.

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:

  • HTML with CSS
  • Microsoft Word
  • Adobe's PDF format

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 <br style="page-break-before:always;"> tag. However, the problem comes when trying to figure out the size a chunk of text will use when creating the pages.

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.

Besides, the startup performance of Adobe Reader is easy to cure. And if you are completely allergic to Adobe Reader there is a beautiful lightweight freeware alternative in Foxit Reader.

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

FeedJournal.com

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

Saturday, May 13, 2006

I'm in!

I got an e-mail from Microsoft letting me know that I will be one of the 12 finalists in the Made In Express Contest. That's way cool! I will keep a blog updated at the contest site but I intend to double-post the entries hare as well.

I am thrilled to get the privilege of competing as a finalist in the "Made In Express Contest!" with my vision of an RSS aggregator in the form of a paper-based newspaper or magazine. What is most exciting for me is the opportunity I am getting to build the project within this contest, with all its opportunities of making it visible to the public.

Wednesday, May 10, 2006

Made In Express Contest

Microsoft called me up on the phone today to discuss my submission for the "Made In Express Contest". The newspaper project I submitted for the contest seems to have grabbed their attention, and I am now a finalist candidate. Apparently we are down to 30 contestants now, out of the original 1500 submissions. The finalists should be published in about a week and a half, if everything goes according to plan.

Anyway, this is a very good sign that my newspaper project can find a niche in the market. Now, I just have to wait for Microsoft to make their final choice...the suspense is unbearable!

Sunday, April 23, 2006

RSS Star launch date

On May 15th the first glimpses of RSS Star, an RSS newspaper application will be available. While this date won't entail any official software release, there will be a beta program in order to poll interest, and collect feature requests and use cases.

RSS Star is an RSS aggregator with its output in the form of a regular newspaper, ready for printing and reading at your own leisure away from the computer. It allows you to personalize your very own newspaper and have it printed at a time convenient for you. Just import an OPML file with your favorite newsfeeds and you are set to go!
  • No more bulky newspaper format - you decide the paper size!
  • No more reading last night's news - you decide the printing hour!
  • No more skipping boring sections - you decide the news sources!
  • No more monthly subscriptions - buy the software once!

Monday, March 27, 2006

Introducing RSS Star

Microsoft is running a development competition at Made in Express Contest. The competition will run over the summer and the winner will receive a prize of $10,000.

I decided to sign up my new project RSS Star for the competition. Although the deadline is kind of tight, I plan to get v1.0 out the door by the time the competition closes on August 6, 2006.

So what is RSS Star you ask? Well, it's loosely based on the idea of RSS aggregators. Yeah, yeah, I know, there are 2,000 of them out there already... But this is not your average run-of-the-mill news reader. While I don't want to give away too much of the project details at this early stage, the basic idea is to use some advanced content filtering rules and in the end deliver a newspaper in PDF format which will be read just like your printed morning paper. The main advantages of using RSS Star over a normal newspaper will be the content customization, an the fact that you control the press deadlines yourself. I will post more news about this project as it progresses.