When & How to Solve Problems with Genetic Algorithms

Genetic algorithms are a class of algorithms designed to explore a large search space and find optimal solutions by mimicking evolution and natural selection. Potential solutions are randomly found, evaluated, and bred with one another in hopes of producing better solutions.
Read more on When & How to Solve Problems with Genetic Algorithms…

Time and Relative Distance in Source (Code)

Reasoning about a program’s behavior is extremely tricky in the best of circumstances. When you throw in asynchronicity, it is the absolute worst. It’s like your code is trapped in a convoluted time travel movie. You want to perform some operation, but that requires stepping into a time portal and coming out at some indeterminate future date. Who knows what has changed since you’ve been gone? Add a few more asynchronous operations, and your code very quickly becomes a tangled mess of wibbly-wobbly, timey-wimey stuff. Read more on Time and Relative Distance in Source (Code)…

Blockchains Explained: A Primer on Cryptocurrencies, Bitcoin, and Ethereum

Blockchains are nothing new: Bitcoin’s blockchain was implemented in 2009, and research papers on blockchains date back to the early ’90s.

While I had heard about Bitcoin and blockchains, I didn’t fully understand them, and the gaps in my knowledge came to light when my grandma asked me to explain Bitcoin to her. This post is intended to explain what blockchains are, how they work, why someone would want to use them, and what’s coming up next. Read more on Blockchains Explained: A Primer on Cryptocurrencies, Bitcoin, and Ethereum…

Pixels and Palettes: Extracting Color Palettes From Images

Color palettes are usually carefully hand-selected to reflect a desired design aesthetic. Although there have been some attempts to procedurally generate palettes, automated palette creation is very difficult. It’s easy to choose some random colors, but generating a coherent and aesthetically pleasing palette in an automated way is not easy.
Read more on Pixels and Palettes: Extracting Color Palettes From Images…

Exploring Logic Programming in Clojure’s core.logic – Finite Domain Constraints

In my last blog post, I went over a basic introduction to some of the concepts of logic programming. In this post, we’ll extend our last example to produce some real values (with meaning outside of the logic engine) using finite domain constraints. Read more on Exploring Logic Programming in Clojure’s core.logic – Finite Domain Constraints…

Exploring Logic Programming in Clojure’s core.logic – Overview & Understanding Palindromes

Ever since I saw William Byrd and Dan Friedman present on miniKanren at Clojure/conj a few years ago, I’ve been distantly interested in the topic of logic programming. Recently, my interest has intensified, so I picked up a copy of The Reasoned Schemer and have been working through it.
Read more on Exploring Logic Programming in Clojure’s core.logic – Overview & Understanding Palindromes…

An Introduction to Taxicab Geometry

The narrator of Edwin Abbott’s classic Victorian satire Flatland is a commoner, a simple, two-dimensional square. He lives in a two-dimensional world filled with other flat characters: line segments, triangles, higher-sided polygons, and circles.

Circles, in Flatland, constitute the upper classes of society, but if Abbott’s humble narrator had been born in a different flatland, he could have been a square and a circle.

Impossible, you say? Allow me to introduce you to TaxicabLand. Read more on An Introduction to Taxicab Geometry…