2019.12.27. 09h • Márton Braun
Another year has come to an end, so it’s time to reflect again. I’ll attempt to sum up what I’ve done this year, how that compares to what I was planning to do at this same time last year, and what I expect to be next.
This, like last year, will be a proper blog post, meaning it’s a mostly personal ramble that many may not care to read.
If you don’t mind that, let’s go!
First, let’s look at what this past year entailed for me.
Overall, this was a year light in studying, at least for university. I’ll definitely deem this a plus, as it allowed me to focus on more important things that I actually wanted to pursue.
This was my final year for university studies, completing my master’s degree in computer engineering. I had my last real subjects - with lectures, tests, and exams - in the spring semester. For the fall, all the work I had left was finishing up my thesis, which I’ve managed to get done on time.
I will definitely be sharing a lot of what I’ve written my thesis about in various forms, sometime early next year.
Since my studying duties went scarce, this was the year I could move to working full-time for good. Yay! 🎉
At work, I’ve completed five more months of a very large healthcare related project, working little on features, and performing mostly project level tasks (CI, build scripts, dependency management, etc.), as well as lots and lots of code reviews. I’ve talked about this experience at the Conference for Kotliners 2019 in the summer.
In the summer, I got a taste of how app development works in the financial sector, as I was outsourced to the mobile development team of one of the largest banks in Hungary for a couple months.
In the autumn, an interesting opportunity presented itself: the role of Android Tech Lead opened up at our company. I applied for it, and got the role, shared with a colleague. We have about 20 Android developers at this point, taking care of this team is not a one person job!
In this role, I had the chance to get our internal education materials and documentation in order, tighten up running our weekly meetings of Android developers so that it’s on time and on point, get a system going for our test device usage, and participate in some company level meetings to represent our Android team internally.
Outside of my regular job, I continued working with the amazing RayWenderlich.com team. I ended up doing very little in terms of editing tutorials this year, due to a delayed tutorial that I was assigned to.
However, at the very end of 2018, an opportunity to join the book team as a tech editor came up, and I jumped on that right away. So this year, from February to September, I worked with some wonderful people on a book that combines two topics I’m passionate about: Kotlin mixed with data structures and algorithms.
And since working on just one book for the year wasn’t enough somehow… I’ve also signed up for the EAP of the Effective Kotlin book by Marcin Moskala. I’ve reviewed chapter after chapter in this book, and had a great time working closely with Marcin to shape the guidance in the book. It was never a bad time to hop on a call to discuss how to best handle nullability in an idiomatic way 😉. You can find Effective Kotlin on Leanpub for the ebook, and you can check out this blogpost for information about physical copies.
Finally, there’s a book that I was less involved in, but still ought to mention. Being on the RayWenderlich.com team means that every once in a while, you get “Opportunity: …” emails for various projects. It was thanks to one of these that I was a beta reader for Living by the Code by Enrique López Mañas, a collection of interviews with well-known developers and leaders from our industry. I chewed through the book within 24 hours, and can highly, highly recommend it. Read my thoughts on it and then get it from the RayWenderlich.com store!
As I described a year ago, last summer I finally caved in and started teaching Android development at the university that I’m attending (BME-VIK). Back then, I led the work of converting all the lab exercises to Kotlin, and then taught one of the lab courses, a weekly workshop-style class for 20 students. I continued this over the spring semester this year.
Then, over the summer, the idea of teaching a standalone Kotlin subject (without any Android specific parts) came up. This was yet another thing that I couldn’t say no to, and so I jumped right into it: creating a brand new subject from scratch, nearly all on my own (barring official administration)!
We’ve announced this course with a limit of 120 people, and more than 100 seats were filled. Kotlin, so hot right now 🔥.
The format for this subject was a 90-minute lecture each week, where I did live coding to demonstrate Kotlin’s features. I’ve also spent what must be a couple hundred hours developing written materials, roughly 300 pages in total, covering as much of the language as we could fit into a single semester. Finally, student evaluations were also run by me, so I had to create tests, grade them, and evaluate the homework of all of these students.
Overall, this was an amazing experience, and I’m delighted to have spread Kotlin to this many people. We had dropouts like every course does, and we had students who already used Kotlin, therefore they didn’t attend the lectures. I had one of these students tell me that I still got them to try new technologies for their homework assignment - TornadoFX, in this specific case - which I think is also a total success.
Running this subject was a lot of work. I started the semester with a couple weeks of materials prepared in advance, but then this buffer slowly faded away, and by the last weeks, I was developing the lectures the day before I had to give them. I still think I’ve managed to maintain the quality I’ve set out to provide, but it was very, very stressful and draining to write so much on a deadline. It was all worth it for the immense amounts of positive feedback though!
As for all the written material I’ve produced, I’m planning to publish it in some form eventually, but that will take some time to figure out.
Talks, meetups, conferences
I’ve attended nearly all local meetups this year, mostly including meetups organized by Kotlin Budapest and Android Budapest. I’ve started helping out the Android Budapest meetup with some editing work for their talk recordings, and was later invited to join the organizing team. How could I possibly say no to that? 😊 As the organizers of this meetup, we’ll also be helping out with organizing the DevFest Budapest event next year - CFPs are open!
I only appeared as a speaker on these meetups once, however, giving talks definitely continued this year. In fact, it ramped up a lot: I’ve managed to prepare five new talks in total. The slides of these and all my older talks as well are now available on Speaker Deck.
Where did I give all of these talks then? Well, I’ve started applying to conferences as a speaker. In last year’s wrap-up, I made an off-handed comment about “hoping to get to a couple conferences next year”. Well, I’ve certainly done that, and then some! I’m still somewhat in disbelief that I got so many speaking opportunities at such prominent conferences.
I’ve ticked a lot of firsts in just one short year. First speaker spot at an international conference, first public talk in English (surprisingly, even to me), first conference attendance where travel costs were covered, first Droidcon (actually, I’ve been to three of them in this first year - Berlin, Vienna, and London), first time flying alone.
I’d like to give props to two smaller, but very well run conferences that I got to participate in: Conference for Kotliners here in Budapest, and MobileUnplugged, located in Cluj-Napoca. Both were wonderful experiences for me, with some great people organizing them. Thank you!
Last but certainly not least, I’ve also attended one conference as a regular attendee - KotlinConf 2019, which was as great as I expected after last year’s KotlinConf. I didn’t write about it like I did last year, but I can recommend this writeup if you want to read a bit more about it.
All this travelling meant mostly flying. While this many flights a year might not be a lot per se, it already made me think of its environmental impact, as many people I respect and follow have been calling this out in various ways.
So I used this calculator to give me some basic idea of what kind of a footprint this much flying might have. This came up with 1.3 tons for the flights above. I doubled this, since I was almost always flying with a colleague, and then I rounded it up to 5 tons. I’ve donated the equivalent of this via The Gold Standard, and since it’s such an internet phenomenon, I’ve also donated the same dollar amount on #teamtrees.
StackOverflow was something that trailed off significantly around spring. I was quite active there until March, and I’ve achieved my goal of passing Jayson in the friendly competition of having the top scores under the Kotlin tag 😉. However, then I got just a couple answers in per month for the rest of the year. I’ll probably focus a bit more on this again next year, as it’s something that’s rather rewarding for me.
Open source work also remained part of my schedule. I kept maintaining my main open source project, the MaterialDrawerKt library (although right now, I’m lagging behind on an update - soon, I promise!).
I’ve also done open source work within AutSoft, where we’ve released Krate, an Android SharedPreferences wrapper to the public this year. To learn more about Krate, check out my talk or the accompanying article about it.
In last year’s article, I had a goal to learn to publish libraries to MavenCentral this year: this, after a lot of work, was a success, and I’ve even written about it so that others might get there a bit easier.
I’ve also open sourced a project that’s not quite ready for the limelight yet. If you want, I’m sure you can seek it out though 😉.
I’ve managed to grow my Twitter community as well, mostly thanks to conferences, where I made lots of new friends, and I’ve also become more visible by being a speaker. It’s really odd to see that so many people care about any part of what I do. I wrote about the imposter syndrome that this - amongst other things - has sparked in me in this article.
If you follow me on Twitter (and reading this!), and I don’t know you personally, please write me a quick tweet or DM telling me why you’ve ended up following me. It would help a lot!
My own blog has done pretty well in the beginning of the year, but it slowed down quite a bit by the end of the summer, as my thesis and the lecture notes for the Kotlin subject took up most of my writing capacity. Overall, I’ve still managed to publish about a dozen articles, including my most popular one yet, covering Retrofit and coroutines.
Promises for the Future
With all of that behind me, let’s see some of my aims for the new year. Not actual promises, more like plans.
More of the same
Blog posts, speaking engagements, and meetups will remain at the top of my priorities for next year in terms of community participation.
There are many new things I want to write and talk about, and I’ll make sure that these tasks get at least as much time next year as in this one. I am also much more confident and more used to CFPs now as well, after this rather scary first year of going through them for the first time.
Working on books has also been a very interesting experience, which I might continue in some form, if the right opportunities come along.
… but less of some things
As mentioned above, preparing the subject took a lot out of me, and was a ridiculous amount of work. Of course, I can now reuse this material and build on it, but this first run was truly exhausting. While I was given some time for this at work (huge thanks to my company, AutSoft for supporting the university like this) and also had a small contract with the university directly for teaching, most of this had to be done in my free time, basically as charity.
I knew this ahead of time, and accepted the work with this in mind, and would do so again. Teaching is really, really fulfilling for me. However, sadly, it’s also very clear that this is not economically viable whatsoever - at least not in this form. This means scaling back on these efforts next year.
Another one of the large projects mentioned above that was done in my free time - basically as a community contribution, and for exposure - was my reviewer work on the Effective Kotlin book. This was, again, something that I was okay with as I was happy to participate in it, but I probably won’t be able to do similar things in the future.
This is not to say that I won’t be spending my free time on building the community (or my career). It just means that I’ll try to focus on the more impactful, or less time consuming types of work. For example, I hope to keep organizing meetups, publishing articles, and answering questions on StackOverflow.
Something new, again..?
A year ago, I set out to learn Swift and iOS, as I expected Kotlin multiplatform to be in a really good shape by now. I learned a decent amount of Swift (thanks to Swift Apprentice and Data Structures & Algorithms in Swift, both excellent books), and then got started with iOS as well. However, for a variety of reasons (running macOS in a VM was quite tedious, I had a lot of other things to focus on, etc.) this task kind of trailed off after completing the first couple tutorials.
However, as far as multiplatform being mature by this time goes, I think I was overly optimistic. While there’s a lot of hype around it, and it’s in an okay shape and improving all the time, I think I’m still on a pretty good timeline with my iOS studies to meet Kotlin multiplatform sometime in the future when it’s finally ready for production use.
Who knows what else!
I have no definite secret projects planned for next year yet 🤐. (If you’ve read last year’s wrap-up, the one I was teasing there was the DSA book!) However… There’s always stuff coming up. And while I should probably learn to turn down some of the opportunities that I’m offered to participate in, I think I’ll end up jumping into plenty of new things over the next year too 😉.
Well, that’s it for another, very busy year. If you want to be notified when I release new things, or just listen to me ramble about stuff, you can follow me on Twitter.
Thank you for reading, hope you’ve had a nice year and enjoyed the holidays, and here’s to an awesome 2020!
The @JvmOverloads annotation is a convenience feature in Kotlin for interoperating with Java code, but there is one specific use case on Android where it shouldn’t be used carelessly.
Retrofit's coroutine support has been a long time coming, and it's finally coming to completion. Take a look at how you can use it to neatly integrate networking into an application built with coroutines.
Describing the state of a screen is a common practice these days thanks to MVI popularizing the concept. Let's take a look at some examples of how you can design your state objects neatly using data classes and sealed classes, and how you can put them into practice.
In what may be the start of a new series, I code review a project that was posted on reddit recently and got very popular very quickly. Let's see what we can learn from it?