Category Archives: General

Catch-all category

General

People, databases, code and history

A couple projects that I’ve been working on for a while now have really impressed upon me the complications that result from the interaction of people, databases and code through their coevolution in the context of a long-running application with thousands of users. Well, I should say in the context of three long-running applications that were separately engineered, are in different parts of their lifecycles, have somewhat separate user bases, but have all their data intertwined.

From a high-level view, none of these applications or data models or codebases or use-cases are super-complex in isolation. But their interactions, plus the pressure of keeping things running continuously while adding new features, etc., really drive up the complexity to amazing levels, at least for my feeble brain.

It’s hard to convey this stuff in any concrete way without writing a few hundred pages, which surely no one would want to read… I guess that’s why it can be a little surprising to a person to run into these situations: millions of people have faced such crazy complexity in their work, but little of that is going to get passed on to others until they experience it directly.

So, I’ll just shut up about it.

General

EBS speed

In the description of Amazon’s EBS (Elastic Block Store), they say that

The latency and throughput of Amazon EBS volumes is designed to be significantly better than the Amazon EC2 instance stores in nearly all cases. You can also attach multiple volumes to an instance and stripe across the volumes. This is one way to improve I/O rates, especially if your application performs a lot of random access across your data set.

I wonder how they do that. I presume that EBS volumes are generally stored on separate machines, accessed through the network, and that instance stores are generally local disk. Could be that the local disks are really slow and the SAN disks are really fast and it’s just luck that it came out that way… But I wonder, if you had the same speed of disks in the two cases, is there a way to design things to come out as described above. Have to think about that one…

General

Peace

[This is going to be a bit of a ramble, so don’t say you weren’t warned…]

Have you ever tried to define Peace? I don’t know that I’ve ever tried seriously to do so. I think generally my line of thought is “well, let’s see, it’s the absence of conflict. what’s conflict?” at which point the line quickly knots up and I say “ah, I know it when I feel it” or some other cop-out.

When I was thinking about trust recently, and said that people are almost always trustworthy, the image I had in my head was that of buying a soda at the convenience store or something. When I try to say exactly why that’s relevant in my mind, it’s fairly vague, oh well, but the example also popped into my mind when thinking about peace. If I mentally test the hypothesis “economic systems destroy peace” (a hypothesis worth testing if only because I’ve heard variations on it many times), the example is a possible refutation. Most economic transactions I have do no harm to my individual peace, and often they promote it.

That, then, got me thinking about the definition of peace as “the condition where one feels no distrust”. It’s easy to see that that’s at least somewhat different than the initial definition above, since, for example, I can have a technical debate about how to implement some software system (which is a conflict) without losing trust in my interlocutors. That case is important to me, too; technical debates are a sort of conflict that I wouldn’t want to remove in a quest for peace.

I don’t know how good that definition is in general, and of course, I don’t believe in definitions anyway, but I’m going to try it on for a while and see what I learn…

It’s worth noting that one advantage of that definition is that it’s more centered on the individual. I mean, speaking about either conflict or trust requires speaking about two entities, but in the case of conflict, it’s about two subjects, while in the case of trust, it’s a subject and direct object. For this sort of definitional problem, I far prefer definitions where internal perceptions have more weight than second-hand information.

General

Trust

Thinking about trust in a mundane context usually spurs to me think about trust in the larger existential sense. I don’t know if it’s a symptom of living in a modern world steeped in alienation or just the fact that I’m wacked, but I have this sort of looming cognitive dissonance about matters of trust.

I mean, on the one hand I have this sorta mash-up model of the human being in my mind, with a little Freud and a little Smith and a little Taylor and a little Marx and a little Brown, etc., which, if you follow it to logical conclusions, will tell you that you should never trust anyone, ever, like.

But my day-to-day interaction with people is based on the belief that people are almost always trustworthy, as long as you take into account their finitude.

‘course, what I’m comparing there is really a model of a model to a model, so there really is no conflict there in a strictly-typed sense. Hmmm, that’s actually a really good thing to keep in mind… Glad I wrote this post, even if it appears to be a smear of bullshit from a reader’s perspective.

General

Safe in the clouds

I did forget to mention in my post about clouds that there’s the security issue. This issue is by no means specific to cloud computing, but it is something that’s been on my mind.

Problem is, when you host in a situation where the servers are not physically controlled by you, you have to put a pretty good amount of trust in the hosting provider, and so do your customers, recursively. Anyone in Google’s/Amazon’s/whoever’s pool of administrators can read or mess with your data. Encryption basically does you no good, if you need to do server-side processing of the data, since you’d have everything on the server to allow you to decrypt, and therefore so would the inside attacker.

Anyway, like I say, its not a new issue to the cloud computing realm, and trusting the hosting provider is not unreasonable, and there are social remedies both inside and outside the companies involved should the provider violate the trust. It’s really only been on my mind because people on the project are talking about the need to encrypt the contents of the database, and I’m thinking it’s pretty useless to do so. However, it is one of those things where the psychological situation is different than the technical situation. I’ve made my opinion known to the appropriate people and I’ll trust them to make appropriate decisions about these things, and just go with the flow from there.

General

Playing in the clouds

For one of my current projects, we’re investigating two ‘cloud computing’ services for hosting, Google AppEngine and Amazon EC2. It’s getting pretty interesting to learn about the good and bad points of the platforms, see them evolve, and imagine what’s going on behind the scenes to make them work.

My highest-level impressions so far are:

  • they’re both going to provide more hardware, bandwidth and reliability than you could imagine building in your server room, unless you happen to have billions of dollars to spare
  • EC2 is the easier to wrap your head around if you have significant experience in building servers from the metal
  • GAE is the easier to wrap your head around if you have no experience in web applications or server building
  • GAE (when it starts charging) scales smoothly, costwise, from zero up. EC2 has a ‘pay-for-what-you-use’ model, BUT, if you want to do anything at all and have it available 24×7, you have to pay for your instance 24×7 even if there’s no traffic, so you’re looking at at least $72/mo. Not a problem for a well-funded project, but for someone diddling around with a little idea and paying with their own credit card, it’s going to be a problem.
  • EC2 is all kinds of flexible, GAE is all kinds of simple. GAE does force you into a new programming model if you’re used to LAMP or the like, but everything else becomes super-simple once you get past that. Scaling, server maintenance, geo-distribution, etc. are all just done for you, whereas with EC2, you get the raw tools to deal with those problems, but you have to patch it all together. There are tools out there to help with that, of course, but EC2 itself is not enough.

We’ll see how the services progress and how my understanding of the capabilities and tradeoffs progress with them…

General

P. C.

Good choice Jon: Stewart whipped out a Palm Centro on the Daily Show today.

General

Trails

Occasionally you get a PDF of a scan of a printed copy of an automated email, and you say, “huh, that’s kinda funny”.

General

Here’s a phrase

Here’s a phrase, of sorts, from my past. I wonder if anyone out there in Internet-land can identify it.

This is from memory (I can’t find the original source material right now), so hopefully it’s still right:
“that’s a little too much high that’s that’s it low”.

General

Letters and cases

I was just looking at a travel itinerary sent through email, and it reminded me of something. There has been a great failure in the computing profession.

I’m a computing professional myself, so I feel some responsibility to repair this failure, and if my blog does nothing else, I’d love it if I could just get more awareness of this one particular issue. I feel the need to inform people in all walks of life of this one fact: computers can store and display letters in cases other than ‘upper’. Among the other cases that can be used in computer-mediated communication is the case ‘lower’. Just incorporating that one additional case into your repertoire would take us all a nice little step toward a better world.

Hmmm, maybe I should make a short slogan out of this concept to sort of help the meme spread. Let’s see…:

“Use lower case (in your computer-mediated communications, whether you are a computing professional yourself incorporating human-visible text into your software, displays, software configurations, error messages, etc., or whether you are someone who is directly or indirectly responsible for forming specifications for projects wherein the aforementioned computing professionals are presenting human-visible text on your behalf)!”