When given an n by n matrix, the goal of the n-queens problem is to place n queens on the board such that none of them are attacking each other (under the rules of chess for queen movement). The rules are a queen can move any number of cells, in…


Previously, I wrote about implementing a stream cipher in JavaScript. I ignored the complex issue of generating a stream of bits used to encrypt the plain text. …


There are many models for capturing functional requirements and many less for non-functional requirements. We need to adapt those that exist for non-functional requirements into our agile frameworks. …


There is a growing community of strongly typed scripting languages that transpile into JavaScript, with Typescript leading the way. The temptation of catching type issues in a compile phase is sometimes strong enough that we reach of a more type safe tool. But we can get type safety (or certainty)…


digital key

Symmetric Cryptography, in particular encryption, has a requirement that a message is both encrypted and decrypted with the same key. Under this umbrella we find Stream and Block ciphers. Stream Ciphers work on bits one at a time while Block Ciphers work on blocks (or groups) of bits. There is…


I am deepening my understanding of cryptography. While I probably should have started this 20 years ago (or even in 2014 as Bit Coin started making noise), there is no time like the present to continue learning. One of the texts I have selected to start with is Understanding Cryptography


In my prior post, I laid out the problem of the eight-puzzle.

In this post, I want to examine finding a solution from a starting point leveraging search techniques. As a reminder, the solution space is a graph of puzzle states and moves to subsequent states, for example:

Each state…


I am starting my journey into AI and it seems like a study of search is a primary requisite for the space. The initial coming of age problem looks to be a simple puzzle, Eight Puzzle. …


Over recent years I have managed a team that implements digital analytics solutions by integrating third party tooling within the browser. Historically this approach requires in-browser code for every analytic you want to report on. The solution worked, in that it provided the reports our analysts required, but it felt…


Two popular languages for lightweight services are Java versus JavaScript. The choice is a debate or battleground. I have seen many engineers look at their preferred language with the sense of nostalgia and comfort they place in their favorite home cooked meals. Perhaps blinded by the Paul Grahams blub paradox:

Todd Brown

A 25 year software industry veteran with a passion for functional programming, architecture, mentoring / team development, xp/agile and doing the right thing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store