Lately I've been experimenting with creating random data generators in TypeScript. I wanted to avoid using the global random number generator Math.random since I wanted my generators to be fully determinitic (i.e. if you give them the...
In a previous post I talked about property testing (see What is property testing?). In that post, I discussed the difference between property tests and more traditional example-based testing, how to write property tests, and the...
Property testing is a developmental approach to writing tests (both unit tests and integration tests) which helps developers find the limitations of their software. It isn't an all-encompassing set of principles or practices which...
One of the most frustrating yet fascinating facets of using a programming language is how it handles errors. Many of these error handling patterns include the traditional try/catch, error flags, unions, multiple return values, error...
Restrictions From State
Recently I've been working on a side project (that may or may not get published publicly, I haven't decided yet). For this project, I decided I'd try a lot of new things, not all of which worked out as well as I thought (which may be...
A lot has happened in the world this year. Most of the world has started to move past COVID-19, especially in the U.S., regardless of whether it's really gone. Russia has started a "special operations" (aka. military invasion) inside...
For most people, websites are visual experiences. We see images, we read text, we move the mouse,
I first published this back in 2022. At the time, I was leading the localization effort of an English-only product. The product had existed for over a decade, and over time a lot of bad habits had crept up. This was the public...
Back in high school, I worked on robots with a few other students. When we built our robots, we had motors and wheels that were a foot or two apart. To transfer the energy from our motor to our wheels, we used chains.