I created a new MediaWiki extension titled “UK geocoding for Maps“, which I released yesterday.
The goal of this extension is to provide a way to display UK postcodes on Google Maps maps, by extending the Maps extension. Since obtaining geocoded postcodes for UK Postcodes via Google services is only possible using the Google AJAX search API, the standard geocoding infrastructure of Maps could not be used, and this extension should be seen as a sort of hack. Initial development for this extension was funded by Neill Mitchell for Prescient Software Ltd.
Version 0.1 is an experimental release, in which multiple issues are expected. I’m hoping to polish the whole extension a little more once I have some free time. Bug reports are welcome though.
You can get version 0.1 from SVN at
http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/UKGeocodingForMaps/
Yesterday I released Maps and Semantic Maps 0.5.4. This is a minor update which mainly brings additional stability and security to the 0.5.x branch. It contains several bug fixes, a few code improvements and some security fixes. Check out the Maps change log and Semantic Maps change log.
The only new functionality is that you can now define OpenLayers layers in your LocalSettings file, as well as layer groups. This is done by modifying the $egMapsOLAvailableLayers, $egMapsOLLayerGroups and $egMapsOLLayerDependencies arrays, which are defined in Maps_Settings.php.
Another noteworthy point is that Semantic Maps now contains all the geographical coordinate format handling that was part of Semantic MediaWiki earlier on. The code has been removed from SMW itself, and the SMW 1.5 release will be the first one without it. A nice side effect of this is that people still using Semantic Google Maps (one of the extensions Maps and Semantic Maps are based on, which is now obsolete (and really should not be used any more!)) will be forced to switch over to Maps and SM if they want to get the latest SMW.
Both extensions now use Validator 0.2.2, which is a minor update to 0.2.1, which was used in 0.5.3.
Downloads
I’ve been working on the Wikimedia Storyboard extension for a week now, and like to provide the people who are interested in it with some more details about what the project goal is exactly, and what my current progress is.
The idea of the Wikimedia Storyboard is to develop a fundraising landing page on http://wikimediafoundation.org/ with moderated but up-to-date stories from users and donors explaining the role Wikimedia has played in their lives. The motivation of building such a landing page is that donor and supporter stories can help to convince and persuade people of the impact an organization is having. It’s essentially an extended, moderated version of the real-time contribution history.
Basically the extension can be divided into 3 separate parts:
The storyboard interface
The storyboard interface will contain several stories stacked vertically in a box that follows the “eternal load” paradigm, much like Google Reader. Each story will consist of a picture with some text next to it, and some “share” features for stuff like Facebook and Twitter. For people with a special storyreview permission there would also be a button allowing them to hide the stories from being displayed in the storyboard. This part of the UI will be implemented using the tag extension <storyboard/>. You can see a rough layout on the underneath mock-up (on the left).
Story submission interface
As the above image reveals, there will also be an interface where you can submit stories, that will be placed on the right of the storyboard itself, in a tab gadget, together with a donate page. Like the storyboard itself, this will be implemented using a tag extension: <storysubmission/>.
Story review interface
The story review interface will allow users that have the ’storyreview’ permission to review, edit, publish, and hide stories. Hidden stories could still be published later; they would simply be available through a separate queue. This interface will be implemented as a special page (Special:StoryReview), but will be transcludable, meaning it can be put into other pages.
My progress
Over the past few week, most of my dev time has gone to reviewing documentation about how to correctly create the desired features in the Storyboard extension. Things new for me include, tag extensions, special pages, database interaction, and permission management. I now also better understand some other stuff like how variables should be escaped properly, which I’ll be applying to Maps, Semantic Maps and Validator for their next release. I’ve set up the basic structure of the extension, as you can see on svn trunk, and am now working on creating the dynamic aspects of the interface using jQuery and jQuery UI.
Some stuff I’ll still have to review further at some point is how to make the stories searchable, how to best internationalize the stories and how I’ll implement the “share” features. I’m looking forward to getting more familiar with MW core though, and getting the hang of these things should not be to difficult with the awesome support I’m getting from the devs at the MW IRC.
A few days back I decided I should release an update including a new update platform to some of my old applications. Apparently I had deleted the source of my little class library that I used for these applications a while back, and had to do a binary search through my backup archives to find the latest version. While implementing the new update platform in one of these apps, BN+ Brute Force Hash Attacker, I did a bunch of high level refactoring, both in the app itself and the used library, and decided to put them both freely available on SourceForge. I also decided to make some changes to the interface of BN+ BFHA, and replace the usage of a C# library for BigInteger support with the stuff that comes natively with .Net framework 4.0. So basically, after having put this app on the shelve for about a year, here is a new version, which might very well be the final one for this app.
Changes in 1.2.0
* Replaced custom BigInteger class by native .Net 4.0 class. * Replaced update platform with native ClickOnce deployment updater. * Refactored code structure and reduced required assemblies to BN+ Framework core. * Improved Help menu links. * Fixed Import/Export issue. * Redesigned about screen.
Downloads
Links
This is a screen shot of the previous version. This part of the interface is pretty much unchanged.
I’m also planning to release the new version of my class library that’s used for this app, which I renamed to BN+ Library, in the near future
As of today I’m working for the Wikimedia Foundation as developer. I have a 3 month contract, after which I’ll participate in GSoC 2010, and do a project for … well… Wikimedia Foundation
(I’ll post more about GSoC 2010 later on, I have a really awesome project planned :d) Although the payment is pretty regular for this type of dev, I think it’s completely awesome to work for a mission based company with as objective to make knowledge freely available to everyone, create completely open source software and work with really enthusiastic and talented people.
The project I’m going to start with is the Wikimedia Storyboard, which will take the form of an extension. The idea is to develop a fundraising landing page on http://wikimediafoundation.org/ with moderated but up-to-date stories from users and donors explaining the role Wikimedia has played in their lives. The motivation of building such a landing page is that donor and supporter stories can help to convince and persuade people of the impact an organization is having. It’s essentially an extended, moderated version of the real-time contribution history.
I’m hoping to get this extension finished in a bunch less then 3 months, so I can also do other stuff before GSoC. I’ll only be working part time on this though (~3hours/day), and will also be doing work on Semantic MediaWiki for KIT as well as other projects, such as Maps and Semantic Maps
Today I released Maps and Semantic Maps 0.5.3. Both releases mainly include bug-fixes, some of which quite important:
I also discovered an oversight in the hook system of Maps, which is kind of a dormant bug, that could have caused errors for certain implementations of extensions to Maps. The oversight was that a mapping service does not necessary support a sub feature, like the parser function display_point, of a feature, like the parser functions. A check is now in place, together with a defaulting mechanism that also allows you to set the default per sub feature. I’m planning on changing this to a more recursive algorithm in the future though.
A last change is the adding of initial Google Maps v3 support. It’s only implemented for the display_map parser function, and has a rather limited set of customisation parameters at the moment, not to forget a whole load of issues. My conclusion from trying to implement this is that the GMaps 3 API is definitely not in it’s final state yet, since it’s lacking vital methods needed for basic functionality. The support for GMaps v3 is therefore sort of an alpha release, and won’t be put on the documentation page until it’s more stable and complete.
Downloads
As you can see, I changed the location of the releases from my forums to 2 brand new Google Code projects [ Maps, Semantic Maps ].
Today I released the first public beta of Skynet, which is now at version 0.1.3. Skynet is an implementation of GALib with WPF GUI that solves the Travelling Salesman Problem (TSP) using Genetic Algorithms (GA). It’s completely open source and available under the GNU General Public License.
Downloads
You can also download the project code directly via SVN from the SourceForge source code repository, at https://csgalib-tsp.svn.sourceforge.net/svnroot/csgalib-tsp. From a command line, you can call the following: svn checkout https://csgalib-tsp.svn.sourceforge.net/svnroot/csgalib-tsp
Application features
Background
The idea for creating this application came to me after reading the first part of Bio-Inspired Artificial Intelligence by Dario Floreano and Claudio Mattiussi. I figured I needed to do an implementation of what I’ve read to test myself. I split up the general GA code from the application itself and created GALib, a small C# Library that provides the scaffolding for Genetic Algorithm based functionality. All work was done in my free time.
See this page for more screenshots.
Using the application
Although the application interface should be pretty straight forward to use, I’ve written some documentation, which can be found here. If you have any questions, let me know
How it works
This section on my wiki explains how Skynet works as an implementation of GALib. If you are not familiar with how genetic algorithms work, you are advised to first have a good look at this Wikipedia article and related pages. This section will introduce you to how GA logic specific to the TSP works in a bottom-up fashion. For more information on the actual evolution, see GALib. I’m also planning to write a Code Project article about this implementation of GALib.
This is a full dependency digram generated in a Visual Studio solution containing both the GALib and Skynet projects.
Points of interest
Since my main motivation for creating this application was exercise, I learned a lot from building it. It’s my first decent C# application, as well as the first time I’ve created one using WPF and the first time I’ve done any GA programming (or AI in general). It also gave me the chance to familiarize myself with some of the new things of .Net 4.0, some profiling tools (see screenshot below), and have some fun with navigation based windows. The biggest challenge in the application itself (so not counting GALib), was definitely creating the crossover algorithm for the Route individual type. At first I simply took half of the connections of one parent, and then the other half from the other parent, but I rewrote this to take all common connections. Although the crossover algorithm works fine now, it’s pretty heavy on the cpu, and limiting the maximum speed of the application severely. If anyone finds a way to speed it up, be sure to let me know :)
I’ve been working on this application on an off for a month now, and have implemented everything I’ve planned and more. Although a lot of cool stuff could still be added, I’m quitting active development of both this application and GALib, so I can focus on new projects that allow me to further expand my understanding of AI.
Over the last week I’ve done some effort to update the Maps usage examples on my wiki to match the current version of Maps. Since I hadn’t made any real change to them since 0.3, most examples where seriously outdated, and in some cases even caused people to use deprecated syntax. Now all Maps examples have been updated, the example pages have been restructured, and new navigation bars have been added.
You can check out the examples on the following pages:
A screenshot of the Maps documentation page:
I’m also busy with updating the Semantic Maps examples, but that’s still a work in progress.
Yesterday I released GALib version 0.1, a small C# Library that provides the scaffolding for Genetic Algorithm based functionality. It’s completely open source and available under the GNU General Public License. (See other blog posts about GALib) You can download both the source and compiled .dll from SourceForge.
I’ve done the effort to do some core documentation, in the form of comments in the source code, and an article explaining the usage of the library that I’ve put both on my wiki and on The Code Project.
Since my main motivation for creating this library was exercise, I learned a lot from building it. This is the first C# library I’ve ever written, as well as the first time I’ve done any GA programming (or AI in general). Abstracting the library in a way so that it can be used for GA in general was very interesting, and required me to expanded my knowledge of how to use interfaces and inheritance and use generics in a non-basic way for the first time.
I’m not planning to further develop this lib, although I might when I can re-use it for a future project. I hope to similarly release the first version of DownloadLib, which I’m having some lame multithreading issues with, before halfway through next week, after which I’ll start doing some development on Semantic MediaWiki.
Downloads
It’s been quite a while since the last release, but 0.5.2 is finally here! It’s not a big release, but features quite some fixes and improvements in the area of marker and pop-up layout.
You can now specify the icon to be used for all markers for both display_point(s) in Maps and result formats in Semantic Maps. A template= and showtitle= parameter have been added to the result formats as well, allowing you to remove the title from a pop-up, and further specifying what should be shown, in which format, by using templates.
On this map you can see that several markers use different icons. This is now easier then in previous versions due to a bug fix.
This map is created by Semantic Maps by querieng some demo data on my wiki. The title of the location is hidden by setting showtitle=no, and the template parameter is used to have a nice little text with the queried data in it as pop-up, contents.
Downloads

Categories
Tag Cloud
Blog RSS
Comments RSS

Void « Default
Life
Earth
Wind
Water
Fire
Light 