BIO
I was born in Burgas, Bulgaria. I graduated in “Saints Cyril and Methodius”, specializing in English and History.
After several years of managing an illegal awesome WoW server
during highschool, I started developing a keen interest in programming, as I picked up bits of HTML, CSS,
Javascript,
PHP and MySQL along the way. Since everybody insisted the programming went hand in hand with maths, and I sucked at
that,
I figured I'd become a lawyer or a designer. Since Internet was shady on getting started back then, and all the
books in bulgarian on
programming told me the same, I kind of settled on the idea.
Then, at random, in the end of 11-th grade I picked up a book - a Teach Yourself C
/ Link to the bulgarian version.
A curious thing - No maths in this book.
I gobbled it up.
I downloaded Suse Linux for about a week, I recorded it on 6 CDs. It was my first linux box, and I broke the distro
during the first week of course, so I spent
most of the time actually focusing on gcc/g++. I managed to get into Plovdiv university's Mathematics and
Informatics bachelor course (oh the irony), and
survived for about a year. I then moved on to Informatics, and onto Software technologies and Design courses without
something actually feeling useful.
I never finished any of those, and I don't think I will.
Meanwhile I started as a PHP developer in Plovdiv. I always did full-stack development, as I found most joy in
actually making a whole thing that works.
I moved through companies, picking up skills, knowledge and friendships. I rose from junior, to mid, to senior, I
started leading teams.
I rose to a CTO several times, tutored over a hundred people by now, changed technologies several times as well. As
I mentioned I started out with the LAMP stack + jQuery
as was the norm back then for development. In recent years I switched entirely to full-stack javascript, using
Angular, React and Vue on a daily basis.
On the backend side I mostly code in Golang and Javascript. I've recently picked up studying Dart and Flutter, and I
look forward to mastering the mobile front as well.
This blog
I really really wanted a blog for the last 10 years, and I was never pleased with any of the options. Neither I had
the time to actually code up a system that I liked.
I eventually started one in PHP, but then scrapped the project when I moved to javascript. I had a Hugo blog for a
while, but I felt it was bothersome to boot up an IDE
for a simple markdown. It was also cumbersome to maintain small bits of content like posts, tweets and images which
had to be in their separate .md which made the UI/UX worse. If I was going to have a blog, it wasn't going to be
like
the rest of them. I also really liked one specific blog that had a different design for each post, and was really
interactive. So essentially I was sure that nothing like that existed (shush Wordpress, nobody asked you).
Years passed, Vue showed up, but no SSR. Then Nuxt showed up, but markdown was still appealing. Then after a while
Vuepress showed up, but was clumsy af. Hugo showed up, but was buggy af.
Come 2021. I discovered Astro (link in the footer), which amazingly was staticly generated, supported
Vue/Svelte/React,
and curiously - Markdown. I gave it a spin, and was hooked. That was it, I was gonna have my blog.
As a big added bonus, even though it was statically generated, it could still pull data from the internet either
during build time, or runtime through what it calls Islands of Interactivity - a long word for client-only component
renders. :)
Then I got to the tweets/posts thing, as I wanted to still have an admin panel to post stuff on the go, without
having to boot a text editor just to post.
So I looked around for a neat headless CMS, and I found Payload. The project is still young but it fit my bill
perfectly.
It has a mongoDb behind it, so I have full schema freedom. It manages the blog's media needs, and it has a RESTful
and a graphql API.
The last piece of the puzzle was taking the posts and embedding them into the blog's generated content. For this
final piece,
two things were important - I had to be able to trigger a rebuild remotely, and I had to be able to "hook" into
content creation on Payload's side.
Both of these were fairly easy, as this blog is hosted in Cloudflare Pages, which, apart from the CDN, free domain
management and free hosting,
also includes a handy webhook for triggering the build. Payload doesn't disappoint either, as it supports hooks
natively. The rest is just plumbing - Every time I post something in Payload's admin panel, it triggers a blog
rebuild.
During the build phase I pull the posts from the API and Astro creates the ready HTML of out it.
Regular changes are managed through github, effectively gaining free CI/CD in the process.
In conclusion, I'm really hyped about the state of the system. I really wanted to be able to bring in dynamic
content into the blog, as well as entirely switch to it and ditch Facebook, Instagram and Twitter altogether.
I will probably set up hooks for social platforms as well, as I want to focus more on content creation,
instead of consummation.