Technology

UNIX Zen

Monday, March 6th, 2006

You know you’re in UNIX zen when you are looking at pictures for an apartment you are interested in, and you think to yourself, “Man, I’d really just like to download all 8 photos of this apartment at once.” So you realize they end in numbers 1-8, and you open up a terminal and write:

for i in `seq 1 8`; do 
  wget http://www.livinginbaires.com/imgs/departamentos/46-$i.jpg; 
done

And that’s it, you hit enter and *vroooooom!* You see progress bars fly across your terminal as wget snappily fetches your photos, and suddenly, all eight photos are downloaded, and you get back to work. That’s empowering.

I don’t often quote Bill Gates, but…

Saturday, March 4th, 2006

Early in the history of Microsoft, our view was, if you were very smart then you could learn how to manage people, how to do business, how to do marketing.

It turns out that talent isn’t that fungible. Somebody who is great at doing software in many ways is often not the right person to manage people. I think the thing to recognize is these different kinds of ability, and to think through, as you build a team, “How do you get the right mix?”

Although I probably wouldn’t have used the word “fungible” myself, I agree with Bill’s sentiment. Programmers are not developers. And developers are not managers. But, I would add something else to this:

A manager who doesn’t know what it’s like to be a programmer or a developer cannot be a manager of programmers or developers! Management is a special combination of leadership ability and empathy. Your manager needs to be able to stick his neck out for you, because he knows you. And he needs to be able to provide wisdom — not because he’s smarter, or because he’s more mature, but because that’s now his role. Managers are the guys who protect you from everyone not on your team, who make sure you have everything you need to innovate, and who provide wisdom because their job description includes, “must be able to dispense timely wisdom at all the critical moments.”

Management also includes vision. Some software developers become managers and their vision alone leads their team. Where that kind of energy isn’t possible, lots of empathy, planning, and wisdom are necessary.

Getting the troops mobilized

Saturday, February 25th, 2006

I gave a talk last Tuesday called “Open Source Development: A Rapid Introduction.”

Here’s the blurb I sent out when I advertised the talk:

Have you wanted to work on open source projects, but just don’t know how to get started? This talk will provide the basics you need to start working on open source software the next time you sit down at your computer.

In particular, this talk will cover:

(1) A brief overview of open source development in the industry and press.

(2) The UNIX development platform. A brief and whimsical overview of the UNIX shell, its surrounding tools, and the power of shell scripting. (Useful to anyone wanting to learn more about UNIX tools.) Learn how to do in a few lines of shell script what you only thought was possible with a big, extravagant hundred- or thousand- line program, and learn why so many of the world’s best hackers hack on a *nix system.

(3) The basics you need in order to hack on open source project: how mailing lists, wikis, bugzillas, source code revision systems all come together to form an organic code management process, and how to get started using those tools and others to learn about a project and what parts need development work done. This will include a brief introduction to CVS.

(4) The last part of the talk will involve actually watching open source development in action. In particular, the speaker will checkout some code from a source repository, make a change to it, create a patchfile from that change, then track down the mailing list or bugzilla related to the project and submit the patch to the maintainer. You will actually get to see open source “in action,” and will want to do it right when you get home!

If you’re a Windows or Mac OS developer who has always wanted to learn more about *nix systems, or if you’re a developer who wants to either take his own project open source or work on existing open source projects, this talk is for you.

Of course, if you’re someone who is just interested in the concept of open source, this talk will give you an inside look at “how things get done” in this community.

This talk was at least partially inspired by Nat Friedman’s blog post, check it out here:

“How to be a Hacker”

The talk was a general success, I think. About 12 people attended. You can see the talk in PDF or ODP formats, and you can also download the patches I wrote specifically for the talk to illustrate “open source development in action.” The patches are pretty stupid, but do illustrate the point, at least. Plus, each of the three patches served one of my own goals (hacking my CPU frequency scaler, fixing a gnome-terminal bug, and hacking galeon “for fun”), so that’s that. I think it’d be cool to give this talk again (maybe a little refined to include less basic UNIX tools and more hacking stuff) at a later date. We’ll see.

What’s better, small or big?

Sunday, February 12th, 2006

To start out at a small software firm, or to go with one of the big guys? I’m wondering myself what the right decision is, what advice I’d give someone.

On the one hand, big guys mean bigger projects, more formally managed projects, and at least from that point of view, harder “software engineering” problems.

Small firms are less formally managed, but you may be pushing some technology to the limit, rather than just providing some service (however essential it might be) to the company. It’s the software that matters, not “the System.” And you’ll probably be working with better coders. (The best coders fill up the small shops, whereas they are just diamonds in the rough at the bigger shops).

In either case, this is turning into one of those things your parents always warned you about. You know, when they say it isn’t about the company, but it’s about you and what you put into it. Just like college was. I honestly could have gotten just as much out of college with a library card and Internet connection, and lots of free time.

Now that I’m moving up to the “real world,” I keep thinking: no matter what I do, it’s gonna be my responsibility to grow my skills and knowledge, and no one else’s.

It’s definitely going to be an interesting year…

Dragon NaturallySpeaking working

Wednesday, January 25th, 2006

So, I promise that I would start blogging again once I got Dragon NaturallySpeaking working. Well now it is working and fully trained and surprisingly my voice is controlling my computer. I’ve been laying off my right hand very much, and had a custom splint made him by an occupational therapist who has also been prescribing a steady treatment of anti-inflammatories, ultrasound and cortisone therapy, ice and heat. So far my symptoms are going the way; specifically, pain that used to radiate up into my right shoulder has completely disappeared and pains in my right wrist are subsiding. At first, I wasn’t going to be very optimistic, but I really like the way this is going.

I’ve been thinking a bit about how carpal tunnel syndrome seems to be more congenital than it is acquired through repetitive strain. That’s not to say that repetitive strain does not exist; only that some have a predisposition for acquiring the painful symptoms of carpal tunnel syndrome. My mother had carpal tunnel syndrome — which she got over through conservative treatments — so it would make at least some sense.

I don’t want to come to any conclusions at this point, and I’m enjoying the break that I have from computing, so I will continue to lay off this blog for a while, at least until all of my major symptoms subside. Until then, keep thinking about all the issues that you think are important, and maybe while I’m taking a rest for my thinking chair, you’ll stand up and act. For starters, how about we oppose this horrible reconstruction of Washington Square Park which is going to ruin my commencement/graduation from NYU?

Outsourcing Homework

Thursday, January 19th, 2006

I only skim the headlines of /. lately instead of getting caught up in the commentary. But one caught my eye: the increase of “rent a coder” programs for CS students who want to fake their way to a degree. (Essentially, students are “outsourcing” their homework.) My favorite comment was the following:

If that’s your approach, why not be a buisness major instead? I mean, if you’re not really passionate about the work, why not pick an occupation that a) pays more and b) is easier to fake your way through?

Heh.

Hand trouble

Monday, January 9th, 2006

Many of you who know me know that I take computer ergonomics very seriously. I started doing so in my sophomore year (~1.5 years ago at this point), where I started to experience symptoms of a RSI from my intensive computer science classes.

Last semester, I took a long break from computers and saw my RSI symptoms disappear. Once I got back to work last semester, they came back even worse than before, and it even affected my performance in classes and such due to the strain and time I had to spend nursing the injury.

This break, I’ve been researching ways to get over this problem. I am still not sure if what I have is Carpal Tunnel Syndrome, DeQuervain’s Syndrome, a muscle inflammation or pinched nerve (or all of the above), but I’m trying self-treatment by immobilizing my right wrist in a wrist splint, taking non-steroidal anti-inflammatories (i.e. ibuprofen) and using my left hand for as much as I can.

We’ll see how it goes, but I have to take a break from this blog for a couple weeks, most likely. (Unless I get Dragon Naturally Speaking working under Windows!)

Site cross-pollination – check out h2h

Tuesday, December 13th, 2005

I just wanted to mention that earlier today I finally got hand tracking working on my final project for my Motion Capture / Computer Vision class. You can now connect a webcam to your computer, load up my GTK+ program, and watch boxes with crosshairs follow your hands accurately as you move them across the screen.

Pretty awesome, no? Check out the project if you haven’t yet, its MoinMoin wiki is here. I might post up a video of it in action soon.

It uses a clever skintone detection algorithm across the RGB colorspace, along with clever segmentation of the regions of interest to determine the cardinal direction a hand is moving in and retargeting the box to the new area and running the algorithm again. I am quite happy with the results. It can only get better, but it’s already pretty fun to play with.

Instilling Doubt

Monday, November 28th, 2005

A pretty insightful comment coming from an anonymous poster (in the comments section),

I always wonder about these Linux puff articles — what motivates the writers to pimp OSs that any experienced person knows will be nosebleeds for 90%+ of the novices trying to do a real, complete migration from XP?

Linux never has been, nor will it ever be, an effortless turn-key OS for all-purpose desktop (let alone laptop!). Ubuntu is an improvement, but it’s still Linux — which, if you consider the costs of replacing unsupported hardware and your time struggling with setup at about two cents an hour, is the most lavishly expensive OS ever devised.

I’ve been screwing around with Ubuntu 5.04 for about five months, all but living on the official support forum, which provides — at best! — solutions for only about a quarter of the hardware and software problems I’ve encountered, and there are tons of them.

When 5.10 was released, the forum exploded with bug reports from those who had upgraded from 5.04 and found they had major-to-fatal problems.

I’ve tried to install 5.10 on my new laptop, but the VIA video is not supported, nor is the RaLink wireless, nor WPA authentication…etc., etc., etc.

If you want to spend the rest of your life talking with geeks (and in the process learn that OS advocacy is best understood as a psychiatric symptom above all else) and trying out an infinite number of kludges, you can get a lot of these problems worked out (more or less), but what you normally wind up doing is succumbing to what I call “Linux disfunction drift,” eliminating tasks that you used to do in Windows because your Linux distro won’t do them, or support the hardware you needed to do them.

Disclosure: I have never read “Design Patterns”

Sunday, November 27th, 2005

But I decided I will now. Gonna buy this introduction plus the original by the Gang of Four in the next couple of days. Shame on me for waiting this long.