August Programming Competition Winner
The requirements were tough and the deadline was short. Any member that entered should feel good about themselves just for rising to the challenge. Though not easy, of the half-dozen entrants, a winner has been chosen.
Of the many programming languages available, the winner chose ASP.NET for their application.
Admittedly, working with a database would be ideal and have benefits not available when working with files. Having written my own version to work with all three of the exported formats, I can say that in my opinion the winner made a wise decision in choosing to work with XML files.
Still, the work was not without problems. To those that entered and were unable to overcome them in time to submit your application, it is hoped that you can learn how various problems were handled by studying the winning entry.
Start Page without CSS the file selection page
Start Page with CSS
Page 2 initial selection (and export) options page
Page 3 refined results, further selection (and export) options page
And the application creates well-formed and easy to read XML files
<title>Re: trackback plugin</title>
<message>Yeah, sorry to act like a newb about the whole thing. But I didn't think anyone would volunteer to do this for me.
Anyhow, I got notification of both trackbacks and sure enough, only the spam-free would show up on the blog and the other was notified to me via email with the plugin that you recommended.
So there ya go, it works :) But thanks again for helping and recommending that plugin.
[QUOTE=SampleMember]You already have trackback validation native to your version of WP? In any case, it seems the plugin (if you're using it) is working OK. I made 2 test posts and only the one with the link shows up as a trackback comment (with a funky pre-html edit encoding of something. - the "A"). Did the "spam" trackback get flagged as such?[/QUOTE]</message>
So, to get to the announcement, the winner is wwb_99. He was kind enough to answer a few questions:
You chose to work with ASP.NET, any particular reason why?
Because I know it very well and time was limited.
What tools did you use?
To produce the submission, Visual Studio 2010, ReSharper and my brain. Now, we all walk on the shoulders of giants, and I used a number of open source tools and projects to significantly enhance my submission. To ease the pain of testing things, I relied on the NUnit framework enhanced with RhinoMocks and MvcContrib's TestHelpers. From the operational side of things, the search would not be possible without Lucene.NET. On the UX side of the fence, just about everything pretty/fancy/neat is a direct result of jquery and jquery-ui.
In my version of the application, one of the unexpected problems I encountered was finding a way to uniquely identify Private Messages. The export files don't include any Id numbers. How did you solve that?
After cursing whoever designed the schema--you always need an identifier in any data interchange scenario--I realized that each message *should* be unique based upon a sum of it's parts. So I effectively serialized the message to a string and took a fingerpint of each message, thereby creating a unique ID.
Other problems I had to deal with included long unbroken lines, "unusual" characters and entities. What were the most troublesome problems you had getting things put together?
Never really ran into this problem--insofar as dealing with the data transport, I just worked within native .NET XML serialization. If it was valid XML, .NET dealt with all those problems so I could concentrate on stuff like making the messages searchable.
The allowed time frame was tight. About how many hours did it take you from start to finish?
Not much of an hours tracker, but perhaps 24 hours or so total.
Speaking of finish, in my experience nothing is ever really done, it seems there's always a tweak that could be made, a feature added, and the unexpected bug fix. Not that I'd fault you for taking the prizes and running, but are you planning to host the code somewhere, improve and maintain it?
Actually, I took the liberty to post the code over to Codeplex at http://vbulletinpm.codeplex.com/
for the world to see and use. Beyond that, I don't really plan to do much with the app personally and publicly as I've got a few other fish to fry at the moment.
If I had a bit more time when working on it, beyond the finishing touches one would need -- such as input validation for uploads -- I would be considering the next step of taking the imported messages and persisting them for personal use in a document DB such as RavenDB. This would open up some neat scenarios and be a logical improvement.
Thank you for participating in this contest. And thank you for the interview. Is there anything you would like to say about yourself in closing?
Thanks for the opportunity and for considering my entry. It was a blast.