Finnish English

I started programming as a hobby with PHP in 2004, which was also when I became familiar with relational databases. I worked in web development as a private entrepreneur under trade name, JH-Tuotanto, from 2006 to 2015. After that, I started salaried work at Tinyfee Oy in 2016, and at the end of 2021, I moved to subcontracting through my own company, Complex Software Oy, and in addition, I now also offer my expertise directly as a contract partner.


Before my salaried work, I mainly wrote procedural code and was more interested in what could be accomplished with programming rather than the programming itself. Nonetheless, during these years, I managed to solve a few technically interesting challenges, even though not all the code made it into production. One intriguing example is changing the color of transparent PNG images, which required replacing every pixel of the image with the chosen color's RGB value while using the pixel's original Alpha channel value. Another interesting example is using a database model designed for storing hierarchical data, which I have revisited in later years.


Jani Hirvonen at office in the year 2010
At office in the year 2010

My first integrations were with interfaces related to payment via text message and online banking. This was back when agreements were made directly with banks. Later on, I worked with the Google Maps API, postal and freight service location searches for Posti and Matkahuolto, and the then-current Luottokunta payment interface, which allowed for credit card charges based on subscription. Using this required a PCI scan of the server every three months, which I maintained from the hardware up. At that time, the server ran a traditional LAMP stack, including email services.


Linux, Apache, MySQL and PHP
Linux, Apache, MySQL and PHP

When I started my salaried work, I had mainly been dealing with my own old codes. I quickly learned many new things as the paradigm of web development rapidly advanced. I got acquainted with many new interfaces and libraries. For the first time, I became genuinely interested in programming itself, but at the same time, I wondered why it couldn't be simpler. A challenge was dealing with various projects from different eras. I thought about how to create long-lifecycle code so that multiple projects could share the same code base. At the same time, I became interested in Serverless architecture.


Jani Hirvonen ottamassa käyttöön uutta näyttöä vuonna 2021
Setting up a new display in the year 2021

The technology stack of a modern web application is often much more complex than it was 20 years ago. This has led to the situation where very few people can or want to call themselves so-called Full-Stack developers anymore, a type of generalist who can indeed implement a web application from start to finish, but the role does not allow for in-depth specialization in any area. Nevertheless, this role best describes what I have done for most of my working years. I have learned many things and forgotten almost as many. For this reason, I consider documenting my own learning to be especially important, as it eases cognitive load and speeds up the recall of information, in addition to which generative language models are now also a great help, especially in this role.