FEBRUARY 13, 2014

My year in review 2013

Unfortunately I don't blog every time I release a new website or open source project, even though I should. I'm going to try to be better at that, and also I thought I'd do a late new year's recap of (computer related) things I did in 2013.


What is my ZIP

In the beginning of last year I released What is my ZIP? - a small hack for displaying the ZIP/postal code of your current location. Later in May, I also added functionality for finding the ZIP codes for arbitrary addresses.


During 2012 I had been working extremely hard on our previous startup, Tripbirds. Therefore, when Robert asked me if I wanted to make an iPhone game with him and Niclas, it felt like a nice relief to work on something just for the fun of it. Our only goal was to make a game that would be fun, and that we would enjoy to play ourselves.

The result was Roni. A swedish word game which we released in March. In terms of users (~1800) or income it hasn't been very successful (it has barely covered Apple's developer license fee). However, our goal wasn't to make money, but to create a fun game, and I really think we've succeeded with that. As evidence to that, almost 100k game rounds has been played. That's >50 game rounds per user!

While talking about apps, I want to mention Appmagasinet. A weekly newsletter (in swedish) about apps by TDH.


In July I released Longitude.me. It's a website for sharing your current position with others live on a map. The typical use-case is if you're meeting someone down town and want to share your position with her or him (or them). Then you just create a new Longitude.me link, and send them the URL. Another use-case could be if you are going on a road trip with multiple cars, and want to keep track where the others are. One of the big USPs with Longitude.me, is that it works for anyone with a smartphone, with no need to install some app.


During the summer and beginning of the autumn, I developed and designed Boutiquehotel.me together with Ted, which we released in October. It's a website for people who want to find the best boutique hotels in the world. For example, check out New York boutique hotels, Stockholm boutique hotels, Berlin boutique hotels, Cape Town boutique hotels or Paris boutique hotels.


At the end of summer I released a swedish version of What is my ZIP called Postnummer.me. It has the same functionality, but it's in swedish and has another (perhaps better looking?) design. While I was at it, I also made a site for seeing your current altitude as well as a ZIP code site for Canada postal codes :).


I participated in the awesome art hackathon, Art Hack Day Stockholm, where me and Emil created Sexism Detector. We let users sign in with their Facebook account, and we retrieve all comments made on their - and their friends - profile photos. Then we analyze the words that are used in these comments and display the words that are the most disproportionally used to comment photos of women compared to men, and vice verse. The result is unfortunately quite sad, but not that surprising.

Open Source projects

Leaflet UserMarker & GeolocationThrottle

While making Longitude.me, I developed two small JS libraries that I've open sourced. The first one is Leaflet UserMarker - a Leaflet plugin for displaying user markers on a map. The second one is GeolocationThrottle - it solves the problem of throttling the number of callbacks that one gets from the HTML5's navigator.geolocation.watchPosition function.

jQuery Draggable Touch

While developing Roni, we realized that there were no good jQuery (or pure JS) libs for making elements draggable, that had touch devices as it's main target (with support for multitouch, etc). Therefore I created jQuery Draggable Touch which solves this problem.


I also did quite a lot of work on my biggest open source project, Locust. It's a load testing tool where you define your load tests in simple Python code, and then it lets you spawn millions of users generating load against your target system. We originally developed it to load test Battlelog, and it's been used for the stress testing of both Battlefield 3 and Battlefield 4, so one can definitely say it's been "battle tested" ;). I very recently pushed out version 0.7.


I also did some consulting last year. Most of the consulting I did for DICE/EA, where I worked on Battlelog and Battlefield 4. I also did some work at Hyper Island where I made a conference website together with Trond Fröding, as well as some work on their main website.

Other peoples' projects

So now I've listed most of the computer related projects I did last year, but I would also like to mention a few projects of some other fellow swedish programmers/web people.

Martina Elm, Jonny Strömberg and Johannes Edelstam, who also are "Knackerists", have started their startup Confetti. They're building a great tool for event and conference organizers. They're also solving their own problem, since they are arranging the very promising conference Nordic JS

Ted Valentin, who has started Knackeriet, and who is my co-founder for boutiquehotel.me, has started a bunch of swedish sites like Populära Museer, Populära Barer, and more.

Jonas Lejon has started the swedish site, hitta rabatt for finding discount codes.

Anton Johansson, the creator of Headler seems to have two exciting projects in the pipeline. Osom Laundry seems to be some kind of modern Laundry service, and Alltid.se is some secret project which I hope we'll hear more about soon.

Petter Palander is doing a lot for the startup scene in Malmö with his Malmö Startups.

Susanne Jarl is running a swedish recipe website, Recepten.se, which is getting an impressive amount of traffic of 200k visitors/week.

Tomas Wennström, who is one of the founders of the great unconference Sweden Social Web Camp has a cool website with super local weather forecasts for sweden at Vackertvader.se

Peter Jaric did a cool hack, which is a browser game that only uses the JavaScript alert(), confirm() and prompt() functions. It's called Agessa's World and you should try it :).

Update (2016-09-06):

You should also check out Sebastian Razola's new project Where Foodies Eat. It's a service for finding restaurants and other food places, and it actually beats both Foursquare and Yelp when it comes to finding great places. It's currently launched in New York, San Francisco and Los Angeles.

Predictions for 2014

I always think it's fun to read people's next year (tech) predictions, and I thought I'd come with one myself. I believe the adoption of Docker - an incredibly useful tool for running applications in small linux containers - will explode. There are already many exciting projects building on Docker like Runnable and Circle CI. Personally, I hope that Flynn will come and solve all my deployment problems forever :).


SEPTEMBER 30, 2010

jQuery Title Alert

A little more than a year ago I wrote a small jQuery plugin at ESN where I work, called jquery-titlealert. It provides functionality for flashing a notification message in the browser title.

Title alert notifications can be useful when you want to notify a user of some kind of web page event (for example an incoming chat message), when the user has another window, or another browser tab, in focus. Especially if your site uses real-time functionality, like contact lists, user chats, etc. Which, BTW, can easily be achieved using Beacon Push, which is a real-time website service we run at ESN.

Get it

Download v0.7 here. The source code is hosted at GitHub.

Last update: 2010-10-07

How to use it

First, include it on the web page (make sure jQuery has been previously included on that page):

<script type="text/javascript" src="jquery.titlealert.js"></script>

Then you will be able to flash a notification message in the browser title by running:

$.titleAlert("New chat message!");

Or with some options:

$.titleAlert("New chat message!", {

The plugin provides options for setting different timings and intervals, as well as functionality for stopping the message flashing when browser window gets focused. See below for all details.


$.titleAlert(message, options);
message A string the message that should be flashed in the browser title.
options JavaScript object containing options


Here are the available options that can be set in the option object.

name default description
interval 500 The flashing interval in milliseconds.
originalTitleInterval null Time in milliseconds that the original title is diplayed for. If null the time is the same as interval.
duration 0 The total lenght of the flashing before it is automatically stopped. Zero means infinite.
stopOnFocus true If true, the flashing will stop when the window gets focus.
stopOnMouseMove false If true, the flashing will stop when the document recieves a mousemove event (i.e. when the user moves the mouse over the document area, regardless of what window is active).
requireBlur false Experimental. If true, the call will be ignored unless the window is out of focus.

Known issues: Firefox doesn't recognize tab switching as blur, and there are some minor IE problems as well.


Title Alert works with jQuery 1.3 and 1.4. It's tested in Firefox, Chrome, Internet Explorer >= 6 and Safari.


JANUARY 08, 2010

MMS Decoder 0.82, and website back online

During the holiday I finally got to finish the re-make of my website, and I'm very happy to announce that it is now up and running on Python/Django. The biggest change here is that I've added a blog where I will write programming/web development/python/django/javascript/tech stuff. How ever, I predict that I will not write blog posts very often, but hopefully when I do, they will be interesting.

Powering this blog is a slightly modified version of Nathan Borror's Django Basic Apps. I'm planning to release my modified version (nothing fancy, just some small personal preference changes) as a GitHub fork when I get time.

New version of MMS Decoder (0.82)

I've released a new version of MMS Decoder that fixes a bug with decoding MMS messages encoded by an iPhone, as well as some other bugfixes and improvements.

Here are a few selected entries from the commit log:

  • Fixed correct decoding of From-value.
  • Changed default type of the part database column, in the example application, from blob to mediumblob.
  • Adding different MMS PDUs I've collected during the years. Very useful for debugging.

MMS Decoder on GitHub

I'm also quite happy to announce that I have now created a GitHub project for my MMS Decoder. This way it will be much easier for people to make patches, and for me to incorporate them in the code, by forking me. So go ahead and fork me on: http://github.com/heyman/mms-decoder. (Or just follow me if you want to know when a new version is released).

If you just want to pull the GIT repository here is the URL:




Jonatan Heyman My name is Jonatan Heyman, and I'm a programmer. On this blog I write about programming, the web and technology. I also listen to a large number of indie pop tunes. You can read more about me on the about page.



Copyright (c) 2009-2010 Jonatan Heyman