About:

The personal blog of James Doyle (james2doyle), a Web Developer from Canada.

Website:

Outgoing Links:

Simon Willison
Subscribe to RSS:
Super Webhooks is a Chrome extension that streamlines sending web page metadata to automation tools with customizable webhooks and dynamic form generation.
The author details their effective use of Sublime Text and AI tools in web development, emphasizing customization and the importance of documentation.
The updated a11y accessibility checker tool improves color contrast evaluation for web accessibility, offering real-time analysis and smart suggestions for designers and developers.
A new live coding playground for Alpine.js offers instant previews, code sharing, and Tailwind CSS support, streamlining component development.
A custom MCP tool for Godot documentation enhances accessibility and search functionality for developers transitioning from web to game development.
The author discusses their recent use case of creating a small server for a webhook from Twilio, and their preference for using Dart over Node.js for this type of project. They highlight the frustration of using Node.js due to the...
The author explains why they still use Sublime Text in 2025, highlighting its speed, LSP support, snippets, project workspaces, build systems, multiple cursors, key/mouse bindings, and included niceness. They also mention that Sub...
The privacy policy for the Light Weight app emphasizes its commitment to protecting user privacy and ensuring offline functionality. It does not collect any personal data, operates entirely offline, and stores data locally on the ...
Hammerspoon on OSX has great features to control your desktop, automate tasks, build small UIs and toolbar apps, and trigger key presses and modifiers. The script below watches the keyboard for the hyper key + another key to trigg...
The text explains how to use the number pad to control Google Hangouts/Meet using Hammerspoon on OSX. It provides code examples and instructions for setting up shortcuts to switch to the Hangouts tab and toggle mute.
The text provides tips on how to improve bug reports for web apps using simple tools built into browsers. It discusses taking screenshots of DOM nodes, saving console output, and capturing HAR files to recreate the state of the wo...
The author discusses how to use pipes in Hugo to version service workers and bust the cache. They explain the challenge they faced with caching and how they solved it using pipes and a template.
The text explains how to use the Laravel 'when' method to create conditions on code without using an if statement. It provides examples of how to use the 'when' method to support multiple queries and demonstrates how it can be use...
The text discusses the process of automating the generation of weekly reports for Bitbucket using Make (Integromat). It outlines the steps involved in setting up the automation and explains the challenges faced in the process.
The text discusses how to enable autocomplete for TailwindCSS in custom attributes/strings when using styled components, custom props for class names, or packages like twin.macro. It explains how to provide a custom regex for the ...
The author recently got a Raspberry Pi model 4+ and is using it to run a minidlna server and a local web server. They wanted to set up lighttpd as it is more efficient than the default installed apache2. They also wanted the lates...
The author discusses the challenges of recreating a form from static JSON and filling it with values from another source. They created a component using a render function to achieve this, and it includes features like event delega...
The text discusses using lodash to create a dynamic translation function for a website, allowing for the translation of sentences with placeholders. It explains the process of using get, template, and memoize functions in lodash t...
The text discusses the concept of memoization and how it is used in lodash. It explains the default memo function in lodash and suggests a time-based caching mechanism as a better alternative. It also provides a simple version in ...
The text discusses the use of fastmod and codemod for refactoring code. It explains how these tools work, provides examples of their use, and highlights the benefits of using them. The author also shares their experience and use c...
The text is about the Vue Omnibar Component, which is a search modal inspired by the 'Quick Search' experience in Notion. The component allows for creating modal popups that emulate omnibar, command palette, open anywhere, or othe...
The text is about creating a toggle component in Vue that can be used to create various UI experiences like show/hide, accordions, nested menus, and sliders. The author created this component and released it as a package to share ...
Tailwind CSS is a highly customizable, low-level CSS framework that gives you all of the building blocks you need to build bespoke designs without any annoying opinionated styles you have to fight to override. It provides a config...