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.
The type of system where good performance is a must, with no leeway!
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!
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.
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!
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.
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.
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?
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!
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!
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!
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!
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.
With some work, even most simple applications can scale to thousands of active users.
When talking about scaling, opinions vary, as do the orders of magnitude in question: someone's system might run well with a hundred active users, someone else might need to serve thousands, whereas yet another organization might be working with tens of thousands of users and beyond. Personally, I haven't had to work with the latter outside of particular load testing circumstances, but even most boring real world systems can be optimized to perform better for gradual scaling up.
What if someone made a shell based alternative to Ansible?
Tools like Ansible are pretty great for managing the configuration across many servers. However, Ansible in particular depends on a Python interpreter being present on the remote system. What if someone were to create a solution which is not dependent on the presence of Python, one that would work purely through a SSH session, in the remote shell, much like a regular human user would?
One of the more performant solutions for load testing.
A part of my Master's thesis was not only deploying a web application, but also load testing it across different container orchestrators, to see how well it performs and whether the container orchestrator deployments have succeeded properly.
What if we used contact tracking instead of contact tracing? How would it scale?
For my Master's thesis, I needed a system to benchmark and run as an example, to check whether my configuration management tool worked correctly. Because of this, I decided to explore whether contact tracing would be a better solution - whether GPS data from mobile devices of infected individuals could be aggregated responsibly to generate heatmaps, so even those without applications would know which parts of the city to avoid, as well as something that could aid in the research on the spread of the virus.
Turns out that lightweight Kubernetes distros do exist. Docker Swarm is still good, though.
As a part of my RTU course, I had to spend some time doing a praxis - where I'd work in a company and do some research. Luckily for me, I was already employed at the time, so I could spend the time exploring various container orchestrators in detail, a question that was relevant for the org in regards to development environments at the time.
I helped increase the uptime of various environments.
Uptime is a bit of a touchy subject. On one end, people seem to obsess over having zero downtime and make development much harder than it should be (though this is understandable for certain services), on the other people don't necessarily care as long as it doesn't impact themselves personally.
In my mind, doing all of the "easy" things to achieve good uptime is a no-brainer, even in regards to something like development, testing and staging environments - after all, you should make sure that QA have a pleasant experience as well.
I setup an entire pipeline to build and store all of the containers needed for development on-prem.
Have you ever needed to build and store your own containers that aren't necessarily for public consumption? Do you need to avoid running into Docker Hub rate limits and not create unnecessary load on their servers? Do you want good performance while building your own containers, as well as to take advantage of layer reuse? This is exactly what I did for a few projects in the org.
A solution for when log shipping is out of the question.
Have you ever found yourself unable to use log shipping, for any number of reasons? Maybe you have an older project, or maybe the team has simply decided that log files are the approach that they'd like to use. Well, you're going to have a problem - some days, weeks or months down the line, the server disk space is going to run out because of all of the log output, or you'll end up with log files that are hundreds of MB or even GB in size and thus hard to browse.
Ever had issues with not knowing which Jira issues should be done after which? I solved that.
Project management software like Jira allows you to add "has to be done before" and "has to be done after" links to issues, so that you know which need to be done after which. But what are you supposed to do, when you have a sprint that has like 20-40 issues in it, all of which can have those links and amongst multiple different ones?
I actually made the homepage for the Apturi Covid (Stop COVID) app.
Shortly after the pandemic became quite concerning, Google and Apple joined forces to implement a contact tracing solution. The idea behind it was to alert people of when they've been in close proximity with someone who has become infected, so that they'd know to self-isolate, to help combat the spread of the virus.
Each country got to develop their own contact tracing solution, while using the underlying technology, and I got to collaborate with around 100 industry specialists in my country on doing just that.
My first experience of running production-ready Kubernetes clusters myself.
Imagine a project coming along, which cannot just pay a cloud vendor to run a Kubernetes cluster for you. Imagine having to manage your own cluster on-prem, needing to do so on a short notice and with room to grow, so that other developers can start working on a microservice project and ship container images successfully.
Not quite Farming Simulator, but something to help with real world logistics.
This was another public system that was intended to allow farmers to sign up and manage their fields more easily. The idea was that they could plan crop rotations, as well as fertilization of the fields, as well as manage their farm equipment digitally.
A wholesome project about lots of local food related events.
Here's a surprisingly relaxed project that I got to be a part of at work. There was this site that was focused on lots of local food related things, like where you can buy local produce. They wanted to implement a new section, which would allow scheduling events and would serve as the main source of information about them: time, location, possibly adding videos or a gallery, as well as the event plan, speakers and so on.
Note: I've blurred the image of the trophy, in case anyone doesn't feel comfortable with that.
Some more help for an acquaintance, this time with micro frontends.
The acquaintance that I had helped previously in creating a responsible hunting system, now wanted some help with a hunting trophy gallery. I also helped them with bringing that idea to life, within the context of an already running system.
An acquaintance asked me to help them with making hunting responsible, so I obliged.
In the modern times, hunters actually help out even the populations of wild animals, so that they don't do damage to the flora. In the winter, they provide food for the animals to help them better weather the cold and I've personally helped clearing a few beaver dams that were in danger of flooding the surrounding areas.
However, when it comes to hunting, it's actually important to do that properly as well. An acquaintance reached out to me and wanted some assistance in doing that, by developing a system that'd both allow keeping track of how many animals have been hunted, as well as would allow experts to add comments explaining how to do that better in the future.