Heading off to San Francisco for Twilio SIGNAL this week. Who am I going to see there?
🥑 Developer relations engineer for Langflow getting involved in all things AI, agents, and MCP.
🗣️ speaker | 📝 writer | 🌭 sausage dog owner | he/him
Posts
Got an interesting phishing attack today: a link to a take home coding test for a job I hadn't applied for.
It seemed innocent, pointing to a GitHub repo, but cloning and running the repo would definitely have done bad things.
If you're expecting coding tests, check they're from the right company!
The repo owner has been reported to @github@hachyderm.io so hopefully it will be dealt with before it affects anyone else.
Yes Teams, my microphone is muted. It’s because I’m in a noisy space, not because I’m talking. You could have figured that out after the 4th or 5th notification, I’m sure. 😡
I submitted an online talk for the AI Engineer Europe event last week, check it out here: https://www.youtube.com/watch?v=4TxOBhDRRCM
It was such a pleasure to share a stage with @cybette@mastodon.org.uk at #OpenSearchCon, and even more so to share the work of the #Docling team and how it can be integrated with #OpenSearch.
Check out the video of the talk here: https://www.youtube.com/watch?v=IqUJVGyI5to
I'm simultaneously proud and ashamed.
Ashamed to find out that I've been using a password from a data breach for my RubyGems account. I have 2FA enabled too, don't worry! But seriously 🤦♂️
I am proud though, because I know that this feature used my pwned gem (https://rubygems.org/gems/pwned) to check.
Cumulative Layout Shift has finally been recognised by sketch comedy, thanks to SNL UK.
Just popping to Shanghai for a few days 🛫
Nothing amuses me more than asking LLMs for a joke. Because they are so so bad at them. Today's I asked for a joke about sausage dogs:
"Why don't sausage dogs ever play hide and seek?
Because good luck hiding when everyone knows they're always being "sausage-ed" in the park!"
I've written a post containing some tips for giving better presentations!
None of these tips can replace great content, but they will help you start strong and keep the energy going all the way through to the applause at the end.
https://philna.sh/blog/2026/03/05/talking-tips/
Do you have any more tips to share?
My coding agent is using console.log debugging and I've never felt more validated.
I updated an npm package to publish using npm trusted publishing, but it took me a few goes to get it right.
These are the things that I needed to do to get trusted publishing to work for me: https://philna.sh/blog/2026/01/28/trusted-publishing-npm/
A React app that has a useEffect that listens to the window resize event and returns whether the screen is mobile or not so that different images can be displayed?
These are the lengths that React developers will go to to avoid learning about the tag's sizes and srcset.
Discovered the contact form on my website was broken and ended up learning how to set up trusted publishing to npm. So that was quite the rabbit hole of an evening.
I really enjoy speaking at conferences and trying to share what I've learned. It's really nice to be recognised by Sessionize for doing it quite a lot.
I guess I need to get some talks accepted for 2026 now!
Wrote a new blog post. This is the story of how I tried to add one month to a JavaScript date and discovered the result was 9 months earlier.
Yes, the problem was time zones. Even though the time didn't matter.
https://philna.sh/blog/2026/01/11/javascript-date-calculation/
Excited to see the AI Engineer conference is coming to Melbourne next year! https://webdirections.org/ai-engineer/
This might be the simplest Langflow flow I've ever built, but it's still really cool.
It uses Docling to parse PDFs and return Markdown.
You can choose between Docling's standard pipeline, using OCR and other models, or use a vision language model. And you get great results!
For more details, check the blog post: https://www.langflow.org/blog/convert-pdf-to-markdown-docling-langflow
I built a Langflow workflow and bookmarklet to help me summarise and categorise articles for the AI++ newsletter.
It saves me time, so I thought you might like to see how I built it.
https://www.langflow.org/blog/langflow-ai-workflows-ai-newsletter
Ever wanted to build your own coding agent? I just built one in Langflow using 3 components and 2 MCP servers.
Sure, it's no Cursor, Codex or Claude Code, but it's a start!
See how to build your own here: https://www.langflow.org/blog/ai-coding-agent-langflow
I wrote up a quick blog post last night on how to keep a fork up to date with an upstream repo. Behold, git remote, fetch and merge! https://philna.sh/blog/2018/08/21/git-commands-to-keep-a-fork-up-to-date/ #git #github