About me

Strap in for a tale

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.

Music?


  • Progressive metal
  • Alternative metal
  • Ambient
  • Neofolk

Cats or dogs?


Plenty of both

Books?


Fantasy, Sci-fi, Horror

Hobbies?


  • Gardening
  • Coding up random projects
  • Research into obscure stuff

Copyright © 2023 - All rights reserved by Yanko Ivanov. Made with Astro, Vue.js, Payload, and in Bulgaria.