One company that gets this right is Github. I exist as my own person there. I'm affiliated with my employer as well as other organizations. We are long past the days of "the company man," when a person's identity was solely bound to their employer. That relationship is much more fluid now. A company that gets it wrong is Atlassian. I've left behind a trail of accounts in various Jirae and Confluences.
Continue Reading »People Don't Belong to Organizations Glue Fleet and Compojure Together Using Protocols Inspired by Glenn Vanderburg's article on Clojure templating frameworks, I decided to try using Fleet for my latest pet project. Fleet has a very nice interface. I can call a single function to create new Clojure functions for every template in a directory. That really makes the templates feel like part of the language. Unfortunately, Glenn's otherwise excellent article didn't talk about how to connect Fleet into Compojure or Ring. I chose to interpret that as a compliment, springing from his high esteem of our abilities.
Continue Reading »Metaphoric Problems in REST Systems I used to think that metaphor was just a literary technique, that it was something you could use to dress up some piece of creative writing. Reading George Lakoff’s Metaphors We Live By, though has changed my mind about that. I now see that metaphor is not just something we use in writing; it’s actually a powerful technique for structuring thought. We use metaphor when we are creating designs. We say that a class is like a factory, that an object is a kind of a thing.
Continue Reading »Metaphoric Problems in REST Systems (audio) Metaphoric problems in rest systems by mtnygard
Time motivates architecture Let’s engage in a thought experiment for a moment. Suppose that software was trivial to create and only ever needed to be used once. Completely disposable. So, somebody comes to you and says, “I have a problem and I need you to solve it. I need a tool that will do blah-de-blah for a little while.” You could think of the software the way that a carpenter thinks of a jig for cutting a piece of wood on a table saw, or a metalworker thinks of creating a jig to drill a hole at the right angle and depth.
Continue Reading »Circuit Breaker in Scala FaKod (I think that translates as "The Fatalistic Coder"?) has written a nice Scala implementation of the Circuit Breaker pattern, and even better, has made it available on GitHub. Check out http://github.com/FaKod/Circuit-Breaker-for-Scala for the code. The Circuit Breaker can be mixed in to any type. See http://wiki.github.com/FaKod/Circuit-Breaker-for-Scala/ for an example of usage.
The Future of Software Development I’ve been asked to sit on a panel regarding the future of software development. This is always risky and makes me nervous, for two reasons. First, prediction is a notoriously low success-rate activity. Second, the people you always see making predictions like this are usually well past their “use by” date. Nevertheless, here are a collection of barely-related thoughts I have on that subject. Two obvious trends are cloud computing and mobile access.
Continue Reading »Failover: Messy Realities People who don't live in operations can carry some funny misconceptions in their heads. Some of my personal faves: Just add some servers! I want a report of every configuration setting that's different between production and QA! We're going to make sure this (outage) never happens again! I've recently been reminded of this during some discussions about disaster recovery. This topic seems to breed misconceptions. Somewhere, I think most people carry around a mental model of failover that looks like this: That is, failover is essentially automatic and magical.
Continue Reading »Life's Little Frustrations A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable. -Leslie Lamport On my way to QCon Tokyo and QCon China, I had some time to kill so I headed over to Delta's Skyclub lounge. I've been a member for a few years now. And why not? I mean, who could pass up tepid coffee, stale party snacks, and a TV permanently locked to CNN?
Continue Reading »Topics in Architecture I’m working on a syllabus for an extensive course on web architecture. This will be for experienced programmers looking to become architects. Like all of my work about architecture, this covers technology, business, and strategic aspects, so there’s an emphasis on creating high-velocity, competitive organizations. In general, I’m aiming for a mark that’s just behind the bleeding edge. So, I’m including several of the NoSQL persistence technologies, for example, but not including Erjang because it’s too early.
Continue Reading »