Skip to content

Archives

All the articles I've archived.

2025 4
March 4
  • Deploying .NET applications to Coolify

    Published: at 04:45 PM

    A step-by-step guide on migrating from WordPress on Digital Ocean VPS to Cloudflare Pages and Astro SSG, including integrating Giscus comments and other benefits.

  • Moving from WordPress on Digital Ocean VPS to Cloudflare Pages and Astro SSG

    Published: at 04:45 PM

    A step-by-step guide on migrating from WordPress on Digital Ocean VPS to Cloudflare Pages and Astro SSG, including integrating Giscus comments and other benefits.

  • Integrating Giscus Comments in AstroPaper v5

    Published: at 03:00 PM

    A step-by-step guide on integrating Giscus comments into AstroPaper v5, including fixes for common issues.

  • Moving Content to Astro

    Published: at 11:00 AM

    A guide on migrating blog content to Astro, including exporting from WordPress, setting up Astro, importing Markdown files, and cleaning them up using GitHub Copilot.

2024 1
June 1
  • The Plague of Microsoft Excel

    Published: at 05:53 AM

    An exploration of the hidden costs and inefficiencies caused by the overuse of Microsoft Excel in business environments, with recommendations for identifying and addressing these issues.

2023 2
June 1
  • Exploring the Traits of Exceptional Developers

    Published: at 09:25 PM

    An exploration of the qualities that define exceptional developers, including T-shaped skills, continuous learning, problem-solving, and the ability to switch between big-picture thinking and detailed focus.

April 1
2015 4
November 1
  • NServiceBus problems with RavenDb

    Published: at 10:16 AM

    Troubleshooting NServiceBus and RavenDb issues in a .NET application, including solutions for GUID formatting errors and corrupted performance counters after a Windows 10 update.

September 1
May 1
  • Golden rules for building better software

    Published: at 01:20 PM

    A comprehensive guide to best practices in web development, covering design/UI, graphics/charts, HTML/JavaScript, data handling, site setup, server configuration, and general process.

February 1
  • JavaScript Module Pattern

    Published: at 04:05 PM

    An overview of the JavaScript module design pattern, highlighting its benefits for code organization and readability, with resources for further learning.

2014 19
November 1
October 1
  • Cool tools for wireframing

    Published: at 07:05 PM

    An overview of tools for wireframing and prototyping, including Axure RP and Balsamiq Mockups, highlighting their features and benefits for design and collaboration.

September 1
  • Common .htaccess Redirects

    Published: at 05:11 AM

    A comprehensive guide to common .htaccess redirects, including examples for single pages, entire sites, subfolders, and advanced redirection techniques using mod_rewrite.

August 7
  • FluentMigrator timeout when adding a new column to a large table

    Published: at 12:00 PM

    Discusses the challenges and solutions for adding a new column to a large table using FluentMigrator, including handling timeouts and adjusting SQL command timeout settings.

  • P vs NP explained

    Published: at 02:34 PM

    An overview of the P versus NP problem, explaining the difference between the complexity classes P and NP and the significance of determining whether every problem whose solution can be quickly verified can also be quickly solved.

  • The story of AllowRowLocks equals false. When indexes go bad.

    Published: at 10:55 AM

    Discusses the challenges and solutions related to SQL Server indexes with AllowRowLocks set to false, including troubleshooting deadlocks and failed deletes, and provides guidance on enabling row locks.

  • Saving Table Space Quick And Dirty

    Published: at 04:26 AM

    A practical guide on reducing database space usage with a SQL script that identifies tables with high data-per-row ratios, helping to improve database performance.

  • Deploying Database Migrations in .NET Using FluentMigrator, TeamCity, and Octopus Deploy

    Published: at 09:30 AM

    A practical guide to database migrations in .NET using FluentMigrator, covering challenges with existing databases, deployment strategies with Octopus Deploy and TeamCity, and overcoming migration complexities. This post provides insights into automation, version control, and structured schema changes for efficient database management.

  • SOLVED - apache2: Could not reliably determine the server's fully qualified domain name

    Published: at 08:22 AM

    A solution to the Apache2 error "Could not reliably determine the server's fully qualified domain name," including steps to configure ServerName and correct the hosts file on a Digital Ocean VPS with VirtualMin.

  • Powershell Power - Moving large amounts of files to the cloud

    Published: at 06:25 PM

    A detailed guide on using Powershell and .NET to transfer large amounts of files to the cloud, including challenges faced and solutions implemented for efficient file migration and database updates.

July 1
  • The golden rules of encryption for developers

    Published: at 10:51 PM

    Essential guidelines for developers on implementing encryption, highlighting common pitfalls and recommending best practices for secure cryptographic methods and algorithms.s for developers on implementing encryption, highlighting common pitfalls and recommending best practices for secure cryptographic methods and algorithms.

June 2
  • The browser wars illustrated - playground edition

    Published: at 08:03 AM

    A humorous recount of the browser wars in 2014, highlighting Chrome's dominance, Firefox's struggle, and Internet Explorer's obsolescence, with playful analogies and reflections on the ongoing competition.of the browser wars in 2014, highlighting Chrome's dominance, Firefox's struggle, and Internet Explorer's obsolescence, with playful analogies and reflections on the ongoing competition.

  • Teletype effects in JavaScript

    Published: at 08:10 AM

    An exploration of implementing teletype effects in JavaScript, including references to jQuery plugins and a live example on jsFiddle.

May 1
  • Command prompt here in Explorer Vista, Windows 7 and Windows 8

    Published: at 09:27 AM

    A guide on opening a command prompt from Windows Explorer in Vista, Windows 7, and Windows 8, including adding a Visual Studio Command Prompt to the context menu and using Git Bash for Unix-like tools.a command prompt from Windows Explorer in Vista, Windows 7, and Windows 8, including adding a Visual Studio Command Prompt to the context menu and using Git Bash for Unix-like tools.

February 2
January 3
  • How I setup my Digital Ocean droplet with ZPanel and configured the DKIM and SPF records

    Published: at 09:52 AM

    A detailed guide on setting up a Digital Ocean droplet with ZPanel, and configuring DKIM and SPF records for email authentication, including securing the server and installing Spam Assassin.

  • JavaScript for hackers

    Published: at 05:30 AM

    An exploration of JavaScript techniques for XSS filter evasion, emphasizing the importance of understanding these methods for improving web application security.

  • How Software Companies Die

    Published: at 09:26 AM

    A humorous and insightful look at how software companies thrive and eventually decline, based on Orson Scott Card's analogy of programmers as domesticated bees and the inevitable corporate shift from innovation to bureaucracy.

2013 8
August 3
  • The First Few Milliseconds of an HTTPS Connection

    Published: at 11:26 AM

    An in-depth look at the initial milliseconds of establishing an HTTPS connection, using Wireshark and a debug build of Firefox to analyze the SSL/TLS handshake and certificate verification process.

  • Leaflet - An Open-Source JavaScript Library for Mobile-Friendly Interactive Maps

    Published: at 12:00 PM

    An introduction to Leaflet, a lightweight open-source JavaScript library for creating mobile-friendly interactive maps, highlighting its features, performance, and usability.

  • Visual Representation of SQL Joins

    Published: at 09:16 AM

    A visual guide to understanding different types of SQL joins, including INNER JOIN, LEFT JOIN, RIGHT JOIN, and FULL OUTER JOIN, with visual aids to help grasp the concepts.

July 1
  • Text to UML Diagrams - Online tools

    Published: at 12:00 PM

    An introduction to text-based tools for creating UML diagrams, highlighting SVG-Sequence-Diagram, js-sequence-diagrams, and websequencediagrams.com, with an example of a request-poll-response style architecture.

June 1
April 1
  • Request-Acknowledge-Poll as a service design pattern

    Published: at 01:40 PM

    An explanation of the Request/Acknowledge service design pattern, including variations like Request/Acknowledge/Poll and Request/Acknowledge/Callback, and their implementation in reducing temporal coupling.

February 1
January 1
2012 11
September 1
August 1
  • The lowdown on DateTime vs DateTimeOffset

    Published: at 01:52 PM

    An explanation of the differences between DateTime and DateTimeOffset in .NET, highlighting the advantages of using DateTimeOffset for timezone-aware date and time handling.

July 4
  • Why .NET developers should use NodaTime

    Published: at 01:52 PM

    An explanation of the benefits of using NodaTime for date and time handling in .NET applications, highlighting its advantages over the .NET date and time API.

  • Understanding open source code licensing models

    Published: at 09:58 AM

    An explanation of the importance of adhering to open source license terms when using someone else's code, highlighting the need to respect copyright notices and license conditions.

  • How to contribute to open source projects on Github

    Published: at 01:46 PM

    A guide on how to properly contribute to open source projects on GitHub, covering forking, branching, making changes, and submitting pull requests.

  • The right algorithm for user ratings

    Published: at 09:59 AM

    An explanation of the correct algorithm for sorting user ratings, highlighting the use of the Wilson score confidence interval for accurate ranking.

April 1
  • Never rewrite code from scratch

    Published: at 10:25 AM

    An explanation of why rewriting code from scratch is a strategic mistake, and the benefits of using the Strangler Pattern for refactoring and improving existing codebases.

March 3
  • Document and interface with your REST service using Swagger

    Published: at 09:04 AM

    An overview of using Swagger to document and interface with RESTful web services, highlighting its benefits for keeping APIs in sync and simplifying deployment and management.

  • Bing Maps has a SOAP Search service

    Published: at 11:36 AM

    An overview of the SOAP-based search service provided by Bing Maps, discussing its limitations and referencing a detailed explanation by Alastair Aitchison.

  • Warning: The HTML5 Data Attribute is case sensitive

    Published: at 08:33 AM

    An explanation of why the HTML5 data attribute is case-sensitive, highlighting a specific issue with uppercase letters and providing a solution based on the HTML5 specification.

February 1
  • ServiceStack

    Published: at 01:59 PM

    An overview of ServiceStack, a modern alternative to WCF, highlighting its advantages for building high-performance, scalable REST and RPC web services.

2011 10
November 2
October 1
September 2
August 1
July 1
  • BCrypt and ASP.net MVC

    Published: at 07:27 AM

    An overview of using BCrypt for password hashing in ASP.NET MVC applications, highlighting its advantages for secure password storage.

June 2
  • Do developers get better with age?

    Published: at 07:43 AM

    An exploration of whether developers get better with age, considering the constant evolution of technology and the benefits of experience and continuous learning.

  • Storing data securely - A primer for .NET developers

    Published: at 07:28 AM

    An overview of the importance of cryptography in computer systems, highlighting common pitfalls and best practices for .NET developers to securely store data.

January 1
2010 3
November 1
April 1
February 1
2009 2
February 1
  • RPX OpenID with ASP.NET Webforms and Membership Providers

    Published: at 08:15 PM

    Exploring the integration of RPX, an OpenID consolidator, with ASP.NET Webforms and Membership Providers. This guide covers implementation steps, handling authentication tokens, and mapping OpenID users to an existing database.

January 1
2004 2
March 1
  • Sending photos from your mobile to your website

    Published: at 04:22 PM

    A guide on how to send photos from a mobile phone to a website using ASP.NET, including the use of the DevMail.Net POP3 component, XML database setup, and code examples.

January 1
  • C# vs VB.NET - My choice and why

    Published: at 03:08 PM

    A comparison of C# and VB.NET, highlighting the reasons for choosing C# over VB.NET, including its certification, powerful features, less verbose syntax, and XML code documentation.

2003 3
October 2
  • MMS Email Photo Blogging

    Published: at 04:22 PM

    A guide on how to automatically pick up MMS emails, extract the images, and post them as a "moblog" using ASP.NET, including POP3 integration, scheduling, and displaying images.

  • Creating a PowerPoint presentation on-the-fly using a design template

    Published: at 04:22 PM

    A guide on how to automate the creation of PowerPoint presentations using ASP (classic), including using a design template, updating the title, copying slides, and saving the presentation to the server.

September 1
  • First blog post

    Published: at 04:22 PM

    Introduction to the new blog created using XML-based code provided by Johan Danforth, highlighting its features and ease of use.

2000 18
December 1
September 7
July 4
June 1
March 1
January 4