Minimal usable Ubuntu with one command
If you install the default "ubuntu-desktop" you also get with it a gigabyte of crap that you will never use. But if you don't install the ubuntu desktop, you get a system with a text-only login: prompt, and it's not clear what to install to get it to a usable state.
I have an irrational need to optimize my Ubuntu installation. I did some investigating and came up with this method, which gives a minimal graphical 1.2 GB install, with gnome, networking, and no applications.
Install the base systemUse UNetBootin and create a usb key with the network install. (If you are still burning non-archival data-DVD's in the year 2010, you must also live in a cave.). Plug the computer directly into the network using an ethernet cable. Boot from the USB key and install ubuntu as usual, over the network. Using the network-install means you aren't even downloading the packages you aren't going to use. It also means you don't have to immediately update your system and re-download everything, because the network packages are already up to date.
When you get to the "task selection" screen with the option to install ubuntu base server, kubuntu, etc, do not change anything at all.
Install the minmal gnomeWhen installation completes and it boots up, you get a text-only system. Login and type the following command:
sudo apt-get install gnome-panel gdm gnome-terminal
This will install a graphical environment and the login screen, so it will let you login by clicking on your username.
When it completes, reboot using "sudo reboot", or if you are super-geeky, type in the secret command to avoid rebooting.
Wireless Networking for laptopsIf you have a laptop, you will probably want:
sudo apt-get install network-manager network-manager-gnome gnome-power-manager hibernateThat will give you a battery monitor and the icon that lets you configure wireless networking. It also gives you the hibernate button when you shut down.
Where's my browser?
sudo apt-get install chromium-browser flashplugin-installer
Make it look goodGnome's default theme looks like something from the year 2000. Get some of the Ubuntu 10 goodness by doing this:
sudo apt-get install ubuntu-artwork
All together nowAs promised, here is the one command that combines all of the above.
sudo apt-get install gnome-panel gdm gnome-terminal network-manager-gnome network-manager gnome-power-manager hibernate chromium-browser ubuntu-artwork flashplugin-installer
You don't need a project/solution to use the VC++ debuggerYou learn a lot of things on the job as a programmer. Years ago, at my first coop position, I was a little confused when my boss went to Visual C++, and tried to open the .EXE file as a project. What a dolt! I thought. That's not going to work.
Finding the top K items in a list efficientlyDo you use sort() to find the top results? Here's a simple trick that will make your software run much faster.
Exploring sound with WaveletsHere's a program to create scalograms of sound files.
Experiment: Deleting a post from the InternetOnce you post something on the Internet, it is hard to get rid of it. As an experiment, I deleted one of my past posts, and I tried to remove all traces of it.
When a reporter mangles your elevator pitchIf a reporter asks you about your new startup company, be careful what you say.
Email EtiquetteIf you begin your emails with "Hi, <name>!" then they will seem less rude.
VP trees: A data structure for finding stuff fastLet's say you have millions of pictures of faces tagged with names. Given a new photo, how do you find the name of person that the photo most resembles?
In the cases I mentioned, each record has hundreds or thousands of elements: the pixels in a photo, or patterns in a sound snippet, or web usage data. These records can be regarded as points in high dimensional space. When you look at a points in space, they tend to form clusters, and you can infer a lot by looking at ones nearby.