Almost a year and a half ago, I wondered aloud how much EMC would pay to acquire technology similar to what I had already developed and had working in-house. Well, EMC never pulled the trigger, but Cisco did. In a year by myself I had implemented the core functionality for something like this, and it’s kind of amusing to think that Cisco thought something roughly equivalent (if not inferior) to what I’d have by now if I’d stayed at EMC is worth $82M. It’s also interesting that Cisco seems to get the idea of being able to access your data from anywhere more than “storage king” EMC does.
Here’s a picture and recording of Amy taking a bath. She doesn’t sound happy, but she gets over it.
A comment in Joel Spolsky’s How Microsoft Lost the API War got me thinking about what really makes a programming language more productive.
The real significant productivity advance we’ve had in programming has been from languages which manage memory for you automatically. It can be with reference counting or garbage collection; it can be Java, Lisp, Visual Basic (even 1.0), Smalltalk, or any of a number of scripting languages. If your programming language allows you to grab a chunk of memory without thinking about how it’s going to be released when you’re done with it, you’re using a managed-memory language, and you are going to be much more efficient than someone using a language in which you have to explicitly manage memory. Whenever you hear someone bragging about how productive their language is, they’re probably getting most of that productivity from the automated memory management, even if they misattribute it.
I disagree. Well, sort of; I’ll explain in a minute. When I think about why I prefer to work in Python when I can, automatic memory management doesn’t come to mind. What does come to mind is the availability of collection types such as lists/tuples and dictionaries. Not only are they there in the sense that I can construct and operate on collections, but I can do so easily. I can construct them inline, pick them apart inline, iterate over them, even pass slices of them around with just a flick of the keyboard. I can make a function that returns multiple values just by wrapping them up in a list or tuple and writing “x, y = f()” in the caller. Even the most “advanced” C++ with STL and overloading and whatnot doesn’t give me the same level of convenience or consistency with regard to this basic functionality.
Now, one could reasonably argue that what makes all of these collection types feasible is automatic memory management; that’s the “sort of” I mentioned above. However, automatic memory management by itself doesn’t get me all that much. What really helps to make me more productive in Python is using that to create convenient collection types. That second step – not the first – is where I get the real bang for my programming buck.
Tim Lambert has written an absolutely devastating exposé of where many of the “think tanks” who’ve been attacking open source get their funding. I find it particularly interesting how so many of these lobbyist organizations illegally masquerading as non-profits seem to choose libertarian/laissez-faire kinds of names like “Defenders of Property Rights” and “Association for Competitive Technology” and “Small Business Survival Committee” because, after all, we all know open source is a communist plot, right? I guess we know what “competitive” really means to these people, and it’s not the definition you’ll find in the dictionary. Perhaps the best part, though, is where Lambert smoothly mentions that he has placed asterisks next to the names of the organizations that use open source software to run their websites.
I got this from a guy at work. It’s one of those jokes that’s mainly funny because it’s not, if you know what I mean.
Two ints and a Float are in a bar. They spot an attractive Double on her own. The first int walks up to her. “Hey, baby”, he says, “my VM or yours”. She slaps him and he walks back dejected.
The second int walks over. “Hey, cute-stuff, can I cook your Beans for breakfast”. After a quick slapping, he too walks back.
The Float then ambles over casually. “Were those two primitive types bothering you?”, he remarks.
“Yes. I’m so glad you’re here”, she says. “They just had no Class!”
For the last several days I’ve been seeing something strange when I visit the excellent image website Caedes from work. When I go there directly, I get a bare directory listing instead of the graphically rich site I’m used to, but if I go through an HTTP proxy everything’s normal again. I know Caedes has been through some changes recently, so my first thought was that they’d changed their address and I have a stale DNS entry. No go. The address I get from here is the exact same one I get from the authoritative servers. It’s not being cached in the browser either, since it happens in multiple browsers all of which have been restarted and cache-cleared and so on. IE used to have problems with not clearing redirects when you clear the cache, but I’ve already noticed that Firefox handles that correctly so that’s not the problem. Does anyone out there have any other suggestions for what might be going on?
I just added a bunch of new comics to my bookmark list, and thought I’d share.
Because most of these are from Comics Sherpa, some of them might not last long, but I deliberately focused comics that were being actively updated (there are lots of apparent orphans on CS) and reasonably well drawn (indicating that the author has more than a fleeting interest) so maybe I’ll be lucky.
Verizon is having routing trouble again. I can’t get to this site directly, although I can obviously get to a proxy and the proxy can get to here or else I wouldn’t be able to post this. The site’s fine, most of the net is fine, it’s just Verizon that’s a mess. Such routing failures, cutting me (and presumably other customers) off from 10-80% of the internet, are a common occurrence. As I’ve noted before, Verizon’s internal status pages are worse than useless. They always say “everything’s fine” even when everything is quite obviously not fine; this has been the case even on occasions where the failure was obviously very widespread and severe.
In an ideal universe I wouldn’t have to put up with this. After this many instances of poor service, I would have switched to an alternate provider long ago, as I have in fact done more than once with web hosting providers. Apparently both Comcast and RCN offer service in my area. The problem is that they’re not clearly any better – certainly not enough better to justify the high substitution cost. That’s not a matter of regulation nowadays. It’s a matter of how real capital-intensive markets work. There are some who base their economic philosophy on assumptions of zero substitution costs, zero externalities, perfect information flows, and perfectly honest businesspeople who never engage in any kind of collusion or other anti-competitive behavior. I’ve said it before and I’ve said it again: those people are either crooks or idiots and often they’re both. Here in the real world, in a market where barriers to entry are high (“naturally” or otherwise) and thus only a few providers serve a market, collusion is inevitable because it’s “stickier” than the alternative. There’s no incentive to rock the boat when you’re in it, especially when substitution costs are high and margins are low (because of supply/demand curves, not competitive pressure). Verizon wouldn’t increase their profits by improving service, and neither would Comcast or RCN. In their established markets the route to increased profitability is almost always through lowered costs which are not passed on to consumers and almost always lead to an actual decrease in service.
It’s a race to the bottom, not to the top. It’s why certain industries should be regulated, but the last time the government tried to regulate this particular one they didn’t have the backbone to do it properly. The phone companies found ways to make life difficult for the so-called “competitive local exchange carriers” (CLECs) who discovered it really wasn’t possible for them to be competitive at all. Because the CLECs are all dead now, and because of similar patterns occurring in the cable and satellite industries, there really is no meaningful consumer choice when it comes to high-speed internet access. Providers will continue to suck, and consumers will have no choice but to live with it. The “invisible hand” is invisible indeed in cases like these.