Things I've enjoyed
An open source .NET library I built for consuming SurveyMonkey's v3 API. This is a ground-up rewrite of my previous library for their v2 API.
These tools make it easy to import data from SurveyMonkey into SQL Server, and to search it for long-lost customer insight.
A pretty long article talking through all the ways Entity Framework's performance can go wrong, and how you can make it un-wrong.
A talk I did at the awesome NDC conference, discussing how memory management works in .NET, as well as how it might break.
A blog post about why getting vendors to do your competitor comparisons for you probably isn't the best idea.
Recent Posts
A quick importer to bring key data from Zendesk into SQL Server. It's built on top of Emily Schneider's ZendeskApi_v2 library. Honestly this is fairly shoddily engineered, but fulfilled a quick purpose and might be helpful for someone else as a starting point.
A small game for two people, where you take it in turns to guess as many words as possible in 60 seconds. I mainly built this to learn a few things about Azure SQL Database and Azure App Service, but it was fun too. Best played on a phone.
Azure SQL Database Managed Instances are a new PaaS database offering from Microsoft, taking care of many operational aspects like ensuring high availability, backups, and applying patches, which makes them simpler and less time-consuming to administer. This article describes Redgate's support for the new service.
A session I did with Kathi Kellenberger for Redgate's SQL in the City, where we discussed some of the ways a great DBA finds to manage their day, as well as some new capabilities we've introduced to SQL Monitor 8 aiming to help with this.
An account of migrating a .NET Framework application to .NET Core 2.0, with advice on what worked well and where the sticking points were.
To provide contextual information about deployments when investigation performance issues in SQL Monitor, we built a really helpful integration with Redgate's deployment tools.
An overview of my team's plans for the second half of 2017. My view is always that the benefits of being open and transparent about our plans (enabling more and better feedback from users, helping customers plan for the future, and keeping us honest) overwhelmingly outweigh any concerns about competitors seeing what's coming up.
This new tool, built of my earlier .NET library for SurveyMonkey, imports entire SurveyMonkey accounts to a SQL Server instance and then searches that data by keyword, making it easy to uncover gems of information locked away in historic survey responses.
A recap of what my team shipped in 2016, and laying out our roadmap for the first half of 2017.
SQL Monitor's SNMP support makes it possible to pass information about SQL Server incidents into System Center Operations Manager. SCOM doesn't make this easy, so this walkthrough shows how you can set it up to ingest alert data from SQL Monitor.
SQL Monitor raises configurable alerts whenever SQL Server incidents occur. Now, as well as sending those notifications by email, they can be posted to Slack, or sent as SNMP traps to allow integration with other system.
Azure SQL DB v12 and SQL Server 2016 introduce a new feature called Query Store, which Microsoft present as a "Flight data recorder for your database". We look at how you can retrieve and view execution plans.
People evaluating our software often ask us to send them an analysis document showing how we stack up against our competitors. It’s a very reasonable request, but because it’s one I always turn down I thought it would be worth sharing why I don’t think they’re meaningful.
We've just shipped updates to both our profilers with some pretty significant performance improvements. I wanted to talk through how that was possible.
A note that we've been doing some work on the performance of our profilers.
I love Entity Framework, but I often see it used in ways that cause poor performance. This is a writeup of the most common and important ways that things go wrong, as well as how to fix those problems. It was originally going to be a short post, but 6000 words later...
I just had loads of fun speaking at Redgate's SQL in the City conference! I talked about overly chatty applications, greedy code which prevents SQL Server doing its job efficiently, as well as looking at the performance challenges which ORMs like Entity Framework present for developers and DBAs alike. Here's the recording.
C#6 has a lot of nice capabilities which should make people's lives easier. We've been working on decompilation support for those features in .NET Reflector, available now in version 9.0 beta.
We just shipped DNX support in both our performance and memory profilers, as well as several other smaller improvements.
Visual Studio 2015's release date is now public, and Redgate has been ensuring all our tools will have support. As several people have asked about it, here are the details.
With the recent discussion of DNX and the future of ASP.NET, I wanted to share new betas of the support for profiling these project types in ANTS.
Following Build last week, I wanted to try running Universal Apps on a Raspberry Pi 2, but the setup instructions mention having to provision the SD card from a physical Windows 10 machine. Until Microsoft make an image available, here's how you can avoid the need for a physical Windows 10 machine.
For some time, ANTS has shown you information about database queries, and even how the code you wrote is responsible for them running. This has been useful for identifying slow queries or overly-chatty applications making too many database requests, which is particularly common when misusing ORMs. Unfortunately until now, once a slow query was identified it could still be difficult to understand why it was slow. This big new release lets you go much further by showing you execution plans.
I'm speaking at NDC London in a few weeks. It's an awesome conference which I'm really excited to be a part of. The agenda's looking great, so I thought I'd share the sessions I'm particularly looking forward to.
Some notes about upcoming behind-the-scenes changes we've made to ANTS, as well as what we'll be working on next.
I've used Survey Monkey’s API for a while, and though it's pretty powerful, there's a lot of boilerplate each time it's used in a new project, and the json it returns needs a bunch of processing to be able to use the raw information. So I've finally got around to releasing a .NET library you can use to consume the API more easily.
There’s a nasty memory leak which the .NET Framework can suffer from when using certain classes - in particular XmlSerializer - when assemblies are repeatedly loaded into memory and not reused correctly. Here's a look at that problem and how you can detect it happening in your own code.
Many's the time post-its have gone missing from a scrum board, leading to problems down the road. Here's my top tip for avoiding that.
It's frustrating speaking to someone about your product and for them to say "I really with it did x", where x is a thing it already does. Bottom line though - if the capability's not discoverable, you almost might as well not have bothered.
A friend and I were recently talking about the really clever tricks people have used to get the most out of memory. I thought I'd share my favourites, and would love to hear yours too!
Since ANTS shipped database profiling support, one of the most frequent requests is to support additional database connectors. This is the list of new ones we support as of version 8.3.
With ANTS Memory Profiler 8 shipping this week, I wanted to walk through how the new version can help diagnose problems to do with .NET's usage of unmanaged memory.
A quick note to say that we've just released a beta of ANTS Memory Profiler 8.
My team just released version 8 of ANTS Performance Profiler :-) This post is a quick walk through the new functionality.
When we launch major new versions of products, we often run internal 'bug hunts', giving people from across the company who don't work on that product a chance to break it. This time we're going to try doing this process publicly. Join us - we'll even order a pizza to your office!
It's taken us weeks to understand why many of our beta users haven't been able to do anything with recent builds. Having made the headdesk realisation of what was going on, we wanted to share the story...
Web request profiling lets you see any requests made by your application out to other web services. A quick look at this new feature.
After several months of development effort we're ready to share a first beta of ANTS Performance Profiler 8. Here are the details.