Blog
A mostly technical blog that covers everything from the frontend to making SQL Server go fast. You can also browse posts by tag, or subscribe to the RSS feed.
2023
2022
- The next time you see me I will be Eleventy October 13, 2022
- Processing images linked from frontmatter with eleventy-img to use in meta tags August 31, 2022
- Migrating my digital garden from WikiLens to Foam, and taking it private July 9, 2022
- What are the costs of an engineering career progression framework? April 30, 2022
- Writing a simple Pocket app in Node.js with no dependencies March 31, 2022
- Benchmarking .NET’s Dictionary.TryGetValue by key length and runtime February 28, 2022
- Early thoughts on switching to Apple silicon and macOS from Windows January 31, 2022
2021
- Don't mistake their kindness for empathy December 31, 2021
- Interesting Links - November 2021 November 30, 2021
- Deploy an Azure AD protected App Service Website with Pulumi October 23, 2021
- Run Pester 5 tests in Azure Pipelines and publish test results September 30, 2021
- Interesting Links - August 2021 August 31, 2021
- Benchmarking different versions of NuGet packages July 16, 2021
- Run benchmarks using multiple runtimes with BenchmarkDotNet June 8, 2021
- Publishing a self-contained single-file .NET 5 executable May 29, 2021
- Getting a summary of cspell errors with PowerShell April 30, 2021
- Updating babel-eslint to @babel/eslint-parser for React apps March 31, 2021
- Spell checking your Markdown blog posts with cspell February 28, 2021
- Migrating from the official Firestore SDK to Firebase-Firestore-Lite January 31, 2021
2020
- Analyze your Create React App bundle size - without ejecting December 31, 2020
- Monitoring your GatsbyJS bundle size November 30, 2020
- Interesting Links - October 2020 October 31, 2020
- You don't have to use graphql to query your Gatsby site's metadata September 30, 2020
- Updating to Tailwind Typography to style markdown posts August 31, 2020
- Using GistPad to manage your GitHub digital gardens July 31, 2020
- Password protect a Next.js site hosted on Vercel June 30, 2020
- Tips for 1 on 1s during COVID-19 May 31, 2020
- Absolute imports with React April 25, 2020
- Getting a list of all performance counters ingested to Log Analytics March 31, 2020
- Swapping implementations at compile time with craco and Create React App February 29, 2020
- Interesting Links - February 2020 February 7, 2020
- Remark Slides Starter January 26, 2020
2019
- Adding a new field to a Firestore collection December 31, 2019
- More Interesting Links - December 2019 December 19, 2019
- Interesting Links - December 2019 December 1, 2019
- Link Roundups November 30, 2019
- Interesting Links - November 2019 November 8, 2019
- Adding cover images to your Gatsby blog October 20, 2019
- Migrating from Jekyll to Gatsby September 30, 2019
- Styling markdown posts with Tailwind CSS in GatsbyJS August 31, 2019
- Allowing only specified users to access Cloud Firestore July 31, 2019
- Create React App, Emotion, and Tailwind CSS starter app June 30, 2019
- Keeping Application Insights Costs Under Control May 31, 2019
- Should I Automate It? April 30, 2019
- Understanding space usage in Azure Monitor logs March 31, 2019
- Auto scale down all Event Hub namespaces with Azure Functions February 28, 2019
- Overhead of Event Hub outputs with Azure Function Apps January 31, 2019
2018
- Adding caching to your PowerShell scripts December 31, 2018
- SQL Managed Backups and Operating System Error 87 November 16, 2018
- Resumable Online Index Rebuilds - SQL 2017's Silver Bullet November 3, 2018
- Mitigating SERVICE_BROKER_WAITFOR_MANAGER latch waits October 15, 2018
- Saving and reporting on Pester Infrastructure test results in Log Analytics September 23, 2018
- Getting started with Log Analytics and PowerShell logging August 26, 2018
- Troubleshooting a slow application with Application Insights August 5, 2018
- Ensuring your Describe Tags are unique in Pester tests July 21, 2018
- Adding Pester tests to a PowerShell module and scheduling CI with AppVeyor June 25, 2018
- Setting sp_configure values with SQLChecks May 31, 2018
- Cleaning up database mail profiles and accounts April 24, 2018
- Better expenses with Monzo and PowerShell April 22, 2018
- Improving database Pester tests - per-database checks April 8, 2018
- Pattern - SQL Server as a shared cache for expensive stored procedures March 21, 2018
- Partitioned Clustered Columnstores - Mind your deltastores! March 10, 2018
- Keeping a work journal with VS Code February 28, 2018
- Service Broker, Temporal Tables, and the 'Data modification failed' error February 17, 2018
- Changing the owner of an SSRS subscription with PowerShell January 24, 2018
- SQLChecks v1 Released January 7, 2018
2017
- Visualising stored procedure call trees with SQLSpelunker December 23, 2017
- Auto deflating Event Hubs with a function app December 10, 2017
- Using the SQLChecks library for SQL Server configuration management December 3, 2017
- Simplifying alert configuration in the OMS to Slack function app November 8, 2017
- Getting funnel metrics right with Power BI when applying filters October 31, 2017
- Troubleshooting an SSRS slowdown - portal delays, PREEMPTIVE_OS_LOOKUPACCOUNTSID, and bad plans October 21, 2017
- Caching replica state to eliminate HADR_CLUSAPI_CALL waits on dm_hadr_availability_replica_states October 4, 2017
- Creating recruitment funnel metrics in Power BI September 10, 2017
- View currently executing tasks in tsqlScheduler September 3, 2017
- Building an OMS metric alert to Slack bridge with Azure functions August 29, 2017
- Migrating function app scripts to a class library August 23, 2017
- Monitoring disk, CPU, and memory with OMS August 21, 2017
- Analysing blob storage metrics with Power BI August 12, 2017
- Building better OMS alerts with function apps August 6, 2017
- Using the SQL Infrastructure Tests repo in your environment July 9, 2017
- Checking SQL Agent job ownership with Pester April 22, 2017
2016
- What makes an excellent database engineer? October 9, 2016