May 252007

I just got done reading the latest Cringley which of course revolves around my favorite bunch, Google.

(For those who don’t know me and didn’t hear my quite amusing story, I interviewed at Google and after the phone screen, 2 Colorado interviews, and the Cali interview they told me I couldn’t code and passed on me – hehe)

Furthermore, Philip Ogren and I had lunch yesterday and he mentioned that he interviewed at Google. He recalled one question that gave him particular trouble, which he believed to be the question that lost him more interviews. It was something like, “from an infinite stream of numbers select the highest 10%.” I had many similar questions such as “How would you find the median of an array that can’t fit in memory?” and “How would you randomly select N elements from an array of unknown size so that an equal distribution was achieved for infinite selects?” These questions are of course statistics based and selection questions, but Philip and I both could not definitely answer these questions for the interviewers. However, I moved on and he did not. In fact, he might have answered the questions better and definitely has more credentials than I do (he’s working on his PhD and I’m obviously not). So, before I get back to Cringley, what’s up with that?

It’s simple. Error is deterministic, guaranteed and often fixed. His interviewer was probably someone different than mine and probably had a larger ego than mine and this introduced error. My phone interviewer was a very cool dude who actually had a PhD in particle physics, but gave up research, probably for more money. Okay, back to the topic at hand – error – Google’s almost unavoidably introducing more error because smart engineers tend to believe they are better than you and this is 100% correct based on the 10-15 folks I’ve met from Google, with the exception of my interviewer and a few friends I have there. This ego-centric view of other developers introduces a high level of error when left unchecked.

Okay, so what does interviewing have to do with Google and Cringley’s belief that Google’s high concentration of smart engineers will be its down-fall? Well, it reveals the fact that Google is an enormously easy target. People talk about Googles hiring mistakes (error), issues with process and policy, and just about anything which is 100% perfect – meaning everything. Microsoft is likewise an easy target. The difference between Google and Microsoft is that Google used to be the good kid and everyone loved them to death. Now it seems that more and more people are shifting that view and looking at all the flaws and issues Google has and looking for ways to theorize their eventual decline into just another software factory that produces new versions of the same products with mundane certainty. Google is becoming just another evil empire, and if you look objectively, you can see that they are already heading full steam into the inevitable abyss where all enormous companies eventually end up. Google is just another company that everyone will love to hate but continue using everything they produce for at least another 10 years. Google self-destruction theories will become more and more common and folks will begin swapping, “did you hear Google messed up X,” stories at parties and events. This will all happen because as a society we tend to be deterministic in our love and then eventual hatred of companies on top. This cycle is quite simple to plot and if we did that exercise, Google would probably be right at the top on the verge of a lengthy but steady fall.

May 112007

I have had a whole rush of SSH login problems that I finally figured out thanks to the Ubuntu forums. There are a number of symptoms including these debugging messages when logging using ssh -vvv server:

What happens is that SSH will hang for a long period of time before providing a password prompt or performing key authentication. In either case the problem is the GSSAPI that is now being used by clients and not by most servers.

The fix is simple. Open up /etc/ssh/ssh_config and comment out this line:

This should turn off the client using GSSAPI and the hanging/timeouts should stop.

May 082007

I’ve been trying to get my Linux machine to look nice and this has been causing some amount (read LOTS) of headaches. I just wanted to start a post about all the things that Linux folks need to fix in order for Linux to look nice and work well.

– Focusing in compiz is pretty much horrible. If you have a window that laps over onto another desktop, that window will retain focus for both desktops rather than the desktop it’s center exists on. This causes major focus headaches unless all you windows are maximized or they don’t lap over

– Compiz breaks Java. I’ve updated to the latest version of everything and even patched the rt.jar with some compiz hacks and things still don’t work correctly. This really needs to be fixed in a more general manner for Linux/Unix distributions that are going to be using compositing. Perhaps the composite manager needs to provide a hook method that allows Java native to get at the constraints and properties of the manager. This would have to be standardized across all managers on all *nix flavors, but would make life much better for VMs.

– Windows don’t draw the decorations correctly sometimes when switching desktops. This makes windows seem unfocused but they are in fact focused.

– gDesklets and other desktop daemons (these are windows that are shown on every desktop) steal focus for all desktops because they exist across all desktops, which makes it impossible to use Compiz/Beryl with anything of this nature. Major bummer because they make Linux look good and are great tools.

– I’m using avant-window-manager (AVM) and it is pretty rough thus far and looks like it might die. Gnome-dock looks dead, Cairo looks dead, and the other docks are for KDE (not a fan).

– AVM lacks support for applets/desklets which forces me to run a single gnome panel with the time. This makes Linux look ugly.

– AVM doesn’t allow for menus to be nested. This would be nice because it would remove the need to keep a panel around just so I can get to less commonly used programs. This can be fixed using a launcher, but most of those are pretty rough.

– AVM doesn’t support grouping and really lacks a lot of configuration and features.

– AVM sorta loses its mind with applications that go into the notification area like GAIM. Now I’ve seen folks fix this, so if someone knows how, let me know what you did.

– Thus far I’ve only got gnome-launch-box to work and it is pretty rough. It doesn’t integrate well into gnome and should provide a method for auto-start and much more configuration. I think it uses beagle or something else behind it, but I couldn’t figure out how to control it or configure it. This needs a control dialog that is seamlessly integrated into the gnome configuration system.

– Deskbar is too verbose and not fast enough. Plus it doesn’t have enough options when you do find the file you are looking for. Plus, it doesn’t look nice enough to really be cool. It also jumps around the screen way too much. Not sure why it does this.

– KDE launchers just plain don’t like Gnome for some reason and I couldn’t figure out how to make them work correctly. Plus, they have that KDE feel and it clashes with the gnome stuff.

– I would guess that 99% of the applications that provide a transparency setting are hacking it via some background image magic. Most gnome stuff (panels, desklets, etc) don’t really work with a composite manager and need to be fixed to check for one and then fall back to their hacking if it isn’t running. If one is running though, they should use it.