(originally posted Dec 2009)
As programmers it is our privilege to create what cannot be realized in the real world. But right now our language of development (our pattern language) is dominated by metaphors that move from real to virtual. The website has visitors, I click on a link, I put the file in the folder. Is it possible that this metaphor flow will ever reverse?
Could virtual space become the source of metaphors useful for describing the real world?
Arguably this change has happened for some. Many who leave the web after an extended visit notice the lingering effect. Like a cruise passenger who feels their sea legs a week after the voyage ends (real world!), the techno-adept longs for straightforward status indicators above their family member’s heads.
The weakness of a real-to-virtual focus are easy to pick out; files that can only be in one folder at a time are limited by a metaphor, not a technical difficulty. The weakness of a shift to virtual-to-real as the primary metaphor flow are less clear. It doesn’t seem likely the weakness will based on limits.
The primary goal of the tool making practice of programming is extending and expanding our abilities as humans. This is also at the core of the metaphoric shift. As our ability—to create, to visualize, to track, to organize, to remember—extends, so extends our reach. As our reach extends, our world expands and the material we have to draw on for the creation of new metaphors multiplies.
The difference between this tool making craft and all others that have come before it is the extent to which this craft draws both the practitioners (creators) and the beneficiaries (users) into itself. Time spent in the virtual world is larger in many ways than time spent in the real, and this is why the shift will happen.
The benefit to software developers will grow from this trend as the metaphors we use become native to the medium in which we use them. Maybe at that point they will cease to metaphors. Our pattern language will be complete in itself.
Q. It all sounds great as a theoretical exercise, but honestly, don’t your colleagues tell you that something like this will never happen?
A. They do say this, which is actually kind of ironic when you line it up with the other things they say.
They recognize that the construct of a charter city is something that could make everyone better off. They admit that there is no technological or economic constraint that keeps us from building many of these. Then they say that for political reasons, it will never happen. They tell me that you can’t change politics; you can’t overcome nationalism; there is no way for countries to work together to extend the reach of good rules.
Then these same economists suggest that we should just stick to business as usual. We should offer conventional economic advice and assume that political systems will naturally follow our advice when we point to something that could make everyone better off. But of course, they have already revealed that they don’t believe this.
What’s going on here is a kind of self-censoring. Economists seem to think that we should propose things that are acceptable and that political systems will pursue, but that we should avoid proposing or even discussing things that are controversial or politically incorrect.
I think we’d do our jobs better if we just said what’s true without trying to be amateur politicians.
Up there on the 28th floor, the group’s toys — e-readers torn apart, touchscreen displays, netbooks that bend in every direction — can feel a touch presumptuous for a company surviving debt payment to debt payment. It was just this winter when Michael Hirschorn loudly suggested in The Atlantic that the Times Co. could go out of business, “like, this May.” The Times will endure, in one form or another, and the R&D group is the beta version of the company’s future.
When I talk to people looking to get into game development some of the first things I often hear fall along the lines of, “How do I make games?” or “I want to make a game like Quake/Everquest/Starcraft and…”. The first is just way out of the realm of answerability, as there are too many aspects to possibly go into, and each of those components can be infinitely complex.
The second, however, falls into just being unrealistic in expectations. Starcraft, Everquest and Quake were all made by teams of professionals who had budgets usually million dollar plus. More importantly though, all of these games were made by people with a lot of experience at making games. They did not just decide to make games and turned out mega-hit games, they started out small and worked their way up. This is the point that anyone who is interested in getting into game development needs to understand and repeat, repeat, repeat until it becomes such a part of your mindset that you couldn’t possibly understand life without this self evident, universal truth.
Until you understand that all skills in game development are learned by experience, (meaning to start very small and working your way up) you will be absolutely doomed to never finish your projects. Even the infinitesimal number of teams that do manage to finish a non-trivial project before they have made any smaller ones have to learn incrementally, it just takes them many times longer than if they had started out with smaller projects.
The debates unnerved both candidates. When he was preparing for them during the Democratic primaries, Obama was recorded saying, “I don’t consider this to be a good format for me, which makes me more cautious. I often find myself trapped by the questions and thinking to myself, ‘You know, this is a stupid question, but let me … answer it.’ So when Brian Williams is asking me about what’s a personal thing that you’ve done [that’s green], and I say, you know, ‘Well, I planted a bunch of trees.’ And he says, ‘I’m talking about personal.’ What I’m thinking in my head is, ‘Well, the truth is, Brian, we can’t solve global warming because I f—-ing changed light bulbs in my house. It’s because of something collective’.
The hobby trade really figured out how to keep corals alive in captivity,” says Joseph Yaiullo, cofounder of Atlantis Marine World on Long Island, N.Y., home of the Western Hemisphere’s largest all-living coral reef display. “Scientists studied corals out in the wild but weren’t good at keeping them alive out of the wild.” For Lowes, it’s an opportunity to try to answer all sorts of questions: Why do corals react the way they do to changes in light, temperature, and water chemistry? Are there beneficial uses for the toxins corals release in self-defense? And Lowes will also think about what climate change is doing to coral reefs, which are some of the richest zones of biodiversity in the world.
A while back, the Christain Science Monitor ran a fascinating article [link below] on one of the most counterintuitive subjects in transportation policy: the so-called Braess Paradox. Stated simply, mathematician Dietrich Braess proved the unthinkable: sometimes, building a new road — even a high-speed one — can slow down traffic. ([Link to Wikipedia below]. And note that Braess’s discovery can apply to computer networks as well as roads.)
As an engineer, if you want to piss off someone who is asking you whether you can or can’t build a thing, just say, “Given enough time, I can build anything”.
They’ll believe you’re dodging the question, and they’ll think you’re arrogant.
As a means of negotiating a schedule or a feature, this answer is not helpful. You need to take the time to explain your thinking to this person. You need to walk them through your development process. It’s an opportunity to educate and not come off like a jerk.
However.
Given enough time, an engineer can build anything.
Giving you access to a straight-up hosted Microsoft SQL Server would be too useful, so in the Azure platform, you get a weak abstraction over it. You can query this data store with a LINQ-like language over REST or SOAP. Why not provide you with just an SQL server? Because scaling an SQL server arbitrarily is a real pain in the nuts, and you can scrape by with this abstraction. I hope you’re not too dependent on stored procedures. That will learn you to tightly couple your data and your business logic, fucker.
When it’s just you and your thoughts it becomes too easy to pick the first thing that pops into your head. We’re programmed to think all of our ideas are good, but reality tells a different story. Truly good decisions are forged from the furnace of argument, not plucked like daisies from the pasture of a peaceful mind. A good cofounder tells you when your ideas are half-baked and ensures that your good ideas actually get implemented.