James McGrath
@jamesmcgrath.bsky.social
Helping organisations modernise with open source, AI, and accessible design. I build faster sites, simpler tools, and better experiences for both your team and the people you serve.
Blogging at https://jamesfmcgrath.org/.
Blogging at https://jamesfmcgrath.org/.
Ever gone blank in an interview? You know the answer, but your brain takes a coffee break. Feedback stings, but it’s fuel. Stop waiting for doors to open. Build your own.
October 24, 2025 at 12:41 PM
Ever gone blank in an interview? You know the answer, but your brain takes a coffee break. Feedback stings, but it’s fuel. Stop waiting for doors to open. Build your own.
😁
Web developers have been searching for a good semantic tag to represent content with a caption for years...
Eventually, they’ll <figure> it out.
Eventually, they’ll <figure> it out.
October 23, 2025 at 12:36 PM
😁
There once was a service called AWS,
That fell into quite a hot mess.
Sites blinked and went down,
Each dev wore a frown,
While clients cried out in distress.
That fell into quite a hot mess.
Sites blinked and went down,
Each dev wore a frown,
While clients cried out in distress.
October 21, 2025 at 12:29 PM
There once was a service called AWS,
That fell into quite a hot mess.
Sites blinked and went down,
Each dev wore a frown,
While clients cried out in distress.
That fell into quite a hot mess.
Sites blinked and went down,
Each dev wore a frown,
While clients cried out in distress.
💙
Here’s the group photo from DrupalCon Europe Vienna 2025 — capturing the energy, diversity, and spirit of collaboration that define our community.
Tag your friends and everyone you recognize!
Image credits : Joris Vercammen
Tag your friends and everyone you recognize!
Image credits : Joris Vercammen
October 16, 2025 at 12:35 PM
💙
Reposted by James McGrath
RIP mainstream #Windows10. Remember that if 11 says your hardware is "too old", it's probably not true. There are alternatives to help negate the possible e-waste disaster incoming. 10 LTSC is one, but it won't last forever. In the meantime/as an alternative, please consider giving #Linux a shot.
October 13, 2025 at 11:11 PM
RIP mainstream #Windows10. Remember that if 11 says your hardware is "too old", it's probably not true. There are alternatives to help negate the possible e-waste disaster incoming. 10 LTSC is one, but it won't last forever. In the meantime/as an alternative, please consider giving #Linux a shot.
Reposted by James McGrath
🚀 September brought big improvements to LocalGov Drupal! @localgovdrupal.bsky.social
Mark Conroy @mark.ie added accessibility features, microsite content types, and modernized code across key modules.
Read the full summary: https://bit.ly/3ILnokk
##Drupal #LocalGovDrupal #Accessibility
Mark Conroy @mark.ie added accessibility features, microsite content types, and modernized code across key modules.
Read the full summary: https://bit.ly/3ILnokk
##Drupal #LocalGovDrupal #Accessibility
LocalGov Drupal Gains Accessibility, Microsite, and Theming Enhancements in September 2025 Update
Mark Conroy’s September 2025 contributions to LocalGov Drupal bring improved accessibility, enhanced microsite integration, and expanded theme customization. The update also delivers a full JavaScript refactor of LocalGov Services, fixes multiple UI ...
bit.ly
October 6, 2025 at 2:30 PM
🚀 September brought big improvements to LocalGov Drupal! @localgovdrupal.bsky.social
Mark Conroy @mark.ie added accessibility features, microsite content types, and modernized code across key modules.
Read the full summary: https://bit.ly/3ILnokk
##Drupal #LocalGovDrupal #Accessibility
Mark Conroy @mark.ie added accessibility features, microsite content types, and modernized code across key modules.
Read the full summary: https://bit.ly/3ILnokk
##Drupal #LocalGovDrupal #Accessibility
Reposted by James McGrath
Day 1 of going full indie
$0 MRR, no team, no funding, single parent, homeschooling my son
Wish me luck. I think I need it 😅
$0 MRR, no team, no funding, single parent, homeschooling my son
Wish me luck. I think I need it 😅
October 6, 2025 at 12:42 PM
Day 1 of going full indie
$0 MRR, no team, no funding, single parent, homeschooling my son
Wish me luck. I think I need it 😅
$0 MRR, no team, no funding, single parent, homeschooling my son
Wish me luck. I think I need it 😅
Reposted by James McGrath
Inset Shadows Directly on img Elements (Part 1)
Inset `box-shadow` doesn't work directly on . There are work-arounds, but this SVG filter can do it directly.
Don't run! There is powerful stuff to learn here through interactive demos.
Inset `box-shadow` doesn't work directly on . There are work-arounds, but this SVG filter can do it directly.
Don't run! There is powerful stuff to learn here through interactive demos.
Inset Shadows Directly on img Elements (Part 1)
Inset `box-shadow` doesn't work directly on . There are work-arounds, but this SVG filter can do it directly.
Don't run! There is powerful stuff to learn here through interactive demos.
frontendmasters.com
October 2, 2025 at 7:39 AM
Inset Shadows Directly on img Elements (Part 1)
Inset `box-shadow` doesn't work directly on . There are work-arounds, but this SVG filter can do it directly.
Don't run! There is powerful stuff to learn here through interactive demos.
Inset `box-shadow` doesn't work directly on . There are work-arounds, but this SVG filter can do it directly.
Don't run! There is powerful stuff to learn here through interactive demos.
Reposted by James McGrath
Transform Your Raspberry Pi 5 Into a Desktop Powerhouse with Alpine Linux Have you ever wondered how to turn your Raspberry Pi 5 into a sleek, ultra-lightweight desktop system? While many Linux dis...
#Guides #Hardware #Linux #News
Origin | Interest | Match
#Guides #Hardware #Linux #News
Origin | Interest | Match
Transform Your Raspberry Pi 5 Into a Desktop Powerhouse with Alpine Linux
Learn to set up Alpine Linux on Raspberry Pi 5, configure graphics, and create a polished desktop environment in this step-by-step guide.
www.geeky-gadgets.com
September 16, 2025 at 11:27 AM
Reposted by James McGrath
Mark Conroy’s @mark.ie August contributions to LocalGov Drupal @localgovdrupal.bsky.social are packed with practical updates.
Microsites Base v3.0.0 is out with a new grid system and important accessibility fixes.
🔗 https://bit.ly/41z9R5G
##Drupal #LocalGov #Accessibility #OpenSource
Microsites Base v3.0.0 is out with a new grid system and important accessibility fixes.
🔗 https://bit.ly/41z9R5G
##Drupal #LocalGov #Accessibility #OpenSource
August 2025 LocalGov Drupal Updates: Microsites, Replicate Module, and Accessibility Fixes
Mark Conroy documents his August 2025 contributions to LocalGov Drupal, including fixes to Microsites layout issues, updates to the Replicate module, accessibility improvements, and progress on the Modules List and Telemetry features.
bit.ly
September 5, 2025 at 12:02 PM
Mark Conroy’s @mark.ie August contributions to LocalGov Drupal @localgovdrupal.bsky.social are packed with practical updates.
Microsites Base v3.0.0 is out with a new grid system and important accessibility fixes.
🔗 https://bit.ly/41z9R5G
##Drupal #LocalGov #Accessibility #OpenSource
Microsites Base v3.0.0 is out with a new grid system and important accessibility fixes.
🔗 https://bit.ly/41z9R5G
##Drupal #LocalGov #Accessibility #OpenSource
Reposted by James McGrath
comiCSS #90: The CSS of Man
comicss.art/comics/90/
May 25, 2023 – IIRC this is the only cartoon I've done that was not created with code. It's just an image. At the time, I thought about creating a series of them combining art and CSS. I should retake that idea...
#css #art #joke #webdev
comicss.art/comics/90/
May 25, 2023 – IIRC this is the only cartoon I've done that was not created with code. It's just an image. At the time, I thought about creating a series of them combining art and CSS. I should retake that idea...
#css #art #joke #webdev
September 2, 2025 at 12:56 PM
comiCSS #90: The CSS of Man
comicss.art/comics/90/
May 25, 2023 – IIRC this is the only cartoon I've done that was not created with code. It's just an image. At the time, I thought about creating a series of them combining art and CSS. I should retake that idea...
#css #art #joke #webdev
comicss.art/comics/90/
May 25, 2023 – IIRC this is the only cartoon I've done that was not created with code. It's just an image. At the time, I thought about creating a series of them combining art and CSS. I should retake that idea...
#css #art #joke #webdev
Reposted by James McGrath
The Drupal Dev Survey 2025 is out 📊
• 753 responses, 58 countries
• 78% of devs now use AI tools (ChatGPT, Claude, Copilot lead)
• DDEV is near-universal for local dev
• Cloudflare & Fastly lead CDNs
• Aging community still a concern
🔗 https://bit.ly/3VrqlJj
• 753 responses, 58 countries
• 78% of devs now use AI tools (ChatGPT, Claude, Copilot lead)
• DDEV is near-universal for local dev
• Cloudflare & Fastly lead CDNs
• Aging community still a concern
🔗 https://bit.ly/3VrqlJj
August 27, 2025 at 8:12 AM
The Drupal Dev Survey 2025 is out 📊
• 753 responses, 58 countries
• 78% of devs now use AI tools (ChatGPT, Claude, Copilot lead)
• DDEV is near-universal for local dev
• Cloudflare & Fastly lead CDNs
• Aging community still a concern
🔗 https://bit.ly/3VrqlJj
• 753 responses, 58 countries
• 78% of devs now use AI tools (ChatGPT, Claude, Copilot lead)
• DDEV is near-universal for local dev
• Cloudflare & Fastly lead CDNs
• Aging community still a concern
🔗 https://bit.ly/3VrqlJj
Reposted by James McGrath
We're actively searching for valuable hashtag#Drupaltutorials and adding them to our Learn Drupal page, each with a brief summary and a direct link to the tutorial. Explore the tutorials now to continue learning and advancing in your Drupal career! Visit : https://bit.ly/3UFM7c5
August 22, 2025 at 8:10 AM
We're actively searching for valuable hashtag#Drupaltutorials and adding them to our Learn Drupal page, each with a brief summary and a direct link to the tutorial. Explore the tutorials now to continue learning and advancing in your Drupal career! Visit : https://bit.ly/3UFM7c5
Reposted by James McGrath
Markdown Easy 2.0.0-RC1 is out for Drupal ✍️
New features, GitHub-flavored Markdown support, and better default config make content editing smoother.
Built by @mike-anello.bsky.social at DrupalEasy.
🔗 https://www.thedroptimes.com/node/50771 ##Drupal #Markdown #DevTools #OpenSource
New features, GitHub-flavored Markdown support, and better default config make content editing smoother.
Built by @mike-anello.bsky.social at DrupalEasy.
🔗 https://www.thedroptimes.com/node/50771 ##Drupal #Markdown #DevTools #OpenSource
August 7, 2025 at 2:56 PM
Markdown Easy 2.0.0-RC1 is out for Drupal ✍️
New features, GitHub-flavored Markdown support, and better default config make content editing smoother.
Built by @mike-anello.bsky.social at DrupalEasy.
🔗 https://www.thedroptimes.com/node/50771 ##Drupal #Markdown #DevTools #OpenSource
New features, GitHub-flavored Markdown support, and better default config make content editing smoother.
Built by @mike-anello.bsky.social at DrupalEasy.
🔗 https://www.thedroptimes.com/node/50771 ##Drupal #Markdown #DevTools #OpenSource
AI is hype. AI is hope. AI will save us. Replace us. Ruin us.
People are losing jobs and losing their minds.
Me? I’m walking the dog. Taking classes.
Trying to make sense of it all without falling apart.
Somehow, I’m still here.
#AI
#JobSearch
#MentalHealth
#TechLife
#Hope
People are losing jobs and losing their minds.
Me? I’m walking the dog. Taking classes.
Trying to make sense of it all without falling apart.
Somehow, I’m still here.
#AI
#JobSearch
#MentalHealth
#TechLife
#Hope
July 30, 2025 at 4:23 PM
AI is hype. AI is hope. AI will save us. Replace us. Ruin us.
People are losing jobs and losing their minds.
Me? I’m walking the dog. Taking classes.
Trying to make sense of it all without falling apart.
Somehow, I’m still here.
#AI
#JobSearch
#MentalHealth
#TechLife
#Hope
People are losing jobs and losing their minds.
Me? I’m walking the dog. Taking classes.
Trying to make sense of it all without falling apart.
Somehow, I’m still here.
#AI
#JobSearch
#MentalHealth
#TechLife
#Hope
10 days. 10 lessons. One JavaScript concept at a time.
From variables to functions to console.log() — beginner-friendly, short, and clear.
Start here:
jamesfmcgrath.org/learn-javasc...
#javascript #learnprogramming #codingforall #webdev #dailylesson
From variables to functions to console.log() — beginner-friendly, short, and clear.
Start here:
jamesfmcgrath.org/learn-javasc...
#javascript #learnprogramming #codingforall #webdev #dailylesson
Learn JavaScript for Beginners – 10 Quick Daily Lessons
Learn JavaScript the easy way — one small concept at a time. This page gathers 10 beginner-friendly lessons covering variables, functions, arrays, loops, and more. Each post is short, clear, and perfe...
jamesfmcgrath.org
July 29, 2025 at 7:56 AM
10 days. 10 lessons. One JavaScript concept at a time.
From variables to functions to console.log() — beginner-friendly, short, and clear.
Start here:
jamesfmcgrath.org/learn-javasc...
#javascript #learnprogramming #codingforall #webdev #dailylesson
From variables to functions to console.log() — beginner-friendly, short, and clear.
Start here:
jamesfmcgrath.org/learn-javasc...
#javascript #learnprogramming #codingforall #webdev #dailylesson
What does console.log() do?
It's your code’s way of talking to you. Print values, debug bugs, and figure out what’s going on behind the scenes.
Short lesson, clear example, quick challenge.
#javascript #debugging #webdev #learnprogramming #codingforall
jamesfmcgrath.org/what-is-cons...
It's your code’s way of talking to you. Print values, debug bugs, and figure out what’s going on behind the scenes.
Short lesson, clear example, quick challenge.
#javascript #debugging #webdev #learnprogramming #codingforall
jamesfmcgrath.org/what-is-cons...
What Is console.log() in JavaScript? Explained Simply
Learn what console.log() does in JavaScript, how to use it to debug your code, and why it's one of the most essential tools for beginners. Simple explanation, examples, and a fun analogy included.
jamesfmcgrath.org
July 28, 2025 at 12:22 PM
What does console.log() do?
It's your code’s way of talking to you. Print values, debug bugs, and figure out what’s going on behind the scenes.
Short lesson, clear example, quick challenge.
#javascript #debugging #webdev #learnprogramming #codingforall
jamesfmcgrath.org/what-is-cons...
It's your code’s way of talking to you. Print values, debug bugs, and figure out what’s going on behind the scenes.
Short lesson, clear example, quick challenge.
#javascript #debugging #webdev #learnprogramming #codingforall
jamesfmcgrath.org/what-is-cons...
What’s a Boolean?
It’s one of the simplest — and most powerful — types in JavaScript.
True or false. That’s it.
Today's post breaks it down with a fun analogy and short challenge.
#javascript #codingforall #learnprogramming #webdev #booleanlogic
jamesfmcgrath.org/what-is-a-bo...
It’s one of the simplest — and most powerful — types in JavaScript.
True or false. That’s it.
Today's post breaks it down with a fun analogy and short challenge.
#javascript #codingforall #learnprogramming #webdev #booleanlogic
jamesfmcgrath.org/what-is-a-bo...
What Is a Boolean in JavaScript? Explained Simply
Learn what a Boolean is in JavaScript, how it works, and why it's essential for logic in code. This beginner-friendly post includes examples, analogies, and a quick coding challenge.
jamesfmcgrath.org
July 27, 2025 at 3:13 PM
What’s a Boolean?
It’s one of the simplest — and most powerful — types in JavaScript.
True or false. That’s it.
Today's post breaks it down with a fun analogy and short challenge.
#javascript #codingforall #learnprogramming #webdev #booleanlogic
jamesfmcgrath.org/what-is-a-bo...
It’s one of the simplest — and most powerful — types in JavaScript.
True or false. That’s it.
Today's post breaks it down with a fun analogy and short challenge.
#javascript #codingforall #learnprogramming #webdev #booleanlogic
jamesfmcgrath.org/what-is-a-bo...
What’s a return statement in JavaScript?
It’s how a function gives something back — like a vending machine for code 🍿
Quick tip, simple example, and a challenge to try.
#javascript #learnprogramming #codingforall #webdev #functions
jamesfmcgrath.org/what-is-a-re...
It’s how a function gives something back — like a vending machine for code 🍿
Quick tip, simple example, and a challenge to try.
#javascript #learnprogramming #codingforall #webdev #functions
jamesfmcgrath.org/what-is-a-re...
What Is a Return Statement in JavaScript? Explained Simply
Learn what a return statement is in JavaScript, how it works inside a function, and why it’s useful. This beginner-friendly guide includes examples, a fun analogy, and a simple coding challenge.
jamesfmcgrath.org
July 26, 2025 at 9:31 AM
What’s a return statement in JavaScript?
It’s how a function gives something back — like a vending machine for code 🍿
Quick tip, simple example, and a challenge to try.
#javascript #learnprogramming #codingforall #webdev #functions
jamesfmcgrath.org/what-is-a-re...
It’s how a function gives something back — like a vending machine for code 🍿
Quick tip, simple example, and a challenge to try.
#javascript #learnprogramming #codingforall #webdev #functions
jamesfmcgrath.org/what-is-a-re...
Functions are like recipes. Parameters? They're the ingredients 🍞
Today's post explains how JavaScript functions use parameters to make code reusable and dynamic.
Read it here → jamesfmcgrath.org/what-is-a-fu...
#javascript #webdev
Today's post explains how JavaScript functions use parameters to make code reusable and dynamic.
Read it here → jamesfmcgrath.org/what-is-a-fu...
#javascript #webdev
What Are Function Parameters in JavaScript? Explained Simply.
Learn how function parameters work in JavaScript. This beginner-friendly guide shows how to define and use parameters in your functions with clear examples, a simple analogy, and a quick challenge to ...
jamesfmcgrath.org
July 25, 2025 at 11:10 AM
Functions are like recipes. Parameters? They're the ingredients 🍞
Today's post explains how JavaScript functions use parameters to make code reusable and dynamic.
Read it here → jamesfmcgrath.org/what-is-a-fu...
#javascript #webdev
Today's post explains how JavaScript functions use parameters to make code reusable and dynamic.
Read it here → jamesfmcgrath.org/what-is-a-fu...
#javascript #webdev
What’s an if statement? It’s how your code makes decisions.
If something’s true ➜ do a thing.
Short post, simple explanation, quick challenge to try!
#javascript #learnprogramming #codingforall #webdev #ifstatement
jamesfmcgrath.org/what-is-an-i...
If something’s true ➜ do a thing.
Short post, simple explanation, quick challenge to try!
#javascript #learnprogramming #codingforall #webdev #ifstatement
jamesfmcgrath.org/what-is-an-i...
What Is an If Statement in JavaScript? A Beginner-Friendly Guide
Learn how if statements work in JavaScript, including how to write them, why they're useful, and how to use them to control program flow. Includes examples, analogies, and a simple coding challenge fo...
jamesfmcgrath.org
July 24, 2025 at 6:43 AM
What’s an if statement? It’s how your code makes decisions.
If something’s true ➜ do a thing.
Short post, simple explanation, quick challenge to try!
#javascript #learnprogramming #codingforall #webdev #ifstatement
jamesfmcgrath.org/what-is-an-i...
If something’s true ➜ do a thing.
Short post, simple explanation, quick challenge to try!
#javascript #learnprogramming #codingforall #webdev #ifstatement
jamesfmcgrath.org/what-is-an-i...
What’s a loop in JavaScript?
It’s your shortcut to repetition — write once, run many times.
Today’s post shows how to write a basic for loop (and explains it simply).
#javascript #learnprogramming #webdev #codingforall #looplogic
jamesfmcgrath.org/what-is-a-lo...
It’s your shortcut to repetition — write once, run many times.
Today’s post shows how to write a basic for loop (and explains it simply).
#javascript #learnprogramming #webdev #codingforall #looplogic
jamesfmcgrath.org/what-is-a-lo...
What Is a Loop?
Learn what a loop is in JavaScript, how to use a for loop, and why loops are essential for writing clean, efficient code. Includes examples and a beginner-friendly challenge.
jamesfmcgrath.org
July 23, 2025 at 9:22 AM
What’s a loop in JavaScript?
It’s your shortcut to repetition — write once, run many times.
Today’s post shows how to write a basic for loop (and explains it simply).
#javascript #learnprogramming #webdev #codingforall #looplogic
jamesfmcgrath.org/what-is-a-lo...
It’s your shortcut to repetition — write once, run many times.
Today’s post shows how to write a basic for loop (and explains it simply).
#javascript #learnprogramming #webdev #codingforall #looplogic
jamesfmcgrath.org/what-is-a-lo...
What’s an object? A labelled folder of facts.
Group data, grab what you need, stay organized.
Today’s tip is short and sweet — with a granola bar analogy 🏞️
#ctrlaltlearn #javascript #codingforall #learnprogramming #webdev
jamesfmcgrath.org/what-is-an-o...
Group data, grab what you need, stay organized.
Today’s tip is short and sweet — with a granola bar analogy 🏞️
#ctrlaltlearn #javascript #codingforall #learnprogramming #webdev
jamesfmcgrath.org/what-is-an-o...
What Is an Object?
Learn what a JavaScript object is, how to create one, and how to access its properties using dot notation — explained simply in Day 4 of Ctrl + Alt + Learn.
jamesfmcgrath.org
July 22, 2025 at 10:42 AM
What’s an object? A labelled folder of facts.
Group data, grab what you need, stay organized.
Today’s tip is short and sweet — with a granola bar analogy 🏞️
#ctrlaltlearn #javascript #codingforall #learnprogramming #webdev
jamesfmcgrath.org/what-is-an-o...
Group data, grab what you need, stay organized.
Today’s tip is short and sweet — with a granola bar analogy 🏞️
#ctrlaltlearn #javascript #codingforall #learnprogramming #webdev
jamesfmcgrath.org/what-is-an-o...