This is mostly to help me remember what I like to do when setting up Ubuntu on a new computer, but maybe other folks will find it useful too. I’ll probably update it over time.
Install frequently-used software (recommended for all)
sudo apt-get install vim flashplugin-nonfree ttf-mscorefonts-installer ubuntu-restricted-extras gimp
Install less-frequently-used software (my personal list)
Note:Skype requires the Canonical Partners repository. Goto System > Update Manager > Settings > Other Software and check “Canonical Partners” before running the following.
I ordered my X200 with the default wireless ethernet adapter, the ThinkPad 11b/g Wireless LAN Mini PCI Express Adapter III. I’m not even sure why I had a choice between that or the more expensive Intel WiFi Link 5100/5300, but given that I only really needed 802.11b/g support, I went with the cheaper default.
I was obviously disappointed to discover upon installing Ubuntu that it couldn’t see my wireless ethernet adapter. Grrr. This is important! It did determine that I needed some restricted (aka closed-source) Atheros drivers in order to try to get it to work, but apparently those drivers didn’t have support for this particular wireless chipset (AR242x):
Without finding the kind of shining bullet that would make everything dandy, I attempted a few different instructions for how to get wireless to work, most of them outside my normal apt-get comfort level, and eventually, almost surprisingly, wireless started working. Of course I’d done a number of different things, and I wasn’t really sure which combination had produced the intended effect. So this morning I reinstalled Ubuntu from scratch, tried what I assumed to be the bare minimum necessary to get wireless to work, and it did!
So anyway, this is what worked for me:
Install Ubuntu At the time of writing, 8.04 (Hardy Heron) was the latest version
tar xzf madwifi-hal-0.10.5.6-r3861-20080903.tar.gz
Compile
cd madwifi-hal-0.10.5.6-r3861-20080903
sudo make
sudo make install
Reboot
Update, October 10, 2008:
Well wouldn’t you know it. Last night I updated Ubuntu (which included a kernel bump from 2.6.24-19 to 2.6.24-21) and this morning at the CM Summit when I booted up my laptop to liveblog Evan Williams—no wireless. Luckily I had the madwifi dir and instructions still in the trash, so I make, make installed it, rebooted, and voila—all was right in the world. I had decent wireless all day long.
Until I returned home, where it seems to alternate between either dragging or not wanting to get an IP address at all. And yet Stephanie is having no problems on her Mac. This is MONDO ANNOYING. At the moment I am tethered, sitting upright, wishing I was laying down in bed.
Update, July 27 2009:
Should have updated this a long time ago, but as of Ubuntu v9.04 (Jaunty Jackalope), released on April 23, 2009, wireless on the Lenovo ThinkPad X200 works out of the box.
I’m typing this on my new laptop. The totally hot Lenovo ThinkPad X200. It’s like 4 generations of improvement over my X23. The best part about it is the 12.1″ 1280×800 resolution LCD screen. The worst part is that Lenovo forced me to buy it with Windows (and now there’s this annoying Windows flag key wedged between the Ctrl and Alt—it’s already been remapped as Ctrl). Thankfully they gave me the option of saving forty bucks by downgrading to Windows Vista Basic.
When it arrived on Monday, I booted it up, just to make sure it worked, and kind of realized this was the first time I was really seeing the infamous Vista. Then I realized my eyes were burning, so I had to look away and turn it off. When I got home I plugged in my external CD-ROM drive, loaded an Ubuntu 8.04 disk I had laying around, and immediately blew Windows away.
And dammit if the Atheros-based wireless card didn’t work when I finally booted into Ubuntu. This made me sad. I thought maybe I could switch out the mini pci wireless card in my old X23 (which works with Ubuntu), but turns out mini pci != mini pci express. Eventually I sucked it up (I’m such an apt-get baby) and found some instructions that essentially amounted to compiling my own HAL (hardware abstraction layer) for Atheros. Now everything is peachy keen. Update: I posted my instructions here: Getting wireless to work in Ubuntu on a Lenovo ThinkPad X200.
Some people probably would use stories like this to demonstrate how Linux is not ready for prime time or the “average” user. However if Lenovo offered Ubuntu preloaded on their laptops (LIKE DELL DOES) they would make damn well sure it had the latest and greatest drivers for their wireless cards. And I’m not exactly an average user. It’s all a question of market share and economies of scale. I’m just trying to do my part.
I don’t know what exactly compelled me to purchase an ultralight ThinkPad X23 in the spring semester of my senior year (as opposed to a heavier model), but I knew it was the right decision the first time I was able to casually stretch out in the lobby of our dorm and soak up the wireless. It’s not that my dorm mates couldn’t do the same, it’s just that their laptops were so dang heavy, some in excess of six pounds, that they rarely bothered removing them from their desks.
At that time portability was an issue because I was constantly trucking myself between classes and work, and I always wanted to have my laptop with me. By the time I was done with school, I decided portability wasn’t so much an issue, and thus upgraded to a T42, gaining screen real estate and processing muscle in exchange for two more pounds of plastic and metal. Since then I’ve written extensively about the circuitous path my laptops have taken that has led to me typing this on my six year old X23 laptop.
There’s a different kind of portability than lightweight to carry. There’s the ability to cozy up with it, or balance it on my lap, or move it from the couch to the bed to the kitchen table with ease. This personal space portability is important to me because the type of things I do with my laptop are essentially relaxation activities. Reading and responding to emails, reading blogs and writing posts, working on photos. I read a lot. My laptop is my sketch pad, my drafting table, my workshop, and for all those reasons, I want it to be comfortable. And light.
Over the last 6 years, IBM, and now Lenovo, have made gradual improvements to the X-series: newer processors, USB 2.0!, slightly lighter, etc. None of newer models seemed substantial enough to merit replacing my trusty X23. For 6 years, I was waiting for one new feature in particular: a higher resolution screen than 1024×768. Last year I even sent Lenovo an email:
I would *love* to buy a new computer from you, particularly a shiny new X-series, but I’m waiting for one feature that you haven’t offered yet. A higher resolution widescreen LCD. WXGA 1280×800.
I know I can get that and more on a T-series (I know because I have one), but there’s something about the X-series dimensions and weight that I just keep coming back to.
I never heard back (*ahem* David Churbuck), but it sounds like they heard me. This afternoon I randomly wandered across the Lenovo website to see if their never-ending sale had actually ended. To my amazement I found an all-new X-series model: the X200! And wouldn’t you know it, it has a 12.1″ widescreen display with a resolution of 1280×800. It’s like the laptop of my DREAMS!
There’s only one problem. I normally have large and important packages shipped to me at work because they can’t be left at my apartment. The problem is that at the end of next week, FM is moving offices from Sausalito to San Francisco. So rather than risk things getting lost somewhere in transit, I’m going to hold my breath until Monday (the current end date of their never-ending sale), and place my order then.
Programming languages by themselves aren’t very interesting to me. I’ve never been a language geek in that sense. One thing however that is interesting to me, and has been for some time, is the web. Something changed for me in the fall of 1998, towards the end of the first semester of my freshman year. That was when my dorm’s newly-wired Ethernet was switched on. Suddenly the internet wasn’t something I had to go stand in a line at the library in order to get access to. Suddenly my computer wasn’t just a glorified word processor.
Where programming languages are means for me to get closer to the web, I’ve learned programming languages.
This is probably why PHP, as ungainly and homely as it is, has been such a natural fit over the last several years. It is programming language intended squarely for the web. Its primary goal is making web pages more dynamic, more programmable. Only later were command line features bolted on, quite the opposite of its more elegant scripting-language counterparts (Perl, Python, and Ruby), which tend to deal with the web after the fact.
I didn’t quite realize it at the time, but at work I’ve been meaning to do some datamining. Or at least that’s what I’m going to call it here. My requirements are simple. I want my database schema to be flexible and expandable, and I want my queries to be ad hoc and fast. They don’t have to be Google Search fast, but fast enough that most queries take less than a minute to run. And I want to do this for cheap. None of that Oracle, DBA, enterprise, 6 month build cycle nonsense. I want flexible, fast, and cheap, and I don’t want to have to choose two. I mean if Google Search can return infinitely unique result sets in less than two tenths of a second, why can’t I?
And why does MySQL get so goddamned slow when it gets over a few million records?
If Google can do it why can’t I? This is the paradigm shift. Maybe I can use Google to mine my data. Not Google the company or Google the search engine, but Google the infrastructure. This is what makes search plays like Cuil seem so laughable. It’s not the algorithm silly, it’s the infrastructure. If I were ever to work for Google, I’d prefer it to be in operations, as opposed to engineering. That’s where all the fun is. I digress.
The whole point of this post is to inform you, dear reader, that tonight I went through the Google App Engine Hello, World! tutorial. And I’ll probably start using/learning Python. The blogosphere’s initial reaction to Google App Engine was lukewarm. Basically Amazon S3/EC2-lite. Or something like that. But as of yesterday, or sometime last week, I’m seeing things differently. Like maybe Google App Engine is simply a way to use Google’s world-class, paradigm-shifting, grid-computing infrastructure without actually having to get a job there. That’s pretty cool. We’ll see how it goes.