Archive
November 2023
September 2023
- Thu 28: "Seven plus nine is not six"
August 2023
January 2023
July 2022
- Mon 25: Becoming like little children does not mean what you think it means
- Mon 18: 1 Corinthians 1 is not an anti-intellectual manifesto
May 2022
- Mon 30: The mother of all conspiracies
March 2022
December 2021
November 2021
October 2021
June 2021
May 2021
November 2020
- Fri 20: Light speed
October 2020
- Mon 26: How to challenge a scientific theory, method 2: propose an alternative
- Mon 19: How to challenge a scientific theory, method 1: Evidence that contradicts it
- Mon 12: How to challenge a scientific theory
January 2020
- Mon 20: Finding bugs in your code quickly using git bisect
- Wed 8: On the "reproducibility crisis" in science
December 2019
- Fri 13: How not to stop Brexit
November 2019
June 2019
March 2019
- Mon 25: A must-watch talk for every .NET developer by Udi Dahan
- Mon 4: A brief history of pointless mappings
December 2018
October 2018
- Mon 29: Which .NET IOC containers pass Microsoft's tests?
- Mon 15: The state of IOC containers in ASP.NET Core
September 2018
- Mon 17: Just how clean is Uncle Bob's Clean Architecture?
- Mon 3: Productivity suggestion: stop using the mouse
August 2018
- Tue 28: First impressions of JetBrains Rider
- Thu 16: It's not just an opinion, it's scar tissue
- Mon 13: Don't be too uncritical of evolution
July 2018
- Mon 23: An update on Lambda Tools
- Mon 16: Some thoughts on DevOps
- Tue 10: Your Repository is not a Data Access Layer
- Mon 9: On methodological naturalism
June 2018
- Tue 26: The Great Shorts Debate
May 2018
April 2018
- Fri 27: Returning.To<.NET>()
February 2018
- Thu 8: To throw or not to throw? Doing something that has already been done
- Mon 5: Where do we go from here?
January 2018
- Mon 29: A review of Answers in Genesis's ten best evidences for a young earth — summary and conclusion
- Mon 22: Some advice for non-scientists on how to talk about science and faith
- Fri 19: Positive, negative, or error?
- Mon 15: YEC Best Evidence 10: DNA in ancient bacteria
- Tue 9: Supergiant stars are hot vacuums
- Mon 8: No, the distant starlight problem is not the same as the horizon problem
- Mon 1: YEC Best Evidence 9: not enough salt in the sea, or not enough precision in the measurements?
December 2017
- Thu 28: What is xkcd "Time" all about?
- Mon 25: There is hope
- Mon 18: YEC Best Evidence 8: short-lived comets
- Mon 11: "Yom with a number" — rule of Hebrew grammar or young-earth fabrication?
- Thu 7: Error handling is the one thing that puts me off learning Go
- Mon 4: YEC Best Evidence 7: ancient carbon-14 — intrinsic or contamination?
November 2017
- Tue 28: You have to tell AWS CLI that your EC2 instance is not in Virginia
- Mon 27: Some advice for pastors on how to handle science
- Mon 27: Design refresh
- Mon 20: YEC Best Evidence 6: helium in radioactive rocks and the importance of critical peer review
- Thu 16: Introducing Lambda Tools: a new framework for deployment to AWS Lambda
- Mon 13: A few facts about zircons
- Thu 9: Necessary and sufficient conditions
- Mon 6: YEC Best Evidence 5: has the Earth's magnetic field always been decaying?
October 2017
- Mon 30: Religious presuppositions are not the problem with young-earth creationism
- Tue 24: Programmatically starting an AWS instance with an encrypted EBS volume attached
- Mon 23: YEC Best Evidence 4: the faint young sun paradox
- Mon 16: A musical interlude
- Mon 9: YEC Best Evidence 3: the facts about soft tissue in dinosaur fossils
- Mon 2: How to measure things
September 2017
- Mon 25: YEC Best Evidence 2: bent rock layers are not fractured — or are they?
- Mon 18: On evolution
- Mon 11: YEC Best Evidence 1: not enough sediment on the seafloor
- Mon 4: An examination of Answers in Genesis's ten best evidences for a young earth
August 2017
- Mon 28: Could radiometric results be cherry-picked?
- Mon 21: About those dating methods that disagree with each other
- Mon 14: How much evidence is there?
- Mon 7: This is what trying to fit science to your worldview looks like
July 2017
- Mon 31: The role of miracles in creation
- Mon 24: What does oil exploration tell us about the age of the earth?
- Mon 17: Getting the basics right
- Tue 11: New blog on creation and evolution
- Mon 10: Cross-checks test assumptions. They do not make them.
- Mon 3: The "were you there?" fallacy
- Sat 1: A brief introduction
June 2017
- Tue 20: Continuous Retrospectives are not a substitute for retrospective meetings
- Tue 13: Ten things you need to know about the age of the earth
- Mon 5: What should a .NET renaissance look like?
May 2017
March 2017
February 2017
- Wed 22: So you want to talk about creation and evolution...
- Tue 14: How to keep lab notes as a software developer
January 2017
- Thu 19: SQL injection is the FizzBuzz of web security
- Thu 12: Some thoughts on CQRS and Event Sourcing
- Thu 5: Martin Fowler and feature branches revisited
December 2016
September 2016
July 2016
June 2016
- Wed 8: The Continuous Retrospective
March 2016
February 2016
- Mon 29: Fuzzy dates aren't as good an idea as you think
- Wed 24: Signing Git commits with GPG on Windows
November 2015
July 2015
February 2015
- Mon 16: Inseparable concerns
October 2014
- Thu 30: "That's just your opinion" means "I'm not listening"
- Thu 23: Why you should use a general purpose scripting language for your build scripts
- Thu 16: Moving a problem from one part of your codebase to another does not eliminate it
- Thu 9: The Repository Facade
- Thu 2: Why feature switches?
September 2014
- Thu 25: Dolstagis.Web 0.3 is out
- Thu 18: How not to do logging: catch-log-throw
- Thu 11: How not to do logging: unnecessary abstractions
- Thu 4: A maturity model for best practices
August 2014
- Thu 28: Sorting out the confusion that is OWIN, Katana and IAppBuilder
- Thu 21: Query Objects: a better approach than your BLL/repository
- Thu 14: If your tests aren’t hitting the database, you might as well not write tests at all
July 2014
- Thu 24: Interchangeable data access layers == stealing from your client
- Wed 16: The Anaemic Business Layer
- Thu 10: On dark matter developers and the role of GitHub in hiring
December 2013
November 2013
October 2013
September 2013
- Mon 9: My choice of Git GUI tools
August 2013
- Tue 6: Namespaces in JavaScript
June 2013
May 2013
- Thu 30: Dolstagis: my pet project
January 2013
- Mon 28: Reboot
July 2012
- Mon 23: Is ALM just a marketing buzzword?
- Tue 17: Your password hash algorithm is (probably) snake oil
June 2012
- Mon 11: On Git’s growth and the reliability of the Eclipse survey
- Fri 8: You can no longer afford not to take Git seriously
- Thu 7: Arguments that annoy me
May 2012
- Mon 14: Pigs and chickens
- Tue 8: In response to criticisms of CSS pre-processors
April 2012
- Thu 19: How good is your JavaScript?
March 2012
- Mon 26: What is Git's market share?
February 2012
December 2011
- Fri 2: Reckless London cyclists
November 2011
October 2011
- Mon 3: The two types of programmer
September 2011
- Thu 29: :q!
- Fri 23: First impressions of MSpec
- Thu 15: Passion and pet projects
August 2011
July 2011
- Wed 13: Feature branches versus continuous integration
- Thu 7: Why does Martin Fowler not understand feature branches?
June 2011
- Mon 20: Keep the number of projects in your solution to a minimum
- Wed 15: No, WANdisco, Git does NOT promote anti-social development
- Mon 13: Tourists and residents, Visual Studio and vim
- Fri 3: Silverlight is dead. Long live HTML 5.
May 2011
April 2011
- Fri 29: Eight wrong reasons why you are storing passwords for clear text recovery
- Thu 14: Agile versus methodologies
- Thu 7: The purpose of auditing is to answer questions
- Mon 4: Why merges can (and should) be automated
March 2011
February 2011
- Tue 22: On named branches in Mercurial
- Wed 16: Google is not your doctor
- Mon 14: Team Foundation Server is the Lotus Notes of version control tools
- Mon 7: How often should you check in code?
January 2011
- Mon 31: A photo a day
- Thu 27: Experimental photography
December 2010
- Tue 21: Finding bugs with a binary search of your source control history
- Thu 16: Understanding Planning Poker
- Mon 13: Programmer jargon: Blub
- Thu 9: How to host WCF services in ASP.NET applications without bloating your web.config
- Mon 6: The benefits of the command line
November 2010
- Thu 18: Programmer jargon: Cargo Cult
- Mon 15: Why tabs versus spaces matters
- Fri 12: My driving instructor would shout at me
October 2010
- Mon 25: Avoiding the sardine can
- Mon 4: Perforce Merge: a very nice free replacement for TortoiseMerge
September 2010
- Thu 30: Solving the tangled working copy problem with hunk selection and Mercurial Queues
- Thu 23: Git
- Mon 20: On code generation
- Fri 17: Diaspora
- Thu 16: Why I like distributed source control
- Mon 6: Branching and merging in Subversion is worse than I thought
- Sat 4: Send patchbombs to the mailing list, not pull requests to the project lead
June 2010
- Mon 28: Just how smart is Git?
- Wed 23: Phone faux pas
- Mon 21: TortoiseHg as a github client on Windows
- Thu 17: Someone must be wrong about solar weather
- Fri 11: The meaning of football
- Fri 4: Is Facebook really as essential as it’s made out to be?
May 2010
- Thu 27: You have till Monday to talk me out of quitting Facebook
- Mon 10: Introductory videos on IOC containers
March 2010
- Fri 26: On web deployment
- Tue 23: NAnt and MSBuild are completely pointless
- Mon 15: If part of your framework is not fit for purpose, don’t use it
- Mon 8: Command line instructions are not a good marketing strategy
February 2010
- Thu 4: Catching Exception is almost never justified and almost always harmful
- Tue 2: Are deletionists harming Wikipedia?
December 2009
November 2009
October 2009
- Wed 28: A day of Stack Overflow
- Mon 26: How to validate a URL in .NET
September 2009
- Tue 29: Book review: The Art of Unit Testing
- Fri 25: Joel Spolsky, cowboy coder
- Wed 16: If you are saving passwords in clear text, you are probably breaking the law
August 2009
- Sat 29: Twitter through the eyes of a nine year old
- Thu 27: Why can't every call centre let you know how long you'll be waiting?
- Mon 17: Web development is hard, m’kay?
- Fri 14: Please untangle this great long conversation by COP today
July 2009
June 2009
- Mon 29: Why SQL Server 2005 database projects in VSTS are a bad idea
- Fri 5: Keyboard switching in IE8 is insane
- Mon 1: Why would anyone not use source control?
May 2009
- Fri 15: Inital SQL files breaking in Django syncdb
- Mon 11: Reinventing the wheel, badly
- Thu 7: Rear airflow rucksacks are a nice idea, but...
- Mon 4: Handling exceptions in assembly-level setup methods in MbUnit
April 2009
- Wed 29: XsltArgumentList violates the Single Responsibility Principle
- Mon 27: Using jQuery? Check out jQuery UI
- Mon 20: Some thoughts on the role of open source experience in recruitment
- Tue 14: Beware of second hand contracts
- Mon 6: When technical debt becomes technical bankruptcy
- Thu 2: Continuous Deployment: radical idea or April fool?
March 2009
- Mon 30: Django custom manage.py commands not committing transactions?
- Thu 26: OO: the lingua franca of modern software design
- Tue 17: Making the most of your source control summaries
February 2009
January 2009
- Sun 18: Commercial flights are twenty-five times safer than private jets
- Wed 14: The top 25 most dangerous programming errors
- Thu 1: What did James McKay discover?
December 2008
- Sat 27: Django: ValueError: too many values to unpack
- Mon 22: Time for a new job
- Fri 5: Do antivirus scans really need to brick your computer?
November 2008
- Tue 25: Del Boy versus Turing
- Mon 24: Another XSLT sweetener
- Fri 21: What to drink when you don't drink
- Mon 17: An XSLT sweetener
- Tue 11: A train of thought
October 2008
- Mon 27: Unit testing URL generation and Html.ActionLink in ASP.NET MVC
- Fri 17: In defence of 24 hours
- Wed 1: ASP.NET MVC + jQuery - can things get any better for web developers?
September 2008
- Sat 27: Why Stack Overflow’s reputation system is broken
- Wed 10: The leaf!
- Mon 8: Paths and file locations in ASP.NET
- Mon 1: Commenting your code for speed reading
August 2008
- Mon 18: Internet Explorer painkillers
- Sat 16: A highly irresponsible metric for web hosting companies
- Sun 10: A first look at stackoverflow.com
- Thu 7: PHP gets closures. Rejoice!
- Wed 6: Don't stuff beans up your nose
July 2008
- Mon 28: Comment Timeout and faulty WordPress themes
- Mon 14: Refactoring Databases
- Wed 9: What are valid reasons for hating a programming language?
June 2008
- Sun 29: Trying out Python and Django
- Wed 25: Less is more
- Fri 20: What no night?
- Tue 10: Easy login recovery without compromising security
- Fri 6: How to become a better .NET developer
- Wed 4: The Church needs Creative Commons
May 2008
- Sat 31: Productivity metrics: garbage in, garbage out
- Fri 30: What part of "no agencies" do you not understand?
- Thu 29: What is the difference between a web designer and a web developer?
- Tue 20: Where are all the passionate .NET developers?
- Mon 5: Code syntax highlighting in WordPress - take two
- Sun 4: How to match any character (including newlines) in a JavaScript regular expression
April 2008
- Wed 30: Why I hate web.config
- Wed 23: The two golden rules of exception handling
- Sat 19: Code syntax highlighting in WordPress
- Mon 14: If you think you don't need source control, you haven't understood it
- Sat 12: Trying out speech recognition in Windows Vista
- Thu 10: Windows upgrades break Media Player 6.4
March 2008
- Mon 3: Derailed
February 2008
- Sat 16: Pro JavaScript Techniques
- Thu 7: 恭喜发财, now give me some Unicode
- Mon 4: Seventy-one
- Sun 3: Published
January 2008
- Mon 14: Missing ASP.NET tab in IIS on Windows Server 2003
- Fri 11: On Colemak
December 2007
- Mon 17: Mrs Immery
- Mon 17: Making the "zoom" slider on the Microsoft Natural 4000 keyboard do something useful
- Fri 14: How to list the sizes of the tables in a SQL Server database
- Tue 11: Volta, GWT and leaky abstractions
- Sat 1: Britain's best motorway service station
November 2007
- Mon 26: Is it time to kill off wikitext?
- Thu 15: Password Reminders Considered Harmful
- Mon 12: Procedural programming != functional programming
- Fri 9: Sorry, but who are you?
- Thu 8: Can we live without Wikipedia?
October 2007
- Mon 22: How long does it take to unsubscribe from an e-newsletter?
- Wed 17: Make way for your MP
- Fri 12: Is your rudeness necessary?
- Thu 11: On ties
- Tue 9: Farewell to the Kinesis
- Thu 4: The future of my blog
- Thu 4: Is there a future for Rails?
- Mon 1: Church 2.0
September 2007
- Wed 26: Is your code held together with bits of string?
- Thu 20: Where has all the disk space gone?
- Thu 13: Beginners' languages can have advanced features too
- Tue 11: On leaving Wikipedia
August 2007
- Sun 26: You take the high road and I'll take the slow road
- Thu 23: Six weeks of Dvorak
- Mon 13: Selling domain names
- Sat 11: Comment Timeout 2.0 upgrade
- Wed 8: Yes, but what is the point of it?
July 2007
- Mon 30: Blogging from the sheep shed -- or maybe not
- Fri 27: I could have told you this would happen...
- Fri 27: Some thoughts on WordPress security
- Mon 23: Does the keyboard have a future?
- Wed 18: Ask the whole community, not just one of its members
- Mon 16: Facebook - the Swiss army knife of social networking
- Mon 9: My million dollar iPhone question
- Tue 3: Blogging offline
- Mon 2: Developers versus PR
June 2007
- Sat 30: Another day, another OS reinstallation
- Fri 29: Case sensitivity is evil, but we still have to live with it
- Wed 20: Typing perfection?
- Fri 8: Another crack at Dvorak
- Tue 5: Bad Behavior does not like Windows Live Writer
- Sun 3: Comment Timeout 2.0 and friends
May 2007
- Fri 25: Cycle helmets versus style and comfort
- Tue 22: The functional beauty of JavaScript
- Mon 21: .NET by day, Rails by night
- Tue 15: I am not as good at Trivial Pursuit as you think
April 2007
- Sat 28: How to report issues with WordPress plugins
- Thu 26: The future of Comment Timeout
- Tue 24: Making website upgrades seamless: script the changes
- Sat 21: Mornington Crescent
March 2007
- Thu 22: Whither blog?
- Thu 15: April MiniBar with Mark Shuttleworth
- Tue 6: Comment Timeout 1.3 beta 1
- Mon 5: Vertical monitors
February 2007
- Fri 16: Dave 2.0
- Mon 12: Learning Rails
- Sat 10: On the rails
- Thu 8: Yes, it’s been snowing
- Wed 7: Bitten by PHP 4’s pass by value semantics
- Sun 4: Stopping the spam flood
January 2007
- Wed 31: Hot drinks
- Tue 30: Comment Timeout 1.2 - with new features
- Sun 28: An evening in London at MiniBar
- Sat 27: Comment Timeout 1.0 release candidate 2
- Thu 25: Improving Akismet
- Fri 5: Comment Timeout on WordPress MU
- Thu 4: Replacing a spleen with something else
- Mon 1: I'm on your WordPress dashboard!
December 2006
- Thu 28: WordPress plugins update
- Tue 26: Comment Timeout: Automatically closing blog comments on WordPress
- Mon 25: Happy Christmelicious everybody!
- Wed 20: Firebug - the best Firefox extension ever?
- Sat 9: Firefox usage by country: the browser wars are back
November 2006
- Sun 26: Pastors: get blogging!
- Wed 22: WordPress not notable?!!?
October 2006
- Fri 27: Verrückte Idee vom Tage: die Deutschkentnisse mit Wikipedie verbessern
- Fri 20: The squawl^H^H^H^H^H^Hskirl of the pipes...
September 2006
- Mon 25: The ultimate designer cat
August 2006
- Tue 15: Windows Live Writer
- Fri 11: Online documentation pains
- Tue 8: Frame Buster update
- Sat 5: Dvorak update
- Thu 3: Roughing it - or not
July 2006
- Sun 30: Apparently the in word is "blog"...
- Fri 28: Happy System Administrator Appreciation Day
- Wed 12: Ban Comic Sans
June 2006
- Wed 21: Kinesis report at three months: Broken!
- Fri 16: Ready (or not?) meals
- Mon 5: Video blogs at Kingdom Faith
- Sat 3: Footy fever
May 2006
April 2006
March 2006
- Wed 29: Will Ruby on Rails kill .net and Java?
- Fri 24: The Microsoft Time Warp
- Thu 16: Geeky but nice -- my new keyboard
- Fri 10: So long qwerty, hello Dvorak
February 2006
- Mon 27: iPod rebrand -- by Microsoft?
- Mon 27: Why doesn't C# have a synchronized keyword?
- Mon 13: New WordPress Plugin: The Frame Buster
- Tue 7: Gentoo
January 2006
- Thu 26: MSN Spaces not working in Firefox?
- Sun 22: Root canal torture again
- Wed 4: A tie!
December 2005
- Thu 22: All change
- Mon 19: Alex in Wonderland
- Tue 13: Secure your contact form!
November 2005
- Tue 29: Do you play the air guitar?
- Sun 27: IIS oddity
- Fri 25: Which programming language is the most popular?
- Sun 6: Sudoku
- Wed 2: Er ... excuse me, I thought this was 2005 ...
- Tue 1: The ongoing saga of my teeth
October 2005
- Mon 10: Chain letters and hoax e-mails
- Mon 3: RSS? Why bother?
September 2005
- Tue 27: Another anniversary
- Mon 19: Ergonomic keyboards
- Wed 14: Armchair physics!
August 2005
- Tue 9: Quote of the day...
- Wed 3: Faith Camp so far...
July 2005
- Wed 27: God is our refuge and strength
- Wed 6: It's London!
June 2005
- Thu 30: Happy birthday!
- Tue 28: Impenetrable Packaging of the Year Award
- Sun 19: Beeping Watch!
- Fri 17: The Way of the Spirit is on the move...
- Wed 15: The new KF website is about to go live
- Mon 13: All change at my blog
- Mon 13: Car update 1 @ 7 days
- Thu 9: Plagued by telemarketers? Try this...
- Tue 7: I'm mobile again!
May 2005
- Sun 29: Busman's Holiday!
- Fri 20: Gmail
- Wed 18: Mum on the radio and other matters
- Sun 15: Look out for...
- Fri 13: Fun with cookies
- Thu 12: Hello world