Woopsi 0.99.4 Released

Woopsi 0.99.4 is now out, but in a break from tradition, you can’t download it from SourceForge. As I said in the last post, Woopsi development has moved to BitBucket.

At Lakedaemon’s suggestion, I’ve created a new website for Woopsi. All releases - including this one - will be available there from now on. The new site can be found here:

This release mainly fixes bugs. Additionally, I’ve fiddled with the fonts and font generation tools a little, mainly to accommodate basic functionality required for Lakedaemon’s “XmlBox” gadget.

The woopsi.org website’s source code is itself hosted by BitBucket, and can be found here:

However, there’s very little PHP behind this site, so there’s not much to see that you can’t find by looking that the HTML behind the pages.


Farewell to SourceForge

SourceForge has been Woopsi’s source code host since October 2007. They’ve been a great host. They offer some excellent features, and haven’t charged me a thing for nearly 3 years of diligently caring for my code. However, both technology and “social” coding techniques have improved since I adopted Subversion. I’ve found modern distributed version control systems to be faster and more flexible than Subversion, whilst the forking capabilities provided by sites such as GitHub and BitBucket make collaborating with other coders incredibly easy.

A request from Lakedaemon that I move Woopsi to a DVCS finally convinced me that it was time to move on, so I’ve switched from Subversion to Mercurial. Woopsi and its associated sub projects are now hosted on BitBucket:

The SourceForge page remains in place as it’s impossible to close a SourceForge site that has code committed to it. It now includes a notice indicating that the project has moved.


Loose Ends

I have released a few other projects to the tinterwebs recently, but haven’t as yet announced them.


First up is version 3.0 of ALite, a simple data-access and data validation framework for .NET4:


This version simplifies much of the framework. I went off on a wild tangent before moving the repository from SourceForge to BitBucket and started implementing features such as pseudo-transaction support. I even tried real transaction support using the classes from the System.Transactions namespace, but ran into so many nasty problems that it quickly became obvious that it wasn’t going to work.

Instead, ALite now works much more like Igmongonious. It uses a document (key/value store) to store the values of properties, which simplifies and speeds up the undo system. Swathes of code have been refactored to make the framework easier to use.

The “changelog” document seems to be inaccurate so I can’t give a complete breakdown of everything that has changed. Fortunately, no-one but me is crazy enough to use this library.

I moved the repository from SourceForge to BitBucket for a number of reasons. SourceForge has done some neat things with their UI and added a host of exciting new features, but:

  • BitBucket is a better fit for small projects like this. SourceForge’s insistence on manually vetting all projects doesn’t seem to have alleviated the amount of junk projects in its database, but it does increase the amount of work necessary to get what should be a minor project up and running.

  • Mercurial is magnitudes faster than SubVersion, particularly when SubVersion is lumbered with SourceForge’s horribly slow SVN servers.

  • BitBucket projects come equipped with a Creole-based wiki. Though SourceForge has recently added a per-project MediaWiki installation to their suite of features, Creole is notably terser than MediaWiki markup. The wiki is much simpler, which again is perfect for smaller projects. The entire wiki can be pulled down as a Mercurial repo allowing local editing and change tracking.


Next up is Chroma-X, my ill-fated, unfinished and unfortunately-named shoot-em-up for the GP2X:


Nothing new in here, but the sourcecode is browsable and easily accessible. Incidentally, I managed to get the game running on a GP2X Wiz. I was disappointed to discover that it was slower on the Wiz than it was on the GP2X F-200, which put a damper on my Wiz coding plans.

Canvas UI

Lastly, my canvas UI project is also now on BitBucket:


Since the last version I’ve fixed a few bugs and added plenty of new features, including:

  • Window close and depth buttons;
  • Scrolling lists;
  • Shadows on label text for disabled buttons;
  • Separation of GUI definition from library code.


Igmongonious - A MongoDB Framework for C#

I’ve been playing with NoSQL databases lately. The DB I’m most impressed with at the moment is MongoDB. I was so impressed with just how easy it is to get data in and out of the database that I ripped ALite apart and reassembled it as a framework for creating objects that persist to MongoDB automatically.

That’s automatically - there’s no CRUD code needed. No longer do you need to fight against the object/relational impedance problem. Never again will you need to suffer bug-infested template generators, that produce bug-infested templates, that contain millions of lines of sub-optimal code to perform a single “SELECT * FROM table WHERE ObjectID = 3” query. Just inherit from a single class and let the database and the framework take care of persistence.

Igmongonious (the name is a corruption of “ignominious”, but rather harder to pronounce) also includes the rules system from ALite, and a very similar undo system.

The code is available on BitBucket:

The code is in the form of a Visual Studio 2010 project, but I don’t think it uses anything that isn’t compatible with .NET2.0.

The BitBucket wiki has more information about what the framework can do and some simple examples.

Hmm. I’ve jumped to VS2010, C#, Mercurial, MongoDB and BitBucket from VS2008, C++, SVN, embedded development and SourceForge in the space of one blog post. Blimey, I’ve become cutting-edge again.


Woopsi SourceForge Project

Woopsi has been accepted as a SourceForge project, which should mean that I can manage the project better - SVN code repository, bug tracking, documentation, etc. Nothing there yet, as my laptop is on the other side of the planet, but I’ll start adding things soon. The project page is here:

Woopsi SourceForge Project