Often in development we have an annoying message in our console that we simply can not find the source of, here is a little trick you can use to hunt messages like this down.
Ruby's external malloc problem
4 months ago
In this post I would like to cover a severe, extremely hard to debug vector for memory bloat in Ruby which can be triggered by the PG gem.
An analysis of memory bloat in Active Record 5.2
4 months ago
Current patterns in Active Record lead to enormous amounts of resource usage. Here is an analysis of Rails 5.2
Managing db schema changes without downtime
7 months ago
How we manage schema changes at Discourse minimizing downtime
Reducing String duplication in Ruby
8 months ago
It is very likely your Rails application is full of duplicate strings, here are some tricks you can use to get rid of them.
Instrumenting Rails with Prometheus
8 months ago
How we instrument Rails at Discourse and how you can, too.
How do you go about debugging high CPU usage in a production Rails system?
Fastest way to profile a method in Ruby
12 months ago
What is the fastest and most elegant way to instrument a method in Ruby?
The current state of Brotli compression
over 2 years ago
Chrome recently pushed out support for Brotli, in this post I will cover what this means to you.
WebSockets, caution required!
almost 3 years ago
WebSockets seem to be gaining a resurgence, suddenly they are sexy again. I think this is the wrong message.
Fixing Discourse performance regressions
about 3 years ago
Recently, I discovered a performance regression on a very common page on Discourse. This post documents my approach and specific fixes I applied.
Debugging memory leaks in Ruby
over 3 years ago
Tools, tips and techniques for diagnosing and fixing Ruby memory leaks
Announcing rubybench.org
over 3 years ago
Announcing rubybench.org
Speeding up Rails 4.2
almost 4 years ago
Optimising Rails 4.2 using Flame Graphs and Memory Profiler
Ruby 2.1 Garbage Collection: ready for production
over 4 years ago
Vintage JavaScript begone
over 4 years ago
One major issue all “one page” JavaScript apps have is updating clients, this is how I solved this for Discourse.
Call to Action: Long running Ruby benchmark
almost 5 years ago
Wishing for a long running ruby benchmark.
Commenting powered by Discourse
almost 5 years ago
Lessons learned moving commenting to Discourse
Demystifying the Ruby GC
almost 5 years ago
The Ruby GC may seem exceedingly complex to some, in this article I try to shed some light on it.
Live restarts of a supervised unicorn process
almost 5 years ago
I just added some helpers that allow you to easily perform live restarts of unicorn processes with zero downtime.
Discourse in a Docker container
almost 5 years ago
Recently I spent some time working on a Docker container for Discourse to ease our deployment story.
Discourse as my blogging platform
almost 5 years ago
This Blog is now 100% powered by Discourse
Eliminating my trivial inconveniences building Discourse
over 5 years ago
The number #1 productivity killer for me is the trivial inconvenience, it does not stop me from working… just make my job very frustrating.
Flame graphs in Ruby MiniProfiler
over 5 years ago
Analysis of performance issues in Ruby can often be fairly complex, in this post I cover a new technique you can use with MiniProfiler.
Do you smoke test?
over 5 years ago
I just introduced the first smoke test for Discourse. Reasoning, techniques and lessons learned.
Mobile mapping is not a cartographic problem, it is a search problem
about 6 years ago
iOS6 is out, and with it an essentially broken maps app, here are my thoughts on this matter.
MiniProfiler Ruby Edition
about 6 years ago
For the last few months we have been working on a version of MiniProfiler for Rails, here is the low-down
Leaving Stack Exchange
over 6 years ago
I am leaving Stack Exchange, why this happened and what is next?
Testing 3 million hyperlinks, lessons learned
over 6 years ago
Recently I embarked on a mission to find and and build tools for dealing with broken links on the Stack Exchange network, here are some things I learned.
Sam's ultimate web performance tool and resource list
over 6 years ago
While preparing for my talk at Codemania I started filling my slides with links, clearly not something that scales. So, instead, here is a big list of interesting tools and resources that can help you journey through the murky waters of web performance.
Learn about a change introduced in the 2.6.39 kernel that has huge impact on your users perceived web performance.
MiniProfiler 2.0, almost out of the gate
over 6 years ago
We are pushing a 2.0 public release of MiniProfiler, the following post describes most of the awesome changes.
Stop paying your jQuery tax
over 6 years ago
The last script holding in your header is usually jQuery, learn how to move it to your footer and why you should.
That annoying INSERT problem, getting data into the DB
over 6 years ago
A common issue many users have with Dapper is the ability to insert records into a database, in this post I cover some options and a solution I developed.
In managed code we trust, our recent battles with the .NET Garbage Collector
almost 7 years ago
In this post I cover the history, diagnosis and eventual repair of some erratic performance we were experiencing at Stack Overflow.
Optimizing ASP.NET MVC3 Routing
almost 7 years ago
In this post I outline the process and method we used to optimize routing at Stack Overflow
Spam, bacon, sausage and blog spam: a JavaScript approach
about 7 years ago
Using rather simple techniques I practically eliminated all of the spam on this blog, here is a technical explanation
Extending the ASP.NET error page (show me the SQL edition)
about 7 years ago
In this post I demonstrate how to extend the ASP.NET error page with additional information about the SQL that failed.
Porting LINQ-2-SQL to Dapper for great justice
about 7 years ago
In this post I explain how I ported a rather tricky page to dapper, it highlights usage of a new helper called SqlBuilder, that lives in Dapper.Contrib
Oh view where are thou: finding views in ASP.NET MVC3
about 7 years ago
Finding views in ASP.NET MVC3 is an often overlooked performance concern.
Automatically instrumenting an ASP.NET MVC3 app
about 7 years ago
In this post I work through one method you can use to get controller, view and partial render times in an MVC3 app.
Profiling your website like a true Ninja
over 7 years ago
I am very happy to re-announce the MVC mini profiler, used in production at Stack Overflow.
A day in the life of a slow page at Stack Overflow
over 7 years ago
I have been spending a fair amount of time tuning Stack Overflow, in this post I will walk through the process of tuning a single page.
How I learned to stop worrying and write my own ORM
over 7 years ago
Does the world even need another ORM?
Why we took a step back at Stack Overflow and wrote our on mini ORM
Interesting answers on Stack Overflow from July
about 8 years ago
At my new job I have been looking at better ways of highlighting recent interesting answers.
Here is a list of answers I came across in July that I found interesting.
Diagnosing runaway CPU in a .Net production application
almost 9 years ago
Diagnosing runaway/high CPU in production .Net apps has always been a dark art reserved for the true master debuggers.
No longer.
Got Flare?
about 9 years ago
A little bit about my new bug tracker. Can tracking bugs be fun?
Behaviour driven design using rspec IronRuby and C#
about 9 years ago
I love rspec, and wanted to see what happens if you bring it to .Net, here is a tiny step by step guide to writing your own rspec tests for a C# project.
Our new startup, Media Browser
over 9 years ago
After a lot of thought and research I have decided to see if we can make a business out of Media Browser.
Will program for food, the future of Media Browser
over 9 years ago
Media Browser / Video Browser has always been free "as-in-beer":http://c2.com/cgi/wiki?FreeAsInBeer and free as-in-speech.
Will it remain free?
Upcoming features for Media Browser
over 9 years ago
About some upcoming feature for Media Browser.
Media Browser source code license changes
over 9 years ago
We just changed the way our source code is licensed, this post covers the reasons and details of the changes.
Refactoring media browser - entity resolution
over 9 years ago
I am going to try to post a little bit about my adventures refactoring Media Browser. In this post I am covering a some aspects of entity resolution.
Simpler debugging of Vista Media Center plugins
over 9 years ago
In this post I offer a streamlined mechanism for debugging Vista Media Center plugins in Visual Studio.
Slow response-time is usabilitie's alcoholism
over 9 years ago
For the last few weeks I have been forced to use a very slow website. This has left me feeling very demoralized. This is why.
My server just died, long live my new VPS
almost 10 years ago
Earlier this week I lost my old trusty server which hosts www.samsaffron.com and www.mediabrowser.tv died.
I decided to migrate all the data to a new VPS (virtual private server), here is a sketchy account of how this all happened.
Deadlocked
about 10 years ago
In SQL Server a SELECT statement can deadlock against an UPDATE statement without being in a transaction. Why does this happens? What is a good approach to SQL Server deadlocks?
SSH Jumphosts tunneling and other curiosities
over 10 years ago
Recently, I had to support a rails server which is deep behind a firewall. Here I offer a somewhat sketchy account of how I am able to support it.
Video Browser: Past, Present and Future
over 10 years ago
Why I started off Video Browser, where it is today, and what are the future plans.
Speed up your feed generation in Rails
over 10 years ago
In general when generating rss feed in Rails you will be using the builder library, it can be fairly slow unless you take special care.
You should be very careful when using ActiveRecord eager loading
over 10 years ago
Watch out when you use ActiveRecord eager loading, it has the potential to wreak havoc if you are not careful.
I fixed up Video Browsers sort by date
over 10 years ago
A new release of Video Browser contains a few bug fixes
Genre and runtime sort options for Video Browser
over 10 years ago
I just posted a new version of Video Browser that support “by genre” and “by runtime” sort options for movies.
A cleaner way to iterate through Enumerable lists in Prototype
over 10 years ago
Yet another way to enumerate through Enumerables if you are using the prototype javascript library.
Redo your migrations in Rails and keep your data
over 10 years ago
On Rails, I find myself quite often fixing up an old migration early in my projects, at this point I already have a bunch of data in my database and I would like to keep it.
So I created a Rake task that takes care of this.
A few new features for Video Browser
over 10 years ago
I just posted a new version of video browser in my download section!
Getting started with Ruby On Rails on Windows
over 10 years ago
In this post I would like to give you all the information you need to get started with Ruby On Rails, on Windows. I will cover the tools you need, the resources you need and some tips.
Why the hell write yet another blog engine?
over 10 years ago
Writing your own blog software is an ideal first exercise when faced with learning a new web platform.
Hello World
over 10 years ago
A new version of Video Browser for Vista MCE
almost 11 years ago
Video browser, is a little plugin for Vista MCE that let's you browse your videos the way they were meant to be browsed.
Goodbye Altiris
about 11 years ago
Well, it’s that time to change jobs. Goodbye Altiris.
Video Browser for Vista MCE
about 11 years ago
This is a post about my first attempts with Video Browser.
IDisposable in Ruby
about 11 years ago
An example implementation of the IDisposable pattern in the Ruby language.
It looks much nicer in Ruby.
Insert or Update pattern for Sql Server
over 11 years ago
Implementing the UPSERT (insert or update) pattern in MS SQL Server can be tricky. In this post I explore the various advantages and disadvantages of various implementations.
Excluding changes to AssemblyInfo.cs from Subversion
over 11 years ago
.Net memory profiler 3.0 just released
over 11 years ago
Keep it simple
over 11 years ago
4 different embedded databases offer 4 different APIs to create a database.
Embedded .NET database shootout
over 11 years ago
Testing .NET embedded DBs