Blog

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

The Strange World of NPM Site Alternatives

Like many web developers, I work day to day within the javascript ecosystem. For those who aren't aware, NPM is the primary package manager for javascript developers. While in the early days, it was primarily for NodeJS and backend use (with Bower acting as the frontend equivalent), it is now used consistently across the stack. I use NPM at least 100 times a day; Not just for installing and managing packages but for managing scripts, git hooks and test suites. npm run dev, npm run test and npm r

Chrome Page Transitions in Modern Frontend Frameworks

With Google IO a few days ago, all sorts of new and interesting things got announced. One thing that really struck my imagination was the new Google page transitions functionality for web. I wanted to take a look at the new API and see how difficult it would be to implement in a site like mine. The Google team posted a video explaining the new API, as well as a demo and github repo showing us how it works so I have a nice jumping off point, but to put it simply, the Page Transition API allows d

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