Dancing With Systems – The Donella Meadows Institute
This explains why software is like life: complex systems abound in both. Dancing With Systems – The Donella Meadows Institute
This explains why software is like life: complex systems abound in both. Dancing With Systems – The Donella Meadows Institute
My friend Sean has this painfully accurate riddle: Q: What’s the difference between problems and issues? A: Problems can be solved. Here’s another one – Q: What’s the difference between programs and software? A: Programs can be completed. A software system is never done, it always needs upgraded and tweaked and fixed and enhanced and … Read morePrograms v Software
My sister Rachel wants to learn to program. “Will you teach me?” Sure, of course! Teaching someone to program turns out to be harder than I thought. It’s astounding how many little tricks and big principles I’ve absorbed over the years. It’s way more than can be passed on in a few years. Gotta start … Read moreLearning to program? It’s time for Pairing with Bunny!
How much data can our Hadoop instance hold, and how can I make it hold more? Architectural Background Hadoop is a lot of things, and one of those is a distributed, abstracted file system. It’s called HDFS (for “hadoop distributed file system,” maybe), and it has its uses. HDFS isn’t a file system in the … Read moreHDFS Capacity
Or, What underlying implementation is clojure.tools.logging using? Today I want to change the logging configuration of a Clojure program. Where is that configuration located? Changing the obvious resources/log4j.properties doesn’t seem to change the program’s behavior. The program uses clojure.tools.logging, but that’s a wrapper around four different underlying implementations. Each of those implementations has its own ideas … Read moreLogs are like onions
People aren’t born knowing what to do in all situations. We learn based on what does go wrong, based on the contingencies we do encounter. Gradually. A chess program must have all situations programmed ahead of time, an algorithm for everything physically possible. A human player encounters a situations, then finds a solution – maybe … Read moreContingencies
The other day at Outpace, while breaking some coupling, Eli and I decided to retain some information from one run of our program to another. We need to bookmark how far we read in each input data table. How can we persist this small piece of data? Let’s put it in a file. Sure, that’ll … Read moreA victory for abstraction, re-use, and small libraries
In REST there’s this rule: don’t save low-level links. Instead, start from the top and navigate the returned hyperlinks, as they may have changed. Detailed knowledge is transitory.This same philosophy helps in daily programming work. Say a bug report comes in: “Data is missing from this report.” My pair is more familiar with the reporting … Read moreREST as a debugging strategy
Maybe software is like a tree. The applications, websites, games that people use are the leaves. They’re the important part of the tree, because they’re useful. They solve real problems and improve lives, they make money, they entertain. The leaves are built upon the wood of the tree, branches and trunk: all the libraries and … Read moreSoftware is a tree
Now and then, a property test can be easier than an example test. Today, Tanya and I benefited. There’s this web service. It returns a whole tree of information, some of it useful and some of it is not. { “category”: “food”, “children: [ { “category” : “fruit”, … Read moreProperty tests don’t have to be generative