All blogs / Engineering management / careers
Dean Hume's Blog
I write about technical leadership, game development, developer tools, and building effective engineering teams.
Engineering management / careersGame developmentAI / MLJavaScript / TypeScriptEngineering blogs
- Posts
- 215 from 12 May 2011 to 19 Oct 2026
- Posting
- monthly (19 in the last year)
- Kind
- personal blog
- Feed
- https://deanhume.com/rss/
2026 16
- Deliberate Practice and Continuous Improvement in Software Teams
- OAuth 2.0 vs OpenID Connect: What's the Difference and Which Do You Need?
- A Modern Guide to Using OAuth 2.0 with Node.js
- How AI helped me get my website to a perfect Lighthouse score
- Prompt-Driven Development: Building with GitHub Copilot Coding Agents
- What a Technical Program Manager actually does
- Why Short AI Coding Prompts Can Cost You More Time
- Why Readiness Should Be a Habit, Not a Final Gate
- A Maturity Matrix for Game Development
- As Engineering Teams get smaller, is the Technical Program Manager the missing piece?
- Meeting Notes - A Free Desktop App for Tracking 1:1s
- Building a Custom MCP Server with Node.js
- Technical Skills Every Technical Program Manager Should Learn in 2026
- Supercharge Your Clipboard with PowerToys Advanced Paste 📋
- How I Use PowerToys Workspaces to Switch Contexts in Two Clicks 🫰
- Staying Technical as a Technical Program Manager
2025 5
- Backup Buddy: A Simple Tool to Backup Your Website Content
- From Crash to Resolution: A Practical Guide for Xbox & Windows Developers
- A Modern Guide to Using OAuth 2.0 with C# and Visual Studio Code
- HTML Minifier: A 12-Year Journey Building and Maintaining an Open Source Tool
- Best Practices for Handheld Gaming Development
2024 1
2023 1
2022 3
2021 1
2020 3
2019 2
2018 11
- Determining Service Worker Support for your Site
- Tips for setting up a Ghost blog on Amazon AWS EC2
- Software Team Maturity Matrix
- Dynamic resources using the Network Information API and service workers
- Getting started with the Ambient Light Sensor
- Progressive Web Apps - Book Giveaway - Results
- How to display a "new version available" for a Progressive Web App
- Progressive Web Apps - Book Giveaway
- Service Workers can save the environment!
- Converting a Ghost blog to a Progressive Web App
- Lessons learnt: Leaving an organisation
2017 15
- Progressive Web Apps - My new book is available!
- Guest Posts and Advent Calendars
- Progressive Web Apps - Podcast
- Book Review: The New CSS Layout
- How much storage space is my Progressive Web App using?
- Lazy loading images using Intersection Observer
- Getting Started with Workbox: JavaScript Libraries for your next Progressive Web App
- Persistent Storage API: Building for the offline web
- A BIG list of Progressive Web App tips & tricks
- I'll be speaking at Fluent Conf 2017
- Shape Detection API: Detecting barcodes, faces and text inside an image
- Experimenting with the Server Timing API
- Getting started with the Web Share API
- Testing Service Workers locally with self signed certificates
- I'm writing a book - Progressive Web Apps
2016 19
- 5 awesome Progressive Web Apps worth exploring
- Getting Started with HTTP/2 and Server Push
- A simple, client-side approach to measuring Speed Index
- Book Review: ReWork
- Image Beast - My 10 K Apart Entry
- How I built a Progressive Beer app
- Book Review: Business for Punks
- A Basic Guide to Background Sync using Service Workers
- Ten Things you didn't know about WebPageTest.org
- CPU throttling using Chrome Developer Tools
- Book Review: Leading by Sir Alex Ferguson
- A basic guide to Firebase for the web
- How to Identify Any Web Font Using Chrome DevTools
- I'll be speaking at Velocity Conference 2016
- Service Workers: Save your User's Data using the Save-Data Header
- How I built buildingstartupteams.com
- I'm Writing a Book - Building Great Startup Teams
- Whats your Favourite Algorithm?
- Create a really, really simple offline page using Service Workers
2015 21
- Getting started with the Service Worker Toolbox
- I'll be speaking at the Chrome Developer Summit 2015 Livestream
- Service Workers: Dynamic Responsive Images using WebP Images
- How to customize your Search Profile in Google
- I'll be speaking at OSCON 2015
- A Basic Guide to the Fetch API
- Push Notifications on the Web - Google Chrome
- Faster Mobile Websites - Slides
- Responsibly harnessing the power of Prefetch using Google Analytics
- Optimising Google Fonts for Fast Load Times
- Improved Compression Ratios Using Zopfli
- Chrome Internal URLs: The Door to Narnia
- Good Engineering Manager / Bad Engineering Manager
- I'm a Google Developer Expert!
- I'll be speaking at UpFront Conference
- Animate Comment Nodes in the DOM
- I'm Contributing to a Smashing Magazine Book - A Career On The Web
- A Basic Guide to Contributing on Github
- Web Typography using Web Fonts
- Running Selenium Tests using Node.js
- HTML5 Charts using Chart.js
2014 19
- Mozinar: 8 Simple Steps towards a Super Fast Website
- Free Icon Packs for Developers - Part 2
- Quick Tip: Create Data URI's using Chrome
- I'll be speaking at Apps World Europe
- The ASP.NET MVC HTML5 Toolkit needs your help!
- Getting started with the Picture element
- My Favourite Talks at Velocity Conference New York 2014
- HTTP vs HTTPS performance comparison
- Convert JSON to a C# Class
- I'll be speaking at Velocity Conference New York 2014
- What is the difference between Build and Rebuild in Visual Studio?
- Loading CSS Asynchronously
- Content Delivery Networks: Which one is right for you?
- The Ultimate Image Optimization Cheat Sheet
- Visual Studio - Why should I remove unused references?
- Automatically removing unused CSS using Grunt
- Validating email addresses in .NET - Handy Tip
- Remove unused CSS in your Web Application
- Extending System.Web.Optimization
2013 22
- IIS - Resource interpreted as Font but transferred with MIME type application/x-font-woff
- Working with multiple Web.Config files
- Velocity Conference Europe 2013 is a wrap!
- I'll be speaking at Velocity Europe 2013
- Improved tracking with the <a ping> attribute - HTML5
- Fast ASP.NET Websites Competition - Results
- Slides - Interviews: Stand out from the Crowd
- A Simple HTML Minifier for ASP.NET
- Fast ASP.NET Websites Book Giveaway
- Get the number of users that are online using SignalR
- Fast ASP.NET Websites has been released!
- ASP.NET MVC HTML5 Toolkit Update - August 2013
- ASP.NET Release Checklist
- Guide to configuring custom domain names for a Windows Azure website
- Web Page Performance - Profiling paint times
- The "ideal" sprint length
- WebP - Advanced image optimization using ASP.NET MVC
- Twitter bootstrap typeahead and ASP.NET MVC - Key/Value pairs
- Free icon packs for developers
- The Google PageSpeed API & MVC 4
- Frontend Single Point of Failure
- I'm writing a book! Fast ASP.NET Websites
2012 15
- How to disable Flash in all browsers
- .NET Caching - File Dependencies
- The Five Whys
- Improve Page Load Times With DNS Prefetching
- Velocity Conference Europe 2012 - Roundup
- Visual Studio 2012 - A week in perspective
- Net Magazine Article
- Hidden Gems inside .Net Classes
- Lazy Loading Social Sharing Buttons
- HTML5 Asynchronous JavaScript
- A Basic Guide to Building Chrome Extensions
- Running multiple browsers in one test run with Selenium
- Selenium WebDriver - Using a Headless Browser in .Net
- Dynamic Favicons using HTML5 Local Storage and TinyCon
- MVC Asynchronous Controller : The Basics
2011 11
- MVC and HTML5 Web Workers
- Web.config Transformation Features in Visual Studio 2010
- Selenium Webdriver - Wait for an element to load
- Rendering PDFs with pdf.js using HTML5 and JavaScript
- Memcached for C# - A Walkthrough
- MVC Data URI HTML Helper
- Responsive Design and CSS3 Media Queries
- MVC and the HTML5 Application Cache
- C# Parallel Invoke
- Automatic Resource File Translation with the Microsoft Translator Service
- Measuring Web Page Performance with Selenium 2 and the Web Timings API
Undated 50
- Microsoft translator api
- Explicit interface usage in c
- Asp net mvc html5 toolkit latest updates
- Selenium 2 get number of rows in a table
- Mvc 3 and remote validation
- Asp net mvc html5 toolkit is now available as a nuget package
- A simple guide to using oauth with c
- Capturing web page screenshots with selenium 2
- Automated testing with selenium webdriver and nunit
- A year of blogging
- Basic introduction to writing unit tests with moq part 3
- Custom odata api using wcf data services
- Proxy authentication helper class3ttl3d13
- Http head request benefits usages
- Jquery mobile optimizing your website for smartphones and tablets
- Smushmysite image optimization tool update
- Smushmysite image optimization tool smush it
- Object caching net 4
- Web analytics determining bounce rate
- Mvc and the google visualization api datatable
- A simple guide to sql compact 4
- Mvc experiment an alternative to captcha
- Asp net mvc html5 toolkit
- Test your mvc routes with moq
- Professional asp net mvc 2 book giveaway result
- Professional asp net mvc 2 book giveaway
- Html5 input types
- Compiling linq queries for improved performance
- Basic introduction to writing unit tests with moq part 2
- Set up iis 7 to run a secure site locally https
- Lazy loading images with jquery
- Mvc google maps htmlhelper dynamic maps
- Rich snippets and structured data rdfa
- Measuring the performance of built in net classes
- Useful sql script to generate countries
- Basic introduction to writing unit tests with moq
- Postmark email delivery for web apps
- Useful lambda expressions
- Improving the performance of your mvc application
- Rendering a usercontrol as a string for webservices
- Vote for your favourite net di ioc framework
- Toastify hotkeys for spotify
- Mvc helper google charts
- Developing applications for windows 7
- Create barcodes and pdfs in c with itextsharp
- Minify javascript files automatically with a t4 template
- Dot less and minifying css
- Custom error pages in mvc
- Bin deploying asp net mvc
- Mvc routing 404 errors when directing away from home page