I’ve been meaning to start a blog for years. Not in the “I should really start journaling” way that fizzles out after three days, more like – I keep accumulating stories and opinions about software, security, and self-hosting, and at some point it felt weird to not write them down somewhere.
So here we are. My name is Szymon, and most people know me as Samik, and this is the obligatory “who is this person and why should I care” post. Fair warning: this turned into a bit of an origin story, so grab a drink.
TL;DR#
If you don’t have time for the full saga:
- Name: Szymon, a.k.a. Samik
- Day job: Senior backend engineer at DocPlanner in Warsaw – PHP and Symfony, mostly
- Homelab: One mini PC, Proxmox, 40+ self-hosted services, and an unreasonable amount of time spent tweaking configs
- Cybersecurity: CTF player with a few writeups on GitHub, still flirting with making it a career
- Open source: A few projects out there, including beets-beatport4 and MCP servers for homelab management
- Music: DJ and aspiring electronic music producer – psytrance, tekno, house, downtempo, techno
- This blog: Backend engineering, self-hosting, security, AI tooling, and whatever else I find worth writing about. No schedule, no promises
Now, the long version.
How I started programming#
Somewhere in primary school, I got my hands on a book about HTML. This was the era where knowing how to make text blink on a webpage made you a wizard among your classmates. I don’t remember what I built – probably something with a tiled background and a visitor counter – but I remember the feeling of changing some text in a file and seeing it show up in a browser. That hook never really let go.
Around age 13, I got a PHP book. Not “PHP for kids” or anything gentle like that – just a regular PHP book that I probably understood about 40% of at first. But it was my first real programming language, the first thing where I could make a server do stuff rather than just render static pages. I built tiny things, broke them, rebuilt them. The usual.
Then I found C++ through some online tutorials and forums, which in hindsight was a hell of a jump from PHP. Different universe, really. But I was a kid with free time and no fear of segfaults, so I just kind of powered through.
Somewhere in this period I watched the movie Hackers (1995, Angelina Jolie, rollerblading, the whole deal). It made such an impression on me that I changed my nickname on Gadu-Gadu – that’s the Polish instant messenger everyone used back then – to “Szpaner,” which was the Polish name for the main hacker character. I was maybe 14 and thought this was the coolest thing imaginable. I’m not going to pretend I wouldn’t do it again.
The Open Tibia era#
If you played Tibia in the 2000s, you know about OTS – Open Tibia Servers. Community-run private servers with custom maps, custom monsters, custom everything. I ran one. This meant juggling C++ (the game engine), Lua (scripting game mechanics), and PHP (the server website).
For a teenager, this was an incredible playground. I’d modify the game engine, write NPC scripts in Lua, build and tweak the website where players could create accounts and check highscores.
Then my OTS got hacked.
Someone exploited the site, got into the database, and trashed the server. I was furious, obviously, but more than that – I was fascinated. How did they get in? What did I leave open? I started digging. That led me to uw-team.org hackmes, which were basically puzzle-style hacking challenges – the hackmes are still up if you want to try them. That site is also where I learned the basics of MySQL injection. Huge kudos to Jakub “unknow” Mrugalski, who created uw-team.org and is still putting out educational content to this day. Between the hackmes and my poorly secured phpMyAdmin, I started understanding how attackers actually think. That whole experience planted a cybersecurity seed that’s still growing.
High school years#
High school had an IT club, which I was obviously part of. We learned Python in class, and I took it a step further – I built a website on the school server that exposed Python scripts I’d written for classmates to use. The access control was a hardcoded password in a PHP file. Peak security engineering.
I also built websites for Call of Duty 2 servers. Full custom stuff – tournament brackets, SMS payment integrations for tournament registration. CoD 2 was huge in Poland at the time, and server communities needed web presence. It wasn’t glamorous work and I wasn’t getting paid for it – I was just an admin of one of the servers, doing it for free – but it was real work for real users, and that mattered more than money at that age.
The advanced matura exam (that’s the Polish equivalent of A-levels or AP exams) went… mostly well. I scored 96% on math, which I’m still proud of. But on the IT exam, I got 74%. The reason? I forgot to save my Excel spreadsheet before submitting. Just didn’t hit Ctrl+S. Lost an entire section’s worth of points because the grader opened a blank file. I learned a lesson about saving early and often that day, and I learned it expensively.
On the brighter side, I was a finalist in a “linguistic mathematics” olympiad, which scored me extra admission points for university. So the net outcome was fine, even if the Excel incident still stings when I think about it.
University and finding work on a train#
I enrolled at Warsaw University of Technology, specifically the EITI faculty (Electronics and Information Technology). Got a small scholarship for good grades, which was nice. Later I also spent time at FER in Zagreb on an Erasmus exchange, which was an excellent experience – different teaching style, different city, different everything.
But the best university story isn’t about classes. It’s about how I got my first programming job.
I was on a train. Regular PKP intercity, sitting in a compartment (the old-style ones with sliding doors and eight seats facing each other). I had my laptop out, working on some university programming project. The guy sitting across from me noticed what I was doing, struck up a conversation, and by the end of the ride he’d offered me work. Just like that.
The job was maintaining a PHP site built with CakePHP. About 40 hours a month, which was perfect alongside studying. The catch: I was the only developer. I’d taken over someone else’s codebase, and there was nobody to review my code, nobody to tell me I was doing things wrong, nobody to pair with. I produced what I can only honestly describe as spaghetti code. The kind where you open a file six months later and genuinely cannot figure out what past(a)-you was thinking. But I was learning, earning, and building real software for real users, which is something different from what university courses gave me.
Full-time work and the thesis that never was#
After finishing all my coursework, I had an “empty year” – the period nominally reserved for writing a BSc thesis. Instead, I got a full-time job as a full-stack PHP/Laravel developer at a company in Warsaw that owned hotels. I wrote custom booking systems, internal management tools, and maintained their WordPress and Joomla sites. It was solid, varied work.
The thesis situation is… complicated. I actually built the thesis application twice. First in React, which worked fine. Then I decided – for reasons I can no longer fully explain – to rewrite the whole thing in Angular. The rewrite also worked fine. So the application was done, functional, demonstrated everything it needed to demonstrate. But I never wrote a single page of the actual thesis paper.
The honest version: I was already working full-time, earning real money, getting real experience. The app was built and working. But the thesis still needed all the academic writing – the research section, the literature review, the methodology, all of it. The subject didn’t excite me. It stopped feeling important compared to what I was doing at work every day. My thesis advisor didn’t push particularly hard either, and so it just… didn’t happen.
I don’t have a BSc degree. All courses passed, application built twice, zero pages written. Sometimes I regret it – more so as I get older, actually. There’s a practical annoyance to not having the piece of paper, and there’s a personal one too, the nagging feeling of something left 98% finished. Other times I look at my career trajectory and think it genuinely didn’t matter. Both of those feelings can be true at the same time.
Working at DocPlanner: PHP, Symfony, and side projects#
I switched to DocPlanner, which at the time was (and arguably still is) the best PHP-oriented company in Warsaw. Great engineers, interesting meetups, real scale. I joined and I’m still there, working as a senior backend engineer, mostly in PHP and Symfony. The codebase is large, the problems are interesting, and the team is good – which is more than enough to keep me engaged.
Outside of work, I’ve kept the cybersecurity thread alive. I play CTFs when I have the time and energy, and I have a collection of writeups on GitHub. I haven’t made the jump to a security-focused career… yet. The “yet” has been there for a few years now, so who knows.
The homelab is probably my biggest hobby project. One mini PC running Proxmox, 40+ self-hosted services, and a growing collection of custom tools to manage it all. I’ve written a full tour of the setup and a post about the MCP servers I built to control it – those are already up if you’re curious.
I also contribute to open source here and there, though not as much as I’d like – it’s something I hope to do more of in the future, because I love open source. beets-beatport4 is a plugin for the beets music manager that fetches metadata from Beatport, the MCP servers for my homelab (Proxmox, Komodo, AdGuard, Authentik) are all open source, and I have a small contribution to Symfony that I’m proud of.
Oh, and I’m a DJ and wannabe electronic music producer. Psytrance, Tekno, House, Downtempo, Techno – depends on the mood and the venue. Music is the other half of my life, though this blog probably won’t cover it unless I end up writing about production software, audio tools, or something at the intersection of music and tech.
AI coding assistants and LLMs: the new spark#
I need to talk about the thing that’s taken over most of my after-hours screen time: LLMs and AI coding assistants. Tools like Claude Code, Cursor, and the broader ecosystem around them have genuinely rekindled something for me – that same feeling I had as a kid messing with HTML, where you change a thing and something cool happens, except now the feedback loop is absurdly fast.
I’ve always had more ideas than time. Side project ideas would pile up in my notes, and most of them would stay there because the activation energy to start something new after a full day of writing PHP was just too high. AI coding assistants changed that equation. I can prototype something in an evening that would have taken me a week or more before. I can jump into a language or framework I don’t know well and actually make meaningful progress instead of spending hours on boilerplate and docs. The friction dropped enough that I actually build the things now instead of just thinking about them.
These days, building things with AI assistants is basically my main hobby after work. The homelab MCP servers, various side projects, this blog – it’s all part of the same thread. I’m not starry-eyed about it; the tools have real limitations and they’ll confidently produce nonsense if you’re not paying attention.
But the net effect on my ability to actually ship things I care about has been huge, and I haven’t been this excited about building software in years.
What this blog is about#
A bit of everything, honestly. Backend engineering, homelab and self-hosting, cybersecurity, maybe some DevOps and tooling. Whatever I find interesting enough to spend time writing about.
There’s no fixed schedule here, no content calendar, no “new post every Tuesday” commitment that I’d break within a month. Just things I want to share, written when I have something worth saying. If that sounds good to you, stick around.
Find me elsewhere#
- GitHub: Samik081
- LinkedIn: Szymon Tarasiński
- Landing page: samik.dev
- CTF writeups: ctf-writeups
