About me
Hi! I'm Alexander Sagen. I'm a full-stack developer, systems developer, embedded/IoT solution architect, systems administrator, DevOps engineer, network architect/engineer, database admin, etc. I'm a jack of all trades and a master of none.
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 (usually technical), occasionally/rarely play games, watch movies/TV shows and exercise.
Software development
I know a wide variety of programming languages, such as: Javascript, PHP, C, C++, C#, Rust, Go and Lua. I've also worked with several other programming languages. It's easy for me to switch between languages and get started with languages that are new to me, because I don't limit my thinking and knowledge to any specific language, syntax or framework.
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 found this work to be comparable to High Frequency Trading (HFT) software development in many ways.
Web development
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.
I've created and maintained countless websites and web apps using a lot of different tech stacks. I've made APIs and dashboards to automate business tasks, domain and DNS management solutions (think Namecheap/GoDaddy), Shopify apps processing thousands of orders daily and so much more.
For frontend work, my go-to framework is React. I've also enjoyed using Svelte. For backend work, I pick the programming language, framework and web server all depending on the project. I've used WordPress extensively for websites and written several (private/project-specific) themes and plugins. I usually pick PHP for websites purely due to easy deployment to various web hosting solutions. For APIs, microservices or web apps I've used PHP, Go, Rust and JavaScript (Node.js).
Embedded systems
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 ended up choosing Raspberry Pi as the hardware platform, info-beamer as the software base and running it all on Raspbian Lite / Raspberry Pi OS Lite.
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 secure automatic updates of the system software, performing system recovery (wipe the slate clean, download and redeploy 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 for a standalone desktop app as well as for live previews while editing content. I opted to use vanilla JS and HTML/CSS for this, for performance reasons. I also made a standalone desktop app sharing the same JS/CSS using Electron for the runtime and Inno Setup for installation.
Today I probably would have written all the software in Rust, due to the strong safety features of the language and the large ecosystem around it.
Linux
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 (bash scripts for automated setup of PHP pools, nginx servers, vsFTPd sites, mailboxes, etc). I also have experience with solutions such as Plesk, but still find the experience of doing the same from scratch valuable.
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 used Docker and Docker Compose to deploy applications in a containerized manner.
Windows (Server/Client)
I've worked extensively with Windows Server, especially Active Directory (AD DS, AD CS), Network Policy Server, Routing and Remote Access, File and Sharing Services (and DFS), Group Policies and security hardening through policies and registry tweaks.
Some of the work I've performed in Windows environments include:
- set up Hyper-V clusters with high availability/fault tolerance
- implemented least privilege access models in Active Directory for both admins and users
- implemented lockdown policies for Windows kiosk computers
- implemented AppLocker policies
- implemented Microsoft Always On VPN (Device Tunnel and User Tunnel, IKEv2 with SSTP fallback, Conditional Access with MFA and device compliance, policy based network access control)
- migrated file shares with complex permission/ACL hierarchies to SharePoint Online
- implemented Windows client deployment solutions (WDS, MDT/LiteTouch, Microsoft Endpoint/Intune Autopilot)
- configured Hybrid Entra ID/Azure AD solutions, including: Conditional Access policies, Self Service Password Reset (SSPR), Azure AD Connect, auto-enrollment of domain-joined devices to Entra ID/Azure AD
- implemented monitoring and automatic fault remediation for services and line of business applications using RMM/MDM tools and PowerShell scripts
- developed UWP/WinRT apps in C#, C++ and Rust
- developed PowerShell scripts, cmdlets and modules