My name is Ian Fisher. I'm a software developer in New York City. In the wider world, I'm best known for creating CityQuiz.io, a geography quiz website. I write online, mainly but not entirely about software.
If you'd like to get in touch, send an email to my first name @ the name of this website.
Recent posts
- The textual history of the Christian Bible (Mar 2025) – An overview of the textual history of the Christian Bible, from the oldest writings of the Old Testament in the early first millennium BCE, to the composition of the New Testament in the 1st and 2nd centuries CE, and the manuscript tradition and modern textual criticism.
- Trial by jury (Jan 2025) – A review of the peculiar practice of trial by jury, and my own experiences as a juror in a New York State criminal case.
- Why didn't the cron job succeed? (Dec 2024) – Some possible reasons your cron job did not do what you wanted it to.
- Unix file permissions cheatsheet (Nov 2024) – A cheatsheet of the Unix file permissions required for common operations, like creating, deleting, and renaming files.
- Whether you can access a path depends on how you name it (Nov 2024) – A surprising fact about Unix file permissions is that whether you are allowed to access a path depends on how you name it.
Favorites
- What file permissions does mv need? (Nov 2024) – An explanation of the Unix file permissions that are required to run the 'mv' command.
- Khaganate: a suite of personal productivity software (Feb 2022) – A description of my personal productivity system.
- A subtle garbage collector bug (Jul 2020) – My most memorable bug: a memory error in a hand-written mark-and-sweep garbage collector.
- Type-safe generic data structures in C (Jun 2020) – Techniques for writing generic data structures in C using pointer casts and code generation through macros.
- Writing an interpreter and debugger for an assembly language (May 2020) – The design and implementation of a toolkit for a pedagogical assembly language that included an interpreter, debugger and assembler and disassembler.