Month in review: July 2025

Search for a command to run...

No comments yet. Be the first to comment.
Getting stuck into a new project I’ve recently switched project at work. This week feels like the week I’ve got properly stuck into it. I’ve been able to deliver some substantial feature work, whereas my previous changes have been technical in natur...
I recently use the /goal command in Claude Code for the first time. I was struggling to reproduce a bug that I already had a theoretical understanding of from investigating the codebase, but had previ

Things that happened I received a happy birthday message from our HR system. It gave me the same vibes as the AI-written compliments I mentioned in Month in review: May 2026. Microsoft ran an "AI sk

Fixing a code analysis auto-fix which made acronyms less clear

Things I learnt A HashSet is for storing unique elements. The point is that it has O(1) lookups like a Dictionary does. It uses the same basic mechanism as a Dictionary does (hashing objects then usi

I was recently working with an EF Core entity which contained a C# Point property representing a geolocation. This was stored in a single column in a SQL Server database. (I think this uses NetTopolog

I had my appraisal. It pushed me to think more seriously about how I can most effectively share evergreen knowledge with the wider company. Others have suggested this before but I've always resisted giving talks, etc. because of the time commitment (and the fact that talks at my company typically happen during our lunch breaks). I've started to give more serious thought to ways I could share knowledge and skills without it taking too much time away from development. I've also set this as a formal Objective within our HR system so I will be prompted on this again in the future.
I was going to bookmark this handy list of emojis supported by Azure DevOps, right up until the moment I realised I'd already got it bookmarked 🤦
ASP.NET Data Protection
I had never heard of this, but needed to use it and explain some technical choices to a client. I researched this from the Microsoft documentation and felt afterwards that I had a solid understanding of it. I'm certainly no expert, but I knew enough to be able to articulate the technical options we had, make a recommendation, and implement the final decision.
I also learnt a bit more about Key Vault permissions while working out what permissions I needed to ask our IT department for in order to test this work.
fuslogvw.exe (Assembly Binding Log Viewer)
This is a tool which I've never heard of, even though it comes built into Visual Studio. In the end, it wasn't useful for me so I never really dug into what it does and how it works. It was still interesting to find out about it and run it.
You can run it within Visual Studio by opening either Developer PowerShell or Developer Command Prompt, then running the command fuslogvw.
Official documentation: https://learn.microsoft.com/en-us/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer
SQL Server indexes can include data from non-indexed columns.
I learnt this from a recommendation within Azure. It provided the SQL for adding an index which it recommended.
I assume this means that if a query only needs those columns, the entire query can be resolved from the index without needing to actually read the database table. I haven't read up on this or experimented with it, so I may have misunderstood this.
Git aliases can use the current date, by invoking a powershell script.
My job title is currently Senior Software Engineer. My company is planning to split the Senior grade into two, but hasn't yet published the details of how the two new grades will be defined. I'm looking forward to finding out how the two new grades are defined, and which grade I will be given.
Best ways to use GitHub Copilot, and whether I should try other AI tools professionally.
For a while my company has been paying for a Copilot license for me, and I could choose to give that up and get a licence for Claude or ChatGPT instead. They would only pay for one AI tool per person (which I think is completely reasonable) so I can't easily play around with different tools from day to day.
This policy has recently changed to give everyone a licence for Copilot and an extra AI licence if requested. I'm hoping this will help me explore other AI developer tools more.
I'm working in VS at the moment, and I suspect the Copilot tooling is far from the best available. For example, you can't drag and drop files from outside your codebase into the Copilot context. (VS Code and Rider both support this functionality.)
I received very speedy responses from my company's IT department when I needed them to make changes to Azure resources and update my permissions for various functionality. I really appreciate that they accept the priority we assign to our own requests, trusting us not to take the mickey.
I've had a number of opportunities recently to encourage colleagues with specific feedback, and I've also received some specific encouragements from colleagues.
My company is also planning some AI training for all staff, broken down by role. Knowing the person who is heading up the training, I am expecting this to be genuinely helpful, but I assume this will be delivered after the summer holidays when staff have more availability.
These are my own reflections from the content, not necessarily the main point of the content.
Simon Willison on the Generationship podcast. I've not come across the podcast before, but Simon Willison keeps on top of the current state of LLMs and AI tools from a software development perspective so I like to hear his views from time to time to know what (in his opinion) is the current state of play. I took 4 things away from the podcast:
It's important to teach & model that we all make mistakes, and how to recover from them.
Senior developers ask stupid questions.
Psychological safety - senior developers already have a reputation for competence, so asking a stupid question won't damage their reputation.
Learning - senior developers have become senior by learning, and they have learnt by asking questions. They may have become senior by becoming comfortable asking about things they don't understand.
Publish your notes so that others can benefit from them.
I imagine my notes could be a useful reference for others at times. People do occasionally ask me about work I did in the past, or if I've ever seen a particular error before, etc. I tend to search my notes, but perhaps there would be value to others being able to do that.
I'm not sure how this would work on a commercial project, as it may not be appropriate to share notes with people who are uninvolved with the project (even within a single company).
Gen AI lowers the cost of generating little tools and side projects which might not otherwise have been worth it.
Perhaps the best use for AI as a dev may not be writing production code but creating useful tools.
“Most people will tell you the ideal UX for both internal and user-facing products is for you to ask a question and receive the answer, not the messy details,” says Thawar. “But if your goal is to teach people how to master something, showing them those details is better.”
Quote of the month
"The client is not interested in building good software, they just want to have it. They have no interest in the process." (A colleague)
This was said to me as a frustration on a particular project where this reality was causing problems, but I think it probably has a broad applicability to how software professionals liaise with clients.
I think this is a double-edged sword - it's positive to relate well to clients and understand their point of view, but can also be frustrating because they may not care about something we are passionate about.
Most ideas I have for blog posts never see the light of day because I don't find the time to write them. Here's what I didn't get round to.
Further thoughts on Visual Studio vs Rider (following on from Using Visual Studio after being used to Rider).
Instructions for using fuslogvw.
It turned out that this tool doesn't do what I wanted, so I ended up without a concrete use case to blog about.
I also didn't publish a write-up of how I did end up trying to find all binding errors within an ASP.NET MVC app.
Thoughts on Simon Willison's appearance on the Generationship podcast.
Brief thoughts are included above within this blog post.
I wondered about writing something a bit more reflective to follow these ideas a bit more.
How I use todoist as a professional programmer
Writing a user script with AI and getting it (nearly) right first time
Why I'm keen to vibe code useful tools