What’s better, small or big?

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

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

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

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

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

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.

Slashdot comes through for once: on the viability of open source “business”

There’s also a larger problem with this approach – it sucks for small companies trying to become bigger.

If you are only able to profit off of service contracts, you can’t ‘write once, reach many’ like you can with COTS software. Moreover, companies like IBM and Novell which have large established sales and service teams will win all the larger contracts.

If you write a great peice of software, and then have to sell, educate the customer AND hire/train all the workforce, how much time are you going to have to devote to Rev. 2 of your world beating product?

Whenever folks talk about OSS in the context of markets, I think it should be with a jaundiced eye towards our “helpmates” at IBM, Novell, SAP/MySQL and Sun.

Ultimately, IBM et al are about making money for shareholders, if they didn’t see that as the likley outcome, they would not be out there pimping OSS.

I think a world where software is only ‘sold’ in the context of a service contract is bad for the next great idea. OSS is great in its place, but to preclude software for sale isn’t the answer.

The truth hurts for Free Software zealots, but it’s the truth.

Free Software isn’t about eliminating proprietary software, at least it shouldn’t be. It should be about developing a free system for development, learning, and sharing, because we can.

The MDI Plague and Window Management Woes

There is a nice article on Wikipedia that discusses the multiple document interface, a horrible hack that took hold in the Windows world to deal with the fact that Microsoft’s default window manager was inadequate to handle multiple windows existing under the same application.

I think Mac OS/OS X handles the MDI plague best by simply grouping all application windows under a single application class, with a single menubar. But usability experts have debated whether that makes the most sense, since the menubar can change, for example, depending on what window is in focus. I think users get used to that, and it also allows the menubar to be as long as necessary while the window can remain as small as necessary. That’s a nice win.

However, given our current model on *nix/Windows of menubars for every reasonably complex window, and given the lack of the MDI hack in GTK+, we do have a mess for applications that need more than one window to operate properly, i.e. Glade and The Gimp.

What I’ve been doing is giving these programs their own workspace as a workaround. That seems quite greedy of them, and indeed it is. What’s more, however, is that it’s unusable. Even when I switch to my Glade workspace, I see 4 windows in my taskbar, each with the same icon and with the following names: “Glade: h2h”, “Properties: image95”, “Widget Tree”, “h2h”. The first three are actually part of the Glade window class, and if I enable Metacity’s taskbar grouping, I see them as part of the same group. The last one, however, is just my actual window, and so is separate.

This is good–but I only get some form of usability when I actually enable window grouping. The thing is, in Metacity you can’t enable window grouping on a per-application basis. It’s all, sometimes, or nothing. Sometimes means metacity only groups windows when I’m running out of space. Otherwise it’s either on or off.

The thing is, grouping isn’t just about space saving. It’s about being able to perform window manager operations on a group of windows, i.e minimize all and maximize all.

This doesn’t even solve all problems: alt+tab still shows me all 4 glade windows, which can be quite confusing since only one comes into focus at a time. But that’s a separate issue, separate debate.

Wouldn’t it be nice if instead of Metacity just “figuring out” when to group my windows together, it let me just press a hotkey “Group all X windows on this workspace”, where X is the application I’m currently in?

I’ve decided this feature is so valuable, I may just hack metacity to add it. It will at least provide a path for solving the MDI nonsense.

Update: check out these screenies of a “different” approach to MDI written in GTK. It’s called GTK ADI.