This pages is a portfolio of some of the software projects that I have worked on that may be useful for looking at. You can look at other stuff for a more informal look at things that I have worked on or my page at Norsk Regnesentral for a list of academic publications.

FreeBSD

I have used FreeBSD on and off since about 1997. I maintain several ports. In 2019, I was fortunate enough to attend EuroBSDCon and presented some of the work that I had done in porting the Robot Operating System (ROS) to FreeBSD. This actually lead to an interview on the BSDNow podcast with a corresponding transcript in the FreeBSD Journal.

Qt

I worked on Qt for eight years. My main focus was on working the Qt port for Mac OS X, but I also worked on different parts of the library, including the styling API (QStyle) and platform abstraction (QDialogButtonBox, QMenuRole, etc.). The biggest project I oversaw during my time the Cocoa port. Moving Qt over to using Cocoa instead of the Carbon backend for Mac OS X. The biggest win was that Qt could be used for the 64-bit version of Mac OS X, but it also gave us a chance to fix up some architectural issues in Qt. I described this in a video in 2009, embedded below.

I also gave a “developer-friendly” version:

Qt is a large project and is the work of many people, but it also is an open source project, so I can try and show the places I worked on things. The easiest way to do this is to browse the repository or download the last release where I was still actively involved. From the main directory, the files that I worked most on include:

Note for the repository that 4.5 was the first time Qt was moved to a public Qt repository, so the history of who did what before 4.5 was made public (e.g., much of the work of the Cocoa port) is not publicly available.

XU4

The XU4 project is an attempt to re-make Ulitma IV for modern machines, but keeping the spirit the same. In other words, it creates an RPG engine that reads the Ultima IV DOS data files (including save games). Owning a copy of Ultima IV is required for the game, but thankfully that is freely available.

My work on xu4 was based on my desire to know more about iOS programming and particularly the iPad. My goal was to get xu4 running on the iPad using iOS methods and patterns (i.e., not just using SDL). The current interface and layout is not final, but it is functional. Most things work on it now (someone has even completed an entire game). I have not put it on the app store as it still involves work in getting the proper binary. People who are interested in trying it out can contact me for an invite on Testflight.

An early video of my work is shown below (the current version looks different), but the ideas are still there.

XU4 is also an open source project. You can find information about the files I worked on here in the repository. The majority of my work has been in the iOS directory, but I’ve been involved in some other small parts. I would suggest looking at the U4GameController implementation for a good jumping on point.

What’s On app

As part of the Sesam4 project.

I was involved in creating a mobile app for helping travellers to figure out what is happening “in-situ.” It was my first iOS app, but it was a good learning experience. I have seen these ideas pop up in other apps after the project was finished. A demonstration of the video is below (I apologize for the quality).

The source code for the project is available along with a rush Android port as a part of my handout on making accessible mobile apps.

Qt-based GVIM

I have tried to port GVIM to use Qt. I have put my patches up on Bitbucket. You do not even need to download and use Mercurial, you can just download the patch and apply it to a source package. There are still a couple of issues regarding input and text rendering on Mac OS X that I have yet to solve. I hope that in the near future I can get these working. Feedback is welcome though.

This project is more or less orphaned for the moment. I may get back to this some day. For the time being, feel free to hack on it. It was pretty mature for daily use back in the day (though every Vim user that I have met uses Vim a bit differently).