RSSAmplifier

Blog

Marc Durdin's Blog

Thoughts on computing, Bible, cycling, family, my stories and more

marc.durdin.netRSS feed ↗10 posts

Latest posts

The Case of the Sadly Real Currently Failing Test

In the Keyman project, we try to add automated tests for all the code we write to make sure that we don t break assumptions when we make future changes, and to verify that what we wrote actually works the way we expect it to. Recently, I made a change to the Keyman for Windows Continue reading The Case of the Sadly Real Currently Failing Test

Ancient Mysteries and Private Detectives

There I was, sitting at my desk in the late afternoon, chewing over the results of my last case. The case had gone well, but I needed more cases to keep the cash flowing. As I mulled over the possibilities, suddenly, I heard a scuffling noise, and saw a note shoved under my door. I Continue reading Ancient Mysteries and Private Detectives

Creating and using an Internationalized Domain Name in July 2024

We needed to setup a web host for the domain convert.ភាសាខ្មែរ.com for an upcoming project. It should have been simple, but this turned into quite the journey. A very brief background on IDNs Some background. Notice the use of Khmer characters: ភាសាខ្មែរ /pʰiesaa kmae/ or Khmer Language . ភាសាខ្មែរ.com is a domain I ve owned for some Continue reading Creating and using an Internationalized Domain…

dynamic import on node.js with circular dependencies leads to interesting failure modes

So, given these three ES modules below, what output do you expect to get when you run node one.js? one.js: import { two } from './two.js'; await two(); export function one() { console.log('one'); } two.js: export async function two() { console.log('two'); const { three } = await import('./three.js'); three(); } three.js: import { one } Continue reading dynamic import on node.js with circular…

What is marriage?

Written the day after my daughter s wedding. What is marriage? Is it a record of property duly Signed and sealed by stroke of dreary pen So lawyers and judges can argue Over who owns what Or a walled garden within which A family can grow and thrive In the sun protected from The fierce Continue reading What is marriage?

Debugging a Windows Service

This is a set of notes on how to debug a Windows service starting up, mostly for my reference. Building on https://www.sysadmins.lv/retired-msft-blogs/alejacma/how-to-debug-windows-services-with-windbg.aspx with command line steps where possible. In this example, we ll be debugging mycool.exe , which has the service name mycoolservice . Enabling debugging Find the path to cdb.exe , windbg.exe ,…

location.hash can be re-entrant on Safari Mobile

So Josh and I were observing some really strange behaviour in the Keyman for iOS beta. When typing rapidly on the touch keyboard, we would sometimes get the wrong character emitted. We could not see anything immediately wrong in the code. So Josh added some logging. Then things got really weird: we would get the Continue reading location.hash can be re-entrant on Safari Mobile

The Case of the Overly Busy Process

The other day, I was running a routine Process Monitor (Procmon) trace to debug an issue in Keyman, when I noticed something strange: over 50% of the events displayed with the default filter (which excludes a lot of system-level noise and procmon-related feedback) were coming from a single process: services.exe. You can see in the image Continue reading The Case of the Overly Busy Process

The case for Keyman

Recent podcast I was recently privileged to be a guest on Scott Hanselman’s Hanselminutes podcast. It was great to talk about the history of Keyman and how it solved real problems for us 20+ years ago. But afterwards I realised I hadn’t really described what sorts of problems Keyman solves today and why it is Continue reading The case for Keyman

Working around Delphi’s default grid scrolling behaviour

Delphi s T*Grid components have an annoying little feature whereby they will scroll the cell into view if you click on a partially visible cell at the right or the bottom of the window. Then, this couples with a timer that causes the scroll to continue as long as the mouse button is held down and Continue reading Working around Delphi s default grid scrolling behaviour