Wednesday, August 26, 2009

Upgrading Linux ATI drivers on ubuntu

OK, normally I don't do tech stuff in my blog, but this has been a long standing frustration that, now that it's fixed, I feel the need to share.

Background: A year or so ago I bought a fairly inexpensive laptop from Tiger direct. It was a toshiba satellite A215-S740 and only cost around $600. This is a fairly decent machine and I intended to use it for work. It came preinstalled with Vista, but I typically run Linux (ubuntu to be exact).

I thought I'd run vista for a while and see how I liked it, tired after two days of the constant interrogation. I felt like Vista was an overly agressive Gestapo agent... so I installed Ubuntu (ahhh, much better).

My first problem, however was that the built in ATI driver did not support 3d. At the time I was playing with building 3d visualizations of our systems and I REALLY needed 3d (because software 3d was way too slow). I found the ati proprietary drivers, installed them, and everything seemed OK acceptable, but not quite Great.

Some examples of problems where:
Desktop effects didn't work
Changing resolutions and hotplugging monitors didn't quite work.

Admittedly these where minor so i basically ignored them. Every month or two I would download the latest ati drivers and then attempt to upgrade. Invariably I would waste 2 hours fooling around with them and finally give up.

Recently, I took off the gloves. I had some vacation time and decided I was going to solve this problem once and for all. After much wrangling, I discovered some things that really seemed necessary to get things to work.

#0 This I kept forgetting and I think had something to do with it
sudo rmmod fglrx
sudo rmmod ati_agp

#1 Uninstall the old drivers.
yeah, really, just do it. If you want my advice, hit on startup, pick the #2 option (safe mode or whatever it is) and then pick "go to root shell". Some alternatives might be to switch to another console, log in, and stop GDM, but I'm trying to illustrate the most "foolproof"

For those that don't know how, the steps I took to uninstall where:
sudo dpkg -r fglrx-amdcccle
sudo dpkg -r fglrx-modaliases
sudo dpkg -r xorg-driver-fglrx

#2 Create the ubuntu .deb files from the installer.
sudo ./ati-driver-installer-9-3*.run --buildpkg

#3 install the ubuntu .deb files
sudo dpkg -i fglrx-kernel-source_8.593-0ubuntu1_i386.deb
sudo dpkg -i fglrx-modaliases_8.593-0ubuntu1_i386.deb
sudo dpkg -i xorg-driver-fglrx_8.593-0ubuntu1_i386.deb
sudo dpkg -i fglrx-amdcccle_8.593-0ubuntu1_i386.deb

#4 reconfigure the driver
sudo aticonfig --initial --resolution=0,1280x800 -f

#5 restart!

Some key points...

#1 I used a BUNCH of other techniques, but I never uninstalled the drivers first, nor did I stop the kernel modules (#0 and #1) I think these where critical.
#2 When running aticonfig, use the -f option to write the changes into the xorg.conf file. I kept getting kernel panics when I didn't include the -f.

Monday, August 17, 2009

Transition from two guys in a garage to multinational company

There is an interesting difference between how folks do things when its "two guys in a garage" and "a really big multinational company". The first thing I would say is that you can run a company of either size the same way. The second thing I would say is that you CANNOT run a company of either size the same way EFFECTIVELY.

If you are a working in a web based software startup with 16 people and you have 2 developers, 4 project managers, 6 vice presidents, a CIO, CTO, CFO, and CEO... you are destined for failure (if you don't know why, I bet your title had the word "Chief" in it). On the other hand, you have an established company with 1600 employees, 24 well known brands, a B2B application that does a billion dollars a year in sales, you might need a couple of managers who try to keep things organized. You really don't need 40 developers all "doing their own thing" with little rhyme nor reason.

I've been on both ends of this over the years as well as a number of places in the middle and it's interesting to watch people try to blindly apply patterns that worked in one environment in a radically different one and be puzzled when they don't seem to work.

Folks... there is not golden solution to every problem. If there was, somebody would have patented it by now and be grand imperial commander of the universe. The fact is, every new and unique thing we do creates and demands new patterns and solutions because they create new and unique problems that have not been completely solved. In addition, even the simple passage of time can cause a solution that worked great 5 years ago to be remarkably silly now even if it's in a remarkably similar context as "the last time".

Saturday, August 8, 2009

Cakes, Onions, and Ogres have layers, are you sure your code needs them?

Anybody write java code out there?
Anybody have a data access layer?
How about a business layer?
How about a service layer?

Why?

I've heard all manner of crazy answers like:
It makes my code more flexible.
I can dynamically swap out components for one layer or another.
I need to keep things isolated so that a problem in one layer don't impact the other.

Convince me, because I'm just not sold at this point. I went through a number of projects with this fad back in the 2001-2005 timeframe and none of the theoretical benefits never seemed to emerge...

Project insanity

I've been rereading my journal (not blog) and realized that every year, for the last 3 years, I've been engaged in a crazy "meet the date at all costs" project that ultimately ended up being canceled around the March to July timeframe. This year was no exception and I raised red flags, drew charts, rang warning bells, blew whistles, rang gongs, frankly I think I did everything but set myself of fire and for some reason... we continued to mindlessly tool along using an outright crazy set of expensive tools to "deliver" a project that was totally behind schedule, didn't do what we wanted, and frankly was one of the most ridiculously avoidable failures I've had the misfortune to be involved with. Mind you I'm sure it ended up "working" and probably wouldn't be canceled this year because it had good buy-in from senior management, it's just we did it the hard and expensive way and relied on heroics of individual people instead of doing it the smart and economical way.

For a postmortom, somehow it seemed like I was speaking a different language when I tried to discuss the problems and how we might avoid or fix them. Worse yet, it seems like I developed a reputation among my management team as a difficult and inconsolable whiner who just didn't want to buckle down and do what he's told. Oddly enough, our CIO had urged me to make sure I communicate things, but I felt a personal sense of loyalty to my management team to not expose problems to their bosses. In retrospect, I think that loyalty was misguided and while it's unfortunate, I think it probably will cause the problem to persist for quite some time.

In any event, I personally think I utterly and abjectly failed in my role as a technical leader on that project. I stopped trying to resist letting the train run off the tracks and arrived at the conclusion that I did not posses the requisite communication skills to explain the problems and how they should have been solved... Frankly, my solution was to shut up and leave the company.

I've since moved to another company... More to follow

--Mike

Monday, August 3, 2009

I met me today

The strangest thing happened today...

I met myself at lunch.

Or rather, I met someone who sounded a lot like me. You see, I just started a new job and I went out to lunch with few of my new team members. Part of the lunch digressed into a bit of a bitch session about stupid crap at work. It was kinda nice to have folks be so upfront and just vent instead of dodging around the issue and playing little word games to try and see if I would finally understand what they really meant.

Someone just said "I think so and so is a dumbass" and that was that. No "well, you know (make up little story that is hopefully a metaphor I would understand) and then proceed to allude to this fact over the next 30 minutes, it was just flat out and out "so and so is a dumbass".

I like it... I'm not saying that this person was right or wrong, it's my first day, how could I know? But what I like is that I don't need to guess what that person thinks. While I supposed they could be gaming me or have some ulterior motive, it certainly seems like they just wanted to get their position on the record. That gives them +1 in my book, though a high score is in the millions, so it's not a terribly impressive feat.