Projects
In this page you'll be able to read a bit more about my projects and the technologies I've used. Of course, I can't reasonably describe all of them here, but i hope that I'll manage to list most of the interesting ones here! Also, please note that many of these projects have been developed in an enterprise setting where the clients were rather strict in regards to security. Because of this, text and logos might be replaced with random pixels and color schemes removed. This is done to ensure that you get an idea of the complexity of the UI, without giving away the particular clients in question.
Thousands of aggregated blog posts for you to read!
More information
Turns out that you can do a lot with feeds like RSS, if you know where to source the data! The users of the popular Hacker News technology enthusiast site shared links to their personal blogs and someone was kind enough to aggregate links to the corresponding RSS/Atom feeds where possible in a list. So of course I had to put that list to a good use!
The type of system where good performance is a must, with no leeway!
More information
This was one of the more recent systems that I worked on in the org and one that caused quite a few challenges along the way. The idea behind it was that not only would it integrate with the other systems that were being developed, for scheduling auctions, but it would also provide real time auctions for hundreds of users.
It was time to bring the sales platform into the current decade!
More information
Having the AngularJS EOL looming over the project's head was slightly concerning, however this also proved to be a great opportunity to rewrite it in more modern technologies! Notably, Vue, which had already been used previously in another few projects, alongside the features provided by the latest versions, such as the Composition API, which is in some ways nicer to use than React hooks, as well as state management solutions as Pinia and PrimeVue for ready made components.
A public platform for conducting B2B sales for one of the clients.
More information
Here's a sales platform that was meant to introduce a certain amount of self-service functionality to conducting B2B transactions. The idea behind it was that it'd integrate with the aforementioned ERP/CRM system and would allow business partners of a given org to sign up for certain sales processes that were conducted, as well as review terms and rules, submit the necessary documents to allow their participation, as well as choose the services and goods that they're interested in.
One of the larger multi-year projects, close to half a million lines of code!
More information
This was a rather complicated system for one of the clients, which involved work over multiple years, both on the continued maintenance of the system, as well as developing entirely new modules for it altogether. While many companies out there might attempt to customize an existing system for their needs, like Oodoo for example, there's also lots of value in doing the opposite - making the system adapt to your business and its needs, fully.
Despite being a developer at heart, I also have some experience in leading technical interviews.
More information
I've occasionally been asked to participate in the hiring process and help out the technical interviews for candidates who'd like to work at the organization. While there are many approaches to hiring, I think that both reviewing take home tasks and taking part in real time interviews are both good approaches.
I decided to make a polite guide about asynchronous communication.
More information
It's important to respect others' time, especially when working remotely. Especially in our line of work, where context switching will slow us down and decrease our productivity, where frequent interruptions will often prevent us from getting things done as quickly as we otherwise would.
Google Fonts is nice, but what about downloadable fonts for personal projects?
More information
I've used Google Fonts to great success so far, but not everyone wants to rely exclusively on web fonts, both because of relying on someone else's infrastructure, as well as over privacy concerns and so on.
Investing in increasing your bus factor will generally pay off well!
More information
Every system and project out there will have domain knowledge that won't be immediately obvious to anyone who's joining the team anew. It might be certain aspects of the business domain, it might be knowledge about the overall architecture, about the technical solutions and other noteworthy details. It is therefore important that we work on formalizing this knowledge and making it easier to transfer it to new colleagues.
What do you do, when there are still servers running your containers? Infrastructure as code!
More information
It wasn't enough for me to just work on modernizing how the applications are run and introduce containers, for you see, the containers still run on some sort of a host that has its own configuration, directories, users, permissions services and lots of other things that should also be managed in a sane way.
Turns out that containers are pretty great, both for development environments and production!
More information
This effort of mine took anywhere between months to years of efforts, depending on how you look at things. Initially, I started out with adding systemd services and Ansible for managing server configuration, but it turned out that this alone wasn't enough to ensure consistency across different environments. The answer to that issue was using containers instead and making the running application instances truly reproducible - you ship what you test!
Your applications work well... right? And you're sure of that? This is where APM comes in!
More information
I've seen people not think about day 2 concerns of development nearly enough as they should. It is not enough to just ship some software and get paid, you also need to think about keeping it running in the future. Not just that, but you need to know just how well the software is running, as well as have the ability to anticipate any potential issues ahead of time.