Altometrics Blog

Intelligence Amplification, Data Visualization



Tools for Smart Thinking by Richard E. Nisbett

At Altometrics we like to make tools, so the subtitle of this book caught my eye. If you have read Thinking, Fast and Slow this is a good followup book. The scope of the book is broader, but the author is thinking about thinking and using social research to get at how we really think vs. how we like to imagine we think.

Property-Based Testing With Clojure and Datomic - Part 2


This is the second part of a series that explores clojure.spec, property-based testing, and how those tools can be used to test Datomic. Check out part 1 for an introduction to clojure.spec and property-based testing. All of the code from this post is in the example repo

As we discussed in the first post, property-based testing works well for pure functions but that excludes a good chunk of code we would like to thoroughly test such as code that makes updates to a database. I also hinted that Datomic is uniquely suited to be tested by property-based tests.

Property-Based Testing With Clojure and Datomic - Part 1


This is the first part of a multi-part series that explores clojure.spec, property-based testing, and how those tools can be used to test Datomic. This post serves mainly as an introduction to property-based testing and clojure.spec. Check out part 2 for the introduction of Datomic property-based testing.

Clojure.spec was recently released and the Clojure community is diving into it to see how specs can improve their programs. One of the more interesting design decisions made for clojure.spec is the connection between specs and property-based testing via another Clojure contrib library: test.check.

Docker's Dirty Little Secret


Docker isn’t what I thought it was.

I thought it provided a way to run docker images on any host that supported docker. As it turns out, that’s not true.

I first encountered something fishy when I found this docker image on Docker Hub, whose description said, “FreeBSD Docker host is required to run this image.” I thought, “How is that even possible?” And sure enough, I could run the image just fine with a FreeBSD host. But when I tried to run it on my iMac, it silently failed. How could this be?



Get More Done One Thing at a Time by Devora Zack

I’m no single-tasking champion or anything, but I’m already on board with the idea which means I’m not sure how convincing the first part of the book is. It may be that the first section isn’t effective to convince an inveterate multi-tasker.

Histograms: An Anti-rationale


Why Histograms are the New Pie Chart


Although pie charts are commonplace, those skilled in the art of data visualization disparage them as a poor vehicle for conveying information. Wedges, the unit being compared in a pie chart, are not something the human visual system is designed to compare with much accuracy. Furthermore, many good alternatives exist, such as bar charts, that lose no information and are easier for humans to digest accurately.

I argue that histograms are more akin to pie charts than bar charts. In other words, they do not play well with the human visual system, and a good alternative exists. This article examines the primary flaw of histograms.

Protocols in ClojureScript


Protocols are a feature in Clojure and ClojureScript that provide high-performance, dynamic, typed-based polymorphism. That’s a lot of computer words, but what it really means is that Clojure(Script) will help us in creating functions that process in different ways arguments of different types. They are similar to Java Interfaces, but with a few key differences.

A Few Tips for Writing Macros in Clojure



Macros are powerful metaprogramming tools, but they can be difficult to use well. In this article, I share several tips for creating correct, legible, and useful macros in Clojure.

The Benefits of Writing a Separate Test Suite for Your App


Abstract: Keeping a test suite separate from the application itself has several benefits, including adopting a user’s perspective, (potentially) identical tests for development or production, load testing, and flexibility to totally rewrite the app.

Red Team


How to succeed by thinking like the enemy by Micah Zenko

6 Best practices for Red Teams:

Red Teams must: Be outside & objective while being inside & aware Be fearless skeptics with finesse (and a little odd) Have a bag of tricks (that doesn’t grow stale)

The Organizations that want to implement red teaming must: Have a boss that buys into the process (This is listed first in the book because it is most important) Be willing to hear bad news and act on it Red team just enough, but no more.