If you read this, you're an early adopter. You can one day say that you already knew CodeFX before it became big. Before it became a supra-national entity with billions of daily visitors, the first true and self-aware AI. Before it started infiltrating everybody's minds, puppeteering their bodies and feasting on the global psychic energy! Before it...
But this post is about 2014, not 2015 so let's look back!
Before looking at any numbers (which is really going to rain on my parade), I'd like to tell myself how great I did. When 2013 came to an end, I dreamt up some crazy new year's resolutions:
- We would take Do-FOSS (a project where we advance the use of Free and Open Source Software by the municipality of Dortmund) public.
- I would get a new, awesome job.
- I would start contributing to open source projects.
- I would start blogging about software development.
And, lo and behold, I did all of that! With differing degrees of success but I am happy with the overall result: A year ago, I was only a lowly software developer. Now I am a lowly software developer with no free time who pollutes the interwebs! Yeah!
I am not going to bore you with details about Do-FOSS and my job but let's have a look at the other two points...
▚Open Source Contributions
I have to admit that I would have liked to do better. My contributions could have been more focused and more frequent, making a bigger impact. As it is, I can still list everything that happened:
- Bugfix for ControlsFX (#199): Such an easy fix. But you know how it is: the first is always free.
- SnapshotView in ControlsFX (#240): My first real contribution. Because of competing ideas and a lack of time it is not as smooth as I wanted it to be and I would not have shipped it. But it was so the SnapshotView is my first creation which made it into the wild.
- SnapshotView in ControlsFX (#407): The necessary overhaul of the SnapshotView. It annoys me a little that it hasn't been merged yet because the communication suffers from week-long outages. But I hope it makes it into the next release.
- Getting LibFX on the road: My own open source library, which actually has at least one user: the Fraunhofer ISI (because I included it when I was still working there).
- Value-Based classes in FindBugs: I requested a feature for FindBugs and decided to start working on it myself. This is still in an early stage.
- Cosmetic changes in Property Alliance: I was curious about Stephen Colebourne's shot at a Java Beans 2.0 specification and after checking it out, I improved some comments.
- Implementing a core interface in Property Alliance: I got hooked and Stephen gave me the opportunity to implement a core interface of his proposal. I expect his verdict any day now...
One of the reasons for the lacking relevance of my contributions is clearly that I am still a noob in many areas. But that's one of reasons why I wanted to do this: to become less of a noob. And it worked! I learned a lot about the things I worked on as well as the tools and services I had to start using (and I'm not by any means done with that). I am also convinced that it is the groundwork for the years to come and am eager to see where this takes me.
So I'm still ok with how this turned out. And to actually know that there is at least one user of my stuff out there is an awesome feeling! The magic of FOSS definitely got me...
I put this blog up in June and really started to work on it in September. To get used to blogging and do it regularly, I set myself a crazy pace: one post every five days until mid December.
By and large, I managed to stick to the plan. There were three breaks of which two are ok (time consuming research and work on LibFX). But the outage from my last post to now really annoys me - I wanted to publish two more articles but didn't get around to write them. Damn!
Otherwise I'm really happy with how it worked out. Mainly because it was fun! The blogosphere is full of people telling you to blog. And from today on, I am one of them. I'll let others list all the possible benefits - my favorite ones are:
- It got me into contact with very interesting topics which are not part of my usual development routine.
- In order to competently write about something, I studied it way more thoroughly than I otherwise would have, thus substantially increasing my understanding.
I guess it would also be fun, to communicate, maybe even collaborate with my readers and having them benefit from my writing. Alas, if only there were any...
▚Least Unpopular Blog Posts in 2014
This section should be called Most Popular Blog Posts but with a total of 662 page views that would be somewhat inappropriate. So let's see which posts were least ignored!
(These stats were taken with Piwik and the numbers are total page views. The declaration of will to not be tracked is respected. Not because I care about privacy, oh no, I only do this so whenever I feel down I can delude myself into believing that there are hundreds, even thousands of untracked visitors.)
- Intention Revealing Code With Java 8’s New Type ‘Optional’ (188)
- The Design of Optional (72)
- Instances of Non-Capturing Lambdas (34)
All other posts are below 5% and add up to about 55% of the total number of page views.
▚My Favorite Posts in 2014
But who cares about public opinion, right? What matters is my opinion, so here are my favorite posts:
Impulse: “Lambdas In Java: A Peek Under The Hood”: This is a great example of the benefits of blogging...
- I watched Brian Goetz's talk and understood it.
- I started to write about it and realized I understood nothing.
- I invested way too much time and now I kind of understand it.
It was writing about it that made me invest the time necessary to internalize the information, to actually learn something from the video.
- The Design of Optional: Definitely Stockholm syndrome. Trudging through that mailing list archive became really gruesome after some hours. To not hate myself for wasting that time I am forced to reframe it into something meaningful. Like this: "It really helped me see how complex the considerations are that go into designing the most public of APIs."
- Don’t Remove Listeners – Use ListenerHandles: Because I really hate to drag powerful references along just to accomplish a simple thing and ranting always helps.
I actually skewed the list a little. I also like the posts about serialization. And for the same overarching reason like the first two above: Blogging made me learn, ultimately broadening my development knowledge.
So that's my public alter ego's year 2014 in a nutshell. I am pretty happy with the way it turned out and am looking forward to 2015 (about which I will write in the next couple of days).
I hope you also enjoyed 2014! Have a happy new year's eve and I hope to see you again in 2015.