About me


The goal of this website is to collect all my thoughts, projects, ambitions, memories and posts that are appropriate for the Interwebs to see in one place.


This is my, Denis aka delneg, personal website.

Most important skill I have is the ability to learn fast and adapt to changing environment, that includes all kinds of IT-related shenanigans, but also people-related things, too.

Generally speaking, I’m an IT person, however I’m curious about other stuff too. It includes, but is not limited to:

  • Crypto
  • Biohacking
  • Breakthroughs in medicine
  • Physics, in particular - quantum and applied
  • Greenery, vertical farms, and aeroponics
  • Dogs
  • Music
  • Financial markets
  • And other stuff, you know how it is - stuff comes and goes
  • Foreign languages - at the moment of writing I know only 1 native + 2 extra

To expand on the “IT” part, I’ve had experience with, or worked with, or meddled with, or (you get the idea)…

Software engineering

  • Started from C in uni, they did teach us using K&R https://en.wikipedia.org/wiki/The_C_Programming_Language, awesome book. Used it later on in various projects, and what can you do - it’s the foundation. Here’s some kqueue work I did for fun
  • Also meddled with R (& R-studio & Excel), Pascal and Visual Basic in university
  • Couple of years with Objective-C, a language I still love dearly, before Swift 1.0 was released and did a killjoy stunt
  • A lot of experience with Django, some of the websites I’ve created 8+ years ago are still running. I’m the creator of a couple quite popular packages, here’s a short list:
  • Some experience with Python in general, one of my go-to languages for scripting and my calculator
  • Eventually I had to learn Swift, because apparently no one uses ObjC anymore. I think it’s good after version 5, but kinda bloated with too many keywords
  • Started using Scala, didn’t like it too much - apparently some people do, in my experience - most of them are quite strange
  • A goof acquintance of mine recommended me Kotlin, and I even wrote a small server in it - you can find it on github - but when I tried to find people for backend development in Kotlin, I couldn’t, oh well
  • I’ve spent 1 year learning, and 3 years writing (on/off, but mostly fulltime) in F# - and notably, mostly on the mobile, for iOS and Android using Fabulous framework. When I started, I’ve never had any C# experience (which is quite unusual for F# users) - so I did like the language and the ecosystem a lot. One thing that I’m particularly proud of is that the creator of the language, Don Syme, reposted a pet project I did and it got quite a lot of attention - https://x.com/dsymetweets/status/1485639863177297920
  • Eventually I had to learn C# for work, and I’ve started to understand pain points my colleagues with previous C# experience were talking about while writing F#. Although I didn’t enjoy writing it much, but I picked up a skill or two, and even wrote a DNS server in it.
  • Had quite some time learning Rust, which came to me quite naturally after F#, however I had to remember the good old C days as well, cause Rust is more low-level that it looks at first glance. I’ve discovered it’s pros and cons while writing a binary protocol over TCP library, and later on a shared library to be used for iOS / Android. Had some more practical experience with it working on Swisstronik blockchain, alongside Mike on SGX EVM.
  • Over time I (mistakenly) started to despise Go, while working primarily with Rust. However, as time moved on I’ve realized it’s a language for different purposes, which had enormous benefits, when applied properly. I’ve since grown fond of it’s simple, non-red-blue concurrency and single binary approach. The stdlib is large, the syntax is approachable, and it makes you productive - that’s what I understood after a couple of years working with it.
  • Had some time with C++ in the uni, but not too much. I’ve (fortunately) only ever had to program something more-or-less serious once, using QML, and mostly it was already done - I just had to get it running. That would also describe most of my other experience with it - the problem is not to write it, but to get the existing code running, which is usually quite a challenge. Especially fun to do that if it’s the glue between some library code and Objective-C++, which I’ll talk about next.
  • I’ve had the pleasure to work with Objective-C++ as glue for a C++ library (WebRTC) for iOS and Mac apps, while working on the iOS part. It’s kind of interesting, being able to call native code while at the same time having relatively easy access to Cocoa API’s, and given my previous extensive experience with Objective-C (and the fact that I still love it) - it was a breeze. Debugging though wasn’t, but a couple well-placed print()-thingies did the job just fine.
  • Gleam is another language I’ve been following for quite some time, and am interested in it particular because it’s the first actually viable programming language written in Rust (that I know of), with decent support, interesting usecase and pretty good support - and an amazing team, kudos to Louis Pilfold
  • Toyed a little with both Nim and Zig, though I never had any practical experience, I’m pretty impressed by Zig’s journey and Bun in particular.
  • Working almost daily with Javascript is, unfortunately, inevitable evil. As they say, “javascript is cancer” - I would say that’s rather strong, but there’s some truth to that. After all, it’s easy to use for quick & dirty solutions, or throwaway ones, and of course - it’s the only king of the browser. When applied properly and with caution, it can be rather nice, too! (in my practice though, that’s very rare, but YMMV)
  • As a supplement there’s always Typescript which while it’s better than using raw JS sometimes does more bad than good. And don’t get me started on those type trees - there’s a guy who has built DOOM entrily in Typescript types - did you know they’re turing-complete ?
  • Used Nix quite extensively, primarily with flakes. Altough it’s more of a configuration language, than a programming language - I guess it belong in this section, too. More on that in the DevOps section

DevOps

Throughout my career and my personal life, I’ve managed more than a 100+ machines. Be it FreeBSD pfSense running on a custom PCB from some Polish guys, or a regular M1 Mac Mini, or a Linux VPS - I believe I’ve seen my fare share of things that can run software. Or battling with hardware-based RAID on an OpenBSD system which only has vi and no internet connection (and no chair nearby to sit on lol) - I really do prefer nano, sorry vim lovers.

In no particular order, I’ve had experience with:

  • Docker and containers in general, both on macOS (try Orbstack, it’s awesome), on Linux with Docker, Podman, containerd / runc / crun, on Windows with Docker Desktop and WSL.
  • Setting up private Docker Registries of course
  • I have a lot of things about Nginx memorized, and prefer it to Apache and Haproxy - although I’ve had some experience with them as well. My own Nginx runs with kTLS and HTTP/3 enabled, as well as brotli/zstd and other cool things.
  • Loading kext’s on macOS for various purposes
  • Used Parallels, VMWare, VirtualBox, UTM.app, SystemD-nspawn, Jails and god knows what else for virtualization
  • Using remote KVM / IPMI / iLO for debugging, OS installation and generally getting things to work
  • Regularly install new OS releases in VM for fun
  • Network routing in server rooms with people in another country on the phone at 10 PM
  • Physically going to literal DataCenter for on-premise server installation (multiple times because of wrong network adapters bought lol)
  • Running a personal home server, which survived a couple upgrades, for more than 5 years continously with no data loss or shutdowns (except when moving)
  • Extensive experience with SystemD (including service hardening) and Journalctl (including rotation)
  • Monitoring systems with Grafana, Prometheus, Loki, Uptime Kuma, Elasticsearch and custom-built alerting bots
  • Services like Datadog, Sentry, Crashlytics, AppCenter and others
  • Databases (and cache, etc.) management for Postgres, MySQL / MariaDB, Redis (and forks), SQLite (including on mobile device ones), Kafka, Minio, RabbitMQ
  • SSL ceritificate expiration, renewal, provisioning, wildcard shenanigans, ACME (Letsencrypt) configuration and troubleshooting
  • DNS management, both via API and in numerous control panels
  • Configuring firewalls in software, hardware, dealing with Cisco, Fortinet, pfSense and others
  • Wi-Fi management and troubleshooting, including office mapping for optimal coverage
  • Cable management and running cables - finding out why our internet speeds are lower than they should be
  • Helping others troubleshoot issues remotely for personal and business needs, both with Remote Desktop software and terminal-based remte access tools
  • And other things I don’t remember now

People, management, org stuff

  • Hiring (or participating in hiring) engineers, devops guys, marketing people, project leads, and countless others - I’ve conducted probably more than a 100 interviews, and looked through a lot more CV’s.
  • Firing quite a lot as well
  • Managed teams of 1 to 30 people, including several sub-teams, project managers, designers and others
  • Led up to 5 projects at once (delegating tasks for efficient management)
  • Small-time accounting and managing expenses - keeping track of bills, tax details, etc.
  • Enforcing and changing Agile flows, conducting daily and weekly meetings, one-to-ones, performance reviews, etc.
  • Finding inefficiencies in processes and trying to optimize them (and probably creating some myself, too haha)
  • Researching hosting platforms, SaaS providers, auth providers, and all kinds of other providers to find the best value possible
  • Communicating with third-parties of all kinds, over phone, email, in person or in other ways
  • Attending conferences, meetings, presentations, talks, podcasts, livestreams, hackatons and other events
  • Making sure people do stuff that’s important when it’s important to do it - even it’s out of my direct responsibility, if I understand that if they don’t - things will go wrong

Hardware

I’ve ran couple of things using Raspberry Pi, and own several of them, meddled with Arduino (didn’t find use for it), read a lot about ESP boards.

Once, I’ve been using Raspberry Pi with USB-attached ethernet dongle to trick the TV into thinking it’s in another location using a VPN - neat trick, required only a little bash magic.

A homelab of mine, based on NixOS and an old repurposed PC, has been running at least since Jan 2021 - well, that’s as far as Git history goes.

I try to have a Windows, a Mac, and a Linux machines at all times for various purposes.

Cool fact - I had to compile some C++ code on a phone I ssh’d into, that was left to build overnight on a charger, it was fun. In the end, everything worked but was never released.


Opinions


  • Or rather things I’ve found true in my experience, or have certain bias about

Explicit is better than implicit - just kidding, Zen of Python is no longer my bible.

  1. KISS
  2. Really, don’t overengineer stuff. Mostly, the effort won’t be relevant in the future.
  3. Make it work, make it right, make it fast - meaning, don’t
  4. macOS is the best for development
  5. Jetbrains makes the best IDE’s
  6. Stuff like Vim, Gentoo, Haskell, hardcore Rust, hardcore Nix, working only using the mechanical keyboard with no mouse typically leads to no good
  7. There’s generally no sense in trying to argue about technologies - after all, if the tool works for the job, even if it’s suboptimal - it’s fine, no need to lose sleep about it
  8. Linux is cool, but so are BSD’s

Contact details

If you want to contact me for some reason - you can find contact details in the side panel menu (but please note I check Linkedin rarely these days).



P.S. The website uses https://poison.lukeorth.com/ theme with Hugo.

P.P.S. Any opinions, takes or information presented on the website may be wrong, does not reflect any opinions of my affiliates or employers, and should not be taken at face value.