Tagged: articles

Apping for Dummies

UPDATE: My advisor, Amin Vahdat, has written anĀ excellent blog post on this subject.

UPDATE: A much extended and updated version of this article has been converted into a small guide book which is now available for purchase from Pothi.com for Rs. 99 (excluding shipping). They take credit card payments and shipping is available anywhere within India as well as to UK, USA and Canada.

I am also making the book available in its entirely for FREE below. Hope it is helpful to some of you out there. If you find the book useful, I would appreciate if you could drop me a line :)

Note to prospective applicants to UCSD or elsewhere

Come fall, I inevitably receive emails from numerous people enquiring about admissions at UCSD. I have tried to put in all the information I have in this document and the UCSD Grad Student FAQ. Please go through these documents carefully before sending me an email. In particular, do not send me email asking the following:

  • These are my credentials. Can you tell me what chance do I have of getting admitted to UCSD: I can’t. And even if I did, I probably wouldn’t. So please, don’t ask.
  • What should I do in this XYZ situation?: please contact the graduate student admissions office at your respective university. They have people who are paid to answer such questions and help you out. I’m not administrative staff, and I don’t have the time, motivation or enthusiasm to accurately answer such questions.
  • Will I get financial aid?: as I’ve mentioned here and elsewhere, if you are admitted to a PhD program, you probably will. If on MS, chances are low. There are exceptions in both cases, and beyond that I don’t have an opinion. This is all I know, honest!

HOWTO: Ubuntu on IBM Thinkpad T42

This article was written a very long time back, so some of the information might have become outdated.

===== Intended Audience =====
Users who have or wish to install Ubuntu on their IBM Thinkpad T42s with all the bells and whistles (suspend to ram, suspend to disk etc)

===== Purpose =====
Ubuntu is a great distribution, and I am a big fan of Debian as well. Although the default Ubuntu installation work out of the box for almost everything, to get the perfect system, you still need to do some bit of tweaking! This How-To aims to cover those tweaks.

===== Prerequisites =====
* An IBM Thinkpad T-42 (duh)
* Familiarity with Linux in general and Ubuntu/Debian in particular

===== Steps =====

==== Kernel ====
The default Ubuntu installation will stick in a Linux-2.6.10-x-386 kernel (x = 5 for me), which is just fine. But you probably want to use a kernel optimized for your processor — the performance benefits mignt not be observable, but it will allow you to make use of some architectural enhancements. So first off, go ahead and do that:

sudo apt-get install linux-686

==== Sleep/Hibernate ====
This is the first distro I’ve come across that supports both suspend-to-ram and suspend-to-disk out of the box! Yay!! Suspend to ram is disabled by default though. To enable it, open up /etc/default/acpi-support and make sure that this is uncommented:


Suspend to ram is activated by pressing Fn + F4 and resumed by the same key combination. Suspend to disk is activated by pressing Fn + F12 and resumed by pressing the power button. You can always suspend to ram/disk by calling the appropriate script directly (/etc/acpi/sleep.sh or /etc/acpi/hibernate.sh).

==== KDE Fonts ====
If you’re a KDE fan (like yours truly!), you would want to install Kubuntu on top of your Ubuntu installation. You can do this by doing:

sudo apt-get install kubuntu-desktop

Kubuntu is just as slick as Ubuntu, it just uses KDE as your default environment instead of GNOME. However, my default Kubuntu setup showed up with really ugly fonts. Apparently this is a common problem (look in the forums/google), but fortunately, the its not a big problem and is easily solved.

Ideally Ubuntu/Kubuntu fonts should look identical. The only difference is that GNOME allows applications to render fonts at the DPI that is different than that of the X server. KDE seems to be lacking this functionality right now. So you have to instruct the X server to run at the DPI you want your wants to be rendered at.

There are a couple of ways to do this, but for me, the easiest was this: create a file called .Xresources in your home directory (~/.Xresources), and add the following line to it:


Thats it! Log out, restart X server (Ctrl + Alt + Backspace) and log back in — you should see good fonts now.

==== Thinkpad buttons ====
If you’re using KDE(Kubuntu), there’s really not much you need to do. By default, the ibm-acpi module should be loaded (check the output of lsmod) — this will enable all of the hotkeys and function buttons (including volume and brightness).

KDE has two nice features that make life good for Thinkpad users: the kmilo service that will handle the volume/brightness keys (with a nice OSD for the same; and the IBM Thinkpad kcontrol module which lets you bind programs to various Thinkpad keys (like the Access IBM key). However, to make best use of both of these, we need to do some tweaking.

* First, create a new group called nvram: sudo addgroup nvram
* Then add yourself to this group: sudo adduser [username] nvram
* Make sure that the nvram module gets loaded automatically on boot. Add nvram to /etc/modules on a new line.
* Finally make sure that udev gives read/write permissions for the /dev/nvram device to all members of the nvram group. Make sure your /etc/udev/permissions.d/udev.permissions has the following lines:


* Thats it! Next time you boot and log in, you should see nice OSD display when you press the volume or brightness or thinkpad light keys. And you should be able to bind the programs for the rest of the keys in the KDE control center.

==== Video ====
I use the open source radeon drivers. These drivers are fairly stable, work with both suspend to ram and suspend to disk, but do not provide 3D acceleration support. If you really need 3D acceleration, you can use the xorg-fglrx drivers or the proprietary fglrx driver available from ATI’s website. I don’t use these so I won’t spend time covering installation and usage, but you can find some useful information in the references at the end of the article.

The radeon driver works out of the box for most scenarios. However, I often had problems when trying to use my laptop with a projector — ideally I would like to clone the laptop’s display onto the projector, retain my laptop’s resolute on the laptop LCD, and scale to the appropriate resolution on the projector screen. For instance, 1400×1050 on the laptop LCD and 1024×768 on the projector screen. I modified my /etc/X11/xorg.conf as follows: (you can get more details by executing man radeon)

===== System Information =====

$ lspci
0000:00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03)
0000:00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03)
0000:00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
0000:00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
0000:00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
0000:00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB 2.0 EHCI Controller (rev 01)
0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 81)
0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 01)
0000:00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 01)
0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
0000:00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]
0000:02:00.0 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
0000:02:00.1 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
0000:02:01.0 Ethernet controller: Intel Corp. 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)
0000:02:02.0 Network controller: Intel Corp. PRO/Wireless 2200BG (rev 05)

===== References =====
* [[http://aaltonen.us/archive/2005/03/02/ubuntu-linux-on-the-ibm-thinkpad-t42/|Ubuntu Linux on the Thinkpad T42]]
* [[http://kudos.berlios.de/kf/kf.html|Unofficial Kubuntu FAQ]]
* [[http://ubuntuforums.org|Ubuntu Forums]]
* [[http://ubuntuguide.org|Unofficial Ubuntu Starter Guide]]