I'm a jack of all trades; full-stack developer, sysadmin, DevOps, network architect/engineer, database admin, etc. I "wear many hats".
From my years of experience working at an MSP and tinkering with hardware and software as a hobby, I've gained a wide area of expertise in tech.
I enjoy building useful and fun things, simplifying and effectivizing processes and solving complex problems.
In my free time I work on hobby projects, occasionally play games, watch movies/TV shows and exercise.
Much of the software I've created is proprietary/for internal use at the companies I've worked at. When creating software in my free time, I usually publish it on my GitHub under an open source license.
I've also created a highly efficient domain dropcatching solution (with an 80% average success rate, against several competitors) as contractual work outside of my day job.
I started learning web development in 2008, editing a single HTML file and figuring out how it worked (and how it broke). Later on, I learned about standards, web servers and eventually programming languages.
Today, I've created and maintained countless websites and web apps using a lot of different tech stacks. For frontend work, my go-to framework is React. I've used Svelte once and enjoyed that too.
For backend work, I pick the programming language, framework and web server all depending on the project. For example:
- WordPress websites works best with the Apache web server, due to the abundance of
- If I'm making a website, I often choose PHP due to the wide range of web hosting solutions available.
- If I'm making an API, microservice or web app, I might prefer another programming language such as Go.
As part of my MSP work, we wanted to create a turn-key digital signage solution for our customers. The task of developing the player/client software and creating a portable "just plug it in"-solution was given to me.
I wrote several helper applications in C++ for interacting with the OS (updating Wi-Fi settings, fetching MAC/IP address), providing a stable per-millisecond tick source to info-beamer (used for creating animations), downloading resources and the player/client setup manifest, performing automatic updates of the system software, performing system recovery (which wipes and re-downloads the entire system software package in the event that the main software no longer starts).
I also ended up having to create a separate web-based player/client. I opted to use vanilla JS and HTML/CSS for that and wrapping it in Express for installation as a standalone app, as well as deploying it on a web server for live previews while editing content.
Today I probably would have written all the software in Rust, due to the strong safety features of the language and large ecosystem of crates. I've never had any memory management-related production failures in the C++ software I've written, though 😉
I started learning about and using Linux in 2011. I've created and maintaned web servers, email servers, game servers and partially-automated shared hosting environments.
I don't use Linux as a desktop operating system, due to the lack of support for several applications I use on a daily basis. Though, I find it very handy when performing hard drive recovery, gathering information from computers and for running servers.
I've recently used Docker Compose to deploy an API. I liked how easy it was to get things running, but disliked how difficult it was to do any kind of advanced configuration of the various services involved.
When it comes to Windows Server, I've worked extensively with Active Directory (AD DS, AD CS), File and Sharing Services (and DFS), Group Policies and security hardening through GPO and registry tweaks.
I've made several Windows client deployment solutions (WDS, MDT/LiteTouch), including automatic software installation, BitLocker full-disk encryption, automatic AD join, hybrid Azure AD join, Intune enrollment and subscription activation.