The other week, a coding LLM helped me... without me ever submitting a single prompt to it. I just typed into it all the component parts of my problem, and in doing so the solution revealed itself to me. It's rubberducking... silent AI edition!
Read more: https://danq.me/2026/04/26/ai-rubber-ducking/

#article #ai #comics #debugging #firstup #programming #work

Once You’re Asking the Right Question, You Don’t Need To Ask!

The other week, a coding LLM helped me... without me ever submitting a single prompt to it. I just typed into it all the component parts of my problem, and in doing so the solution revealed itself to me. It's rubberducking... silent AI edition!

Dan Q

What breaks when one of your developers leaves?

On Friday, I said goodbye to a colleague as she left us after most of a decade with the company. Then this morning, all hell broke loose on some production servers.

It turns out that the API key that connected our application to our feature flag management platform was associated with her account, and hadn't shown up in the exit audit.

Let this be your reminder to go check where, if anywhere, your applications are using person-specific keys where they should be using generic ones!
Read more: https://danq.me/2026/04/20/what-breaks/

#note #devops #firstup #programming #software #work

What breaks?

What breaks when one of your developers leaves? On Friday, I said goodbye to a colleague as she left us after most of a decade with the company. Then this morning, all hell broke loose on some production servers. It turns out that the API key that connected our application to our feature flag management platform was associated with her account, and hadn't shown up in the exit audit. Let this be your reminder to go check where, if anywhere, your applications are using person-specific keys where they should be using generic ones!

Dan Q

What breaks when one of your developers leaves?

On Friday, I said goodbye to a colleague as she left us after most of a decade with the company. Then this morning, all hell broke loose on some production servers.

It turns out that the API key that connected our application to our feature flag management platform was associated with her account, and hadn't shown up in the exit audit.

Let this be your reminder to go check where, if anywhere, your applications are using person-specific keys where they should be using generic ones!

#note #work #firstup #software #programming #devops

Via: 🔗 https://danq.me/2026/04/20/what-breaks/

Inspired by Jeremy Keith doing the same, I've made the salary history of my career transparent.
Read more: https://danq.me/2026/04/15/my-salary-history/

#article #automattic #bodleian #employment #firstup #history #money #salary #smartdata #work

My Salary History

Inspired by Jeremy Keith doing the same, I've also made the salary history of my career transparent.

Dan Q

Today, an AI review tool used by my workplace reviewed some code that I wrote, and incorrectly claimed that it would introduce a bug because a global variable I created could “be available to multiple browser tabs” (that’s not how browser JavaScript works).Just in case I was mistaken, I explained to the AI why I […]
Read more: https://danq.me/2026/02/25/to-really-foul-things-up-you-need-an-ai/

#note #ai #firstup #javascript #programming #work

To really foul things up you need an AI

Today, an AI review tool used by my workplace reviewed some code that I wrote, and incorrectly claimed that it would introduce a bug because a global variable I created could "be available to multiple browser tabs" (that's not how browser JavaScript works). Just in case I was mistaken, I explained to the AI why I thought it was wrong, and asked it to explain itself. To do so, the LLM wrote a PR to propose adding some code to use our application's save mechanism to pass the data back, via the server, and to any other browser tab, thereby creating the problem that it claimed existed. This isn't even the most-efficient way to create this problem. localStorage would have been better. So in other words, today I watched an AI: (a) claim to have discovered a problem (that doesn't exist), (b) when challenged, attempt to <em>create</em> the problem (that wasn't needed), and (c) do so in a way that was suboptimal. Humans aren't perfect. A human could easily make one of these mistakes. Under some circumstances, a human might even have made two of these mistakes. But to make all three? That took an AI. What's the old saying? "To err is human, but to really foul things up you need a computer."

Dan Q

Today, an AI review tool used by my workplace reviewed some code that I wrote, and incorrectly claimed that it would introduce a bug because a global variable I created could "be available to multiple browser tabs" (that's not how browser JavaScript works).

Just in case I was mistaken, I explained to the AI why I thought it was wrong, and asked it to explain itself.

To do so, the LLM wrote a PR to propose adding some code to use our application's save mechanism to pass the data back, via the server, and to any other browser tab, thereby creating the problem that it claimed existed.

This isn't even the most-efficient way to create this problem. localStorage would have been better.

So in other words, today I watched an AI:
(a) claim to have discovered a problem (that doesn't exist),
(b) when challenged, attempt to create the problem (that wasn't needed), and
(c) do so in a way that was suboptimal.

Humans aren't perfect. A human could easily make one of these mistakes. Under some circumstances, a human might even have made two of these mistakes. But to make all three? That took an AI.

What's the old saying? "To err is human, but to really foul things up you need a computer."

#note #ai #work #firstup #programming #javascript

Via: 🔗 https://danq.me/2026/02/25/to-really-foul-things-up-you-need-an-ai/

To really foul things up you need an AI

Today, an AI review tool used by my workplace reviewed some code that I wrote, and incorrectly claimed that it would introduce a bug because a global variable I created could "be available to multiple browser tabs" (that's not how browser JavaScript works). Just in case I was mistaken, I explained to the AI why I thought it was wrong, and asked it to explain itself. To do so, the LLM wrote a PR to propose adding some code to use our application's save mechanism to pass the data back, via the server, and to any other browser tab, thereby creating the problem that it claimed existed. This isn't even the most-efficient way to create this problem. localStorage would have been better. So in other words, today I watched an AI: (a) claim to have discovered a problem (that doesn't exist), (b) when challenged, attempt to <em>create</em> the problem (that wasn't needed), and (c) do so in a way that was suboptimal. Humans aren't perfect. A human could easily make one of these mistakes. Under some circumstances, a human might even have made two of these mistakes. But to make all three? That took an AI. What's the old saying? "To err is human, but to really foul things up you need a computer."

Dan Q

Highlight of my workday was debugging an issue that turned out to be nothing like what the reporter had diagnosed.The report suggested that our system was having problems parsing URLs with colons in the pathname, suggesting perhaps an encoding issue. It wasn’t until I took a deep dive into the logs that I realised that […]
Read more: https://danq.me/2026/01/28/mocking-sharepoint/

#note #firstup #http #programming #ruby #testing #web #work

Mocking SharePoint

Highlight of my workday was debugging an issue that turned out to be nothing like what the reporter had diagnosed. The report suggested that our system was having problems parsing URLs with colons in the pathname, suggesting perhaps an encoding issue. It wasn't until I took a deep dive into the logs that I realised that this was a secondary characteristic of many URLs found in customers' SharePoint installations. And many of those URLs get redirected. And SharePoint often uses <em>relative</em> URLs when it sends redirections. And it turned out that <em>our</em> systems' redirect handler... wasn't correctly handling relative URLs. It all turned into a hundred line automated test to mock SharePoint and demonstrate the problem... followed by a tiny <em>two</em>-line fix to the actual code. And probably the most-satisfying part of my workday!

Dan Q

Highlight of my workday was debugging an issue that turned out to be nothing like what the reporter had diagnosed.

The report suggested that our system was having problems parsing URLs with colons in the pathname, suggesting perhaps an encoding issue. It wasn't until I took a deep dive into the logs that I realised that this was a secondary characteristic of many URLs found in customers' SharePoint installations. And many of those URLs get redirected. And SharePoint often uses relative URLs when it sends redirections. And it turned out that our systems' redirect handler... wasn't correctly handling relative URLs.

It all turned into a hundred line automated test to mock SharePoint and demonstrate the problem... followed by a tiny two-line fix to the actual code. And probably the most-satisfying part of my workday!

#note #testing #http #web #ruby #firstup #work #programming

Via: 🔗 https://danq.me/2026/01/28/mocking-sharepoint/

Mocking SharePoint

Highlight of my workday was debugging an issue that turned out to be nothing like what the reporter had diagnosed. The report suggested that our system was having problems parsing URLs with colons in the pathname, suggesting perhaps an encoding issue. It wasn't until I took a deep dive into the logs that I realised that this was a secondary characteristic of many URLs found in customers' SharePoint installations. And many of those URLs get redirected. And SharePoint often uses <em>relative</em> URLs when it sends redirections. And it turned out that <em>our</em> systems' redirect handler... wasn't correctly handling relative URLs. It all turned into a hundred line automated test to mock SharePoint and demonstrate the problem... followed by a tiny <em>two</em>-line fix to the actual code. And probably the most-satisfying part of my workday!

Dan Q

The other night, I encountered an optical illusion by which I could see a particular partially-obstructed light only when it was in my peripheral vision. This put me in mind of the experience of being only peripherally able to see the internalised quirks of your employer that were once obvious to you, and this lead me to reflect a little on my first six months at Firstup.
Read more: https://danq.me/2026/01/19/peripheral-vision/

#article #clothes #employment #eyes #firstup #job #opticalIllusion #showerThoughts #vision #work

Peripheral Vision

The other night, I encountered an optical illusion by which I could see a particular partially-obstructed light only when it was in my peripheral vision. This put me in mind of the experience of being only peripherally able to see the internalised quirks of your employer that were once obvious to you, and this lead me to reflect a little on my first six months at Firstup.

Dan Q

In my first few weeks at my new employer, my code contributions have added 218 lines of code, deleted 2,663. Only one of my PRs has resulted in a net increase in the size of their codebases (by two lines).

I need to pick up the pace if I'm going to reach the ultimate goal of deleting ALL of the code within my lifetime. (That's the ultimate aim, right?)

#note #firstup #job #work #programming #github #sourceControl #employment

Via: 🔗 https://danq.me/2025/08/01/26999/