Code rant
Life as a mort.
C# / .NETSoftware / engineering practiceDevOps / SRE / infrastructure
- Posts
- 504 from 5 Aug 2005 to 6 Jul 2021
- Posting
- quiet since 2021
- Kind
- personal blog
- Feed
- http://feeds.feedburner.com/CodeRant
2021 1
2020 3
2019 1
2018 5
2016 1
2015 7
2014 15
- The Lava Layer Anti-Pattern
- Hire Me
- Heisenberg Developers
- JSON Web Tokens, OWIN, and AngularJS
- A Contractor’s Guide To Recruitment Agencies
- A Docker ‘Hello World' With Mono
- Docker: Bulk Remove Images and Containers
- How To Add Images To A GitHub Wiki
- Coconut Headphones: Why Agile Has Failed
- Git Tips: Revert with a new commit
- EasyNetQ: Client Details in Connection String
- EasyNetQ: A Layered API
- EasyNetQ: Publishing Non-Persistent Messages
- In Praise of TestDriven.NET
- The Geek Christmas Quiz 2013: The Answers!
2013 38
- The Geek Christmas Quiz 2013
- How to Run a Successful Open Source Project
- Are Your Programmers Working Hard, Or Are They Lazy?
- EasyNetQ: Replace the Internal DI Container
- EasyNetQ’s Minimalist DI Container
- EasyNetQ: Non-Generic Subscribe
- EasyNetQ: Send Receive Pattern
- EasyNetQ: Multiple Handlers per Consumer
- EasyNetQ: Consumer Cancellation
- EasyNetQ: Changes to Conventions With Version 0.18
- EasyNetQ: Polymorphic Publish and Subscribe
- EasyNetQ: Big Breaking Changes to Request-Response
- RabbitMQ Request-Response Pattern
- EasyNetQ: Publisher Confirms
- AsmSpy Coloured Output
- EasyNetQ: Big Breaking Changes in the Publish API
- Brighton Fuse
- EasyNetQ: IConsumerDispatcher
- RabbitMQ: AMQP Channel Best Practices
- EasyNetQ: Topic Confusion!
- EasyNetQ: Big Breaking Changes in the Advanced Bus
- Brighton ALT NET @ Brighton Digital Festival
- Guest Post: Working Around F#/NuGet Problems
- Redis: Very Useful As a Distributed Lock
- Automating Nginx Reverse Proxy Configuration
- NuGet Install Is Broken With F#
- SSH.NET
- The Benefits of a Reverse Proxy
- Stop Your Console App The Nice Way
- Serializing Lua Coroutines With Pluto
- Lua as a Distributed Workflow Scripting Language
- Coders, Musicians and Cooks
- Fractured Product Syndrome
- EasyNetQ on .NET Rocks!
- EasyNetQ in Africa
- How to Write Scalable Services
- Visual Studio: Multiple Startup Projects
- Converting Between Unix Time And DateTime
2012 34
- A Geek Christmas Quiz–The Answers!
- A Geek Christmas Quiz
- My Super Simple Node Twitter Re-Tweeter
- WebRequest Throws On 404 Status Code
- The Onion Of Compromise
- RabbitMQ On Windows With .NET, A Case Study
- Using BlockingCollection To Communicate Between Threads
- A C# .NET Client Proxy For The RabbitMQ Management API
- Nicer Client Properties For EasyNetQ
- EasyNetQ Publisher Confirms
- A Functional IoC Container
- EasyNetQ Cluster Support
- Parsing a Connection String With Sprache
- Replacing EasyNetQ Components
- Return a Task From BeginExecuteNonQuery
- Wiring up TopShelf, Windsor and EasyNetQ
- Using Git and GitHub in a Microsoft Development Team
- REST – Epic Semantic Fail
- Sprache – A Monadic Parser For C#
- Reading UTF-8 Characters From An Infinite Byte Stream
- Tracing System.Net to debug HTTP Clients
- Playing with Twitter
- EasyNetQ: Continuous Delivery with TeamCity and NuGet
- When Should I Use An ORM?
- Use AutoResetEvent To Unit Test Multi-Threaded Code
- EasyNetQ: Introducing the Advanced API
- Time To Consider Node.js?
- EasyNetQ: A Breaking Change, IPublishChannel
- The Configuration Complexity Clock
- How Do I Detect When A Client Thread Exits? Make The Client Tell You.
- Help! How Do I Detect When a Client Thread Exits?
- EasyNetQ: Topic Based Routing
- The Database As Queue Anti-Pattern
- A Useful Linq Extension Method: Intersperse
2011 40
- Some Thoughts On Service Oriented Architecture (Part 2)
- Some Thoughts On Service Oriented Architecture
- Thoughts on Windows 8 (part 2)
- Why Write a .NET API For RabbitMQ?
- Restarting RabbitMQ With Running EasyNetQ Clients
- How to stop System.Uri un-escaping forward slash characters
- An Action Cache
- Task Parallel Library: How To Write a Simple Delay Task
- EasyNetQ: How Should a Messaging Client Handle Errors?
- MEF DirectoryCatalog Fails to Load Assemblies
- Detecting and Changing a File’s Internet Zone in .NET: Alternate Data Streams
- RabbitMQ Subscriptions with the DotNet Client
- What is a Closure?
- The First Rule of Threading: You Don’t Need Threads!
- I Don’t Have Time for Unit Tests
- RabbitMQ, Subscription, and Bouncing Servers in EasyNetQ
- Some Thoughts on Windows 8
- Dependency Injection Haskell Style
- FuturePublish with the EasyNetQ RabbitMQ API
- EasyNetQ, a simple .NET API for RabbitMQ
- Serializing Continuations
- Message Queue Shootout!
- Monads! European Virtual ALT.NET. Video is now available
- Monads! European Virtual ALT.NET Tuesday 29th March
- 7000 Concurrent Connections With Asynchronous WCF
- WebStresser: A very simple web load testing tool
- Brighton ALT.NET show and tell night videos
- Monads in C#-8. Video of my DDD9 Monad talk
- Delegates make great container components
- Using Git alongside other version control systems
- Monads in C#-7. Turning our parser into a Monad
- AsmSpy: A little tool to help fix assembly version conflicts
- The MVC 3.0 IDependencyResolver interface is broken. Don’t use it with Windsor.
- Monads in C#-6. Introducing a simple parser
- Monads in C#-5. Maybe ;)
- Monads in C#-4. Linq loves Monads!
- Monads in C#-3. Creating our first Monad
- Monads in C#–2. What’s the point?
- Monads in C#–1. Introduction
- 2010 A Code Rant Retrospective
2010 81
- C# Closure Constructors
- The Second Commandment: Thy entity shalt not participate in dependency resolution
- An Explosion of Alternative Web Frameworks
- Javascript: Defining Classes with Closures
- ASP.NET MVC: Creating a URL From Route Values
- Sammy.JS
- Pedant Corner: Clarifying IoC, DIP and DI
- The first Commandment: Thou shalt not reference the IoC container!
- Tardis Bank at £5App
- An ASP.NET HttpModule to set the current culture to the user’s locale
- Composing Sequential Tasks With Linq
- Tardis Bank is now live
- Using the Task Parallel Library with ASP.NET MVC for scalable web applications
- RavenDb Indexes : 1st Attempt
- Tardis Bank – online pocket money banking for parents and kids
- RavenDb, ASP.NET MVC and Windsor working together
- RavenDb: Playing with Inheritance and Polymorphism
- A Powershell Script for Monitoring Web Site Status
- Populating Drop Down Lists in ASP.NET MVC
- ASP.NET MVC Controller Action Unit Test Extension Methods
- Use a Single Version File For All Projects in a Solution
- NHibernate Schema Export in Suteki Shop
- A Quick Play With NuPack
- Experimental ASP.NET MVC Add-ins : Updated (or why it pays to blog)
- Experimental ASP.NET MVC Add-ins
- Separation of Concerns with Domain Events
- How Conventions Can Massively Save Typing
- Implementing a ‘Money’ type in an ASP.NET MVC and NHibernate application.
- Getting the Property Name From a Property Expression
- Trust Your Instincts! Or how to stay interested in programming
- More Boilerplate Code Removal
- Adventures in Repetitive Code
- Using the Visitor Pattern with Domain Entities
- How to Fix Public Sector IT
- The New Brighton ALT.NET Wiki
- How to send an email via GMail using .NET
- Bending Linq Syntax to your will
- NHibernate Linq Eager Fetching
- How do You Stress Test Your Web Application?
- You Don’t Need an Application Server
- Book Review: Rework by Jason Fried and David Heinemeier Hansson
- Brighton ALT.NET Beers. 7pm Tuesday 6th July at The Skiff
- Is Microsoft the IBM of the 2010’s?
- Brighton ALT.NET Beers. 7pm Tuesday 1st June at The Skiff
- Skillsmatter Progressive .NET Tutorials May 12-14th 2010
- 10 Advanced Windsor Tricks – 13. Use SubContainers to replace dependencies on context
- Brighton ALT.NET Beers. 7pm Tuesday 4th May at The Skiff
- Currying vs Partial Function Application
- NHibernate Get<T> vs Load<T> and sub types
- Moving Suteki Shop from Linq-to-SQL to NHibernate
- A Custom ASP.NET MVC Model Binder for Repositories
- Microsoft TechDays – Open Source on .NET. April 14th, Shepherd’s Bush.
- Testing NHibernate mappings
- Brighton ALT.NET Beers. 7pm Tuesday 6th April at The Skiff
- Functional Dependency Injection == Currying
- Selenium test suite for Suteki Shop
- Why I write this stuff
- Upgrading Suteki Shop to ASP.NET MVC 2
- How to tell if a type is a delegate
- Combining Higher Order Functions in C#
- Thought experiment: The Curry Facility
- Brighton ALT.NET Beers. 7pm 2nd March at The Skiff
- Creating x.509 certificates with Pluralsight self-cert
- 10 Advanced Windsor Tricks – 12. The NamingPartsSubsystem
- In praise of ELMAH
- 10 Advanced Windsor Tricks – 11. Type forwarding
- 10 Advanced Windsor Tricks – 10. Configuration with type converters
- 10 Advanced Windsor Tricks – 9. Configuring fluently registered components with XML
- 10 Advanced Windsor Tricks – 8. Dependency graph visualisation
- My DDD8 Talk: An Introduction to IoC Containers with Castle Windsor
- Configuring SmtpClient to drop emails in a folder on disk
- Brighton ALT.NET Beers – 2nd February at The Skiff
- 10 Advanced Windsor Tricks – 7. How to Write a Facility
- 10 Advanced Windsor Tricks – 6. The Event Wiring Facility
- 10 Advanced Windsor Tricks – 5. The Startable Facility
- 10 Advanced Windsor Tricks – 4. How to register and use decorators
- 10 Advanced Windsor Tricks – 3. How to resolve arrays
- 10 Advanced Windsor Tricks – 1A. A Delegate Factory Facility
- 10 Advanced Windsor Tricks – 2. Auto Registration
- 10 Advanced Windsor Tricks – 1. Registering Delegates
- 10 Advanced Windsor Tricks - Introduction
2009 55
- Book Review: Enterprise Integration Patterns
- Skills Matter Functional Programming Exchange
- The Monthly Code Quality Report
- The joy of MSpec
- Make working with open source a breeze with Hornget
- Fun with Linq Aggregate
- Collection covariance with C# 4.0
- TFS Build: _PublishedWebsites for exe and dll projects. Part 2
- Installing Ubuntu on Hyper-V
- Suteki Shop: Big in China
- The .NET Developer’s Guide to Windows Security
- Brighton ALT.NET Beers! Tuesday 6th October.
- MassTransit at Skills Matter
- Why is ‘Buy’ not always better than ‘Build’
- Slides and Code for last night’s VBug London NHibernate talk
- Mocking Delegates
- The first rule of exception handling: do not do exception handling.
- How MassTransit Publish and Subscribe works
- A First Look at MassTransit
- IronPython in Action
- TFS Build: _PublishedWebsites for exe and dll projects
- What I look for in a Code Review
- Mike Ormond interviews me about the MVC Framework
- Multi-tenanted services with the Windsor WCF Facility
- Parameterised component resolution with the Windsor NamingPartsSubSystem
- Has this happened to you?
- Windsor WCF Facility: MessageAction and MessageEnvelopeAction
- Atom feeds with the Windsor WCF Facility
- Brighton ALT.NET Beers, Tuesday 5th May at the Prince Albert
- Suteki Shop is now a sample application on the official MVC Framework site
- Last Chance to Book Progressive .NET Tutorials with £150 Off!
- The sorry tale of the Visual Studio Web Site
- Some Fundamentals of Service Oriented Architecture
- Agile practices are not just about management.
- Choosing a Source Control Tool
- Why you should upgrade to .NET 3.5.
- Rhino Mocks at Skills Matter: Sample Code
- ALT.NET Brighton Beers. Tuesday 31st March
- WCF / Windsor Integration: Adding Behaviours
- Castle Windsor: Registering and resolving arrays of dependencies using the fluent registration API
- Recursive LINQ with Y-combinator
- What's the point of Value types?
- An evening of mockery at Skills Matter on the 23 of March
- WCF / Windsor Integration: Using the perWebRequest lifestyle
- VBug London 10th Feb: Why to I need an Inversion of Control Container?
- Further Reading on IoC Containers
- Tonight’s talk: Implementing the Repository Pattern
- Capturing and playing back web service calls with Wireshark and SoapUI
- Eric Evans on Repositories
- The best explanation of lazy loading ever!
- In search of Wild Repository
- Should my repository expose IQueryable?
- More Curry?
- Javascript tools
- Integrating Fluent NHibernate and the Windsor NHibernate Facility
2008 103
- Open Source .NET Exchange
- OpenRasta
- Multi-tenancy part 2: Components and Context
- Windsor WCF Integration
- Resources for tomorrow’s Developer Day talk
- Multi-tenancy part 1: Strategy.
- Upgrading Suteki Shop to the MVC Framework Beta
- Digital Media Awards South
- Dependency injection with Castle Windsor: Video
- MVC Framework and jQuery = Ajax heaven
- Dynamic Dispatch in C# 4.0
- Today's WTF
- Last night's talk on Dependency Injection with Windsor at Skill's Matter, London
- Rendering a tree view using the MVC Framework
- Mapping entities to multiple databases with NHibernate
- MVC Framework beta released
- Using ServiceLocator in an MVC Framework application
- Using Google Maps with the MVC Framework
- Learn to use Castle Windsor: Skills Matter, London October 23rd
- Using the Google maps geocode service to find the co-ordinates of an address
- Google Charts
- I welcome our new IServiceLocator overlord
- Column Ordering, Paging and Filtering in the MVC Framework
- Jump the Gun
- Photosynth Fun
- Suteki Shop at REMIX
- Form validation with MVC Framework Preview 5
- Resolving arrays with Windsor
- ALT.NET UK (un)conference
- Today's WTF
- MVC Framework Validation
- Managed Extensibility Framework: Why?
- What's up with Linq to NHibernate?
- Vote For Me! (again)
- Taking the HttpContext out of the MVC Framework Controller
- More on MSTest
- Firefox wins here (just)
- What's an Auto Mocking Container?
- Microsoft.Sdc.Tasks
- The Queryable Domain Property Problem
- On Google App Engine
- How Did I Get Started In Software Development?
- ADO.NET Data Services: Creating a custom Data Context #3: Updating
- ADO.NET Data Services: Creating a custom Data Context #2: The Client
- ADO.NET Data Services: Creating a custom Data Context #1
- Last night's ALT.NET evening
- Playing with ADO.NET Data Services
- Today's WTF
- There's usually an easier way
- More fun with 'yield return'
- MSTest is sapping my will to live
- Extension Method + LINQ + Interface = Reusable Queries
- ALT.NET UK (un)conference
- Why isn't Microsoft ALT.NET?
- The ALT.NET virtuous network
- Eagerly Loading Northwind: playing with DataLoadOptions
- LINQ to CSV
- MVC Framework: Capturing the output of a view (part 2)
- More Windsor Love: Using log4net integration
- MVC Framework: Capturing the output of a view
- Developer Developer Developer Day 7
- Interface + Extension Methods = Mixin
- Upgrading Suteki Shop to MVC Framework CTP 3
- Compiling aspx templates using aspnet_compiler
- What is RSD? Making my Suteki Shop to Live Writer integration slicker.
- Using Live Writer to Post Content to a Web Site
- Nested Master Pages with the MVC Framework
- MVC Framework Scaffolding
- Credit Card Validation With LINQ
- Collecting Validation Exceptions
- CSS Based Foldout Menus
- MVC Framework - default.aspx routes no longer work with the latest CodePlex build
- Generic reordering
- Last night's Sussex Geek Dinner
- Problems with the MVC Framework RenderComponent helper method
- Design Coding
- MVC Storefront
- Do Not Use Webhosting.uk.com
- IoC Container Purse Fight
- Repository.GetById using LINQ Expression Syntax
- Extension Properties for easy Reflection in C#
- Software Factories and Battery Programmers
- Visual Tools: Marketing Dream, Programmer's Nightmare
- I'm speaking at the next Sussex Geek Dinner
- File uploads with the MVC Framework
- Using the IRepository pattern with LINQ to SQL
- LINQ to String
- Currying in C# with Oliver Sturm
- Windsor IoC Container and MVC Framework CTP 2
- Forms Authentication with the MVC Framework
- How to output Windsor Container's dependency graph
- Nasty IE margin inheritance bug
- Extension method validators
- RESTful file uploads with HttpWebRequest and IHttpHandler
- Never write a for loop again! Fun with Linq style extension methods.
- ALT.NET UK
- Writing unit tests for an MVC Framework controller sucks
- DDD6 Feedback
- You have to stay up late for ALT.NET
- Rob Conery on choosing your data access method
- More on source repository hosting: What about Continuous Integration?
- Source repository hosting: Why do it yourself?
- Building my first Monorail application
2007 59
- Rhino Mocks Callbacks with Lambda expressions
- RESTful Web Services by Leonard Richardson & Sam Ruby
- Exposing generic methods to frameworks that don't understand generics.
- Developer Developer Developer Day 6
- Hammett on Microsoft's MVC Framework
- Installing Visual Studio 2008
- Ian Cooper on MVC
- An important new .NET language: LOLCODE
- The MVC framework and new C# 3.0 features
- T-SQL Fibonacci and the power of 'With'
- My new MacBook
- Inversion of Control, Unit Tests and Mocks
- How big should a function be? Uncle Bob explains.
- using Rhino.Mocks
- What is Inversion of Control
- Who uses this stuff?
- Developer Developer Developer Day. I've been selected!
- The Hollywood Principle
- Breaking a list into columns using custom iterators
- F# to join C# and VB.NET as a core .NET language
- Installing Vista
- A custom SSIS PipelineComponent
- Vote For Me!
- Microsoft's new MVC web development framework
- Windsor Container Resources
- My Developer Developer Developer Day session
- Ben on MonoRail
- Why are you still hand coding your data access layer?
- The joys of System.Diagnostics.StackFrame
- MIX 07 UK
- Microsoft and Innovation
- Testing Will Challenge Your Conventions
- Masters, Journeymen, and Apprentices
- The Castle Project's Windsor Container and why I might need it.
- Jeremy Miller's build your own CAB series
- How to structure Visual Studio solutions
- Serializing lots of different objects into a single file
- Four ways of doing a test with a result.
- A problem with ASP.NET client side validation and IIS host headers
- Playing with JSON
- My new Web Service Test tool, WsdlWorks
- Permissions needed to access the IIS metabase remotely using WMI
- How to walk the IIS metabase using WMI and System.Management
- IIS Redirects by setting the HttpRedirect metabase property with WMI
- URL Rewriting
- Resolving mutipart WSDL documents with DiscoveryClientProtocol
- WCF and WSDL
- How to add a command to a custom VS project type
- Is LINQ the writing on the wall for C#?
- REST is the Betamax of Web Services
- Building a Visual Studio Custom Project Type
- Writing a raw web service using an HttpHandler
- Wes Dyer talking about LINQ
- Creating set based filters with custom iterators
- Writing your own XSD.exe
- Orthogonal Code
- Easy impersonation
- SQL Authorization Manager
- Are you confused by character encodings?
2006 55
- F# Life
- How to write an XSD
- XmlDiff
- Playing with the XmlSerializer
- Using MemoryStream and BinaryFormatter for reuseable GetHashCode and DeepCopy functions
- Nested files with 'DependentUpon' in Visual Studio
- Finally getting around to using NMock
- More than just code?
- Playing with Providers
- What is AzMan?
- log4net
- No to #region!
- Nullability Voodoo
- Problems with the DataGridViewComboBoxColumn
- Discovering GetService
- Just what do you do all day?
- How to examine code and write a class with EnvDTE
- Are you a nerd?
- How to do database source control and builds
- Windows Live Writer
- How to create a guidance package
- Fustrating Visual Studio Templates
- Software Factories, Domain Specific Languages and related stuff
- Reflecting Generics
- A nice soap test tool: SoapUI
- Functional Programming
- Writing web services contract first using WSCF
- Playing with HTTP.SYS
- Resting?
- one line fibonacci
- The Vietnam of Computer Science
- Book Review: Framework Design Guidelines by Krzysztof Cwalina and Brad Abrams.
- A simple WSDL object
- Dynamically creating a web service proxy class
- I love Regex
- The world's most misunderstood programming language
- Making raw web service calls with the HttpWebRequest class
- Intellisense isn't always right
- Where do role-based security checks go in my Application?
- How to drive on Mars
- Windows.Forms databinding doesn't work for domain objects.
- The Research Channel
- Microsoft doesn't do Encapsulation.
- Stevey's Drunken Blog Rants
- To stored procedure or not to stored procedure?
- A Solution for the reference data problem
- Doing remote procedure calls using WSE web service attachments
- Steve Yegge's whirlwind language tour
- A nice pattern for databinding domain objects
- A neat way of getting around some OR mapping issues with temporary Domain classes.
- Seriously hard core debugging
- A VS Macro to count projects classes and functions
- PDC 05 Downloads
- The official Microsoft GUI Guidelines
- Linq