Posts

Showing posts from 2025

cursor commands

I'm liking cursors commands : a way to integrate your common ai prompts into cursor using the / command store your prompts (commands) as markdown in the repo folder, then access in cursor chat using slash command I'm storing my commands in a file in the repo but this is a nice enhancement by cursor

conductor - manage claude code instances

Running Claude Code in terminals is ok, but I felt managing it all needed a better user interface to organize and track.   conductor is an example of what such a user interface could be

claude code - technology and usages

Image
claude code npm tech stack:  typescript - claude code is written in ts (pssst: typescript is a must know language imo) react - ui is written in react and uses ink for interactive command line ink - react components for command line! used by a whole list of AI whos who with command line yoga - embeddable flexbox layout engine and  bun  - js runner, runtime, bundler; choose over webpack/vite etc. because bun is faster) npm to distribute claude code Started as a simple project to query what music someone was listening to. Then added capabilities to access the file system and run batch commands. Usage spread rapidly within Claude Code team who dogfooded it. "around 90% of claude code is written with claude code" (not by, with) claude code is a thin wrapper over the claude model, they deliberately want people to experience the raw model, not obstructed by much business logic a guiding principal is: simplicity, choose the simplest approach possible the most complex part of cl...

cursor chat token usage

Have you noticed that cursor chat requests can use a lot more tokens than you'd expect?  Matt Pocock said it well: "tokens are the currency of LLMs". You're charged by the token. A little, but it does add up. So we need to pay attention to token usage. I ran some tests in cursor chat to review token usage and was surprised by how many tokens are used by my chat requests. I ran these tests in a large repo which has a number of cursor rules files defined.  Tests: 1. ask a general tech question in chat, not related to specific code in repo; context used : 19.7k tokens prompt: "how should I choose between useSWR and react-router v6 for data fetching?" to contrast, same question in Claude 4.0 outside of cursor user 28 input tokens and 768 output tokens in response to contrast further, same question in Gemini 2.5 Pro outside of cursor used 19 input tokens and 1060 output tokens in response almost one twentieth the token usage of cursor chat!!! wow 2. ask to write...

stack overflow survey 2025 - links and notes

My notes from the stack overflow survey 2025 Interestingly usage of AI tools is widespread (84%). But  positive sentiment has decreased 10% to 60% since 2024 two thirds of devs are frustrated by AI solutions that are "almost right" and debugging AI generated code is more time consuming (45%) more devs actively distrust (46%) AI tools accuracy than trust it A majority of devs don't use AI Agents, but a majority of those who used say it does increase productivity. But I'll bet that increases significantly by next years survey. There's more details when you drill down into subsections in the survey such as AI Developer tools . e.g. 56% say AI is "bad" or "very poor" or "don't use" AI for complex tasks. And 14% are neutral. Only approx 15% are vibe coding The most popular web frameworks among professionals are nodejs (49%), react (47%), jquery (24%), nextjs (22%), asp.net core (21%) , Express (20%), Angular (20%), vue.js (18%) The mos...

ai engineer roadmap - Matt Pocock

These are my notes to Matt Pococks aihero.dev course "ai engineer roadmap" https://www.aihero.dev/ai-engineer-roadmap What is An AI Engineer Matt said his course is partly based on article from Latent Space: "The rise of the ai engineer" " An AI Engineer is a software developer who builds applications powered by AI" An AI Engineer needs strong software engineering fundamentals ability to build reliable scaleable applications knows modern AI tools and frameworks focuses on user experience and applications AI Engineers - use models, use prompt engineering, pipelines/chains, optimize cost/speed/performance, infra, evaluate systems. Different to an ML engineer who: build and train models, heavy math, phd level skills Yes, web developers can become AI Engineers. And Typescript is growing fast and makes a great fit for AI systems (well Matt would say that, wouldn't he!..but I do think it's true) What can you use LLMs for? 1. Converting unstructured to st...

Notes on interview with Kent Beck about AI and why it's like a "genie"

TDD, AI Agents and coding with Kent Beck https://www.youtube.com/watch?v=aSXaxOdVtAQ This podcast was really fun to learn from and I recommend. Kent is famous in the programming world, so his take on AI is worth learning from. Kent says he's spending 6-10 hours a day programming and in 50 years of programming it's the most fun he's had, "its a blast". Kents using agentic tools where it generates a bunch of code from a single prompt. Kent says nobody knows what works so try it all. So we should be experimenting.  Kents tried a number of different languages as he's experimented. Kent thinks of AI as an "unpredictable genie". Its a genie in that "it grants wishes and you wish for something and you get it, but it's not what you actually wanted: it volunteers features, doesn't care about design, willing to cheat (delete/modify tests) there can be some good things with this, but some bad I love this metaphor. I have experienced these aspects o...

nullish coalescing versus logical or

Is this code ok? customer ?. type || '' Probably, but strictly semantically speaking this should use '??' ( nullish coalescing)  instead of '||' The left side condition uses optional chaining which resolves to a value or undefined, ?? is more strict and only fires for null or undefined. Whereas '||' will execute for more values than null or undefined (also 0, false, NaN, '') So if customer.type was 0 then using '||' will resolve to the right side customer ?. type || 'none' // 'none' whereas if customer.type was 0 then using '||' will resolve to the left side customer ?. type || 'none' // 0

ais: the good, the bad, the ugly - the ugly

There are some things AI coding assistants are not good of assisting at this time. But because AI assistants always want to predict, it will. And ais will sound very confident in the prediction. Sometimes the answer can be completely misleading and just garbage. Which is much worse than no answer at all. We recently upgraded our react version and some cypress tests for the app then started failing. I did some investigation and could see an unexpected failing api call in the tests. Why?  I asked the llm for assistance with some context such as new version of react, some libraries, details on the test failure.  It's prediction was a reasonable guess given the prompt but a wrong guess. It suggested a bunch of code changes such as the following: 1. adding timeouts to every cypress element check e.g.   `cy.contains('button', 'Save', { timeout: 10000 }).should('be.visible').click();` 2. new cypress helper functions to handle a double action and then changed tests ...

writing less code and going with the grain

Periodically we need to remind ourselves of good common sense coding practices. Two simple but very powerful are: 1. write less code Sometimes the best solution is just to write less code. We need to think before implementing: how can I write less code?  I may come up with an acceptable solution, but there may be a better solution with less code. Its possible my first solution is not the best. A good time to do this thinking is before you get too far into an implementation. At a certain point you're too deep, too far along to easily change or reverse course. But even if you are, don't be afraid to change course, even if you may lose some time. Its still typically more efficient to change when building a feature than after its been released to production. 2. "go with the grain" Systems are often built in a certain way and when we change those systems we should try to follow that way. Build on the existing architecture, on the current algorithm on existing conventions o...

openAI buying Jony Ives company

Update: after I wrote this post I thought more about it and have realized I was thinking too small. Jony Ive doesn't partner with you just to "build a better iphone". These guys have got to be thinking bigger. Much bigger than that. Jony Ive designs the future. Pair up massive compute with some of the most advanced AI models. What do you get? A new world. They mentioned replacing "decades old legacy products". Think form factors that fit the new technology. Like Apple devices did. Think ecosystem. Think holistic AI user experience that's end to end.  Think a world of autonomous devices. Think robotics, and not just the sci fi classic 2 legs 2 arms types.  I know this sounds "hypyie" but they have to be thinking this big. OpenAI spending more of that investment round. A cool ~$6.5bn to buy/merge Jony Ives startup company, so cute picture .  (yeah, that Jony Ive). The announcement this past week says they've been collaborating for two years and J...

thank you Matt Pocock for typescript cursor rules

Matt Pocock of "Total typescript" has shared his cursor rules files for typescript.  Thank you Matt. 14 rules files.  I already opened a PR and added to our codebase. I recommend.  Some adjustments: removed this rule from ts-naming-conventions "Use kebab-case for file names (e.g., my-component.ts)"  installing-libraries, jsdoc-comments, default-exports added as global advice in cursor, not just typescript

cursor rules and customizing AI developer IDEs

This is a post I wrote in linkedin about cursor rules We use cursor as the IDE in work and defining rules makes it better.

Apples AI struggles

On Feb. 14, Bloomberg News reported that Apple was struggling with bugs and engineering problems on its planned artificial intelligence tools for Siri. "Apple Inc.’s top executive overseeing its Siri virtual assistant told staff that delays to key features have been ugly and embarrassing, and a decision to publicly promote the technology before it was ready made matters worse." "...the company’s woes boiled over last week, when it acknowledged publicly that critical features would be delayed indefinitely." "Despite not being ready, the capabilities were included in a series of marketing campaigns and TV commercials starting last year." "Walker said the decision to delay the features was made because of quality issues and that the company has found the technology only works properly up to two-thirds to 80 per cent of the time — which is to say it doesn’t work every one out of three times. He said the group “can make more progress to get those percenta...

"fast follow" and agile

Anyone else over the term "fast follow"? We're already sprinting, now we're "fast following"?  What next? some marketing guru to add some new terms such as "quick gallop" or "speedy stagger" to the agile vernacular? 😄 Jokes aside, I have concerns because: Agile already provides us all the guidance and mechanisms to deliver the highest priorities, continuously to the customer. There is no need to invent new terminology. It's almost like some folks don't understand or trust Agile, so the term "fast follow" is invented as a useful way to market/manage expectations.  "We can't get xyz in for launch, but we really really promise to release it very soon" i.e. we understand it's a high priority (<- priorities, Agile is good at that) But that in itself (looking backwards) may take attention away from learning from the launch and figuring out what the next set or priorities, or perhaps the pivot needed (lo...