I think I coded my first programs using BASIC when I was eight but I wasn’t serious about programming. It was more about games and fun for me then. After I finished my vocational studies (electronics + abitur), I made it to the local university.
My initial plan was to study more electronics but then the program I wanted to study was changed to something less interesting for me and I chose software engineering as my field of study instead. During these studies, I decided to take a Summer course on computer graphics. You could choose a 2D and a 3D application to learn. I decided to go with the GIMP and Blender.
Blender didn’t make any sense to me at all first given it uses a tiling user interface paradigm and it’s filled with functionality. I came by excellent video tutorials which helped me to break the learning barrier and eventually become a power user and a core developer of Blender.
After using Blender for a while, I began to see small things that could be fixed or improved. Given my background in C due to my studies in electronics, it wasn’t a big problem for me to begin to compile the application and begin to submit patches to the project.
Getting involved sparked my career in open source and I travelled a lot and met a lot of interesting people as a result. I am still on this track even though I develop open-source less these days than when I was younger.
I don’t have one fixed space I work. The above is my newest setup especially when I need table space. The chair might need an upgrade. Sometimes I go to a co-working space to work with my friends and I am writing these replies on a sofa while sipping tea every once in a while.
I transitioned to Visual Studio Code last year from Sublime Edit. Although it was rough at first, there’s no going back. Given I have past in Vim, I use each editor with Vim bindings. In a terminal environment, it’s handy to fall back to Vim so those are good skills to have.
I use my mobile phone mainly for tracking fitness and tasks (shopping, things to do) which I then sync with OmniFocus (my main system). Sadly there’s no OmniFocus for Android yet. My next phone could be an iPhone for this reason alone. I have Slack on my phone primarily due to friends but I would prefer to remove the app as it hogs attention and battery.
My plan is to replace the homebaked solution with another one where I push the rendering logic to the server and then query the server for a site against a context for GraphQL and layout/component definition per path. Doing this will integrate the site generation step to the API itself and simplify the overall architecture.
It’s difficult to say top five as my usage of GitHub is so varied. At the moment, I spend time with TypeScript, type-graphql, graphql.js, React, and Express although I am considering migrating away from Express to either Koa or Fastify as those are more modern, and even faster, alternatives.
GraphQL. Organizing the first GraphQL Finland last year gave me an appreciation to the innovation happening in the space. It’s interesting for me to notice that I am more backend-focused again. I believe a wider adoption of the technology will make us rethink frontend and its responsibilities again.
You could say we are discovering good old ideas and applying them in new ways. All this will have implications on how we develop applications in the future.
For me, it’s about requirements. The problem is, you know almost everything you need at the end of the project and likely not enough in the beginning unless you are doing something you already did before. As you go, you discover more requirements that will shape the design. You also should be careful not to over-engineer as structures may need to be changed over time.
I think systems are grown and the big challenge is maintaining this growth in a sustainable way. When it comes to production usage, that’s where development practices come in. If you deploy features straight to production, you will have a different process than in release trains (a release per week, month, or other period). You will approach the work differently if you know it will go live instantly even if it’s behind a feature flag.
What if you designed each feature of your application to be removable from the start? Would your architecture look different? I think it’s these kind of thoughts that drive to the difference between monoliths and microservice approaches.
I might begin from a monolith but split it into smaller entities over time as I know what I’m doing but starting from micro might be another way to consider in the future.
I am learning how to organize technical events efficiently. Last year I organized two and this year might include the responsibility for three events. As the amount goes up, the efficiency has to go up as well. For this purpose, I have to develop technical infrastructure to support the process and quite a bit exists already.
It’s likely the SurviveJS effort I started years ago. It’s a series of technical books and technical interviews. It has also led me abroad and given me a lot of opportunities I couldn’t even dream of. I think there’s still more to come.
It’s difficult to generalize but I would say instead of running after whatever is hyped at the moment, it may be more fruitful to focus on the fundamentals of software engineering as that gives more long-term benefits. Programming is only a small part of the work.
If you consider it carefully, engineering is a social effort where you collaborate and create with other people. Therefore putting emphasis on improving your communication capabilities can multiply your impact. Learning to speak in public, write, and work with other people are at least as important as learning to code.
My main challenge related to React Finland and GraphQL Finland is making the technical infrastructure sustainable. At the time of writing it’s all based on a GraphQL API against which I generate the sites, schedule poster, schedule a presentation, mobile app, and perhaps a couple of other things.
I am in progress of unifying all this into a single repository so it’s easier to maintain all the code I have and turn the existing pieces of code into a proper system that also contains our private information.
Thanks for asking. I’ve somehow transitioned into a conference organizer/director role and I spend most of my time thinking about related things. The recent React Finland conference held in Helsinki was a great success and now we are repeating it in 2020.