Below is a list of the Borland documentation that BitSavers added in 2022, ordered by relevance to me (and how I finally asked Peter Sawatzki if he still had the monochrome TDVIDEO.DLL he wrote for Turbo Debugger 3.0 for Windows):
Archive for the ‘Algorithms’ Category
BitSavers added some more Borland documentation in 2022 (most relevant for me: Assembler, Debugger, Profiler)
Posted by jpluimers on 2024/02/28
Posted in 8087, Algorithms, Assembly Language, Borland C++, C, C++, Debugging, Development, Floating point handling, Profiling, Software Development, Turbo Assembler, Turbo C, Turbo Debugger, Turbo Profiler, x86 | Leave a Comment »
UTC and ISO 8601, or GTFO
Posted by jpluimers on 2022/11/08
Always schedule your meetings in UTC, and use ISO-8601 date and time notation. Because time zone conversions are hard, especially with so many daylight saving time conventions.
I want not just a “UTC or GTFO” shirt, but a “UTC and ISO-8601, or GTFO” shirt.
It means I do not agree with [Archive.is] Colin Nederkoorn on Twitter: “Pro tip: Don’t schedule recurring meetings in UTC if you live in a place with daylight savings.… “ with multi-time zone teams: having it in UTC will balance out the DST changes over the teams.
Some more relevant Tweets that triggered me writing this post:
- [Archive.is] Florian Haas on Twitter: “Weekly team meeting at 0800 UTC, as usual. Part of the team shifted off DST this weekend, the rest did not. Everyone showed up on time; nobody needed a reminder that the meeting is one hour earlier in their local timezone. In globally distributed teams, UTC works. Just use it.”
Posted in Algorithms, Development, ISO 8601, Power User, Software Development, UTC | Leave a Comment »
Days since last time zone issue
Posted by jpluimers on 2022/02/24
If you do business with for instance Jordan for he first time, then is likely -1 because tomorrow their clock moves forward one hour.
The 2022 daylight saving time changes (summer time / winter time) are at time.is/DST_2022 [Wayback/Archive.is]
[Archive.is] Dr. Jessie Christianstein 👩🏻🔬🧟♀️ on Twitter: “… “
–jeroen
Posted in Algorithms, Development, Software Development | Leave a Comment »
When floating point code suddenly becomes orders magnitudes slower (via C++ – Why does changing 0.1f to 0 slow down performance by 10x? – Stack Overflow)
Posted by jpluimers on 2022/01/26
When working with converging algorithms, sometimes floating code can become very slow. That is: orders of magnitude slower than you would expect.
A very interesting answer to [Wayback] c++ – Why does changing 0.1f to 0 slow down performance by 10x? – Stack Overflow.
I’ve only quoted a few bits, read the full question and answer for more background information.
Welcome to the world of denormalized floating-point! They can wreak havoc on performance!!!
Denormal (or subnormal) numbers are kind of a hack to get some extra values very close to zero out of the floating point representation. Operations on denormalized floating-point can be tens to hundreds of times slower than on normalized floating-point. This is because many processors can’t handle them directly and must trap and resolve them using microcode.
If you print out the numbers after 10,000 iterations, you will see that they have converged to different values depending on whether
0or0.1is used.
Basically, the convergence uses some values closer to zero than a normal floating point representation dan store, so a trick is used called “denormal numbers or denormalized numbers (now often called subnormal numbers)” as described in Denormal number – Wikipedia:
…
In a normal floating-point value, there are no leading zeros in the significand; rather, leading zeros are removed by adjusting the exponent (for example, the number 0.0123 would be written as 1.23 × 10−2). Denormal numbers are numbers where this representation would result in an exponent that is below the smallest representable exponent (the exponent usually having a limited range). Such numbers are represented using leading zeros in the significand.
…
Since a denormal number is a boundary case, many processors do not optimise for this.
–jeroen
Posted in .NET, Algorithms, ARM, Assembly Language, C, C#, C++, Delphi, Development, Software Development, x64, x86 | Leave a Comment »
The IDEA project – an ongoing series of nonverbal algorithm assembly instructions
Posted by jpluimers on 2021/12/10
I wonder how many new algorithms were added, as the first 6 were really impressive: [WayBack] IDEA on Twitter: “Excited to announce the IDEA project – an ongoing series of nonverbal algorithm assembly instructions: https://t.co/zOAyfOAv3l… https://t.co/epQfBBdzdF”
- Site: [WayBack 1/WayBack 2] IDEA – nonverbal algorithm assembly instructions An ongoing series of nonverbal algorithm assembly instructions.
- Via: [WayBack] Trådecräft. – Kristian Köhntopp – Google+ and [WayBack] KVICK SÖRT – Kevlin Henney – Google+
- Related: [WayBack] IKEA Instructions by Mike Sacks / Illustration by Julian Sancton
While originally scheduling this, these were added:
Posted in Algorithms, Conference Topics, Conferences, Development, Event, IKEA hacks, LifeHacker, Power User, Software Development | Leave a Comment »
Constructing Suffix Trees: Ukkonen’s algorithm – Wikipedia
Posted by jpluimers on 2021/10/12
For my link archive:
- [WayBack] string – Ukkonen’s suffix tree algorithm in plain English – Stack Overflow
- [WayBack] Ukkonen’s algorithm – Wikipedia
- [WayBack] Esko Ukkonen – Wikipedia
- [WayBack] Esko Ukkonen
- [WayBack] Visualization of Ukkonen’s Algorithm
- [WayBack] Google Code Archive – Long-term storage for Google Code Project Hosting.
- [WayBack] suffix_trees.rb · GitHub
- [WayBack] Implementation of Ukkonen’s algorithm to build a prefix tree in O(n) · GitHub
- [WayBack] C# Suffix tree implementation based on Ukkonen’s algorithm. Full explanation here: http://stackoverflow.com/questions/9452701/ukkonens-suffix-tree-algorithm-in-plain-english · GitHub
- [WayBack] Simple suffix tree implementation in JavaScript. Install chalk to run the script below, or strip it down and remove all the debug messages and test cases. · GitHub
I also need to check out [WayBack] Martin Farach-Colton – Wikipedia, as his algorithm is likely more optimised and more versatile.
–jeroen
Posted in .NET, Algorithms, C#, Development, JavaScript/ECMAScript, Ruby, Scripting, Software Development | Leave a Comment »
Moore’s law has almost ended: back to the future
Posted by jpluimers on 2021/09/29
[WayBack] We’re approaching the limits of computer power – we need new programmers now | John Naughton | Opinion | The Guardian
Ever-faster processors led to bloated software, but physical limits may force a return to the concise code of the past
So back to optimisation and maybe even assembly language.
Which brings back the days gone by.
- [WayBack] Paul Stalenhoef on Twitter: “We’re approaching the limits of computer power – we need new programmers now | John Naughton …”
- [WayBack] Jeroen Pluimers on Twitter: “Assembly language and optimisation will be hot topics again.… “
- [WayBack] Paul Stalenhoef on Twitter: “Ooit een halve File Commander in Assembly geschreven… Rechtstreeks in het videogeheugen schrijven vanaf B000 of B800 of zoiets. Int 10 en Int 13! Dat waren nog eens tijden!… “
- [WayBack] Jeroen Pluimers on Twitter: “Oh, the days!… “
- [WayBack] Jeroen Pluimers on Twitter: “Ik bouwde een MS-DOS device driver in de onderste 1K geheugen zodat je een 128 karakter keyboard buffer had in plaats van 8 (of 16?): kon je doortikken terwijl je huidige programma nog druk was. En een grafische mouse-pointer in tekst-mode. Plus een memory password sniffer…… “
–jeroen
Posted in Algorithms, Assembly Language, Development, Software Development | Leave a Comment »
Coming Back to Old Problems: How I Finally Wrote a Sudoku Solving Algorithm – DEV Community 👩💻👨💻
Posted by jpluimers on 2021/09/02
It is always fun to see how Sudoku solving algorithms are created and implemented. This is no exception: [WayBack] Coming Back to Old Problems: How I Finally Wrote a Sudoku Solving Algorithm – DEV Community 👩💻👨💻
For a visual Sudoku solver, I usually take [WayBack] Sudoku Solver by Andrew Stuart. Shows the logic behind solving Sudoku square by square which is part of [WayBack] SudokuWiki.org – Getting Started having many visual explanations on how to solve these puzzles, for instance:
It’s a kind of sudo ku, but visually and never failed me solve one.
–jeroen
Posted in Algorithms, Development, Python, Scripting, Software Development | Leave a Comment »
Two might lead to a pattern
Posted by jpluimers on 2021/08/05
There is a known saying phrased using cardinal, adverbial or ordinal numbers, and several naming for the first:
- One is change, two is coincidence, three is a pattern
- Once Is Chance, Twice is Coincidence, Third Time Is A Pattern
- One is an anomaly, two is a coincidence, three is a pattern
- First time is an incident, second a coincidence, third a pattern
Sometimes the second can lead to a pattern.
Posted in Algorithms, Development, LifeHacker, Power User, Software Development | Leave a Comment »
CloudFlare knows how to do public postmortems on outages
Posted by jpluimers on 2021/07/16
Everyone can learn from an outage. CloudFlare shows how to do it right, for instance on the RegEx-going-wild downtime 2 years ago.
So it’s time to link to that one again: [WayBack] Details of the Cloudflare outage on July 2, 2019
More like these at [WayBack] Post Mortem – The Cloudflare Blog.
More on evaluating regular expressions in linear time:
- [WayBack] Regular Expression Search Algorithm KEN THOMPSON Bell Telephone Laboratories, Inc., Murray Hill, New Jersey
- [WayBack] Programming Techniques: Regular expression search algorithm / [WayBack] Programming Techniques: Regular expression search algorithm
A method for locating specific character strings embedded in character text is described and an implementation of this method in the form of a compiler is discussed. The compiler accepts a regular expression as source language and produces an IBM 7094 program as object language. The object program then accepts the text to be searched as input and produces a signal every time an embedded string in the text matches the given regular expression. Examples, problems, and solutions are also presented.
Programming Techniques: Regular expression search algorithm
Full Text:
PDFAuthor: Ken Thompson Bell Telphone Labs, Inc., Murray Hill Published in:

· Magazine Communications of the ACM CACM Homepage archive Volume 11 Issue 6, June 1968
Pages 419-422
ACM New York, NY, USA
table of contents doi>10.1145/363347.363387 - Thompson’s construction – Wikipedia
is a method of transforming a regular expression into an equivalent nondeterministic finite automaton (NFA)
The algorithm works recursively by splitting an expression into its constituent subexpressions, from which the NFA will be constructed using a set of rules.[3] More precisely, from a regular expression E, the obtained automaton A with the transition function δ respects the following properties:
- A has exactly one initial state q0, which is not accessible from any other state. That is, for any state q and any letter a, {\displaystyle \delta (q,a)} does not contain q0.
- A has exactly one final state qf, which is not co-accessible from any other state. That is, for any letter a, {\displaystyle \delta (q_{f},a)=\emptyset }.
- Let c be the number of concatenation of the regular expression E and let s be the number of symbols apart from parentheses — that is, |, *, a and ε. Then, the number of states of A is 2s − c (linear in the size of E).
- The number of transitions leaving any state is at most two.
- Since an NFA of m states and at most e transitions from each state can match a string of length n in time O(emn), a Thompson NFA can do pattern matching in linear time, assuming a fixed-size alphabet.
- [WayBack] A Regular Expression Matcher Code by Rob Pike Exegesis by Brian Kernighan
Via [WayBack] Details of the Cloudflare outage on July 2, 2019 | Hacker News
–jeroen
Posted in Algorithms, Development, Power User, RegEx, Software Development | Leave a Comment »








