It's rewind time. It's the end of the year, and looking back at what you've done in the year that passed is, like, a thing. So I've decided to take a shot at it too.
This will be a proper blog post for once, meaning a mostly personal ramble that many may not care to read. If that's you, here's the TL;DR: next year will have more content than this one did, so stay tuned!
If you're still interested, then here we go!
It's been a long and busy year for me, here's what I've managed to get done, or at least work on.
This was my first of a two year master's degree in computer engineering at BME-VIK, and I've done significantly more than the required subjects in this year, leaving a much more comfortable two semesters remaining for the next one - mostly a thesis to write.
This was my first full year as an Android developer at AutSoft, and it's been a busy one. The year started with a couple months of working on existing projects: maintaining them, refactoring, adding new features.
The middle of May brought something new, a greenfield project that I started working on as the sole Android developer. This gave me the opportunity to convince management that it was time to use Kotlin as it's here to stay, and luckily, they've listened.
So not only did I end up designing and implementing most of this application on the Android side, but we also spun up Kotlin adoption within the company. This took the form of other projects slowly starting to use Kotlin in the next months, weekly sessions of me teaching Kotlin to colleagues, and of course everyone learning the language on their own as well.
Switching from Java to Kotlin was also a good time to revise our usual Android app architecture, which was essentially an MVP approach, with our very own background work execution solution.
This included properly incorporating Google's Architecture Components, and making use of language features that Java plainly didn't offer - for example, using coroutines for our threading needs. Designing, implementing, documenting, and spreading this architecture around the company has been one of my main duties in the second half of the year.
My work hours grew quite thin around the end of the year (due to studies), so I couldn't work on actually implementing features for the project that I was on. However, instead I ended up providing technical assistance to our many other Android developers working on features.
This included general Android advice and insight when they faced non-trivial decisions, but most importantly, performing code reviews.
Code reviews are useful in a million ways, but these had two main objectives.
For one, this project is also being built from the ground up using the architecture I've come up with, so these reviews ensure that everyone understands the architecture, uses the features it provides, and adheres to its rules.
Secondly, this is the first real Kotlin project for many of our developers, so the reviews also serve as a learning opportunity for them to write more correct and idiomatic Kotlin, and for me to be really happy to see everyone picking up the language really well.
When I spotted that raywenderlich.com was looking for Android writers and tech editors early November, I somehow, inexplicably, felt like this was something I'd have time for next to everything else, and promptly, I applied. Not to be completely irrational, I "only" applied to be a tech editor, which takes way less time than writing itself. After some back and forth and a trial edit passed, somewhat unbelievably, I was accepted.
This is a very part time job, consisting of only a single tech edit a couple hours long every month or two. Being a tech editor means that I'm not only catching typos and fixing formatting, but also testing that the instructions in the tutorials can be completed, and that things like APIs and language features are used appropriately.
I've already done my first real edit on a tutorial, which is now going through other editors' hands before it gets published. Look out for it early January!
After years of turning down opportunities to take part in teaching various subjects, I finally decided that it was time this September. My reason before was that I didn't really have time to teach, and that I didn't want to take up this kind of responsibility at the expense of doing worse in whatever subjects I had in the given semester as a student. These excuses would've been true even now, but still, this offer was one I couldn't refuse.
The subject at hand this time was the Android development course at my university, for which I taught 2 hour labs to a group of about 20 students each week. Even more importantly, I also partook in the rewriting and reformatting of all lab materials for this new semester from Java to Kotlin, making this a lot more work than the usual lab teaching assignment, but also very exciting.
Talks and meetups
One aspect of being a developer that I enjoy thoroughly lately is attending meetups and conferences. Whether I get to be a speaker or just going an attendee, hanging out with fellow developers and listening to them share their experiences is always fascinating.
This year, I attended the regular meetups at the Kotlin Budapest User Group, participated in the Budapest Google I/O Extended, went to a HWSW meetup about Android and Kotlin, as well as this year's HWSW mobile! conference. I gave a total of four talks at these, plus a 3-hour long workshop at the last one, to wrap up the year with something exhausting.
Although I didn't even leave Europe, travelling was a more significant part of my year than I expected when it started.
Attending KotlinConf meant a wonderful trip to Amsterdam, with thankfully plenty of time for sightseeing and hanging out outside the conference as well. (Again, you can read more about this here.) Now I'm
patiently waiting for the next KotlinConf to be announced so that I can start begging my wonderful employers to somehow get me there.
I also got to take a small but exciting weekend trip to Prague around the end of the year, thanks to having smart enough friends that as a team we've advanced to the regional round of the ACM ICPC competition (yes, that is redundant). While the contest itself was a bit of a mess and we didn't end up doing particularly well, the trip and getting to know the city a bit was its own reward.
I'm not a fan of new year's resolutions, promises, or very concrete goals in general. However, I do think that softer, renegotiable targets are good to set up. Here's the direction I'm planning to take my next year.
More of the same
Everything I mentioned above except for studying is supposed get at least the same amount of attention next year.
Studying should take up a lot less time than it used to, and be essentially a non-factor for good after the end of the next semester.
Continuing to teach Android labs is probably a given, and I'm now eyeing another subject for next semester as well.
I aim to keep up my regular meetup attendance, and hopefully get my talk-giving and article-writing frequencies up to normal again. I'm also hoping to get to a couple conferences next year, depending on schedules and prices.
Finally, and of course, I'll keep putting in the hours at my main job (there's Kotlin to teach, and an architecture to refine), as well as doing the occasional edit on the side. I expect both of these to really ramp up starting at the beginning of the summer, when my university duties finally grow scarce.
Back in the saddle
There were things that didn't get the time I wish they did recently. So here's to trying to give them a go next year.
I'm maintaining a couple open source libraries, which are overdue for some attention next year, both in terms of new features and technical things such as trying to get them to be hosted on Maven Central.
My presence on StackOverflow has been spotty lately, but next year shall be the one where I finally catch up with Jayson.
Carefully considering the landscape and getting the timing right is crucial when deciding to invest time in learning new technologies. Kotlin's multiplatform capabilities have become convincing enough for me that I'm now betting on them becoming relevant in about a year's time.
In preparation for this, I've decided to take a dive into the dark side, and learn me some Swift and iOS. The language part of this should be a breeze, and we'll see how getting familiar with iOS goes. Even if the multiplatform plans don't pan out, I already know that Swift is a fantastic language, and being more familiar with iOS as a mobile developer can never hurt either.
There's some more exciting stuff in the pipeline for next year, but I can't talk about them yet...
Well, that's it for this year. If you want to be notified when I release new things, or just listen to me whine about the inconvenience of running a macOS VM, be sure to follow me on Twitter.
Thank you for reading, and have an awesome 2019!