I’ve recently taken a look at my blog archive and it seems I never actually did a year-in-review blog post which was kinda surprising to me. 2015 was a year that turned out completely different from what I thought it would, so I thought, this year, it might we worthwhile to reflect on that a little. Also, I’m now slowly becoming somewhat of a senior (with my 40th birthday approaching way faster than I appreciate) and with seniority comes the privilege of sharing your thoughts whether others want to hear it or not. Haha.
Anyway. Let’s start with a simple subject
My work life
I’m a freelancer since February 2012, so I’m now approaching four years of standing completely on my own feet. Which, I must say, feels weird, because these four year more or less flew by without me noticing. 2015 was different than the years before, because I had a major client that took up most of my time during the year. The work was enjoyable, the team is great and it was a nice change to be part of a startup again (My first startup job was a short stint at the now defunct Qype). The only major drawback was that for the most part, I was at the helm of a one-man team, as the web product was pretty much a second priority at the company, which was completely understandable, but meant that we sometimes had to make decisions that made my job harder than I would have liked. So I even more enjoyed the few months over the summer where I shared my desk with the wonderful Meike Wiemann who came in all the way from Umeå University for a summer job, completely overhauling the user experience of the site and applying everything she had learned in her Human computer interaction masters programme. Later that summer, I even had my dear friend Benjamin Rabe coming in to completely restyle the app, a change that was welcomed by everyone everywhere. Let’s just say that I am still not very good at design and it is always a pleasure to work with professionals such as Meike and Benjamin to make up for that.
Later that year, we’ve focussed a bit on recruiting, something I haven’t done for some years now, as the company now wants to replace me with a full, hired team which is kind of hard right now. I think we’ve made some good choices so far, but of course, that remains to be seen in 2016. But anyway, I’m really glad that until these plans come to fruition, I’ll be joined by some old and good colleagues of mine who will hopefully more than make up the loss in work hours - I’ll be doing only half the hours I used to do from now on, to focus on other activities I’ll come to later.
Very late last year, I’ve started working on a small project for a very interesting (to me at least) client from the UK, something I hope I’ll be able to talk about a bit more in the future. For now let’s just say that once again, my Hobbies and my Job have collided in most peculiar ways. This will most probably, if all goes well that is, take up some time in early 2016.
The technology world of 2015
Technology wise, on the surface, this has been a slow year for me. Most of my work happened in a very classic Rails setup (Isn’t it odd? You can now call that “classic”). On the other hand, I did learn quite a few things. For starters, I got much better at profiling Rails apps and especially SQL queries and the surrounding bits. I have, for the first time I can remember, actively circumvented Rails’ conventions and constructs for performance reasons, with pretty good results.
I did a bit of dabbling in Angular.js, something that started out as a prototype and is now part of at least two apps in the company. I still don’t particularly like Angular but it does have its benefits if you want to add a bit of “singlepageiness” into a small part of a classic web app, which is something other approaches such as ember do not handle so well.
Speaking of Ember, I’ve played with it on and off during the year and my new small end-of-year project is based on Ember exclusively. I am still trying to get my head around some of it’s concepts but I do enjoy working with it so far.
But, it has to be said, JavaScript tooling as a whole still puts me off. Ember tries really hard to be the Rails of JavaScript, but it feels to me like the whole eco system is no way as mature as, say, Ruby and Rails feels to me today. I may be completely wrong here and all of these might be issues of me not knowing my way around enough, but it’s fragile enough to periodically annoy me to bits and pieces. That being said, I think the JavaScript community is actually doing a good job here and these deficiencies are worked on really hard by really smart people. Nevertheless, whenever I tend to peek into other communities (I do consider myself at least part of the JS community, but still, visiting JSConf.eu feels like being a guest), I feel there’s this notion that sometimes software development needs to hurt a little. It’s supposed to be difficult. It’s supposed to be convoluted. It’s supposed to be complex. You’re supposed to reinvent the wheel for every new project. At least some of the wheelie-parts. And I’m not alone in this sentiment, as the excellent, very recent and well shared article by Eric Clemmons shows. I have probably said and wrote this a thousand times, but 90% of the appeal of Rails in 2004 was that I didn’t have to decide where to put things. I didn’t have to think about what goes where or how to solve a particular problem. Someone else had made that choice for me and I was able to focus on actual domain problems. So, this needs to be addressed in JavaScript. It is a good thing that the post-nodejs JavaScript is such a modular, do-one-thing-and-do-it-right world, but that does not mean that there isn’t room for some rules, conventions and abstractions that hide this modular, hard-to-parse-and-understand mess from you most of the time. When prototyping a simple Web app (And I’m not talking super slick client-side-everything-offline-first here, obviously), Rails still runs circles around most other setups. Which is why I come back to it so often, even for very small projects.
This whole subject would be worth an article on it’s own, but given my current track record of “blog posts that need to be written”, I have to ask you to hold your horses.
There’s another such case, something I can only speak about reluctantly, because it’s making me somewhat angry and I am still not sure it’s not my fault entirely: Functional Programming. 2015 saw a lot of momentum for languages like Clojure, Haskell, even weird ones like Elm. And this should be good thing. FP and some of the foundations of pure FP, like immutable data structures and such have massive benefits for building applications on the massively concurrent infrastructures we’re currently getting (without asking, mostly. It’s just that Intel & Co. can no longer build faster processors, so they just add more processors to be able to deliver faster packages).
But I think FP has an accessibility problem. Maybe even a community problem. It’s closeness to Maths (specifically: category theory) makes it inherit some problems of higher maths: If you are not well versed in the fundamentals, you’ll have a hard problem understanding any of the higher concepts. Maths, as well as Functional programming concepts tend to be explained with other concepts, which are based on other concepts which can only be properly explained with other concepts. The “A monad is just a monoid in the category of endofunctors” quote from James Iry’s entertaining “Brief, Incomplete and Mostly Wrong History of Programming Languages” is meant as a joke, but, as Stack Overflow shows, is not completely off.
Now, again, I may be completely wrong here, but I feel like a lot of the proponents of FP do very much enjoy their mathmatical ivory tower world. They simply know better than these OOP savages that destroy their precious data without even thinking about all of the mathmatical (and, to be honest, practical) implications. There are exceptions of course. Elm tries very hard to not force the category theory part of it down your throat. And Elixir is a very nice looking ruby-ish language that makes working on the Erlang platform bearable but keeps the strong functional and pure foundation. But my feeling is that if the FP community, if there is even such a thing, needs to solve that accessibility problem before any of those very nice, very useful and very important languages can break into the mainstream and thus make us use our new highly concurrent architectures better.
Which brings us to one thing that was important in 2015 but I almost spent no time working with it: Containers and somewhat associated with it: Microservices. The reason it didn’t come up in my work or as a play thing is simple: I am very sure that microservices and also containers are a solution to a particular problem not many people have. For those people that do have these problems, which include monolithic apps in dire need of massive scaling, this all might make sense. But I haven’t been in this situation. (That being said, I’ve played a bit with Dokku, which might actually be helpful to be in a particular use case).
Last but not least: The end-of-the-year project I’ve been talking about twice now actually has an interesting technology at the core of it: Web MIDI. I am still pretty amazed that this is actually a thing. Web MIDI means that you can talk to musical instruments, be it in software or hardware, from JavaScript in your browser. Without any need for additional software. This opens up some possibilities that excite me very much and that I hope to “exploit” as much as possible in the coming years. This first project hopefully is only the start of it.
A cycling non-cyclist
Now for something completely different. As can be witnessed on this blog and on twitter, I’ve become a very vocal proponent of cycling in cities ever since I’ve started to cycle a lot more in 2010, but specifically in the last two years, mostly due to the fact that I met some awesome people of Hamburgs lively cycling scene and thus have become part of the discussions on twitter.
But here’s the deal: Inspired by the work of @copenhagenize, otherwise known as Mikael Colville-Andersen, I do not want to call myself a cyclist. I drive a bicycle, because to me, it is simply the most practical, quickest and healthiest way of getting from A to B. I do (co-) own a car, but I’m literally living in the densest neighbourhood in Hamburg and parking space comes at a premium (mostly for parking tickets) or a long long walk. I do have some cycling related pieces of clothing (Mostly because the weather in Hamburg is not specifically cycle friendly), but you won’t find me in spandex and hi viz jackets. I wear a Helmet, but I will fight for your right to not having to wear one.
I will continue to do my part for cycle advocacy (and hopefully will expand that in early 2016. Well, plans, we’ll see how they go), but what I’m fighting for is not more rights for cyclists but instead an infrastructure that provides citizens of my city with easy and safe means of using the best transportation means for their needs. Which, increasingly must mean bicycle. Simply, because it is one of the easiest, cost effective and healthy ways of transforming a city from a sea of cars into a livable city. If you are not convinced, simply spend some time in Copenhagen or Amsterdam. Not in the touristy parts, but in one of the residential quarters. Life is very different from what we’re enduring here. And you can see and feel the transformative effect it has on the people. I try not to exaggerate, really.
Let’s not talk about politics
The first, unpublished version of this post had a rather long section on politics. I decided to remove that. Not that I wouldn’t like to to talk or write about it, but every time I start writing about it, I notice that I’m simply not good enough at political writing for it to be worth the hassle. Yes, I am very unhappy with the way politics currently work, but without being able to formulate alternatives or at least having ideas on how to find ways to develop these alternatives, I’ll just be one of those rambling madmen which do nothing to actually help.
Well, just one thing: I wish politics and media would find a way back to seriously and calmly debate and discuss risks. Just a quick run-down on the numbers for stats geeks: In germany we have about 3.300 deaths in traffic every single year. We had zero deaths in islamist terrorist attacks in germany. Ever. Others were not so lucky, of course. But even if you count the whole of Europe, with the Madrid attacks, Paris, Charlie Hebdo and London, you’re still below 1000 people who died from islamist attacks. With about 25.000 traffic deaths all over Europe every year. That makes, if you count from Madrid to Paris (2004-2015), over a quarter of a million of dead people. And yet, the one thing everyone cares about is Terrorism. Whilel the chance to die in a terrorist attack (in Europe, that is) is smaller than stumbling over your own feet in your own home and die by concussion. Literally. I’m not even kidding. Yes, every person dying in a terrorist attack is one too many. But so is, at least in my view, every human that dies in a traffic accident.
So, not only is the response to the Paris attacks totally blown out of proportion, we’re also giving the terrorists exactly what they want: Attention and a feel of being terrorized. That is not only bad politics, that is very dangerous. And in the process we’re slowly but thoroughly destroying most of the checks and balances that were specifically put in place to make totalitarian regimes unlikely. In the name of a fake, unrealistic and unneeded sense of security.
The Music and the Arts
I listened to a lot of music but not much of it was really memorable, which is a shame. The latest music that made a big impression on me is Swindle, with his great album “Peace, Love & Music”.
I made way too little music, as can be heard in form of crickets on my soundcloud profile, with the notable exception of creating the So Coded Conference Theme Song together with my brother which was a huge success.
Benjamin Rabe and I did very few gigs with our wallpo.st project, but those we did were great fun.
I want to have more music in my life in 2016. Much more.
Having a private life
Too little of it, for my taste. Also, I very nearly fu**ed up everything, but I have been spared and forgiven, which is more that I could have hoped for and I am and will be eternally grateful for that.
Health wise, 2015 could have been better, but I am the only one to blame. It looks like a small miracle is happening just now, with me losing weight without doing much for it. I’m not entirely sure why that is, it might be due to some of my new medication, even though that wouldn’t make a lot of sense. So far, I’ve lost about 4-5 kg in about two months, which is a pretty quick but still relatively healthy rate. I’m already feeling some of the effects, which is good. Let’s see what happens, I’m currently a bit weirded out but given the problems I had earlier with losing weight, I’m just taking it as is for now.
I have, in 2014, assumed that one of the reasons I became sloppy with my health (and, for example, with sportsing) was a missing bit of structure. Now, having spent nearly a year in a relatively rigorous structure of fixed work hours four days a week, I can testify that this didn’t help. A new approach will be tested this year. We’ll see.
2015 was also the year my other uncle died. Me and my brothers were lucky enough to exchange some last words with him before he dropped into a deep sleep from which he didn’t really resurface. Modern palliative care can be painful to watch from the outside (where you see your loved ones deteriorate under the influence of heavy pain meds) but I am quite certain that this is a very human way to die.
While we were, especially in the last years, quite close him and his family, his death has another, rather frightening dimension: Between our father and his two brothers, no one got older than 70. This is the post war generation with their very pellicular hardships, but it does make you think. All of us three are now past 30. How much time do we have left? What does life has in store for us?
An inflection point
One of the main goals of me going freelance (apart from that being a relatively rational choice given the current demand and rates and all that) was to have time for my own ideas and projects. Turns out, that’s much harder than I expected to pull off and so, so far, nothing of it has really materialized. A shame, I know. But then again, I’ve still enjoyed the ride. I tested a lot of things, I still have a lot of ideas, but I know that, at least on my own, I’m not structured and disciplined enough to pull through projects when they turn from a fun experiment into actual work. Especially when nobody pays me for it and money basically lies on the streets in form of endless client projects. But still, there’s this fire burning in me, that wants to try to make something that is truly mine.
Or, in this case: Ours. For 2016, I have teamed up with one of the best colleagues I can hope for and we’re going to try this again. This time with more time and with mutual motivation and a clear goal. This may not work. I may never ever write about it again. Or I will write about it a lot, working or not. But at this point one thing is clear: We’re going to try it. Details in due time. I’m really nervous right now, mostly because we wanted to be much better prepared at this point than we really are, but also because I want this to work and I know that, even if everything goes as smooth as it can, it will probably still be the hardest thing I’ve ever done.
That being said, the risk of failure is so laughably small right now. Not the risk of failing (which, at this point, is not calculable, so let’s put it at 50%), but the risk for us, if we fail, given the current situation on the job market. A true privilege and one I reflect on quite often.
A more general outlook
2015 wasn’t a particularly good year for a ton of reasons. For me personally, it was, with some notable exceptions, rather uneventful. Busy, but very casually so. For others, not so much. Here’s to hope that some of the grave mistakes we made in 2015 can be fixed in 2016 and beyond. Here’s to hope that countries like Syria will eventually get some rest. The sooner the better. Here’s to hope that the USA won’t elect the worst president ever, either being a her or a him. Here’s to hope that everyone comes home safe and sound every day. Here’s to hope that love and compassion will be stronger than hate and fear.
I know this sounds kitschy and cliché. But I mean it, with all of my heart. If you find this naive, so be it.
I wish all of you a great, happy, successful, lovely, colourful and fulfilled 2016. There’s much to do, let’s go.
(The header image is a part of a photo I made in May 2015 in Leksand, Sweden, one of the best places to shoot spectacular sunsets over the Siljan lake.)