Hobby projects of 2017

As the year comes to an end, I would like to summarise my personal software projects. Building applications takes up a big part of my free time. The year 2017 has been good for this hobby of mine. After completing my Bachelor degree, I found myself having more time to build software.

SlimeWiki (like DokuWiki, but all JavaScript)

I am a huge fan of DokuWiki. My favourite features are the file-based storage system, the easy syntax and the ease of administration. I wished it had an off-line mode and would support some basic layouts and drawings. At the time I still had a Surface laptop (luckily I got rid of that by now), but I like the idea of web app with touch- and pen-support. Taking notes in OneNote was a great experience and I wish to see that in DokuWiki. I assume absolutely positioned content would come at the sacrifice of using the DokuWiki syntax.

I can see the same being achieved with JavaScript using the Touch API and SVG. That is why I started SlimeWiki which tried to stay as close to the idea of DokuWiki as possible, however, with NodeJS as a back-end. If the back-end would run JavaScript, it seems achievable to run the same code client-side. The back-end would provide the raw Markdown files, the web app and fully rendered HTML pages for clients refusing JavaScript. For clients that do execute JavaScript a progressive web app would allow to download the web app and some pages to take the wiki offline.

As you can imagine, it’s a big project that would need a lot of specifications and developers to work on. Eventually my development slowed down, but I still think it would be super cool to have this project come true.

SlimeWiki on GitHub

vCardApp

There certainly is no need for a new contact management app — every operating system comes with its own. However, I see this as a problem because vendors use it to tie users to their services. Most often it is a huge privacy-issue because you upload your contacts’ information to US-based companies without your contacts’ knowledge or consent. Want a way to fix those two problems and gain even more cool features?

That’s where vCardApp is supposed to step in. The name will surely change before a stable release, but the idea is to stay. VCARD is a text-based file format for contacts supported by a bunch of applications. Most of these applications hide the formats capabilities behind dumbed-down interfaces. They make unintended changes to the files (e.g. converting data to their internal formats) and introduce non-standardised fields. If you sync your contacts between two applications they might change your files internal structure back and forth with no added benefit.

My vCardApp is a supposed to become a progressive web app running on desktops and mobiles. It is going to expose all fields to the user and not undertake any conversions without the users saying. While links to the documentation help users to properly use the vCard 4 standard, well-supported fields might get easier input options (e.g. a file upload for images and a date picker for birthdays). My next step will be to spec and build the interface.

vCardApp on GitHub

OSM Vancouver bus stations monitor

This year I became more and more interested in the project OpenStreetMap (OSM). OSM is a community-driven provider of a free-to-use map of Earth. I with casual mapping and trying out different apps using OSM data. I like that the apps are diverse and each has their own use cases and target audience. In September, I joined the OSM Foundation to support the project and get more involved. I plan to have projects using OSM map data next year.

When I moved from Cologne, Germany to Vancouver, Canada this year my mapping area moved as well. Vancouver has a lot of easy to map features which are insufficiently mapped. At first, I focused a bit on house numbers, then fire hydrants (mainly because of an awesome app called StreetComplete) and most recently on bus stations. There are tons of missing bus stations to map and a majority of the mapped ones had quality issues. I discussed the issue on a local meet-up, wrote a script to identify bus stops using the wrong field for their bus stop number and to ease manual fixing of the data. I now use this project to monitor data issues in bus stops from Vancouver.

The project is not yet released but is going to make it to GitHub soon.

Silvy (a chat bot)

My most successful project this year is a personal chat bot called Silvy. I had the idea of a personal assistant called Silvy before Siri, Alexa and the like were a thing. Silvy had started as a project in Python and communicated via XMPP. Since I write most of my projects in JavaScript I translated her to NodeJS as soon as I found a stable NPM library for XMPP. When my interest in the chat protocol Matrix.org started, the project once again shifted its focus. I find it easier to set up Encryption and to send files in Matrix.org.

Silvy benefited most from being used by my girlfriend and me. With a second user I had a high interest in the project. She can provide one with 2-factor authentication codes (TOTP), lets us post stickers (which are not supported by default), monitors OSM bus stops and managed an advent calendar in December. My next step include looking into other projects to get some inspiration for standardising her plug-ins. Mycroft seems to be an incredibly cool AI with voice-support.

Silvy-matrix on GitHub

Other notable projects

This blog has been redone this year and is now using Jekyll which produces static HTML files using Markdown. I am very happy about this change as it is text-based and allows for a lot of automation.

A good chunk of my small projects became a part of the repository project-kindergarten on GitHub. There one can find a couple of small games, me playing with technologies like React and Websockets and prototypes of projects ideas. I plan to continue the repository.

For the js13kGames game jam I developed a short Virtual Reality game. In my game Fly South you are a goose flying through a city. You can find FlySouth on GitHub I wrote about my participation in the game jam on this blog.

I worked on the NodeJS-based console application mapscii. Mapscii lets you see the entire world in your computer’s terminal using OpenStreetMap data. It is written in the old CoffeeScript language. To keep Mapscii active and maintainable I translated it to the current JavaScript standard.

And in December I returned to CS2D which is a 2D clone of the famous Counter Strike shooter. It recently got released on Steam which made me revisit the game, get together with my old contacts and start writing a web-based server administration called CS2D webadmin.

Conclusion

It has been an awesome year for me in all respects. I hope to keep the pace up and add more specs and prioritising to my projects.