rssed

a collection of dev rss feeds - blogroll

Add a new feed

+

323 feeds


Phil Nash

Posts

Build a contact form with Astro and Resend ๐Ÿ”—

I try to keep my email address from appearing on public websites to avoid spam. But I do like people to be able to contact me if they have something I [...]

Generate AI-powered related links for your Astro content ๐Ÿ”—

Showing related posts beneath a blog post is a great way to give your visitors more to read and encourage them to spend more time on your site. Existi [...]

I built a new app and I don't know how I feel about it ๐Ÿ”—

Much like almost every other developer on the planet, I have been trying to work out my relationship with coding agents. I have been using AI-assisted [...]

5 quick tips for giving better presentations ๐Ÿ”—

I have been speaking publicly at developer conferences for over a decade and in that time Iโ€™ve seen plenty of other people giving talks. Everyone give [...]

Things you need to do for npm trusted publishing to work ๐Ÿ”—

After the recent supply chain attacks on the npm ecosystem, notaby the Shai-Hulud 2.0 worm, GitHub took a number of actions to shore up the security o [...]

How wrong can a JavaScript Date calculation go? ๐Ÿ”—

The Date object in JavaScript is frequently one that causes trouble. So much so, it is set to be replaced by Temporal soon. This is the story of an is [...]

How to Create Vector Embeddings in Python ๐Ÿ”—

When youโ€™re building a retrieval-augmented generation (RAG) app, the first thing you need to do is prepare your data. You need to: collect your unstru [...]

Troubles with multipart form data and fetch in Node.js ๐Ÿ”—

This is one of those cathartic blog posts. One in which I spent several frustrating hours trying to debug something that really should have just worke [...]

Clean up HTML Content for Retrieval-Augmented Generation with Readability.js ๐Ÿ”—

Scraping web pages is one way to fetch content for your retrieval-augmented generation (RAG) application. But parsing the content from a web page can [...]

Shallow clones versus structured clones ๐Ÿ”—

Have you ever had one of those times when you think youโ€™re doing everything right, yet still you get an unexpected bug in your application? Particular [...]

How to Create Vector Embeddings in Node.js ๐Ÿ”—

When youโ€™re building a retrieval-augmented generation (RAG) app, job number one is preparing your data. Youโ€™ll need to take your unstructured data and [...]

How to Chunk Text in JavaScript for Your RAG Application ๐Ÿ”—

Retrieval-augmented generation (RAG) applications begin with data, so getting your data in the right shape to work well with vector databases and larg [...]

How Using Fetch with the Streams API Gets You Faster UX with GenAI Apps ๐Ÿ”—

Generative AI enables us to build incredible new types of applications, but large language model (LLM) responses can be slow. If we wait for the full [...]

JavaScript is getting array grouping methods ๐Ÿ”—

Grouping items in an array is one of those things youโ€™ve probably done a load of times. Each time you would have written a grouping function by hand o [...]

Node.js includes built-in support for .env files ๐Ÿ”—

With the recent release of version 20.6.0, Node.js now has built-in support for .env files. You can now load environment variables from a .env file in [...]

Easy and accessible pagination links for your Astro collections ๐Ÿ”—

Generating pagination links is not as straightforward as it may seem. So, while rebuilding my own site with Astro, I released a <Pagination /> compone [...]

Build bots on Bluesky with Node.js and GitHub Actions ๐Ÿ”—

Bluesky is the new social network in town and itโ€™s an exciting place to explore right now. I was fortunate enough to get an invite early on and take p [...]

Create a CLI Chatbot with the ChatGPT API and Node.js ๐Ÿ”—

ChatGPT has taken the world by storm and this week OpenAI released the ChatGPT API. Iโ€™ve spent some time playing with ChatGPT in the browser, but the [...]

The yaml document from hell โ€” JavaScript edition ๐Ÿ”—

I recently came across this blog post from Ruud van Asseldonk titled โ€œThe yaml document from hellโ€. Iโ€™ve always heard that yaml has its pitfalls, but [...]

Better two factor authentication experiences with WebOTP ๐Ÿ”—

Two factor authentication (2FA) is a great way to improve the security of user accounts in an application. It helps protect against common issues with [...]

Alias your Mastodon username to your own domain with Jekyll ๐Ÿ”—

Mastodon is different to most online services. It is a federated network, so when you set up an account you need to choose a server to use. Your usern [...]

How to use the Bitly API in Ruby ๐Ÿ”—

Link shortening has been around for a long time and Bitly is arguably the king of the link shorteners. It has support for shortening long URLs as well [...]

Don't ever write your own function to parse URL parameters ๐Ÿ”—

Sometimes the platform we are building on provides more functionality than we can keep in our own heads. However, depending on the problem, we often f [...]

Restart your app and not your tunnel with ngrok and nodemon ๐Ÿ”—

When I am developing web applications in Node.js, I like the server to restart when I make changes, so I use nodemon. When I am developing an applicat [...]

How to display dates in your user's time zone with the Intl API ๐Ÿ”—

Time zones are hard. Not only are there a lot of them, but they donโ€™t fit nicely into whole hour blocks, daylight savings time changes individual zone [...]

How to stream file downloads in Node.js with Got ๐Ÿ”—

Got is a Node.js library for making HTTP requests. It has both promise and stream based APIs and in this post I want to explore how to use the stream [...]

I built a VSCode extension: ngrok for VSCode ๐Ÿ”—

Over the Easter weekend, a four day weekend characterised by lockdowns all over the world, I decided to use the extra time I had at home to start a ne [...]

Making a responsive Twitch Embed ๐Ÿ”—

Iโ€™ve been trying out streaming live code on Twitch which is a lot of fun. I wanted to share on my own site that I was streaming so I have built a page [...]

The story of a mildly popular Ruby gem ๐Ÿ”—

The list on GitHub of repositories that depend on your repository is scary. Thereโ€™s something nice about writing and releasing a library, module, Ruby [...]

Mistakes I've made treating file paths as strings ๐Ÿ”—

Some things you do as a developer can work for you for years, then turn around and bite you when you were least expecting. These are the things that y [...]

How to find CFPs for developer conferences ๐Ÿ”—

So youโ€™ve decided to speak at a developer conference? You have a story you want to share with your peersโ€”how you built something, how you learned some [...]

Testing signed and encrypted cookies in Rails ๐Ÿ”—

Recently Iโ€™ve been refactoring the tests for a gem I maintain and I needed to test that it sets the right cookies at the right time. But the cookies i [...]

How not to sort an array in JavaScript ๐Ÿ”—

Array sorting is one of those things you donโ€™t spend too long thinking about, until it stops working for you. Recently I was working with array of ite [...]

How to start a Node.js project ๐Ÿ”—

Sometimes I write blog posts to remind myself what Iโ€™ve learned and sometimes I write them because someone else shares something and I want to remembe [...]

2018 in review ๐Ÿ”—

Iโ€™ve never been one for writing a review of my year. This year Iโ€™ve found myself not only reading, but comparing myself to othersโ€™ reviews. I realised [...]

Service workers: beware Safari's range request ๐Ÿ”—

Youโ€™ve implemented a service worker to cache some assets. Everything is working well, your service worker is a success, youโ€™re feeling good. But thenโ€ฆ [...]

Techniques for animating on the canvas in React ๐Ÿ”—

I recently experimented with audio visualisation in React on the Twilio blog. While I meant to teach myself more about the web audio API I found that [...]

Implementing one time passwords in Crystal ๐Ÿ”—

Crystal is still a young language, there arenโ€™t a lot of libraries available yet. For some this could be offputting, but for others this is a chance t [...]

Git commands to keep a fork up to date ๐Ÿ”—

Iโ€™ve seen the following tweet about git making its way around Twitter recently: I โค๏ธ Git. But honestly, it intimidated me for years. I thought I neede [...]

Spring clean your dev machine ๐Ÿ”—

Development machines can build up such a lot of cruft. Old versions, oudated programs and unused caches litter the hard drive. Itโ€™s good to take time [...]

Use the web share API easily with web components ๐Ÿ”—

Iโ€™m a fan of the web share API but I was not happy with my initial implementation of the API. It was all a bit complex for what is a very simple API. [...]

CSS: select first-of-class with the subsequent sibling combinator ๐Ÿ”—

There are a whole bunch of CSS selectors available to web developers, but sometimes thereโ€™s still not enough. I found this recently when building the [...]

gzip a file in Ruby ๐Ÿ”—

At the start of the year I looked into how to better compress the output of a Jekyll site. Iโ€™ll write up the results to that soon. For now, hereโ€™s how [...]

Permissions on the web suck ๐Ÿ”—

I am a fan of progressive web apps and the powers that they bestow on web developers to build the next generation of applications. We can write web ap [...]

Two tests you should run against your Ruby project now ๐Ÿ”—

I had the fortune of attending the wonderful Brighton Ruby conference last week. It was full of excellent advice, wisdom and code. There was one talk, [...]

Experimenting with the background fetch API ๐Ÿ”—

The service worker API is expanding as more ways to use the background dwelling worker emerge. Iโ€™ve written before about push notifications and backgr [...]

Speed up bundle install with this one trick ๐Ÿ”—

Did you know bundler can download and install gems in parallel? Thatโ€™s right, using the --jobs option for bundle install means you can set the number [...]

Always install Bundler alongside Ruby with rbenv ๐Ÿ”—

Hereโ€™s a quick tip for anyone who uses rbenv and ruby-build to manage installing and switching Ruby versions. When installing a new version of Ruby I [...]

The web share API ๐Ÿ”—

Recently I implemented the web share API for my site as a means of testing it out. If you are using version 55 or above of Chrome on Android then you [...]

Doing things wrong ๐Ÿ”—

I wrote a blog post last week and bits of it were wrong. This is not a retraction of that blog post, I just wanted to share the feedback that I got, t [...]

A toast to ES2015 destructuring ๐Ÿ”—

I think the ES2015 destructuring syntax is pretty cool. It might not grab the headlines like Promises, Generators or the class syntax, but I find it r [...]

On fixing a favicon ๐Ÿ”—

Sometimes open source work is just fixing one tiny thing that bugs you. However, rolling up your sleeves and delving into even the smallest amount of [...]

Dev Tools Tricks: Store objects and elements as variables in the console ๐Ÿ”—

Browser dev tools are so full of features itโ€™s hard to keep up. I bet every developer knows a different set of features to each other. I wanted to sha [...]

Git back to the future ๐Ÿ”—

Git may be the best version control software Iโ€™ve used but it is a complex beast and makes it easy to shoot yourself in the foot. Recently, however, I [...]

A community offers to help ๐Ÿ”—

Last week I was blown away by the response to a problem I was experiencing from maintainers of two of the larger open source projects in the Ruby worl [...]

Install a service worker declaratively ๐Ÿ”—

Thereโ€™s been some interesting updates in service workers recently. The big news is that the Microsoft Edge development version now has service workers [...]

August is iOS month ๐Ÿ”—

June saw me ask for your help as I started to learn Swift. July was busy with travel. Now August is iOS month. Iโ€™m lucky that part of my job as a deve [...]

Creating an asset pipeline with Jekyll-Assets ๐Ÿ”—

When I started again on this site, I wanted to make sure it was going to load fast. Performance matters. Bundling, minifying and caching the static as [...]

Critique my Swift on Exercism ๐Ÿ”—

I am currently in the middle of a Swift and iOS course with the excellent Big Nerd Ranch. Taking a week to dedicate to learning a new language and fra [...]

The surprise multipart/form-data ๐Ÿ”—

Building up and sending an Ajax request is so much easier than it ever used to be. No longer must we hassle ourselves with XMLHttpRequest, never mind [...]

This site isn't finished ๐Ÿ”—

No running site is ever completely finished. This one is no exception. There is more to build, more to style and more to write. Itโ€™s a challenge. Welc [...]