Recent posts| ztoz.blog
Interview with John Bridges (PCPaint, GRASP, GL Pro)| ztoz.blog
The Seymour Cray Era of Supercomputers (Review)| ztoz.blog
Improving Product Discovery of Tabletop RPG Maps (Preliminary Investigation)| ztoz.blog
Connect Four Ply Dataset| ztoz.blog
Routines of Substitution (Review)| ztoz.blog
Ludii is a general game system for modeling games and puzzles, although it focuses on historical and traditional games. Ludii was recently used to provide the training data for a Kaggle competition. I noticed their wishlist contained Wumpus World, a common puzzle used for AI training and education. Intrigued, I implemented and submitted a version of Wumpus World. Wumpus World in the Ludii Player Background: Hunt the Wumpus / Wumpus World Hunt the Wumpus was published by Creative Computing mag...| ℤ→ℤ
Investigating MacPaint's Source Code| ztoz.blog
Charles Dodgson (pen name Lewis Carroll) had difficulty remembering numbers, such as dates. He developed a cipher to help him remember numbers by embedding them in couplets or phrases. For example, the couplet “Brass trumpet and brazen bassoon, will speedily mark you a tune” encodes the specific gravity of brass (8.39) in the last four consonants: r k t n (y is treated as a vowel). In this article, we describe the cipher, present online tools for encoding and decoding, discuss how we impl...| ℤ→ℤ
The new generation of code assistance tools powered by Large Language Models (LLM)s may be useful in efficiently categorizing and translating historical software corpora. In this qualitative study, we examine LLM performance in explaining and translating FLOW-MATIC programs. We also test their reliability by injecting OCR-like errors into the text. Released in 1958, FLOW-MATIC targeted business applications and used a heavily English-inspired syntax that later influenced COBOL. We find that t...| ℤ→ℤ
From the Board Games Study Journal: Mathematical analysis of the Royal Game of Ur Despite many discoveries and proposals for rules for the ancient board game known as the Royal Game of Ur (RGU), no mathematical analysis has yet been performed investigating those rules. In an attempt to fill that gap, this paper presents an initial mathematical analysis of the RGU from an introductory point of view. The paper deduces the overall complexity of the RGU using a state-space and game-tree complexit...| ℤ→ℤ
ZLister, a to-do list management application, is now available. ZLister allows you to create lists with entries and entries can be marked complete or incomplete (“to do”). ZLister’s user interface is designed for mobile devices, but may also be used on the desktop. ZLister does not store your data in the cloud and can run offline. Motivation and Goals For the last several years, I have been using Amazon’s Alexa app to store checklists of grocery items, books to read, and other miscell...| ℤ→ℤ
Chatbots Decoded: Exploring AI is a new exhibit from the Computer History Museum (CHM) opening November 20th, 2024. In development for more than a year, the exhibit covers both the history of chatbots and conversational interfaces as well as the social ramifications of the technology. While there is not an explanation for why GPUs rather than CPUs are so useful for learning or what “attention is all you need” means, both are alluded too and I think, many audiences, including children, wil...| ℤ→ℤ
I’ve given this blog a new look by switching the theme from Noteworthy to Long Form, the latter a theme of my own design. Why the change? I adopted the Noteworthy theme at the onset of this blog and maintained a branch with some fixes (primarily KaTeX support). Since it is a cliche that engineering blogs will write more about the blog’s infrastructure than actual content, I wanted to first establish a track record of content before spending too much effort on design. Now, with a few years...| ℤ→ℤ
Many corporations and agencies allocate a certain amount of their budget towards the creation of public artwork. For instance, New York’s Metropolitan Transportation Authority (MTA) has funded nearly 300 permanent art installations since 1982 under the city’s “Percent for Art” law. If we question the effectiveness of the program, we immediately run into problems of measuring the subjective aesthetic value of the creations. However, we may measure their effectiveness by a necessary qua...| ℤ→ℤ
In December 2022, Adobe, through the Computer History Museum (CHM), released the source code for PostScript®, version 1.0. PostScript is one of the foundational technologies of the desktop publishing revolution of the early 1980s, along with laser printers, the graphical user interface of the Apple Macintosh, and Aldus PageMaker. PostScript is a programming language and a page description format for translating visual content into printed documents. Adobe immediately enjoyed business success...| ℤ→ℤ
I’ve started studying a larger historical code base. Within this post, I want to summarize the sort of historical questions we might ask and notes on how to approach them.| ztoz.blog
Twelve states require community associations, such as homeowners associations or HOAs, to conduct periodic reserve studies. A reserve study is a financial planning tool for estimating an association’s ability to fund current and future planned maintenance costs for large projects, such as roofs, pools, and asphalt roads. An underfunded reserve may lead to special assessments. Yet, due to restrictions on how reserve accounts can be used, an over funded account denies funds that may be better...| ztoz.blog
Before the widespread existence of software repositories like CPAN, NPM, and PyPI, developers seeking to reuse an existing algorithm or library of routines would either check books or journals for code, or, they just might post a classified ad:| ztoz.blog
In my post on the Method of Differences, I focused on using the technique to generate mathematical tables. As some readers noted, there are additional and interesting modern applications of the technique. This post will discuss two of them: sequences to functions, a method of analyzing sequences, and strength reduction, a compiler optimization technique.| ztoz.blog
Although historians are usually pushed to decide questions of “who was first,” the question of impact is more interesting. Konrad Zuse has a claim to the first computer, the first high-level computer language, and the first European commercial computer sale, but his relative isolation working in Germany in the 30s and 40s limited his visibility and impact. It wasn’t until the 1970s for his innovations to become more widely known. Raúl Rojas has long contributed to the historical apprec...| ℤ→ℤ
For those interested in the history of tabletop roleplaying game design, Monsters, Aliens, and Holes in Ground is an excellent, near encyclopedic treatment. The author, Stu Horvath, documents major and minor game systems, how they innovated or were influenced by other game systems, and how the systems expanded with settings and adventures. Horvath covers the 1970s through the 2010s and, reading through the entries, chronicles the major changes in design theory from simulation, to forms of nar...| ℤ→ℤ
Shared Fantasy is an ethnographic study of fantasy roleplayers in the Minnesota area from 1977 to 1979 by Gary Alan Fine. As this predates the moral panic of the early 1980s (James Egbert disappeared in 1979; the movie Mazes and Monsters was released in 1982) and the resultant explosion in popularity of the field, it also serves as a historical artifact of the hobby’s early days. Does this book provide a better historical understanding of roleplaying games? Will reading this book make you a...| ℤ→ℤ
Godot 4’s HTML5 export uses WebAssembly, WebGL, and SharedArrayBuffers. Browsers require a secure context for these features to be available, which requires sending certain HTTP headers when serving the game content. For development, there are two straight-forward ways to serve the content: Godot’s Python http server and Miniserve. Godot’s Python HTTP Server The Godot team has written a script, leveraging Python’s existing http server implementation, which adds the necessary HTTP head...| ℤ→ℤ
Drawing Down the Moon: Magic in the Ancient Greco-Roman World is an academic history of the perspective and practice of magic. Broad and detailed, Edmonds covers multiple types of magic, discussing the who, what, why, and how of each, and attempting to place the magic within the broader culture practice. Themes carried throughout include what counts as magic and how that magic might be embedded within the culture. Publisher Website Since this is an unusual work for me, I should establish the ...| ℤ→ℤ
Before dice notation was adopted, early roleplaying games described dice rolls using range notation. For example, 3-18 indicated rolling three six-sided dice or 3d6 in modern notation. Converting a range to dice notation requires a little thought, so I’m going to describe a way to solve the conversion programmatically. Background Dice notation is a succinct domain specific language to represent discrete probability distributions and is heavily used in tabletop roleplaying games. For example...| ℤ→ℤ
Robinson after being elected to the Moscow Soviet, book page 103Robert Robinson was a black machinist who accepted an offer from the Soviets to leave his job at the Ford plant to come to Russia to help train their machinists in the 1930s. Accepting the deal, he pursued his engineering career and invented many productivity improving tools, acquired a mechanical engineering degree, survived the Purges and World War II, and after the war, spent decades trying to leave. He eventually escaped in 1...| ℤ→ℤ
The SHARE organization was organized in 1955 to share operational knowledge and computer programs for operators of the IBM 704. “Operational knowledge” included monthly availability reports and, perhaps unexpectedly, safety advice. Each site reported its own availability via a common form. Each installation was given a two-letter identifier (which, as SHARE grew to more installations, became a branding problem for some sites). The NS site was a government-run facility. This is a typical r...| ℤ→ℤ
In the Call of Cthulhuadventure “Chateau of Blood”, the characters are faced between spending the day trapped in an ominous chateau where they will likely be attacked by monsters or attempting to navigate a treacherous mountain trail as a ferocious blizzard blows. Inspired by Hammer films, the characters are encouraged to stay inside the chateau, find clues, and face the monsters rather than go out into almost certain doom. However, as this is a Hammer film, few are expected to survive th...| ℤ→ℤ
Slaying the Dragon: A Secret History of Dungeons & Dragons by Ben Riggs Author’s website Slaying the Dragon is a business history of TSR, focusing on the Lorraine Williams period (1985-1997). During this period, TSR recovered from the excesses of the Gygax/Blume Brothers period, launched the 2nd edition rules, novels line, and attempted pivots and expansions of their IP. However, the sales declined continued until they were purchased by Wizards of the Coast. Ben Riggs chronicles the company...| ℤ→ℤ
Slack’s business logic for showing notification periodically appears in LinkedIn posts and such. In Slack’s original post, this diagram was meant to illustrate what logic was being transferred from the multiple Slack clients to the server, but the diagram has since been taken as an example of product complexity and how development is harder than it may sound. In contrast, I think the diagram obscures the intended logic, but the logic itself is not complex. I’ll describe how to simplify ...| ℤ→ℤ
Being on-call is often a necessary part of the job, particularly for engineers in a SaaS business. The burden of operations often negatively impacts morale and productivity. If we were to estimate the impact on a team, we could build a model based on incident frequency, ticket severity, time of alert versus sleeping schedules, and other operational metrics. Alternatively, we can ask the on-call engineers directly, which should be more accurate, and use the metrics to help drive improvements. ...| ℤ→ℤ
COBOL is for Big Data. Well, sort of. Awhile back, I noticed that the COBOL SORT verb was overpowered. Rather than sorting an array of items or even sorting a file, it included a generalized ability to stream in arbitrary inputs — () => Stream[T] —, where T is a key/value pair, and process the outputs in order — SortedStream[T] => (). This power is useful if you are writing a map-reduce program, but excessive for sorting. So, let’s look at how this was implemented, why it was part of ...| ℤ→ℤ
“The best way to grasp the spirit of a programming language is to read example programs” as Knuth wrote in the “The Early Development of Programming Languages” 1. Today, it is common practice to provide an example program on the front page of a programming language’s marketing site (i.e., a “hero code example” as it were). Since the objective of the example is to showcase the language’s value versus others, what coding tasks best fulfill that? Beyond Hello World, which is the ...| ℤ→ℤ
Rosetta Code is a programming chrestomathy wiki, that is, it is a site with lots of examples of tasks completed in multiple programming languages. The site has been around since 2007 and now has 1,100+ tasks and 100,000+ code submissions over 900+ languages. To help other researchers, I’m publishing an export of the code samples as a sqlite database via DBHub.io and the source code via Gitlab. Chrestomathy? The OED defines chrestomathy as: A collection of choice passages from an author or a...| ℤ→ℤ
In 1986, a survey of approximate string matching algorithms found the algorithm used in the PLATO computer-aided instruction system was third place in quality (F1 score) and was an order of magnitude faster than the best performing algorithms. The PLATO algorithm used an unusual dimensional projection approach, while the competing algorithms of the day used edit distances or phonetics. However, this approach failed to catch on and the design is rarely mentioned in the literature. This video d...| ℤ→ℤ
Approximate string matching algorithms (ASMA) determine if two strings are the same, “close enough”, or are distinct. Spelling error detection and correction were early applications of these algorithms, and today ASMAs (or similar techniques) are used in natural language understanding applications. Hundreds of papers have been written on the subject (1980 survey, 2001 survey), but this post is focused on the subset of algorithms that were considered commercially viable for the field of co...| ℤ→ℤ
In 1976, Los Alamos hosted the International History of Computing Conference where the pioneering efforts of computing were discussed, often by the pioneers themselves. The Computer History Museum has posted videos from the talks, which cover important machines, languages, people, institutions, and practices invented in the first 30 years of the craft. Dag Spicer, the senior curator at CHM, has written a blog post giving an overview and background of the event.| ℤ→ℤ
The first song composed and played by a computer was The Silver Scale on May 17, 1957. This video discusses the physics and hardware necessary for this invention, as well as the domain specific language, MUSIC-V, that arose for efficient programming of sound waves.| ℤ→ℤ
PDF Version INTRODUCTION In a programming language, a string is a sequence of characters that often represents some message to the user or contains input such as a name or the contents of a file. Common operations on strings include comparison and collation, extraction of substrings (tokenization), pattern matching, and data clean up such as trimming whitespace. In the 1960s, language designers started to add first-class string datatypes to their languages as business computing and interactiv...| ℤ→ℤ
Programming languages use format specifiers to control the formatting of numbers and text. We look at their invention in FORTRAN I, adoption in BCPL, and three innovative attempts to include them in ALGOL60.| ℤ→ℤ
In my earlier post on interviewing, I discussed aspects of a coding interview question that I thought provided better signal on the candidate than algorithmic-focused questions. In this post, I’ll provide an example fairly open-ended interview question, a solution, and a transcript between the interviewer and interviewee as an example for analyzing signal. Page Ranges, a Question When a user prints a document, they might not want to print every page. The user interface allows them to write ...| ℤ→ℤ
Infinite Race is a mathematical racing game. Two players compete to move their piece the greatest distance along the number line by choosing how the dice will fall. However, the rolls must fit a distribution perfectly, so the player’s luck must revert to the mean. The strategy is to select a sequence of moves which allows one player to break free of the pack. Setup Each player specifies an infinite sequence of moves at the beginning of play, where the move depends on the time step (a non-ne...| ℤ→ℤ
I’ve made an update to the Game of Ur - Background post. A reader took up my challenge to find a closed form solution for the number of valid game placements and found a solution.| ℤ→ℤ
This is a tale of finding fractals in an unexpected place and why the appearance makes sense in hindsight. I was looking for patterns in valid board game configurations, specifically the middle contesting row in the Game of Ur. In the game, there are eight slots either of the two players may occupy, but a slot may only be occupied by at most one player. I represented the available slots as two bit strings, with each bit representing a single slot. A valid placement is one where the two corres...| ℤ→ℤ
How to Solve It, but for operational incidents. Engineers with site reliability responsibilities are often faced with operational issues (incidents) that have an unknown cause and uncertain solution. How to Solve It is a classic work describing heuristics for solving mathematical problems. There have been adaptations of this book for different domains, but none yet for software-intensive operations. Within this study, we aim to build a taxonomy or categorization of techniques/heuristics in pr...| ℤ→ℤ
Game Wizards: The Epic Battle for Dungeons & Dragons by Jon Peterson Publisher’s Website Game Wizards is a business history spanning the creation of Dungeons & Dragons and TSR to the firing of Gary Gygax in 1985. The book has a special focus on the legal battles between Gary Gygax and Dave Arneson around creator and royalty rights for D&D, but also covers the rivalry between GenCon and Origin and the overall growth of TSR. Jon Peterson assembles the story from a broad-range of sources, incl...| ℤ→ℤ
Warning: Contains spoilers for the season 6, episode 5 “Tethics” of the show Silicon Valley which aired in 2019. In “Tethics”, two managers of Pied Piper, Gilfoyle and Monica, are threatened by HR due to their low employee engagement scores — there’s a consensus among the employees that the two managers are jerks. They both promise to raise their scores, but stupidly promise to raise the scores from “hate” to “love” within a week. Faced with this impossible task, they hatc...| ℤ→ℤ
Lobste.rs is a “computing focused community” and this post is a good example of why I like it: Thinking about the data model of file systems and alternatives is a pretty geeky subject, but impactful Comments are respectful and build on the post Comments add historical context| ℤ→ℤ
I’ve updated the RSS feed to include the full content of the articles rather than just the summary.| ℤ→ℤ
Updated 2021-12-17: A closed-form solution has been submitted The Royal Game of Ur, also known as the Game of Twenty Squares, is one of the oldest known board games, with attestations from 3000 to 250 BC. It was an enduringly popular game, played across multiple civilizations and across the Middle East. As a racing game, two players compete to move their pieces along and off the board, where their own pieces can act as road blocks to their own movement but can also send the other’s players ...| ℤ→ℤ
This is the 60th anniversary of the proof of Little’s Law, a widely useful rule for queuing systems that links throughput, response (cycle) time, and number of requests (work items). Unfortunately, although software engineers often operate queues or pipelines (modern computer systems are rife with queues, implicit and explicit), they aren’t exposed to the mathematical foundations and often fail to build intuition around how queues act operationally. In this post, I aim to describe the Law...| ℤ→ℤ
Do Not Erase: Mathematicians and their Chalkboards by Jessica Wynne is a beautiful photography book. Each leaf contains a photograph of a mathematician’s chalkboard and a short essay by that mathematician talking about their work, what is displayed, or something personal. Wynne’s work only looks at blackboards or chalkboards, not whiteboards. The entries vary from the prosaic, such as diagrams left over from an office hours session on elementary calculus, to snapshots of current work, to ...| ℤ→ℤ
Hacker News likes to complain about interviewing, and, well, there is a lot to complain about. One of the recent links on the matter was from Kislay Verma “Competitive programming is useless”. Kislay decries an over-emphasis on competitive coding questions informing interview performance — i.e., asking increasingly obscure and trivial algorithmic and data structures questions rather than focusing on fundamentals and questions to engage and measure the breadth of the candidate’s experi...| ℤ→ℤ
Modern software systems involve many asynchronous tasks, but reporting status on tasks is often handled poorly. An asynchronous task is one that processes in the background and allows the client or caller to work on something else in the meantime (“non-blocking”). Architecturally, asynchronous processing is often the right choice for operations and scaling reasons, but it does add complexity. Both the end-users and the operating teams will need to understand the state of the task and, if ...| ℤ→ℤ
The mapping of integers to integers is a fair summary of the work of programming. A blog about computer science, engineering, and other things that attract my interest.| ℤ→ℤ
Between Honeywell and Qualtrics, I founded a company called ℤ→ℤ Technologies. The first thing I tried was a| ztoz.blog
The “Method of Differences” is a mathematical technique for reducing the computation of polynomials to repeated addition. Once the system is setup, relatively unskilled human computers can populate dense mathematical tables. This is the “difference” in the Charles Babbage’s Difference Engine which aimed to automate the creation and printing of these tables. I have created a playground where you can experiment with the method and in this article I aim to explain how to apply the tech...| ztoz.blog