My Geek Life
A guide to the hardware, software, and services used by a 21st century geek. Use this list and hopefully benefit from all of the time I have spent using and understanding these toosl and workflows.
Included in the operating system is a whole suite of configurations and swapout applications that one can use, not just the Kernel as some people beleive.
My main desktop runs Linux 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:09:38 UTC 2010 x86_64 GNU/Linux
I'm currently running Ubuntu 10.04 running KDE. I originally installed Kubuntu 9.10 and upgraded to the development alphas, which has since caught me up with the mainline Ubuntu 10.04.
My media server currently runs Linux Mint. The only reason for doing so rather than following my historic trend of using Ubuntu was to try something new, as well as to get access to their nice looks out of the box. Linux mint can be a pain because when you attempt to do normal updates and upgrades with the commandline, you end up getting a lot of authentication errors. Linux Mint wants you to run all of your updates through their custom GUI tool, which doesn't always work for me. A good example of this is whenever my mouse dies, or I can't find it.
I love the chromium dailies retrieved from the ppa with sudo add-apt-repository ppa:chromium-daily/ppa. This gives me daily updated packages with the latest chromium. One out of 20 days, this type of upgraded will break. When it breaks, this means that any web page I access crashes the tab(s) I'm using and shows me the "oh snap" chromium message. I like chromium better than Chrome because unlike Chrome, it is an open source project. This means that the code is available (and actually built by Canonical using the launchpad build service), and that there are fewer encrypted phone calls home to google. I understand the hypocracy of using all of Google's services while trying to reduce phone calls home, but it feels to me that each piece I adopt from Google is an independent decision, and I want to maintian that as much as possible.
A nice small flash card application, I use this when I need some assistance with rote memorization. I use this expand my german, japanese, and french vocabulary. I use it to expand my knowledge of world geography. When I go back to school, I hope that this tool will come in handy with any sort of memorization I need to do at the time.
PlayOnLinux allows me to easily achieve separate Wine prefixes for running Windows applications in my Linux environment. Works pretty well for a lot games, as well as some productivity apps (such as Google Sketchup, IE6/7, and lots more).
I use Kate as my primary text editor. I find that the syntax highlighting is always there when I need it, with very decent auto detection. The session system built into it is great too in terms of keeping track of why you are running the application. I think I would like Kate better if I better leveraged the session system. By default it opens a clean session where you lose your history and preferences, which doesn't hamper me too much, but I could probably achieve much better productivity by selecting some different defaults.
Konsole is my terminal/shell GUI application of choice. It's got some decent scrollback defaults, the ability to click on links in the terminal, and works as a solid fast console for almost everything I want to do.
As part of the KDE Suite, I typically end up using Dolphin as my file manager. I have a few gripes with it, particularly some things that Nautilus does better (haven't made the switch yet though). Some of the nice things about it is current-folder file filtering with CTRL+i, the split button at the top of the screen, and the places menu on the left side that ends up being syndicated into a lot of Gnome and KDE applications running on the system.
After battling for years with PulseAudio vs. ALSA, I'm again on PulseAudio. The reason to use it is that it has better hardware support. This makes no sense to me because from my understanding it still uses the ALSA hardware drivers. The effects are real for me though, when I use PulseAudio, I'm able to use my analog microphone ports from my sound card. It's also nice to be able to pop open pavucontrol and control the relative volume and settings of different applications using the sound system. I lose the ability to use some programs like Audacity, but the tradeoff of working sound for losing some applications has definitely been worth it for me.
I have a history of first using CVS and then SVN, but for Source Code Management Git is king. As a distributed version control system, combined with Git's concept that everything is a branch, I'm now often pushing and pulling to several repositories including a private one, a location on Github, as well as any deployment sites for my code or applications.
Whether I'm downloading a the latest Linux distribution, or whatever, I typically use Vuze because I'm used to it. It's got the necessary features I need, including forced encryption, DHT (distributed tracking), individual file prioritization, and UPNP. I have it set to automatically detect .torrent files in my home directory and to start downloading them to my raid array.
For RAID (Redundant Array of Inexpensive Disks), I only recommend MDADM. There are tons of hardware solutions, as well as proprietary software solutions, but MDADM is just about the only standarized solution. Using MDADM uses software RAID to connect several disks. I currently have 4 disks of size 750GB in my primary array using RAID 5. The array used to go down about once or twice a month, but I discovered that this was because one of my cablese was loose (the down times corresponded with movements of the case). In each of the outages, MDADM emailed me that the array had been degraded, and came back up flawlessly and recovered the extra disk after a reboot. With MDADM I barely have to think about my RAID array, although I occasionally cat /proc/mdstat just to check into how things are going with it. I haven't noticed any speed improvements from using RAID 5 (there are supposed to be some), but I blame the fact that I'm heavily utilising the disk a lot of the time, and that I don't have very good drives.
I typically put everything on my RAID array, and have it mounted as part of /etc/fstab so that it comes up with my computer. My home directory is there, as well as all of the documents I produce. My /super/ drive is organized as follows:
- .PlayOnLinux - Wine Prefixes can get quite big, so I keep them on the RAID array and symlink them to my home folder.
- .VirtualBox - Virtual machines are in the same boat as PlayOnLinux, where I want these to be independent of my home folder, but are often used there.
- backup - A folder where I keep .tar.gz backups of critical files and things I think I don't need anymore. I go through this every few months to throw things away or to recover things I have deleted by accident. Always ensure that you use YYYYMMDD in the filenames so that you know when the backup was taken, as with any manual backup system you are going to get a lot of files everywhere.
- documents/mine - documents I have created
- documents/theirs - documents that others have created that I might need to reference at some point or that might not be available on the internet permanently
- documents/repos - All of my SVN, CVS, and Git Repositories
- downloads - Temporary holding space for files downloaded from others or the internet. These are periodically processed into their final resting places on my hard disk.
- games - Game installations such as Heroes of Newerth or Unreal Tournament 2004 or Half Life
- homes - Home folders
- images - Images collected from the internet
- music - My music collection
- pictures - A raw storage of pictures I have collected from my camera or from my friends
- pictures-processed - A storage of the cleaned, tagged, processed photographs that I have taken
- resources - A storage place for things like game install files, OS disks, etc.
- tmp - A place for temporary things that need a lot of disk space
- Special - a set of special videos
- misc - Collected shorts from the internet that may not be available in the future.
- downloads - A link to the primary downloads folder
- Television - A set of videos from Television
- Personal - Video taken from my camera
- Movies - Any full-length movies
- Music Videos - I'm a huge fan of music videos and collect them here.
- workspace - The place where I put all of my projects that I check out of source control.
I love the Apache HTTP server simply because it is almost universally supported and understood. The configuration is very simple, and a new virtual host can be online within a few minutes simply by copying an existing host. I've evaluated LigHTTPd, but although Apache is the slower of the two, it's universal penetration gives it the advantage.
I've tried Clementine, RhythmBox, Banshee, and a plethora of other tools, but I always seem to come back to Amarok. Amarok is capable of making changes to file metadata, capable of scanning and keeping a cached copy of file data. The only downside with it is that it keeps its play history and rating information in its own database, rather than in the files themselves (which could be shared with another application, and would be trivial to move between installs).
I love this tool for photo management. I import all of the photos I take into this application and tag the place where it was taken, as well as any related events or people in the photograph. It's even possible with F-Spot to store the data within the file (which in theory future-proofs it a little bit), or to construct queries. You can click on two people and say "show me photos with person X AND person Y", which is great. I have about 8,500 photos currently tagged in the system, and about 20% of them are related in some way to work, and about 10% of the photos have me in them.
K9Copy is a DVD backup tool. It's got a nice wizard for making very specific DVD backups, you can pull only specific audio or video tracks, you can rebuild the entire disk as an iso, and even re-encode the data being pulled of of the disk in order to save space or achieve whatever desired compression ratio you want. It has a very nice tool for crop detection, so it can automatically crop out encoded video data that isn't actually used, so that your resulting video files contain only meaningful geometry from the video.
I'm going to attempt to cover general categories of components rather than a complete build, as indivual parts are very likely to be swapped out or replaced.
Up until they switched to the 200s series, I had a very good idea about benchmarking NVIDIA graphics cards. The first digit was the generation, and the second digit expressed the relative speed of the generation. This meant that a 9800 was faster than a 9600, and a 9600 was probably about as fast as an 8800, but relatively cheaper.
The other part about NVIDIA video cards is that they have excellent Linux support. Keep in mind that you are going to end up using proprietary drivers if you want all of the features that exist, but proprietary drivers exist and are well supported, which is more than can be said for ATI video cards.
Wireless Mouse and Keyboard - Microsoft Wireless Keyboard 3000
Slicehost is one of the best hosting providers around. Rather than providing a shared server with a control panel for web development, they give you a basic virtual machine on a dedicated "slice" of a server. They also give you the tools to effectively manage that machine, meaning you can end up running whatever you want on your server, from email to a PHP server to a custom game server (like Troll Attack. The other great thing about slicehost is that everything is billed on a monthly basis, prorated to use. This means you can spin up or down new slices, or resize slices at will. There is even an API for slice management through automation.
I'm pretty addicated to Google's service offerings. For now this is okay because of their policies about Data Liberation, as well as their incentives to keep me happy and not betray my trust. I'm constantly evaluating alternatives as I don't like the idea of depending on one company's goodwill, but for now these services represent the best of the internet.
- Google Docs
- Google Calendar
- Google Chrome Sync
- Google DNS
- Google Reader
- Google Analytics
- Google Webmaster Tools
- Google Adsense
Ctrl+L and Ctrl+K
This works in all good browsers. Ctrl+L jumps you to a spot where you can open a URL directly, Ctrl+K jumps you to a spot where you can perform a search directly. Simply type Ctrl+K, your search term, and hit enter.
Ctrl+End and Ctrl+Home
Ctrl+E and Ctrl+A
When using vi or any derivative like vim, and you are in not in edit mode, you can type "ZZ" (two capital Zs) to imediately write out your changes and quit. It's a shortcut for typing the standard :wq.
Middle Click Browser Links
Using middle click on browser links instantly opens that link as a tab in the background. This workflow can be great for allowing you to finish a page, and then follow up tab by tab with all of the references or related materials that you found interesting while doing your reading.
Middle Click Browser Tabs
Quickly allows you to close one or more tabs.