February 25th, 2008

This line was just too good.. I couldn’t pass it up :)

Modern reconfigurable networks have a complexity unprecedented in the history of engineering: we are approaching scales of billions of components. Such systems are less akin to a traditional engineering enterprise such as a bridge, and more akin to a living organism in terms of complexity. A bridge must be designed so that key components never fail, since there is no way for the bridge to automatically recover from system failure. In contrast, a living organism can not be designed so that no component ever fails: there are simply too many components. For example, skin can be cut and still heal. Designing skin that can heal is much more practical than designing skin that is completely impervious to attack. Unfortunately, current algorithms ensure robustness in computer networks through hardening individual components or, at best, adding lots of redundant components. Such an approach is increasingly unscalable.

A paper linked to on Reddit

February 17th, 2008

I’m trying to measure the actual memory usage of Apache. I want to prove that Nginx is the preferred choice for Rails deployments, but I can’t make that claim until I can see some numbers..

So, to measure the actual memory performance, one must parse the file /proc/#{pid}/smaps. Why not just use ps? Because ps doesn’t report the correct amount of memory usage

So here’s the script:

#!/usr/bin/ruby
  1. Usage: smaps.rb [term to grep]
  1. Example: smaps.rb apache
  2. Would write to the file memory_usage_apache>
  3. At Sat Feb 16 23:39:20 -0500 2008:
  4. For /usr/sbin/apache2: Pid 24354 Private RSS 936
  5. ....
File.open(“memory_usage_#{ARGV.first}”, “w+”) do |log| loop do log.write(“At #{Time.now}:\n”) `ps aux`.grep(/#{ARGV.first}/).each do |line| pid = line.split1 unless Process.pid == pid.to_i name = line.split10 smaps = File.open(”/proc/#{pid}/smaps”, “r”) {|f| f.read } private_dirty = smaps.scan(/Private_Dirty:\s+(\d+)/) private_clean = smaps.scan(/Private_Clean:\s+(\d+)/) private_rss = (private_dirty + private_clean).flatten.inject(0) do |sum, rss| sum += rss.to_i end log.write(“For #{name}: Pid #{pid} Private RSS #{private_rss}\n”) end end end end

December 5th, 2007

We’d all love for such a thing, right? Well, it looks like Jay Fields has gotten such a crazy idea to work for him. In a recent podcast featuring Domain Specific Languages, he speaks of having his customers write out the rules for their business in a limited form of Ruby. Not exactly the entire app, but the essential bits that matter anyways.

Only one response: Bad. Ass.

Speaking of DSLs, it seems Martin Fowler will be producing a book on DSLs, and is publishing all his rough drafts to the web.

October 17th, 2007

I have one of these:

I like it. It looks pretty slick, like a MacBook or something. Well, almost. Anyways.. I run Windows on it. Yeah, I know, I’m a freakin’ poser. Maybe I’ll try that OSX on PC hack at some point. Who knows.

Until then, getting Windows XP to run on this thing is a bit of a hassle. It shipped with a copy of Vista, which, we all know, no one wants. Only problem is getting all the drivers working. Well, I found this post a while back. I’m linking to it because it’s just that helpful.

Only issue I have is that it’s not as meticulous and thorough as I’d like. Here’s where I goofed up. Maybe you won’t make the same mistake. When installing the audio driver, you have to make sure that you pick the right option. In Windows world, whenever you have a “recognized device”, it prompts you to install the driver for it.

Windows: Welcome to the Hardware Update Wizard! You: Ok, whatever. “No, not this time”

Windows: What do you want the wizard to do? You: Install from a specific location

Windows: Please choose your search and installation options. You: Don’t search, I will choose the driver to install

Windows: Select the device driver you want to install

Ok, this is were I screwed up. You should make sure you choose “(Standard System Devices)” under “Manufacturer”. By default, it is “(Generic USB Audio)”. That’s not the right option! Choose that option, then “Have Disk”, then the folder “C:\swsetup\SP33443”. You should find the driver called “CPL30A5a”. If you don’t, you goofed up somewhere. Go back and try again.

Have a good one!

October 12th, 2007

Alright, let’s be straight forward.

I want to work with an employer who has a standard process for deciding when a task is completed, and the payment for said task. I’m tired of working with hacks who play everything by ear, passing around scattered bits of notes and random todo-lists. I’m tired of coming up with clever ways to start a conversation which will eventually leady to “Are you paying me soon?”.

Don’t get me wrong. I’m not greedy. I used to be an anarcho-communist from the age of 16. I had a very passionate hatred for capitalism. Now I’m a bit more libertarian. I would like a regular pay check, but I’m not going to force anyone into it. Plus, getting paid regularly isn’t really a part of consulting, is it?

The process of creating software should be automated. Not everything in life has to be handled by automated processes. But some things, especially in the business realm, ought to. The process of turning a description of software into a working application should be handled by a routine. I’m not talking about a machine, I’m talking a repetitive principle that can be put into practice. Like a flow chart. Except performed by humans.

Why am I asking this? Because I want to get paid. But I don’t want to ask for money. I hate asking for money. I want to complete a task and have some machine spit out the money to me. Not in a greedy way, just an avoiding-human-awkwardness way. Well, it’s not possible because humans own all the money, but if a machine could make judgment calls about the completeness of a project, you bet I’d be working for it.

But since these machines don’t exist, what do I do instead? I abstain. I keep my money worries to myself and continue working, hoping that I can finish something which will prove that I ought to get paid. A lot of tasks in IT aren’t visible and proving that writing code for module XYZ is worth $N dollars really difficult.

What happens when I abstain from asking? Sometimes I abstain for so long I get burned out and start hating the project. That sucks. There are so many cool web projects these days, but unless I’m confident that working with an employer is worth my time, then I might just bail.

Problem is, I figure that whatever it is I’m working on should be evident on it’s own. This is easy if it’s interface design. Writing HTML/CSS is a bit tedious, but people can see it. They can see what you have done, and what you haven’t. They can see the dramatic change from nothing into something. And so, just like being a laborer, you get paid for building bricks.

But what if I’m pushing bricks, instead of laying them? Sometimes bricks have to be moved in order to make room for new bricks. Or sometimes they have to be rearranged. What if they employer wants a diamond shape instead of a square? What do you do with all those bricks? Start over?

What if I’m fixing a bug? There are lots of ways to fix a bug. Some of them are quick. Some of them take a few days. Some bugs are subtle and pervasive enough that it can take a week or more. If it’s taking that long to fix a bug, either it’s really nasty (which means the code should just get rewritten) or the developer is doing something wrong.

Sometimes the bug is very important. But sometimes that bug might not be worth fixing for the overall project. Unless I know this, I’ll probably spend days at a time trying to fix it. All the while the clock is ticking, I’m writing code, keeping my money issues to myself, And the bills keep showing up.

Explaining tech to non-techs is tough and sometimes makes you look like you’re lying to get more money. They might think you’re pulling their chain and dragging things out longer (if you get paid hourly). Or it could mean they should replace you with someone faster, (if it’s a fixed price project).

I’m not sure if there is a right way to ask for money. It’s a sensitive topic that can easily make people upset. Hopefully my next employer will give me the benefit of the doubt.

RSS Feed