LLMs can't stop making up software dependencies and sabotaging everything

LLMs can’t stop making up software dependencies and sabotaging everything A fun new attack vector in the age of AI. “What a world we live in: AI hallucinated packages are validated and rubber-stamped by another AI that is too eager to be helpful.”

Keynote: AI without the BS, for humans

Keynote: AI without the BS, for humans - Scott Hanselman - NDC London 2025

Chain-of-Thought Prompting

Today I learned about Chain-of-Thought Prompting which is a technique to get potentially better results from an LLM where you craft your prompt with an example of the chain of thought or steps in reasoning to solve a complex problem. This gives a good explanation: https://www.promptingguide.ai/techniques/cot

Use ChatGPT to help you write architectural decision records

I’ve been discovering recently that ChatGPT is actually pretty good at helping write Architectural Decision Records (ADRs). Like most writing tasks, I’m finding ChatGPT is good at giving me a nice starting point instead of staring a blank template. Even with as simple a prompt as “write an architectural decision record on why we chose to go with react instead of angular”, it’ll give a decent list of pros and cons on the topic in a common ADR template. I can also refine it further by saying “write it using the following template instead…” ...

Use ChatGPT to explain bash scripts

Today I learned that chatGPT is pretty good at explaining cryptic bash scripts and commands. I was trying to understand exactly how a git prepare-commit-msg hook was working so I asked chatGPT to “explain the following git hook to me” and it did a pretty good job. For example, it returned tidbits like: [[ $BRANCH_NAME =~ $BRANCH_REGEX ]]: This conditional statement checks if the branch name matches the BRANCH_REGEX pattern. If the branch name starts with one or more digits, this condition will be true. and: sed -i.bak -e "1s/^#${BASH_REMATCH[1]}: //I" $1: This line uses the sed command to replace the branch number (captured by the BRANCH_REGEX pattern) and a colon at the beginning of the commit message with an empty string. The I flag makes the replacement case-insensitive. The -i.bak option creates a backup of the original commit message file with a .bak extension. ...