Archive
Survival Machines
In “The Selfish Gene“, proud atheist Richard Dawkins theorizes that we are just temporary “survival machines” doing the bidding of the selfish genes within us. These little buggers program us such that we live long enough to propagate “them” onward (via sexual reproduction, of course) from generation to generation – forever. Selfish genes don’t give a damn about the individual survival machines they temporarily use for transport. WTF!, and very depressing if you believe in his logically sound, equation-backed “derivation“, no?
Science without religion is lame, religion without science is blind – Albert Einstein
Which Path?
Please peruse the graphic below and then answer these questions for BD00: Is it a forgone conclusion that object-oriented development is the higher quality path from requirements to source code for all software-intensive applications? Has object-oriented development transitioned over time from a heresy into a dogma?
With the rising demand for more scaleable, distributed, fault-tolerant, concurrent systems and the continuing maturation of functional languages (founded on immutability, statelessness, message-passing (e.g. Erlang, Scala)), choosing between object-oriented and function-oriented technical approaches may be more important for success than choosing between agile development methodologies.
Intimately Bound
Out of the bazillions of definitions of “software architecture” out in the wild, my favorite is:
“the initial set of decisions that are costly to change downstream“.
It’s my fave because it encompasses the “whole” product development ecosystem and not just the structure and behavior of the product itself. Here are some example decisions that come to mind:
- Programming language(s)
- Third party libraries
- Architectural pattern/style
- Build system selection
- Targeted operating system(s)
- Version control system
- Automated testing framework
- Communication middleware
- GUI framework
- Requirements management tool
- Non-functional requirements (latency, throughput, availability, security, safety)
- Development process
Once your production code gets intimately bound with the set of items on the list, there comes a point of no return on the project timeline where changing any of them is pragmatically impossible. Once this mysterious time threshold is crossed, changing the product source code may be easier than changing anything else on the list.
Got any other items to add to the list?
Tickled Pink
Since I’m a fan of DDS, I was tickled pink to see this newsletter appear in my mailbox:
Since the above graphic is a bitmap, clicking on the links won’t work. In case you do want to read the linked-to pages, here they are:
Peerless
Don’t ya just love those dorky propaganda pictures coming out of North Korea showing Kool Kim Jong-Un peering through a set of vintage 1970s binoculars?
Seriously, I was wondering WTF the dude was looking at on all those “Korean Illustrated” magazine covers, but then I had an epiphany: Kimbo Jongo Uno is an obsessed bird watcher. Buh buh buh bird bird bird. Bird is the word!
Note: Like everything else on this god-forsaken blawg, the above Kimbo Jongo Pizza-Uno collage is not original. I saw one just like it on HBO’s “Real Time With Bill Maher” a couple of weeks ago. Of course, I busted a gut when I saw it and half of the martini gulp I just took rose up and cleared my nasal passages. A pleasant unintended consequence of the experience was the discovery that the martini-through-the-shnozz technique works better than a Neti pot.
Note2: Just imagine what would happen if I lived in North Korea and Bimbo Django Unkool or his cronies discovered this post. D’oh!
Note3: Here’s what Kimono looks like when he puts his binocs down. If he looks into a mirror, some heads will definitely roll.
Armies Of The Preposterous
Similar to many of BD00’s posts, this one is most likely to offend some people who stumble upon it. Why? Because BD00 felt the need to hoist these eloquently concise snippets from Richard Dawkins’ “The God Delusion“:
Faith is an evil precisely because it requires no justification and brooks no argument. Teaching children that unquestioned faith is a virtue primes them—given certain other ingredients that are not hard to come by—to grow up into potentially lethal weapons for future jihads or crusades.
Because each new generation of children is taught that religious propositions need not be justified in the way that all others must, civilization is still besieged by the armies of the preposterous. We are, even now, killing ourselves over ancient literature. Who would have thought something so tragically absurd could be possible?
To be fair, much of the Bible is not systematically evil but just plain weird, as you would expect of a chaotically cobbled-together anthology of disjointed documents, composed, revised, translated, distorted and ‘improved’ by hundreds of anonymous authors, editors and copyists, unknown to us and mostly unknown to each other, spanning nine centuries.
OK, so now it’s time to open myself up to a counterattack. I believe, but not unquestioningly, that we are all unique, individual manifestations of a universally distributed life force that permeates all things. We are like waves in the ocean of life. We rise up, we create, and then we return home again.
Actually, we never leave home. We just “think” we do.
A Blast From The Past
In the 1980s, Ed Yourdon was very visible and influential in the software development industry. Arguably, Ed was the equivalent to what Martin Fowler is today – a high profile technical guru. Then at some point, it seemed like Mr. Yourdon disappeared off the face of the earth. He really didn’t vanish, but he’s much less visible now than he was back then. He’s actually making big bux serving as an expert witness in software disaster court cases.
Since I enjoyed Ed’s work on structured systems analysis/design (before the OO juggernaut took off) and I’ve read several of his articles and books over the years, I was delighted to discover this InfoQ interview: “Ed Yourdon on the State of Agile and Trends in IT“.
In the interview, Ed states that he’s asked many CIOs what “agile” means to them. Unsurprisingly, the vast majority of them said that it enabled developers to write software faster. Of course, there was no mention of the higher quality and/or the elevated espirit de corps that’s “supposed” to hitch a free ride on the agile gravy train.
Spoken But Unwritten
Because they may be called to account for their hypocritical behavior, you may find people in authority saying things like these, but you most likely won’t find them written into the Employee Handbook:
“Providing the freedom to fail is an important trait of the company— we couldn’t expect so much of individuals if we also penalized people for errors. Even expensive mistakes, or ones which result in a very public failure, are genuinely looked at as opportunities to learn. We can always repair the mistake or make up for it.”
“But problems show up when hierarchy or codified divisions of labor either haven’t been created by the group’s members or when those structures persist for long periods of time. We believe those structures inevitably begin to serve their own needs rather than those of Valve’s customers. The hierarchy will begin to reinforce its own structure by hiring people who fit its shape, adding people to fill subordinate support roles. Its members are also incented to engage in rent-seeking behaviors that take advantage of the power structure rather than focusing on simply delivering value to customers.”
“…for the most part working overtime for extended periods indicates a fundamental failure in planning or communication. If this happens at Valve, it’s a sign that something needs to be reevaluated and corrected. If you’re looking around wondering why people aren’t in “crunch mode,” the answer’s pretty simple. The thing we work hardest at is hiring good people, so we want them to stick around and have a good balance between work and family and the rest of the important stuff in life.”
“Our profitability per employee is higher than that of Google or Amazon or Microsoft, and we believe strongly that the right thing to do in that case is to put a maximum amount of money back into each employee’s pocket. Valve does not win if you’re paid less than the value you create. Over time, compensation gets adjusted to fit an employee’s internal peer-driven valuation.
Our Stack
The figure below shows a layered view of the latest distributed system product that I’m working on. Customer teams compose their applications by writing their own system-specific Crumbs and linking them with our pre-written, pre-tested Crumbs. In the ideal case, customers don’t have to write a single line of Crumb code. They simply compose, compile, link, configure, and deploy an amalgamation of our off-the-shelf Crumbs as a set of application components that meets their needs.
Note that we are using C++11 to build the system. Also note the third party, open source libraries that we are building upon. Except for Poco, Crumb developers don’t directly use the OpenDDS or ACE/TAO APIs. Our Crumb “Tray” serves as a wrapper/facade that hides the complexity those inter-process communication facilities.
My role on the development team is as a Libs team “Crumb” designer/writer. If I gave you anymore product views or disclosed anything more concrete, then I’d either get fired or I’d have to kill you, or both.
What are you currently working on?













