23 September 2026
We used GitHub Copilot coding agents to build an app across different time zones. The AI wrote the code, but prompts, tests, guardrails, and pull requests made it software development rather than vibe coding.
14 September 2026
What does a Technical Program Manager actually do? A look at the gaps they fill, the decisions they chase, and the reactive vs proactive split.
3 September 2026
Ever tried to save time by keeping a prompt short - only to spend the next ten minutes answering follow-up questions because the AI didn't have what it needed? Yeah, me too. I recently came across a really interesting post from the GitHub Copilot team about making AI coding
3 August 2026
Quality isn't decided in the final review. The teams with the smoothest launches built it through daily habits, long before anyone thought about a release date.
21 July 2026
A few years ago, I wrote about using a Maturity Matrix to assess software engineering teams. The idea was simple - what does a great team look like, and how honestly can you measure yourself against that picture? Since then, I've moved into the gaming industry. Anyone who has taken
29 June 2026
As AI shrinks engineering teams and the EM role splits in two, the Technical Program Manager could be the most overlooked answer hiding in plain sight.
29 June 2026
Meeting Notes is a free offline desktop app for 1:1s. Organise notes by person, tag topics, and transcribe meetings on-device with Whisper.
4 June 2026
Ever wished your AI assistant actually knew your stuff? Your files, your schedule, or even a custom data source? That's exactly what the Model Context Protocol (MCP) makes possible. MCP is an open standard for connecting AI assistants like Claude to external data sources and tools. Think of it
5 May 2026
The technical skills every TPM needs in 2026 from cloud basics to AI agents and governance. A practical guide to staying close to the tech.
28 April 2026
PowerToys Advanced Paste transforms your clipboard - paste as plain text, Markdown, JSON, extract text from images, and reformat content with AI.
12 March 2026
Tired of arranging windows every morning? PowerToys Workspaces launches your ideal Windows desktop management setup with two clicks đź«°.
18 February 2026
Learn practical ways Technical Program Managers can stay technical - daily habits, internal engineering practices, and hands-on routines that keep skills sharp while leading programs at scale.
1 December 2025
Have you ever wanted to create a backup of your website or blog? Maybe you're migrating to a new platform, or perhaps you just want a portable archive of your content that you can read offline. I've previously experienced issues with this site going down and I wanted
24 November 2025
If you’ve ever had an app crash at the worst possible moment, you’ll know how frustrating it can be - both for developers and players. Recently, I wrote an article for the Microsoft Developer blog that dives deep into this exact challenge: how to diagnose and resolve crashes effectively
3 November 2025
Master OAuth 2.0 in .NET 9.0! This tutorial covers using OAuth 2 to acquire tokens and access Microsoft Graph user data.
30 October 2025
Discover the 12-year journey behind HTML Minifier an open source tool that helped developers optimize web performance and reduce page load times.
16 June 2025
If you've ever played a game on a modern handheld device, you'll know how much fun it can be. I recently wrote an article on the Microsoft Game Dev Blog about some key recommendations to help you craft exceptional gaming experiences for handheld devices. Please head over to
15 February 2024
Over the past few months, I've been experimenting with Azure's Text-to-Speech service. It is a super powerful API that enables fluid, natural-sounding text to speech that matches the tone and emotion of human voices. Whether you are building an app or a game, Text-to-
4 October 2023
If you've recently ventured into the world of Azure Functions, you're likely familiar with the versatility they offer when it comes to scheduling tasks. In this guide, we'll delve into using Azure Functions' Time Trigger function with Node.js and Visual Studio Code, uncovering some important nuances
18 August 2022
In this article I go into detail about how I hooked up a Raspberry to continually track and monitor the progress of my beer all whilst graphing it out to another application. It gets a little geeky!
1 April 2022
It's been almost four years since I started collecting data on Service Worker usage and support on this website and in this article I show the details.
14 March 2022
I’m always on the lookout to improve both myself and my team's daily work, so when I came across a book entitled Leading Virtual Teams by the Harvard Business Review, it really caught my eye.
7 January 2021
I was quite surprised to found out that I was greeted with an annoying HTTP 503 error on my site over the Christmas period. After taking a closer look at the logs on Amazon, it turns out that I had actually run out of disk space on the instance.
3 August 2020
During my morning coffee session, I came across the book - Accelerate: The Science of Lean Software and Devops, and the title of the book instantly drew me in.
26 March 2020
Behind the scenes, I have been working on a new book with my EA colleague Jo Root. I am super excited to announce that The People Manager: A Guide for the First Time Manager has been published! This is a personal project that has been a year in the making.
21 January 2020
In my day to day role, a big part of what I do involves hiring and assessing Software Engineers. It might not be to everyone’s liking, but I really do enjoy the interview process. It’s a great chance to meet new people and I often learn new things
19 March 2019
I am always looking for ways to build faster, slicker web pages. Where applicable, I’ll use great new browser features such as service workers, HTTP/2 and improved compression, just to name a few. But what if I told you there was a way to build even faster web
4 February 2019
In my spare time I enjoy a little bit of homebrewing. What first started out as an experiment with a beer kit, soon turned into a geeky fascination with the science behind brewing beer. I am one of those annoying people that sniffs the beer and comments on the aroma
8 November 2018
Have you ever thought about building a Progressive Web App or even adding a service worker to your website? Perhaps you’ve considered it, but weren’t too sure about whether or not your users were on browsers that supported these features. Would they even benefit from their features? Speaking
26 October 2018
After a long overdue refresh, I have recently moved this blog to Ghost CMS. Overall, I have been very impressed. Ghost is easy to use as an editor, quick to make updates, and the Ghost team are constantly pushing out updates - which is great considering that it is completely open
10 October 2018
Whether you lead a small team of developers, a tech startup or a huge department, it’s important that you constantly strive to improve the processes and tools that you use. If things are going really well, it’s easy to become confident in your abilities and overlook the need
30 July 2018
The Network Information API allows developers to determine the connection types and the underlying connection technology that the user agent is using. In terms of web performance, this brings a whole new level to the way that we build web pages.
3 July 2018
The Ambient Light Sensor API provides developers with the means to determine ambient light levels as detected by the device’s main light detector. This information is available to developers in terms of lux units.
5 June 2018
Firstly, I'd like to say a massive thank you to everyone who retweeted and liked the tweet for this giveaway. Unfortunately, there can only be a few winners for this giveaway. I can reveal that the following people were chosen at random using random.org to generate the results:
16 May 2018
In this article, I will show you how to add a notification to your site and display it each time that there is a new version of the service worker available. You’ll also learn how to refresh the page, so that the user is up to date and has the latest version of any cached files.
30 April 2018
"Progressive Web Apps" has recently been released, and if you haven't already gotten your hands on a copy, I have 5 free copies to give away to lucky readers.
24 April 2018
Service workers allow you to cache resources on the user's device when they visit your site for the first time. Fewer HTTP requests mean less CPU usage and less energy consumed.
29 March 2018
In this article, I am going to take you through the different steps required to get a Ghost blog up and running as a Progressive Web App (*hint: it’s easier than you think!*)
1 March 2018
In my experience, leaving an organisation is a big deal. Given the amount of time we spend at work, we ultimately end up spending more time with our colleagues than our loved ones! If you’ve been with an organisation for a while, you’ve probably worked hard to establish
14 December 2017
I am super excited to announce that my latest book has been published and is available to purchase! A few years ago, I was sitting in a conference room listening to Google’s Alex Russell talk about Service Workers and how they were the next big thing that was going
5 December 2017
This year, I’ve been lucky enough to write two articles for two great “advent calendar” style sites. I try to write for the Performance Calendar every year around this time and this year I’ve written about progressive image loading using Intersection Observer and SQIP. In this article, I
18 October 2017
I was lucky enough to be interviewed recently by Matthew Groves on his podcast Cross Cutting Concerns where I talked about Progressive Web Apps. We discussed the basics of Progressive Web Apps and the different tools and techniques available to web developers. Matthew has had some pretty cool speakers on
12 October 2017
I’ll be the first to raise my hand and admit that my CSS skills are about as stinky as the stinkiest egg sandwich. I just about manage to get by and normally rely on frameworks such as Material Design Lite or my colleagues for advice. This is why I
20 September 2017
If you had told me when I first start developing many years ago, that I’d be able to build websites that work on a mobile device and even respond when offline - I’d be blown away! One of my favourite features of Progressive Web Apps is the ability to
8 August 2017
If you haven’t had the chance to watch it yet, Paul Lewis put together an awesome video series that demonstrates how to build a media player alongside some of the great features of Progressive Web Apps. There are a series of videos on YouTube that take place over a
27 July 2017
When it comes to building Progressive Web Apps, my favourite library has to be the Service Worker toolbox. I’ve previously written about this great library and how it can make life a lot easier for developers by removing boilerplate code and using proven caching strategies that help you build
26 June 2017
One of my favourite features of service workers is that they give you the ability to build web apps that work completely offline. Using service workers, you can write code that will cache any resources that a user might require, so that they can be retrieved at a later stage,
5 June 2017
Lately I’ve been giving a lot of talks about Progressive Web Apps. Towards the end of the talks there is normally a Q & A section where the audience asks questions or proposes ideas. Often during these Q & A sessions, I get asked really useful questions that are worth sharing
23 May 2017
I am very excited to announce that I'll be presenting at this year's Fluent Conference in San Jose. It is my first time at Fluent Conference, and I am very excited to be presenting. Fluent Conference 2017 will take place on the 19th - 22nd June, and I’ll
22 May 2017
Did you know that your device has the amazing ability to detect different shapes in images? Right now, whether you are on a mobile, tablet or desktop, it is capable of detecting faces, barcodes and even text in an image. Pretty amazing, huh?! According to the HTTP archive, images make
30 March 2017
You may be familiar with the saying “If you can’t measure it, you can’t improve it”. This saying couldn’t be more true when it comes to web performance. In our browsers today, we already have great APIs such as Navigation Timing and Resource Timing built-in, which
22 February 2017
If you’ve ever built a website and needed the ability to share to a social network, you’ll know that it’s not as easy as it first seems. In order to add basic share functionality, you often need to include a third party script and become familiar with
26 January 2017
Service workers are awesome. They provide us with powerful functionality to intercept and handle network requests, cache resources, send useful push notifications and so much more. Because service workers have this ability to intercept network requests, it’s essential that they run over HTTPS. In the wrong hands, a malicious
24 January 2017
I am very proud to announce that I am writing a new book entitled Progressive Web Apps. I started working on it during late 2016 and the book is shaping up nicely! I will be the first to admit that I am a big fan of Progressive Web Apps, and
30 November 2016
Progressive Web Apps (PWA’s) are truly changing the way we use the web today. Push notifications, offline web pages, and super fast load times are just a few of the great features that developers are using to build Progressive Web Apps. Quite often I find myself visiting a website
24 October 2016
HTTP/2 is awesome. When we enabled HTTP/2 on the settled.co.uk website, we noticed a 10% improvement in the page load times across the site. We didn’t change any code, or even make any web performance tweaks - we made the switch and noticed the results immediately.
21 September 2016
When I first started learning about web page performance, I always use to focus solely on the time that it took a page to load. The excitement of seeing a web page load in an instant kept me coming back for more. Whilst web page load time is an important
15 September 2016
I'm currently reading a booked called ReWork, by the authors Jason Fried and David Hansson. They are two entrepreneurs that have created well known software products such as Basecamp, Highrise, Backpack and Campfire. If you've ever used these products before, you'll know how easy they are to
6 September 2016
This year, An Event Apart and Microsoft are teaming up to bring you 10 K Apart. It's a pretty cool competition with a challenge to build a compelling web experience that can be delivered in 10 KB and works without JavaScript. Believe me - it's not as easy as
2 August 2016
I like beer. In fact, I like it so much that I decided to build a web app that showcases all the amazing different types that are out there! I've called it Progressive Beer. I've been experimenting a lot with Service Workers lately, and building a web application
25 July 2016
I recently found myself stuck in a train station waiting for the next train. With some time to kill, I wandered into one of the book stores near the platforms. As I was casually scanning the different books on the shelves, one book in particular jumped out at me - it
19 July 2016
It's been a while since I've guest written on another website. I normally find myself writing solely for this site, but I recently teamed up with Nicolás Bevacqua and his fun blog site Ponyfoo.com. If you've not heard of ponyfoo before, I thoroughly recommend checking it
5 July 2016
That's a pretty catchy title for an article, right?! Now that I've lured you onto this page, I am going to do my best to deliver the goods! Without a doubt, WebPageTest is one of my favourite web performance testing tools. It's completely free to use and
28 June 2016
I recently gave a tutorial at Velocity Conference in Santa Clara about some of the amazing features that lie within the browsers we use everyday. As web developers, we are pretty lucky to have such awesome developer tools at our disposal. After the tutorial was complete, a few people asked
28 June 2016
I have always had a fascination with successful teams. Whether it's a business team, a military team or even a sports team, I find it intriguing to know what makes them tick. Regardless of what the team is involved in, finding the formula to their success is the secret
19 May 2016
I've recently been tinkering with Firebase, and I have to admit, I am really impressed. I was a bit sceptical at first, but when I starting experimenting with the code samples on the site I was blown away. If you haven't heard of Firebase before, it is a
11 April 2016
Have you ever visited a website and wondered what web font is being used? I often visit websites with great typography and end up digging through the CSS in my developer tools until I find what I am looking for. There are actually a few plugins and extensions that you
14 March 2016
I am very excited to announce that I'll be presenting at this year's Velocity Conference in Santa Clara along with my partner in crime Robin Osborne. I've been lucky enough to present at Velocity Conference before, but this will be my first time at Santa Clara. Velocity
8 March 2016
I was recently travelling abroad when I urgently needed to get some information from the website of my airline. I was on a sketchy 2G connection that took forever to load the page, and eventually I ended up giving up completely. I was also paying a fortune for this daily
2 March 2016
If you follow this blog, you may have noticed that I've been working on a side project for the past 8 months or so. I'm really passionate about building and growing teams and I'm lucky enough to get to do this in my day job. As a
22 February 2016
I am very excited to announce that I am writing another book. I've been secretly working on this project for the past 8 months, and finally wanted to share it with you. If you are a regular reader of this blog, you will be familiar with most of my
16 February 2016
Whether you've studied a computer science related subject or not, complex algorithms can seem quite daunting. You know, the ones you occasionally get asked and have to learn before going into an interview! It might feel like you only really learn these for an interview, but when you start
25 January 2016
Let's imagine for a second that you are on a train. The train is cruising through the countryside and you are reading an awesome article on the web using your mobile device. At the same moment that you click on a link to view more details, the train suddenly
17 December 2015
I've been playing around with Service Workers a lot lately. I am super excited about the great features that they bring to the web. Offline pages, push notifications and flexible caching are just a few of the great features that they bring to the table. Using these built-in
10 November 2015
The Chrome Developer Summit is a fantastic event. If you are a web developer that is interested in discovering more about Google Chrome, it's a great chance to learn about the the newest and latest features for the upcoming year. The schedule is packed with great speakers and will
2 November 2015
Images play an important role on the web today. Imagine a world without images on our web pages! High quality images can really make a website stand out, but unfortunately they come with a price to pay. Due to their large file sizes, they are bulky to download and result
7 October 2015
If you've ever searched for an organisation or person using Google, you might have noticed that a few of the top results show up with extra information in the sidebar. This additional information often contains things such as logos, social profiles and even phone numbers. For example, let's
11 September 2015
I'm very happy to announce that I will be speaking at OSCON 2015 with my good friend Robin Osborne. We will be presenting a tutorial entitled "Automating web performance" which will run through a step-by-step guide to web performance and show you how to automate as much
19 August 2015
As web developers, we often need the ability to retrieve data from the server in order to update our applications asynchronously. Traditionally this data is retrieved using JavaScript and the XMLHttpRequest object. A simple example of this might look something like the code below. In the code above, there are
3 August 2015
A while ago I built a fun side project on Github to keep a collection of typography links and tools that caught my eye. There are a number of people that follow the project on Github, but every time I make a change or add a new link, I normally
22 July 2015
Earlier this year I was lucky enough to get the chance to present at UpFront Conference in Manchester. This was the inaugural year for the conference, and it was great to be apart of this event. A few people have asked about the slide deck and wanted to know more.
6 July 2015
If you browse the web today, there are many articles that explain what browser pre-loading is and how to use it, but very little explain how to actually use this feature in the real world. The ability to prefetch resources is powerful, but if used incorrectly it can turn
10 June 2015
Using web fonts can be a great way to improve the look and feel of your website. I love tinkering with different font combinations on websites and seeing the changes they make. Unfortunately, adding web fonts to your site adds extra overhead to your site and can often slow your
1 June 2015
Compressing files can be a very effective way of reducing their size as they are transferred between the server and a user's browser. Most modern browsers work effectively with compressed files and use lossless compression formats such as Gzip, Deflate or Zlib. In order to compress a file, an
13 May 2015
Did you know that Chrome has a list of internal pages that allows you to see advanced flags and settings? There are some hidden gems inside the Google Chrome internal pages that give a useful insight into the hard work that the browser is doing behind the scenes. If you
7 May 2015
During my daily commute into the office, I like to alternate between reading the newspaper and a good book. Lately I’ve been reading a book entitled “The Hard Thing about Hard Things” by Ben Horowitz. It’s a great insight into the trials and tribulations of running your own
30 April 2015
I am very proud to announce that as of today, I am a Google Developer Expert. If you haven't heard of Google Developer Experts before, they are a global network of experienced product strategists, designers, developers and marketing professionals that actively support developers and startups. While this doesn't
22 April 2015
I’m proud to say that I will be speaking at UpFront Conference in Manchester, UK on the 19th of May. UpFront Conference is in it’s first year and is billed as “a front-end conference for anyone who makes for the web”. The speaker line-up is packed
10 April 2015
If you visit some of the most popular websites on the net today and view the source of their HTML, you might be surprised with what you find. There are often hidden gems and messages in the form of ASCII art embedded in their HTML comments. Troy Hunt recently wrote
7 April 2015
I am proud to say that I have been involved with and contributed to the latest Smashing Magazine book entitled A Career On The Web: On The Road To Success, this book provides a number of tips and best practices to guide you through the different stages of the job
30 March 2015
I have a few open source projects that I host using Github. People often have great suggestions to improve the project, and the issues they report constantly shape and help build a better project. Unfortunately there are people who are sometimes reluctant, or unaware of how easy it is to
19 March 2015
I love web typography! Only a few years ago, the ability to add custom fonts to a website seemed impossible. Fortunately, due to modern browsers we are now able to create beautiful websites using web fonts. While I have to admit that I am no designer, and struggle with CSS
16 February 2015
Browser automation is a great way to automate and test repeatable tasks in the browser. I've always been interested in browser automation and testing using tools such as Selenium. If you are looking for a way to ensure that your website runs as expected in many different browsers and
7 January 2015
Let's face it - everyone loves a good pie chart! Using charts makes information much easier to visualize. It is easier to see a pattern in a chart, but much more difficult when looking at raw data. In fact, there are loads of different web based charting solutions available to
16 December 2014
Search Engine Optimization (SEO) plays a major part in the way we use the web today. SEO techniques can make your website easy for both users and search engine robots to understand. I've long been a fan of the Moz blog and their free SEO tools that can help
10 December 2014
A while ago I created a blog post with a list of free icon packs for developers that can be easily used on any website. The web is packed with loads of great icons, but they seem to be all over the place! I thought it would be handy to
17 November 2014
Here's a quick tip to use Google Chrome's Devtools to convert an image to a Data URI.
5 November 2014
I've been fortunate enough to be asked to present at this year's Apps World Europe in the HTML5 and mobile web track. The title of the talk is called Making your site fast - overcoming the speed of the mobile web and is focussed around the web performance of
23 October 2014
The ASP.NET MVC HTML5 Toolkit has been running as an open source project since August 2010. It contains a rich set of controls that you can use to build ASP.NET websites using HTML5. If you've never used it before, it can be a great way to take
21 October 2014
Responsive web design is awesome. It's changed the way we serve content to our users and has allowed us to offer a tailored experience to different screen sizes. It is really flexible and with a little bit of knowledge, anyone can get started. While this flexibility is great, it
22 September 2014
After a long flight and a little bit of jetlag, I've arrived back in London after visiting New York for Velocity Conference 2014. In typical Velocity fashion, the quality of the talks have been amazing and there have been a few highlights that are worth sharing. I thought it
12 September 2014
Google recently announced that they will be starting to use HTTPS as a ranking signal in their search algorithms. This means that websites that serve traffic over HTTPS with secure, encrypted connections will be slightly favoured over those websites that don't. During Google I/O, there was a big
26 August 2014
As a web developer, I regularly write code to consume and create data in a JSON format. It's a simple and easy way to represent data as a string and if you work with JSON every day, you'll know how much easier it is to use than XML.
26 August 2014
Velocity Conference is without a doubt one of my favourite conferences of the year. It's the conference where different topics such as DevOps, web operations, web performance, and mobile explode into being. Packed with some of the best speakers in the industry; it's a great place to learn
27 July 2014
If you are a developer that uses Visual Studio as your IDE, you will be familiar with the Build and Rebuild tasks. I regularly write code in Visual Studio and am used to hitting the Build command when I am developing, but have often wondered what is actually happening under
3 July 2014
When it comes to web page performance, the size and weight of every resource on the page is important. Large JavaScript and CSS files can slow down your page load times and frustrate your users. There are a number of techniques for loading JavaScript asynchronously and many different techniques for
11 June 2014
This article originally appeared in issue 232 of net magazine. It also appeared on their site, but as they moved domains and lost the content, I thought I'd post it on here. I hope you find this article useful! Imagine if I told you that you could drastically increase
30 May 2014
Images play a massive role in modern web development today. They comprise of around 62% of the average page’s total payload, which is an astonishing amount! In terms of web page performance, images can be a huge performance roadblock, but they don't have to be. Simple image optimization
30 April 2014
When it comes to writing code, I like everything to be neat and follow a certain set of coding guidelines. I like to adhere to the principle that I always code as if the next person who ends up maintaining my code is a violent psychopath who knows where I
5 March 2014
I have previously blogged about the importance of keeping your web pages lean and the impact that unused CSS can have on your page performance. Apart from causing cluttered files, unused CSS can can slow down page load times due to the unnecessary weight of the file. Google Chrome developer
26 February 2014
If you've ever written any code that sends emails before, I'm pretty sure that you've had to validate the email addresses that are entered by users. Email address validation can be tricky at the best of times and with international domain names in email addresses, almost anything
24 February 2014
I've previously blogged about my CSS skills and to be honest - they suck! I normally resort to using pre-rolled frameworks such as Twitter's Bootstrap, Foundation or TopCoat. These frameworks are really useful and their components help you get the basics of your UI up and running in
27 January 2014
The ASP.NET framework is packed with loads of great features and with each release it seems to get better and better. One of my favourite features is the bundling and minification classes that optimize JavaScript and CSS files in a website to reduce file size and improve page performance.
9 December 2013
If you take a look at websites such as Medium, SquareSpace and Information Architects, it's clear that great typography can really enhance the look of a website. Web fonts are a great way to introduce typography to your website and can be added in a matter of minutes. Adding
21 November 2013
When dealing with multiple development environments, it can often be quite tricky to keep track of the different environment specific settings that you may have in place. Fortunately, Visual Studio has a handy feature that allows you to have more than one Web.Config file for different environments. I have
20 November 2013
Another year, another great conference. This year's Velocity Conference in Europe was packed with loads of great talks and tutorials. Velocity Conference is three great days of concentrated focus on the key aspects of web performance, operations, and mobile performance. If you are interested in web performance or developer
1 November 2013
Velocity Conference is my favourite conference of the year. There is always a host of great speakers and it's packed with awesome web performance topics. If you aren't familiar with Velocity Conference, it is three great days of concentrated focus on the key aspects of web performance, operations,
28 October 2013
As I sit down at my desk each working morning, the first thing I do is fire up the ever faithful feedly and read through the days' tech news with a cup of coffee. During my usual morning reading, I came across this interesting update from Ilya Grigorik on Google+
24 October 2013
The results are in! Thank you to all the people who entered the competition and tweeted about the book. The competition closed on the night of the 22th October 2013, and the number of entries was fantastic. I can reveal that the following people were chosen at random using random.
21 October 2013
I've spent a lot of time in interviews during my career as a software developer. Whether it involves being interviewed, or spending time interviewing new candidates, the career searching process has always interested me. I recently wrote an article for Smashing Magazine which talked about the different steps that
4 October 2013
🚀🚀 Update: Read an updated article about this tool! Head over to the following link. 🚀🚀 I have previously blogged about the importance of serving your users web pages with speedy load times. Poor web performance equals lost revenue and customers. As you continue to build and improve on the web performance
23 September 2013
Fast ASP.NET Websites has just been released, and if you haven't already gotten your hands on a copy, I have 3 free copies to give away. Fast ASP.NET Websites is a practical, hands-on guide to create faster, more efficient ASP.NET sites and applications. This book
10 September 2013
In a recent experiment, I was looking for a way to retrieve the number of online users in an ASP.NET application. There are a number of techniques that can be applied, such as incrementing based on ASP.NET session state, or using Google Analytics to keep track of active
30 August 2013
A rather large and suspicious looking box arrived at my house yesterday. To my surprise, it was the first few copies of Fast ASP.NET websites. These have just rolled fresh off the press courtesy of Manning! If you aren't familiar with the contents of the book, it is
19 August 2013
There have been a number of major updates released with the latest version of the MVC HTML5 Toolkit. You, the community have been great, and the majority of the patches and enhancements have been added via the Codeplex site. If you aren't familiar with the MVC HTML5 Toolkit, it
11 August 2013
Whenever I work on side projects or make updates to this blog, I like to run a few simple checks to make sure that the site is ready before I release it. When working on side projects, you might not have the benefit of having someone else to help test,
24 July 2013
Creating a new website is easy and super-fast thanks to an intuitive UI on the Windows Azure portal. You can create a new website and be up and running in a matter of minutes. By default, your new site will normally have a host name that looks like yourdomain.
5 July 2013
I recently attended the Facebook Mobile Developers Conference in London. Throughout the day, there were a load of great talks, but the one that really stuck out for me was a performance talk entitled "Making m.facebook.com fast". It was all about how Facebook constantly strive to improve the
3 July 2013
Many organisations today use Scrum as a framework for managing software projects and developing applications. As a certified ScrumMaster, I have been using Scrum for over five years and have seen it run in many different companies. When implemented correctly, I have seen that Scrum can be extremely successful. However,
3 April 2013
Most modern web pages contain a lot of images. These images often make up the bulk of a web page request. According to the HTTPArchive, images make up over 50% of the average web page and if you are looking to optimize on the performance of your web page, the
26 March 2013
I suck at creating CSS. As a backend developer, I've always managed to get by with my CSS skills, but I've always been jealous of my front end developer colleagues when it comes to their ability to create beautiful web pages. Fortunately, the guys at Twitter have developed
20 March 2013
Over the years, I have started to hoard a collection of links to various free icons that I find on the net. Often, I use these icons to spruce up simple prototypes or just make my web pages look livelier. Unfortunately, I've been collecting these links to icon packs
12 March 2013
I often use tools such as Yahoo! YSlow and Google PageSpeed to profile the performance of my websites. These tools offer useful performance suggestions that will improve the speed and performance of my sites if implemented correctly. They both plug into the browser and can be run at the click
22 January 2013
A single point of failure is a part of a system that, if it fails, will stop the entire system from working. Let's look at a tool called SPOF-o-matic.
2 January 2013
Ever since I first started writing code, I've always been interested in the performance of websites and making them faster. It's amazing how a slow website can be brought to life with a few simple tweaks to your website setup. There is nothing more satisfying than seeing someone
29 November 2012
I am currently working in a team where we are replacing an older Flash implementation of a product with a shiny new HTML5 version. Quite often we find ourselves needing to disable Flash in many different browsers as we run through the testing process with the new product. I often
26 November 2012
In a previous blog post, I wrote about the built in support that .NET has for in-memory caching. It sits under the System.Runtime.Caching namespace and can be easily added to any application to give you a great improvement in performance. You can store any type of object
30 October 2012
I've been reading a book called the Lean Startup recently. It is filled with great advice and the Lean Startup is basically a business approach that aims to change the way that companies build and launch new products. Whilst reading the book I came across a chapter that dealt
17 October 2012
I'm often looking for ways to improve the performance of my websites and provide a better experience for users. Quite often you may find that your site is running efficiently and performing well. You may also have run your application through Google PageSpeed or Yahoo! YSlow and come out
7 October 2012
This week saw the return of Velocity Conference Europe to our shores. With a great line up of speakers, this conference is a gathering of hundreds of web ops and performance professionals that get together to share their ideas and expertise. Without a doubt, this is one of my favourite
20 August 2012
I am one of the lucky ones. Fortunately my company gives us a MSDN subscription and this goes a long way toward keeping up with the latest Microsoft Software. I have been eagerly awaiting the release of Microsoft Visual Studio 2012 which came out last week. I was a little
10 August 2012
An article that I recently wrote for Net Magazine is coming out in the September 2012 issue. The article talks about Content Delivery Networks and the benefits that using one can bring to the speed of your page load times. I am a big fan of the magazine, and it'
31 July 2012
Surprisingly, there are loads of great data snippets hidden inside .Net classes. If you've ever found yourself adding localization to your website, you may have come across the CultureInfo Class in .Net. I know that sometimes I have needed to get a list of country ISO codes and have
11 July 2012
Social sharing buttons play a big part on the web today. They are used to drive traffic to the site, and if done correctly can be very successful. Unfortunately, the loading of these buttons has its downsides on performance. Having many social sharing buttons on your site can slow it
31 May 2012
HTML5 has a handy little attribute called 'async'. This attribute can be used together with Script tags to asynchronously load JavaScript. No more fancy code to get your JavaScript to run asynchronously - you just need to add this to a script tag and it just works. đź’ˇ<script async src=""><script> In order to improve</script></script>
18 May 2012
Google Chrome has come a long way since it's early days. I am a big fan of the Chrome Developer tools and use it in my day to day development. There are also loads of great tools and extensions that are on offer at the Chrome store, and most
25 April 2012
The beauty of Selenium is that it allows you to test your UI against all of the common browsers out there at the moment. Writing the code to test for a test scenario is quick and easy and getting up and running with Selenium can be done in a matter
16 March 2012
If you have ever run a large suite of automated tests using Selenium WebDriver, you will know that sometimes it can take ages to complete. This coupled with different versions of browsers can be a bit of a pain. This is where Headless Browsers come in. In the simplest of
9 February 2012
I was perusing Github the other day and I came across this awesome little JavaScript library. It's called TinyCon and it's a small library for manipulating the favicon in your browser. It adds alert bubbles and changing images pretty similar to the way Gmail does. It's basically
16 January 2012
When I first saw the Asynchronous Controllers introduced in MVC 2, I couldn't wait to start playing around. I thought that it would be a really easy to get up and running with a simple example, but after searching online for a few working examples - pretty much all of
2 December 2011
Web Workers allow you to run client side scripts without interrupting the page or any other scripts that are currently running.
7 November 2011
When developing applications in Visual Studio, I normally pay a lot of attention to my Solution Explorer. However, I recently spotted something that I didn't notice before. Well, at least something that I haven't paid attention to! In Visual Studio 2010, if you click on the Web.config
27 October 2011
I am currently working on a project that uses a lot of AJAX and delayed loading of HTML elements. This means that when a page loads, the object that I am looking for might not necessarily have appeared yet. In many instances the element may only be added to the
11 October 2011
The web is full of PDFs floating around out there. How many times have you tried to open a PDF file on a machine and not had the correct software installed? It can be very frustrating. For most users out there they already have the correct software installed to view
26 September 2011
A while ago I wrote about Object caching in .NET 4. I think that the Object Caching in .NET 4 is a great tool to use for caching and literally takes minutes to get up and running. However, one of the downsides of using the System.Runtime.Caching in .NET
14 September 2011
I have recently been looking into web page performance and one of the things I came across is the Data URI scheme. When you reference an image in your HTML, the client needs to go and retrieve the image. This creates an HTTP request and adds to the time it
7 September 2011
Regular readers on this site will notice that there has been a major change on the site lately. The design of the site has changed as well as the layout. I have been playing around with the idea of Responsive design and also updating the look and feel of this
8 July 2011
HTML5 has loads of awesome features and recently I have been playing around with a feature called the Application Cache. The Application Cache is designed to allow you to run your web application offline - that is, without a network connection. A web browser that implements HTML5 offline applications will read
24 June 2011
While working through some code, I noticed a method that I have never seen before. I knew that the .Net 4 Framework had introduced a Parallel Class that helped make parallel ForEach Loops easier, but after some searching I came across the ParallelInvoke() method. So, I jumped on the MSDN
5 June 2011
On a recent project that I have been working on, we needed the application to be multi-lingual and localized for different countries. The best option for us on this project was to use resource files (.resx) and let .Net handle the rest for us. Now creating these resource files
12 May 2011
I have always been interested in measuring web performance, and especially in measuring the improvements in performance. A while ago I attended a Selenium Meetup in London and heard an interesting presentation by one of the QA guys working at Mozilla. He talked about measuring the performance of a web
15 April 2011
As the web grows, more and more international businesses are turning to the web. The demand for a multi-lingual website has never been so great. There are currently a few pay services out there that offer a translation API and also a few free ones (Google and Microsoft). One
21 March 2011
Where possible, I try and program against interfaces as much as possible. I do this because I like Interface-based programming and because I like the characteristics that it brings to the table: reusability, maintainability, and extensibility. It also allows you to effectively test your code using Mocks. Whether or
22 February 2011
HTML5 has some fantastic features available to us, and I've tried to add as many of those features as I can to this toolkit. For more information on some of the features available to HTML5 form fields, please take a look at this article. I've added quite a
17 February 2011
I was recently browsing through some of the questions on StackOverflow and came across this question. The question was around how you would count the number of rows in a table using Selenium 2 and Python. If you need a bit of a background to Selenium 2, I have written
9 February 2011
I must admit, I've been a bit of a slow starter when it comes to Asp.net MVC 3. I am an avid fan of MVC 2 and haven't really taken the time to look at MVC 3 until now. Wow - I am impressed though! There are a
1 February 2011
Great news for those of you out there that use the MVC HTML5 Toolkit - it is now available to download as a Nuget package. If you haven't already had a look at the MVC HTML5 Toolkit, please read this article for more info or visit the Codeplex site. For
24 January 2011
🚀 Update: See a modern version of this article using OAuth 2 here! 🚀 If you are a newbie to OAuth you might understand how confusing it can be at first! I started off looking at building a small application that consumed an OAuth service as a side project. I just dived
6 January 2011
There have been many times when I have run a Unit Test that has failed and afterwards I wondered where it went wrong. The ability to see what occurred on the page or how it looked at the time would be a great benefit. I've been writing a few
13 December 2010
I have recently been looking into an awesome tool called Selenium. What is Selenium? Well, it's a suite of tools that you can use to automate web application testing across many platforms. I recently attended a Selenium Users Group at the Google London Head Offices where they discussed the
9 December 2010
This has been my first year of blogging! Whew! 1 year and 42 articles later - I never thought I'd be writing this. I had always thought about starting my own blog to write some technical articles, but I just never made the time and always had an excuse not
26 November 2010
This post is the third part of a series on Mocking with Moq. If you haven't already taken a look at the first two posts on the basics of Moq, please check it out. Mocking a method within the same class So, recently I came across a problem where
2 November 2010
I have recently been glued to my screen watching some of the awesome presentations that were shown at the recent PDC 2010. There were some really amazing presentations and one of them really caught my eye. It was a talk about the power of ODATA and the support that Microsoft
1 November 2010
If you have ever created an application that requires you to access the internet or call a 3rd party service over the web, you may have come across the issue of the user being behind a proxy server and having to authenticate. The common issue that I have come across
28 October 2010
Until recently, I had heard of the HTTP HEAD method but never actually used it, or quite understood it's usages. I'm sure most of us have used some of the common HTTP Verbs before such as GET or POST. Let me explain a little bit about the HTTP
25 October 2010
As developers today, our websites are constantly being accessed from different forms of devices - PC's, Mac's, iPhones, Blackberry's, iPads - and the list goes on! Developing websites and content that conforms to all these standards can be a nightmare. Luckily, jQuery has just released a version of their
20 October 2010
The SmushMySite tool has just been updated with a load of new enhancements. For those of you that aren't familiar with the SmushMySite tool, it is a free image optimization tool that takes advantage of the Yahoo Smush.it™ service. It is a quick and easy way to optimize
15 October 2010
When I am developing a web site, I am always looking for ways to improve the speed and page load times. I have used a few tools such as Yahoo's YSlow and Google's Page Speed Analyzer. If you have played around extensively with YSlow you may have noticed
6 October 2010
As a developer, we need to use all the tools at our disposal to develop faster and more robust applications. One of the ways we can achieve this is by using caching. Caching is the process of storing frequently used data on the server to fulfil subsequent requests. Now there
1 October 2010
If you are a fellow blogger or Webmaster then read on, because this might interest you somewhat. When I first started out blogging, I added Google Analytics to my site to track visitors and stats. It's a great free tool and generally a really accurate service, and I'm
24 September 2010
Google have created an awesome visualization API. It enables you to add live charts, graphs and tables to your web pages. It is quite flexible and has some great features that are quite easy to use once you get started. I started playing around with this API and decided to
7 September 2010
There has been quite a lot of interest building up recently around SQL Compact 4. Now, if you are not familiar with SQL compact, it's basically a database engine that is free and totally embedded. You don't need to install a database anywhere on your server. Not only
23 August 2010
I'm sure most of you have at some point been exposed to a CAPTCHA control on the net. They come in loads of forms and are used to tell the difference between humans and computers (bots). If you have a website on the net, you are prone to lots
13 August 2010
If you haven't started playing around with HTML5 yet, you should definitely check it out. I've blogged about some of the features of HTML5 before, so if you take a look at this post, it should give you a fairly idea of what HTML5 is about. I try
6 August 2010
Routing is a great feature that ships with MVC. The ASP.NET Routing module is responsible for mapping incoming browser requests to particular MVC controller actions. One of the great things about routing in MVC is the ability to rewrite a URL and make it a lot more readable. This
2 August 2010
Firstly, I would like to thank everyone that entered the competition and also everyone that contributed by leaving a comment on the blog. There have been a load of great ideas and I will definitely be implementing them on the site. Hopefully you will see these changes over the next
14 July 2010
If you haven't already read Professional Asp.net Mvc 2, you should really check it out. Luckily though, I also have a free copy of this freshly released book to give away. If you are new to Asp.net MVC, this book is a great way to get you
1 July 2010
If you've been browsing around the web lately, you may have noticed that there has been a lot of hype and attention slowly building around Html5. Now, I didn't really understand it all until I started to take a look at some of the awesome new features that
22 June 2010
I've been using Linq to Sql for quite a while now, and here and there I have heard of compiling your Linq queries mentioned. Now I know that this feature has been around for a while in terms of .net, but I have never actually got round to using
8 June 2010
This post is the second part of a series on Mocking with Moq. If you haven't already taken a look at the first post on the basics of Moq, please check it out. In this post, I hope to cover some other basic aspects of mocking such as Verifying,
1 June 2010
I've recently been working on a project where I needed to get a development site running using SSL on IIS 7. If its the first time you've done this it can be a little tricky, but IIS 7 has made it super easy to create self signed certificates.
1 June 2010
Some of the articles written on this site are pretty image intensive and take up a lot of resources when loading up. An awesome way to improve page load times as well as providing a better user experience is to use lazy loading for your site. There is a excellent
7 May 2010
I've recently been looking for a MVC helper class for Google maps. I came across this well written MVC HtmlHelper for static Google maps. Unfortunately I was looking for a helper that was for the dynamic version of Google charts. I needed to be able to add markers on
29 April 2010
I've always been interested in optimizing this site for search engines and trying my best to make this site as efficient as possible. I recently stumbled across a blog post by the Google webmaster team that explained a little about rich snippets and how search results are returned when
20 April 2010
I've always wondered which built-in .Net classes are faster compared to others. There is a lot of conventional wisdom surrounding certain code classes in .Net and which ones are better to use than others. One thing that I always try and keep in mind when writing code is
13 April 2010
I'm currently working on a project where I need to quickly insert a list of Countries and Us States into a database table. This is not the first time that I've needed to have a useful script handy for this sort of thing. I had a quick look
9 April 2010
What is mocking? Well....according to Wikipedia it is: "In object-oriented programming, mock objects are simulated objects that mimic the behavior of real objects in controlled ways. A computer programmer typically creates a mock object to test the behavior of some other object" In short, Mock objects are a
22 March 2010
I recently stumbled across the following site and looked at some of their applications that they have on offer. One of the great tools that they offer is a tool called Postmark. Postmark helps deliver and track transactional emails. The service basically replaces using SMTP, and allows you to send
19 March 2010
A really useful built in feature of .Net is the Lambda expression. I've been using these for a while, but until I started looking into it, I never realized how useful these can actually be. There are loads of quick, nifty ways to get things done that might take
22 February 2010
In the constant quest to deliver faster, slicker websites it is important to try and improve the users experience. This could include improving the page load speed, smooth navigation or page accessibility. While working on this site, I have tried to improve page loading speeds as much as possible. There
9 February 2010
I am currently working a project at work that requires us to use progressive enhancement so that our site is accessible to all users regardless of whether they have javascript enabled. One of the issues that we came across was keeping only one version of the html that we needed
3 February 2010
I've started to take a look at Dependency Injection Containers (IoC), mostly because we have started using them where I work and also just out of general interest and trying to get my mind around how they work. From Wikipedia: Inversion of control, or IoC, is an abstract principle
3 February 2010
Toastify is a great little app that allows you to add hot-keys to Spotify. If you haven't already heard of Spotify, it is a streaming player that allows you to listen to music for free. I've been looking for a way to add hot-keys to Spotify
11 January 2010
Asp.net Mvc has an awesome little class called the HtmlHelper class. I have only recently started to get into creating custom HtmlHelpers, and I thought that creating a small Google charting helper would be a good place to start. From the Microsoft MSDN site: The HtmlHelper class provides a
8 January 2010
I've just got my hands on a shiny new computer, maxed out with new RAM and Windows 7. So far I am very impressed with Windows 7, although it looks pretty similar to Vista, its a lot slicker and I can't really seem to find any faults just
5 January 2010
An easy way to create PDF files is to use iTextSharp. It is an opensource PDF library that allows to you generate PDF files on the fly. It's great if you need to dynamically create a PDF using dynamic data. Also, I found that this is a great tool
17 December 2009
After my last post, I decided to dive a little more into T4 templates and learn more about them. After some goofing around, I decided to write a template that would minify js files automatically using the Yahoo YUI compressor for .net - http://www.codeplex.com/YUICompressor. T4 is a
16 December 2009
A colleague introduced me to this wicked library for css files. If you are lazy like me, this tool is a great way to use variables in your css code so that you dont end up repeating yourself. Taken directly from the site: http://www.dotlesscss.org/ "Write regular CSS
15 December 2009
I was recently looking for an efficient method of redirecting users to an error page when an exception is thrown in an MVC application. A useful way of doing this is with the HandleErrorAttribute. In order to handle exceptions thrown by your action methods, you need to mark your method
14 December 2009
Welcome to my site! It has been developed using ASP.NET MVC 2 beta (Which I intend to update as soon as the full release comes out), Subsonic 3.0 and a SQL 2005 DB. Ive written everything from scratch and Ive still got a lot to learn about the
14 December 2009
So, once I got the site up and running and I thought I was home and away. My home page worked perfectly, but as soon as I clicked away from the home page I got a 404 error page. Now I assumed that the only reason I was getting this