header
2013
» purely.js

Javascript has a long legacy of running in the browser and many existing test frameworks are based on browser automation. But every Javascript application also contains a portion of code that is pure (side effect free) and does not depend on the DOM.

Most languages have a testing culture centered around a command line test runner. purely.js brings this useful tool to Javascript.

Project website:
+ pypi package
+ git repository
python, javascript
purelyjs
2011
» re

Version control systems are great to use on a single repository, but once you have a few of them it's a bit painful to keep them up-to-date, especially across multiple machines. re makes this easier by scanning your machine for repositories, gathering them in a configuration file that you can customize and letting you pull all of them in one step. Set up as many remotes as you want for each repository, and it will fetch them all and set up local tracking branches.

Project website:
+ Blog entry introducing re
+ git repository
python
re
2011
» nametrans

Renaming a file works well when there is just one. But when you have a directory full of them it gets tedious quickly.

With nametrans you can use search and replace on your list of files as you would on text in a document. And with regular expressions you have even more power to transform file names (and whole file paths) systematically.

With useful presets for common fixes like lowercasing or capitalization you can keep your filenames nice and tidy, whether 10 or 10,000 of them, in one go.

Project website:
+ Blog entry introducing nametrans
+ Blog entry discussing ironpython+gtk
+ nametrans project
python, c#, glade, gtk#
nametrans
2010
» delpy
delpy is a collection of Python tools for working with legacy Delphi codebases, in an effort to improve the tool support for Delphi by providing services like codebase exploration and visualization, reproducible and automated compilation outside of the IDE, preprocessing a codebase to get rid of preprocessor statements, pruning a codebase for obsolete files and prettifying source code. delpy also has facilities for parsing and transforming programs.

Project website:
+ delpy project
python, delphi
aopy
2010
» aopy
An aspect oriented programming (AOP) framework for Python using Pythonic constructs exclusively. Code to be injected is written as aspects (properties, decorators, metaclasses), is matches with point cuts (matching strings) and injected at well defined join points. The instrumented AST is then written to a bytecode module.

Project website:
+ Blog entry introducing aopy
+ git repository
python
aopy
2009
» emerge
A simple package installer (not manager) that handles dependencies and building packages in a reproducible way, including fetching from scm repositories. The purpose is to offer custom builds, typically for bleeding edge builds or builds in environments that don't offer the desired packages. No relation to Gentoo portage.

Project website:
+ Blog entry introducing emerge
+ git repository
python, yaml
emerge
2009
» SolarBeam
SolarBeam is a desktop application for drawing solar diagrams. You supply the geographical position, it draws a diagram showing the Sun's trajectory over your location at various times of the year. It also shows the times of sunrise and sunset. It comes with a large database of locations around the world and handles timezones and daylight saving time correctly.

Project website:
+ SolarBeam project
c#, python, javascript
solarbeam
2008
» spiderfetch
A modular web spider driven by recipes composed of regular expressions. spiderfetch started out as a tool to spider all the links on a web page, but little by little became a full blown web spider. It is now more a suite of tools that can be used on their own, such as the spider and the fetcher. The whole suite is written in pure python (previously ruby) and requires no dependencies.

Project website:
+ Blog entry introducing spiderfetch
+ git repository
python, ruby
spiderfetch
2007
» mud
A mud game written as a distributed system in Java/RMI, with a central server and any number of clients. The game world expands dynamically with the number of players, according to a preset ratio that relates the number of players to the number of rooms and with new rooms more monsters are spawned also. After logging into the game, players start in The Lobby, which is also where they are respawned if killed. Combat takes place when players encounter monsters, or when they attack each other.

Project website:
+ git repository
java, rmi
mud
2007
» undvd
DVDs can be flaky and inconvenient, sometimes it's so much easier to just have the movie on disk. Not to mention that it's nice to have a backup copy just in case. Meanwhile, dvd ripping is a very complex process, which involves deciding on codecs, fiddling with a whole range of tuning parameters, and a lot of trial and error. undvd does all that for you, with sensible defaults, so that all you have to decide is which title(s) to rip.

Project website:
+ undvd project
+ Blog entry introducing undvd
+ git repository
bash, perl
undvd
2006
» newman
The idea behind this project is to try and emulate a human posting news articles on a forum. Newman gathers news stories from a range of football news sites, filters them by content and posts them on a vBulletin forum, just like certain actual forum members do. The project was conceived as an experiment to see how closely a newsbot could resemble a human poster without needing any input from the user.

+ Project Newman chronicles on the blog
+ Download the code
python
newman
2006
» galleryforge [tested on linux and win32]
The concept of galleryforge is a simple one. You sort images in a hierarchy of directories, hence declaring categories and sub categories etc. You place images in those directories and for every directory where images are found, that directory becomes an album, with album pages (index) and image pages (full-size images). galleryforge does this recursively and somewhat intelligently in that existing images are not overwritten, so it's safe to update this directory structure with new images. Then you can simply rsync the whole thing to your webserver.

Project website:
+ git repository
python, wxwidgets, wxglade
galleryforge
2005
» GRIDportal
GRIDportal is a web-based application portal for High Performance Computing. It facilitates easier access to GRID applications through a comfortable web interface. It was designed for use with NorduGrid, but being very generic by nature, could conceivably be adapted to other environments.

GRIDportal was launched as a student project, as part of my BSc engineering degree at Sør-Trøndelag University College, for the Norwegian University of Science and Technology (NTNU). Later on, as an employee of NTNU, I continued development on the project. It was presented at national grid conferences on two occasions.

Project website:
+ GRIDportal project
python, webware
GRIDportal
2005
» GridPortalToolkit
GridPortalToolkit is a multi-threaded java gui application for use with GRIDportal. It provides tools for user certificate generation and MyProxy registration. Basically, it provides the facilities for getting started with GRIDportal.

GridPortalToolkit was developed for NTNU, for the needs of the user base at the university, and is an open project under the GPL licence.

Project website:
+ GridPortalToolkit project
java
GridPortalToolkit
2005
» [m]piBlast [D]atabase [U]pdater (mdu)
[m]piBlast [D]atabase [U]pdater, is a small command line based application used to update or install (since the process is identical in both cases) of databases for use with mpiBLAST. It attempts to streamline the process, so that mdu can be submitted as a job to a cluster machine and run unattended.

mdu was developed for NTNU, and is an open project under the GPL licence.

Project website:
+ mdu project
python
[m]piBlast [D]atabase [U]pdater (mdu)
1999
» XXX Filez 2K [win95]
Eons ago a friend and I started a mock company called MicroProgz. We barely knew anything about programming, but we were under the influence of the shareware trend and put out some really useless shareware applications. In particular, I was really excited about the concept of cryptography, albeit not to any mathematical extent, just to code silly algorithms that seemed to do a really good job if you wanted to manually decode the plain text.

XXX Filez 2K was our "flagship" application, and apparently our exuberant marketing actually fooled some people into thinking it did something useful, as we received a few requests about it.

+ Download the application (installer)
delphi
XXX Filez 2K
1999
» Driver Indexer [win95]
Also for MicroProgz, this application was based on the idea that having files scattered on various media is very impractical, if necessary. Drive Indexer was a way to keep track of them. A floppy or CDROM would be indexed and all the files would be recorded. Then one could search the index to find files, and also find out on what disk/floppy it is.

+ Download the application (installer)
delphi
Drive Indexer
[ validate: xhtml | css ] [ coded in kate ]