Calling all Coders! Enter the August Programming Competition here

Do you think you can write a…

SitePoint Private Message Utility Application

I can put my Private Messages into custom folders. And I can select Private Messages and move or delete them.
But I wanted to be able to search them, save some, and clean things up now that I’m starting to get quite a few and my limit is approaching. And I didn’t want to spend a lot of time doing so.

I can export my Private Messages to Text, CSV, and XML files. So, I can archive my Private Messages and clean up the older ones saved on the forum if I want to. But do I want to save them all? And once I have them, what do I do with them so they’re useful?

My first impulse was to write my own utility application to run on a localhost server. But then I thought “Hey, SitePoint has a lot of members that write code! Maybe someone else could write a better application than I could?” quickly followed by “Why not have a contest?”

The idea was passed along to those at SitePoint Headquarters, and they approved! So who can enter? Any and every SitePoint forum member!

But be warned, the task is probably a bit much for a newbie developer. The time constraints and high standards may make meeting the requirements too daunting for even more advanced developers.

That said, to make things as easy as possible, competitors can choose what format(s) the utility application works with and what language is used to write it in - with the stipulation that the judges can read and test it. The judges have experience with many languages and various versions and variants of those languages. For example:
Awk, Bash, Basic variants, C/C++, Java, Lisp variants, Lua, Pascal variants, Perl, PHP, Python, Ruby, XSLT

  • So the chances are better than good that the language of your choice will be OK. Just let us know first to be sure.

Those interested are encouraged to look at their own exported files. For easy reference they are as follows:

TEXT FILE FORMAT: (whitespace includes newlines and tabs)

SitePoint Forums;
Private Message Dump for User SampleMember; Jul 11, 2010 13:57 -->

Folder :	Sent Items

From :	SampleMember
To :	FormAlly
Date :	2006-11-14 01:24
Summary :	added iframe
If you can give me a link to the site I'll take a look at what's being added and look at what kind of user input stuff it has that should be checked. Not that I'm an expert, but it's worth a try.

CSV FILE FORMAT: (whitespace includes newlines)

"2006-11-14 01:24","Sent Items","added iframe",SampleMember,FormAlly,"If you can give me a link to the site I'll take a look at what's being added and look at what kind of user input stuff it has that should be checked. Not that I'm an expert, but it's worth a try.

XML FILE FORMAT: (whitespace includes newlines and tabs)

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- SitePoint Forums; -->
<!-- Private Message Dump for User SampleMember; Jul 11, 2010 13:54 -->

<folder name="Sent Items">
			<datestamp>2006-11-14 01:24</datestamp>
			<title>added iframe</title>
			<message><![CDATA[If you can give me a link to the site I'll take a look at what's being added and look at what kind of user input stuff it has that should be checked. Not that I'm an expert, but it's worth a try.

Don’t have any Private Messages to export and work with or prefer to not use your own? The attached SampleMember files are available for your convenience. Every effort has been made to make them as “real” as possible.
privatemessages-SampleMember-Jul 11, 2010.txt
privatemessages-SampleMember-Jul 11, 2010.csv
privatemessages-SampleMember-Jul 11, 2010.xml

Now the details, the utility application:


[LIST][]state platform requirements
]follow a standard coding style convention - i.e. human readable with good naming - in English.
[]have enough comments to make it easier for someone unfamilliar with the code.
]be able to be run on a typical localhost server
[]be 100% error free (suppressing errors doesn’t count!)
]interfaced via a web page that has valid accessible mark-up,
… any javascript and CSS in external files only
[]SELECT file(s)
]READ data from the exported Text and/or CSV and/or XML files and those created by the application,
[]SEARCH Private Messages by:
… folder, date(s), from, to
… summary, message - by using both single words or phrases
]DISPLAY results in a table or table-like rendering
[]SORT results in both ascending and descending date and time order
]SAVE any selected results to a new separate file (Text and/or CSV and/or XML).
[]be fully functional without javascript being enabled
]still be easily readable without CSS being enabled
[*]be such that others are freely able to use your code for personal use for free[/LIST]


[LIST][]code can be written in any language the judges can read and test
Post here to let us know and find out if it’s OK first
]testing can be done using either developer’s own exported Private Message files or the attached SampleMember files
[]mark-up can be
]javascript, if used, can include freely available open-source libraries
[]images, if used, must be your own or in the public domain
]any reasonable directory structure is acceptable[/LIST]

Time Span:

[LIST][*]Participants will have 14 days to submit their Beta version. That is, until August 14 midnight GMT

  • Only one submission per member will be accepted.
    [*]Approximately 5 days later the winner and any deserving honourable mention will be announced.[/LIST]

Additional Criteria:

[LIST][]in the event of any “ties” Bonus Points will be taken into consideration
[*]Submissions should NOT be attached to posts. Please send me a Private Message with a URL where I can download them. Or send me a Private Message and I will give you an email address where you can send them.[/LIST]


[LIST][]Code to be made available to other members for their personal use.
]Winner will be featured in an Interview thread
[*]Winner will receive a SitePoint book and admittance to a Live Course of their choice Free
]Those receiving Honourable Mention will receive admittance to a *Live Course of their choice Free[/LIST]

*Bonus Points for:[LIST]
[]Secure access
]Pagination of results
[]Most efficient run time
]Most efficient memory use
[]Having the utility application also work with (but not dependent on) database(s)
]Rendering smilies as images[/LIST]

Sign up now, the clock is ticking!

I’ll give the contest a go. My current plan is to use Turbogears 2.1 which is a full-stack, Python web framework.

Python’s jawsome. I want to see this.

I registered interest above, but didn’t submit an entry. This is just to let whomever needs to know, know that my entry was finished way before the deadline but broke a lot (most) of the “MUST” bullet points (deliberately); enough to prevent me feeling it suitable for the contest.

Good luck to those who submitted, and I’ll probably post my approach somewhere off-contest anyway. :slight_smile:

Well, it wasn’t easy, but 2 days late and a $1.50 short

A winner has been decided!

I’ll be sending the notification PM to the winner soon and as soon as it’s ready I’ll post the details in another announcement thread.

I’m afraid the contest has already closed.

I have an idea, but no questions thanks to the previous discussion covering anything I would have asked. The deadline is tomorrow, which gives me this evening and a bit of tomorrow… hopefully that won’t be cutting it too short!

Well, time is almost up

For those that were up to the challenge, please send me a PM indicating where I can download the file(s) from. Or if you don’t have someplace to host them let me know and I can send you a temp email address where you can send them as an attachment.

I don’t expect anything well polished (but surprises are welcome!) - Beta after all - but I’m curious to see how others solved some of the various problems I encountered while writing my version. eg. long strings, entities and unusual characters, id-ing the priivate messages, …

This might be slight off-topic, and although I welcome this competition - it’s not really something complex which just screams to me that this small app is rather useless in the end. I’m imagining the whole process of exporting PM’s to some other app and it just feels like something I would never do since it’s not as usable as just opening a link (PM folder) and doing what I need there.

In this day and age when we have cloud computing available at a whim - I sincerely doubt that limits at PM’s at forums are useful anymore. With terabytes of storage space available and huge processing power - is a limit on PM really needed? Especially if you’re a special ranked member?

On the other hand, Sitepoint is one of destinations I visit for years on weekly basis and it surprises me that such a huge web resource uses vBulletin.
Don’t get me wrong, VB is a great piece of software which just has way too many features. From all the forum software I used - I was always turned down from VB or Invision because they had so many damn features that it took some time before I got a basic forum running, not to mention that people who are not familiar with IT world as I am - had problems grasping some concepts when it comes to simple moderation.

This whole wall of text has a point - since this is one of known web resources (Sitepoint) which connects various skilled people - why not start a project that revolves around building a powerful forum software?
It might be an overkill in terms of execution and yet another forum software, but I’m seeing more and more good forum posts about various techniques in programming. Also, web lacks good “tutorials” that show how an actual mid-sized application is planned and built.
If nothing, it’s just something to think about - a huge web dev resource using (in my opinion) bloated software. I’m not trying to insult VB developers or anyone using it with this post, this is purely subjective thinking on the matter of VB and its usefulness.

^^^Yeah, would be awesome to push the deadline to Monday AM, would give us US types with a day job sunday to get things rite.

I’m game. I would like to go with the ASP.NET WebForm/MSSQL stack, however…is Silverlight an legal option? Might be overkill, but would defiantly be fun for the UI.

My builds platform requirements will be as follows:

PHP 5 w/ SimpleXML, DomDocument & XSLTProcessor (1.0)


I was considering entering, until I paid close attention to the Must: section of the contest details. Unfortunately, I will not be able to compete effectively with those requirements (or, restrictions) in place. There goes my desktop-based application idea!

Shame really, we should have more (!!) little coder challenges around here.

P.S. How has this thing been running for 5 days already and not a hint of an announcement in the PHP forum (I stumbled here from Mittineague’s signature, who seems to be the only one mentioning this)?

Actually the purpose is to have better functionality than what’s found in vBulletin. AFAIK there’s no way to search PMs for Date: To: From: Title: or Message: content. If there is, please let me know.

a) If extending vb’s functionality is your primary goal, then perhaps a vbulletin plugin would be more appropriate?

b) vbulletin 4 allows you to search by those parameters. vbulletin 3.7 is going to be the last release of the vb3 series… its practically end of life at this point.

Ditto. Some people’s lack of pride and professionalism simply stuns me (sadly it no longer amazes me).:frowning:

I agree that it’s a shame about the requirements, you could make a pretty awesome Tweetdeck style desktop application that would simply structure and organise the messages based on the filters or structural layout required. Heck, you could even give it push notifications if you really wanted to be posh. :slight_smile:

One of the judges has given their thumbs up :tup: Go for it!!

Damn, it’s already the 10th and I just saw this now… :frowning:
I hate joining half way through the “August” competition.

Will there be one in September? :stuck_out_tongue:

Counts me out. I live in the future now and we have javascript. Let me know when you want to catch up :wink:

Unlike XSLTProcessor, XMLReader is included in PHP 5+, and enabled by default for PHP 5.1
So as long as your “Requires:” state something like “PHP 5+ with XMLReader enabled” that’s fine, although instructions on how to enable it in a README would be best.

The database is an extra Bonus Point and great as long as your application doesn’t depend on it. That is, the app can work with files and a database, and save to files and a database.

Don’t be afraid to use javascript if you want to, just as long as it’s in an external file and the application doesn’t depend on it being enabled you can improve the user experience to your heart’s content.

As for “buttons”, feel free to design the “look” as you see fit. I imagine what’s considered a “proper” look varies almost as much as there are designers.

If I created a really nice app using a Flex UI but shocking basic standard HTML alternative, would I lose points? Are you going to grade each and every level of support? If so, what’s the ideal support level? (support including accessibility issues not just technical requirements).