Year 2015 was a great year here at Good Code. We produced a lot of things, were engaged in open source and web development communities, grew, started some new projects and had loads of fun doing it all.
Here's a short list of the interesting things we were up to last year:
Stormpath + Nginx
For Stormpath we built an nginx web server module that uses Stormpath API for access control. This allows you to protect any webpage (eg. a company wiki) using the credentials managed in Stormpath and goes a long way towards achieving a Single Sign-On.
Technically, writing a nginx module was great fun but also very challenging. Nginx itself is written in C so the modules need to be written in C as well. Also, nginx (at least as of 1.9) doesn't actually have a concept of a well-rounded module API, nor a lot of documentation (past a few obsolete tutorials) on how to write modules. To top it off, all the code needs to be asynchronous - you can't make a network request to a 3rd-party API and block the entire server!
The code is open source and available on GitHub. If you're a Stormpath user, definitely go check it out!
New and improved Funder crowd-donation site
Funder grew out of CharityStorm and now offers an easy way to receive donations to various organizations, including sports associations and charities. Last year Funder revamped their Föreningsinsamling (donations for sports association) page, including all-new REST API we built.
In November we officially launched MusicBox, a streaming on-demand music service for cafes, restaurants, and other localities where people like to have background music. The main idea is to offer easy way for cafes to play music, without radio interruptions, jingles, commercials, by either using pre-made playlists (ensuring that the music doesn't become repetitive), or by creating custom playlists to tailor the current mood or event in the locality.
Each user receives a music box, a tiny device that connects to the internet and the speakers, and plays the music. This removes the need to have a separate computer for playing the music (which is often problematic in a cafe setting).
The service was in the works since the start of the year. This included negotiating distribution licenses with music associations, developing software (including our first production Go code for the streaming server component), handling hardware (the music boxes are Raspberry Pis, managing suppliers from overseas (computer cases, power supplies, and other accessories required come from China) and Croatian customs (a story in itself).
We also partnered with Ad-Horeca, a group of hospitality suppliers in Croatia to bring MusicBox to as large audience as possible.
We launched a new version of A Web Whiteboard, our collaborative web-based shared whiteboard used by hundreds of thousands of users worldwide. The new version was a rewrite from ground-up, fixing some architectural problems that kept us from continuously improving, but keeping the familiar UI and avoiding "V2.0 shock" for the users.
As part of the new version, we introduced new premium plans, for unlocking extra features on awwapp.com, which brought a new revenue stream from the project. We're happy to report that Web Whiteboard now not only covers its expenses but is actually profitable. This allows us to add more resources to the development, sales, and all the other activities needed for a successful project.
I think I can safely predict 2016 will be a big year for AWW!
Active in the community
We again participated in Django Under The Hood, a conference for experienced Django Developers, including associated sprints hacking on various components of the Django software ecosystem.
2015 was a very good year. Here's to 2016!