Blog - Site Updates

Posts about the changes I've made to mikevdv.dev

A Google Pixel phone about to fall from a table

mikevdv.dev - NXT

I've talked about doing a full rebuild of mikevdv.dev for years now. The site’s minimalist aesthetic - which was quite a statement when I launched it - has become so commonplace that I am regularly asked which UI library I use. Between that and the tech debt, ignoring the need for a rebuild was killing my interest in writing. Not ideal. The question was then, how I'd handle a rebuild... The previous version of the site had cost me close to £40 a month due to the database, all the lambdas and t

Oembed, Webmentions, Twitter, Threads & Bluesky

Many months back now, I excitedly wrote up an article about custom twitter embeds. Much more recently, I wrote a follow up where I lamented the fact that I had redesigned the wheel with so much of my site and how leaving Twitter had impacted my reach. What followed was an extreemly busy period in my life with wedding planning, team lead responsibilities and a prolonged bout of madness wherin I decided I would learn nothing and attempt to build a fully hosted blogging solution that others could u

mikevdv.dev - What I'd do differently

I write a large number of articles which I never end up publishing for various reasons. Quality is important to me so many articles end up in my "portfolio posts" directory on an external backup SSD, never to see the light of day again. I've produced a few articles which have done remarkably well, as well as others that don't perform to any kind of expectation, but I always make sure to ensure there's a story to tell. At the moment I'm writing this, I've not entirely considered what I'll title

The State of Twitter and an Update on mikevdv.dev

I've done a few blog posts about features that rely on Twitter built into this site, from Custom Twitter Embeds to WebMentions. Given the recent news of Twitter's API becoming paid (and from what I've seen it's not cheap), I'm likely going to have to rework this functionality in the near future. It's not a good situation for Twitter. It was always a favourite of developers due to the ease by which we could build on top of Twitter or into it and it seems that's now coming to an end. It's a troub

Creating a Mailing List with Mailersend

I've long since wanted to add a mailing list to the blog as a way that people could directly show interest in what was being posted. I did however have the big provision that I didn't want to manually be creating emails to send out. I wanted to automate it. Off the back of my recent release process improvement I realised that I could finally start to build this feature. I started by doing a little bit of research on which mailing list system I wanted to use. A few years back, I'd used Sendgrid

Building a Modern Release Process for Blog Posts

One of the earliest articles I ever wrote was about the posting process that my blog posts followed. It used a local typescript script that accessed the mongoDB database and added/updated a blog post. It was simple and good enough for the features that the site had at that point. I've been using and expanding that posting process for a while now, but I find myself at a crossroads... OG Images are being generated and stored the first time they are accessed (which takes a while), My local machine

I made a daily web game

It seems like simple daily web games, à la Wordle or Framed, have been quite popular over the pandemic. One could argue that interest began to wane as everything opened up again, but I still know many people who consistently log in to challenge themselves each day. My partner especially, loves these games - playing about 3 different ones without fail. I had an idea whilst this craze was going on for a similar daily game but one, unlike Wordle or Framed, which required you to log on the next day

Improving Twitter Embeds using the Twitter API

For a long time now, I've been frustrated by how slow the official twitter embed is. Any page where I've embedded a tweet, becomes noticeably slower. The warnings on lighthouse are always the same - "Reduce the impact of third-party code". When broken down further, you can see that you spend on average 730ms exclusively on twitter javascript files. This is frankly unusable. However, there is a solution, albeit one that requires some effort. We can remove all of this javascript if we instead fet

Web Mentions

One of my favourite features of hosted blogging platforms, such as Medium, is the simple feedback systems they have in place. Medium posts display a number of claps and comments. Each user can give a post up-to 20 claps based on how much they like a post. This means that, at a glance, you have information that can tell you how valuable the content of a post is considered. Sites like Reddit and Hacker News use an upvote/downvote system for a similar purpose and most social media sites have some f

OG Images with Cloud Functions

If you follow me on social media, you're probably aware of the social image that shows up for any articles I share from this site. It's a giant image of my face. Now I don't know about you but I don't think this is a great image for getting engagement. I wouldn't click it... [tweet 1530986495850446852] This is done by setting a page's OG (Open Graph) Image in the html head of your page. The Open Graph protocol allows you to turn any web page into rich objects for social media sites. In the exa

Blog Post Deployment

So I did a little more work on polishing the blog today. It now has author filtering, available from any post by a given author. I also put in some pagination. Obviously the pagination isn't visible just yet but I wanted to get it working before I needed it. The majority of my work was actually around releasing. See, the first blog post was actually added manually to the MongoDB database... db.getCollection("blog").insert({}) For those who don't know, MongoDB is a BSON NoSQL database. This me

How does CV Generation work on this site?

If you're browsing this site at the moment, It's likely because you're checking out my CV. You might have noticed that my CV is generated in real time when you access it. It even has a "Generated At" stamp in the footer (pictured below). This blog post is going to go into some of the technical details as to how that works. SvelteKit Endpoint The site is built using SvelteKit, a web app framework built on top of Svelte. SvelteKit allows you to quickly create both API and frontend endpoints bas