Content from 2008-07

Report Card, Semester 1
posted on 2008-07-22 15:58:17
So, I've been trying to do this self-study thing for 30 weeks. I probably should've stepped back to evaluate my progress before now but I've allowed myself to be distracted with other things. You know, moving out, working my first full-time job, learning how to cook, clean and take care myself. That's no excuse though. Rather than beat around the bush some more let's just get to the heart of it:
"You got an F. What the hell's the matter with you? Ya big failure.
Final Grade: 20.786516853932586%
To be fair, you would've had to do 14.0 problems a week to finish the book in 26 weeks.
They are pretty hard problems. Just keep at it man. You may want to revise your strategy though."

We're 30 weeks into 2008 and I've only done 74 of the 356 problems in that legendary text, the Structure and Interpretation of Computer Programs, which was the central object of my study this semester. That's about two and a half problems a week. Not my brightest shining moment. This whole experience definitely gives me new appreciation for the people that tried to structure and/or educate me in the past. Clearly, I need one of two things:

1) A good kick in the ass to really get going.
2) A new gameplan.

Personally, I'm going to try a mix of the two. Where 1) is concerned I recently wrote a self-study program (the biggest program I've ever written, actually) to help me keep abreast of my own progress and help me chart my course a bit. Where 2) is concerned I'm going to have to start making concessions to maintain momentum and I'm not entirely comfortable with that.

What concessions do I mean? Well, some of the SICP problems are hard. Really hard. Unreasonably hard (see Exercise 4.79 at the bottom for which a good answer is "probably worth a Ph.D."). The book has it's reputation for a reason. It's a reputation of difficulty but also of enlightenment. A lot of very smart people say it's the best way to learn Computer Science and probably the best book on the subject yet written. I'm willing to take their word for it. Anyway, there are problems that I get hung up on and I haven't been letting myself move on to the next section of the book without solving all the problems in the current section. That just isn't scaling well. I'm already hung up on the last 4 problems in Section 2.1. God knows what would happen come 4.4. I'll surely never finish the thing if I don't let myself move forward.

With that in mind, a week or so ago I did let myself move forward a bit and work on Section 2.2. I've already got about a third of it done. Maybe even half. I'm worried about this because I want to stay honest. I don't want to shirk the hard stuff. I won't move past problems unless I'm really stumped and I will circle back at various points to try to work through them. Aside from SICP, I've worked on HTDP (How To Design Programs) and CA (Concrete Abstractions) as well this semester. I got an almost reasonable portion of HTDP done but next to nothing on CA. I'd really like to try plowing through as much of those three books and The C Programming Language (rocking the 1st ed.) as possible before Xmas.

Semester 3 (starting in January) I'm hoping to work on Algorithms (DPV, not CLRS), Essentials of Programming Languages (1st edition, baby!) and one of my Operating Systems texts. Of course, Discrete Math (5th ed) would be more prudent and judging by this semester this could all be revised by Xmas. Well, back to work. Happy Hacking!
posted on 2008-07-18 13:12:46
I'm less than my best this morning. I woke up exhausted, I struggled towards the office. I met a Microsoft developer on the train. You could tell from the Silverlight and CodingHorror stickers on his laptop. He seemed like a nice enough guy. However, he was going south towards Downtown and the only Atlanta office listed on the microsoft site is in Alpharetta. Was he fooling me? Is there an unlisted office? Who knows.

I don't believe I have enough of a work ethic. Surely, I would be more than I am if that were the case. Enough of that talk, it tires me already. I read some Neruda a moment ago. It's beautiful enough that I'm compelled to post it. It's taken from his book Extravagaria and titled Soliloquy at Twilight.

Given that now perhaps
we are seriously alone,
I mean to ask some questions-
we'll speak man to man.

With you, with that passerby,
with those born yesterday,
with all those who died,
and with those to be born tomorrow,
I want to speak without being overheard,
without them always whispering,
without things getting changed
in ears along the way.

Well then, where from, where to?
What made you decide to be born?
Do you know that the world is small,
scarcely the size of an apple,
like a little hard stone,
and that brothers kill each other
for a fistful of dust?

For the dead there's land enough!

You know by now, or you will,
that time is scarcely one day
and a day is a single drop?

How will you be, how have you been?
Sociable, talkative, silent?
Are you going to outdistance
those who where born with you?
Or will you be sticking a pistol
grimly into their kidneys?

What will you do with so many days
left over, and even more,
with so many missing days?

Do you know there's nobody in the streets
and nobody in the houses?

There are only eyes in the windows.

If you don't have somewhere to sleep,
knock on a door and it will open,
open up to a certain point
and you'll see it's cold inside,
and that that house is empty
and wants nothing to do with you;
your stories are worth nothing,
and if you insist on being gentle,
the dog and cat will bite you.

Until later, till you forget me-
I'm going, since I don't have time
to ask the wind more questions.

I can scarcely walk properly,
I'm in such a hurry.
Somehwere they're waiting
to accuse me of something
and I have to defend myself;
nobody knows what it's about
except that it's urgent,
and if I don't go, it will close,
and how can I hold my own
if I knock and nobody opens the door?

Until later, we'll speak before then.
Or speak after, I don't remember,
or perhaps we haven't even met
or cannot communicate.
I have these crazy habits-
I speak, there is no one and I don't listen
I ask myself questions and never answer.
I knew they were cool…
posted on 2008-07-16 11:48:59
Two random quotes this morning from two random sources, Andy Wingo (programmer living in spain and working three days a week. Oh, the jealousy!!!) and Paul Kedrosky (VC\Finance Guy).
"Perhaps I am more than usually jealous of my freedom. I feel that my connections with and obligations to society are at present very slight and transient. Those slight labors which afford me a livelihood, and by which I am serviceable to my contemporaries, are as yet a pleasure to me, and I am not often reminded that they are a necessity. So far I am successful, and only he is successful in his business who makes that pursuit which affords him the highest pleasure sustain him. But I foresee that if my wants should be much increased the labor required to supply them would become a drudgery. If I should sell both my forenoons and afternoons to society, neglecting my peculiar calling, there would be nothing left worth living for. I trust that I shall never thus sell my birthright for a mess of pottage.

H. Thoreau
10 January, 1851"

Sourced from Andy Wingo

Quote deux...
"To be truly challenging, a voyage, like a life, must rest on a firm foundation of financial unrest. Otherwise you are doomed to a routine traverse, the kind known to yachtsmen, who play with their boats at sea--"cruising", it is called. Voyaging belongs to seamen, and to the wanderers of the world who cannot, or will not, fit in. If you are contemplating a voyage and you have the means, abandon the venture until your fortunes change. Only then will you know what the sea is all about.

Little has been said or written about the ways a man may blast himself free. Why? I don't know, unless the answer lies in our diseased values. A man seldom hesitates to describe his work; he gladly divulges the privacies of alleged sexual conquests. But ask him how much he has in the bank and he recoils into a shocked and stubborn silence.

"I've always wanted to sail to the South Seas, but I can't afford it." What these men can't afford is not to go. They are enmeshed in the cancerous discipline of "security". And in the worship of security we fling our lives beneath the wheels of routine---and before we know it our lives are gone.

What does a man need---really need? A few pounds of food each day, heat and shelter, six feet to lie down in---and some form of working activity that will yield a sense of accomplishment. That's all---in the material sense. And we know it. But we are brainwashed by our economic system until we end up beneath a pyramid of time payments, mortgages, preposterous gadgetry, playthings that divert our attention from the sheer idiocy of the charade.

The years thunder by. The dreams of youth grow dim where they lie caked in dust on the shelves of patience. Before we know it, the tomb is sealed.

Where, then, lies the answer? In choice. Which shall it be: bankruptcy of purse or bankruptcy of life?"

From Sterling Hayden's Wanderer via Paul Kedrosky
Me, lately
posted on 2008-07-14 17:17:34
It's been pretty hard to maintain a positive spirit and spin on things lately. Times are hard economically, my financial margins are narrow to non-existent and new jobs are hard to find. I've also been trying to contact some people at Northeastern to look into going to school there (mostly because it's so hard to find the time\energy for self-study at present) but the trail dead-ended. I've been unable to reach Olin Shivers (who seems pretty awesome [best acknowledgments ever], incidentally) so that's all inconclusive. Really, I'm looking to see how much work it would be to get accepted. I'm fairly enamored with their program and faculty and for one reason or another Boston sounds lovely.

I'm still hacking at SICP when I have the energy/time but it's been really hard lately. I believe that I'm on the right path because knowing more about programming is something I have wanted for a long time but it's hard to stay the course or to stay emotionally charged up about the course. Part of that is because, as the Emerging Philosophy posts suggest, the problems I'm really interested in solving are not Computer Science problems. They're social problems. The oft-heard first project suggestion for hackers to "scratch an itch" or "fill a need" falls flat for me. The computer does everything I want it to do. I'm not looking for it to do more.

I am making progress with SICP, I'm just behind schedule. I'm hung up on the last 4 problems (2.13-2.16) in Chapter 2.1 but I recently started plowing ahead on Chapter 2.2 to get some momentum again and am about a third of the way through it. If anyone has advice or feels like working through them with me feel free to contact me via blog, IM, e-mail, etc.
The Way It Is
posted on 2008-07-14 16:53:26
There was a fragment of Milosz stuck in my head the last 24 hours that I wanted to track down and get out of my system. It was originally printed as an Inscript in Unattainable Earth but I found it reprinted in his New and Collected Poems on pgs. 412-413.

What did I really want to tell them? That I labored to transcend my place and time, searching for the Real. And here is my work done (commendably?), my life fulfilled, as it was destined to be, in grief. Now I appear to myself as one who was under the delusion of being his own while he was the subject of a style. Just as they were, so what if it was a different subjection. "Do you want white peacocks?-- I will give you white peacocks." And we could have been united only by what we have in common: the same nakedness in a garden beyond time, but the moments are short when it seems to me that, at odds with time, we hold each other's hands. And I drink wine and I shake my head and say: "What man feels and thinks will never be expressed."
Top 5 Hackers
posted on 2008-07-14 16:18:53
I got sort of preoccupied this weekend with the question of who my Top 5 Hackers are. They're not necessarily supposed to be the world's best hackers. Rather, they're programmers who I respect both technically and individually. There are plenty of people doing great work on interesting things and that wasn't the primary motivation behind this list. I'm not going to go too deeply into my reasoning or try to order the list in any particular way. I'll just lay it on you. I'm sure it will change some over time.

Aaron Swartz
John Carmack
Justin Frankel
Linus Torvalds
Luke Gorrie
From Distro-Hopping to Good Easy
posted on 2008-07-07 17:47:20
Linux is a complicated beast. Unlike Windows and Mac there are literally hundreds of different competing versions or distributions vying for attention and often catering to a specific niche. Beginning Linux users are often all waved towards the two or three most popular and general-purpose distributions and with good reason. While three distributions in particular (Ubuntu, Fedora, Suse) seem to dominate and are good places to start, I have often experienced a desire to see what else exists with Linux since there is so much in the way of choice. Additionally, Linux distributions tend to have one release or more a year while Windows and Mac tend to see a new version only every few years. The three distributions I mentioned earlier all strive to issue a new release every six months and they all do so at roughly the same time often with no more than a month separating them.

While this may at first seem undesirable there is no pressure to upgrade but there is also no cost to upgrade (remember, they're free!). Some upgrades have a few more bugs or new features than others but upgrades tend to be relatively safe and easy. Moreover, because of the regular releases large changes happen gradually and there is little to no learning curve. It's also worth noting that upgrading does not require you to reinstall the operating system. It's usually just an hour or two of downloading and a reboot.

So, "Distro Release Season" comes twice a year if you use Ubuntu, Fedora, or Suse. That's even better than Christmas! However, this release cycle rather disappointed me. Ubuntu's Hardy Heron was a bit buggier than I'd like. Fedora 9 seems better and better every time but they still lack a few software packages I want. To be honest, I've never been interested in Suse much. I'd also been meaning to move to a more stripped-down version of Linux for a long time. Ubuntu and Fedora come with a lot of bells and whistles that I may not necessarily need and that slow my system down.

It was time to try something new and, this season, I decided to go with Arch Linux. I won't go too deeply into my decision to use Arch. There are a lot of very good things about it and though it's not easy the way Ubuntu is, it's simple and worth the effort you put into it. You can make it into whatever you want it to be and that's precisely what I've done. I've spent about a week setting it up to perform as I'd like and with the programs I'd like. I've documented the entire process and will post that here as my personal "Good Easy". A good easy, for those who haven't heard of one, is a detailed description of someone's computer configuration. One reason I'd like to do one is that it's handy in case I have to duplicate it at some point in the future. It might be nice to do a Good Easy for my server at some point as well. I detail a bit at the end how to turn your installed system into a Live CD. I plan to do a little bit more work and remove personal data to turn that Live CD into something I could distribute at some point though mostly just to a few nerd friends. I wouldn't expect, or want, to take users from the wonderful Arch Linux after all.

My Good Easy...

The installer may look a bit scary but it's not too bad. I would recommend partitioning your drive beforehand with Gparted or reusing existing partitions.

Set the mountpoints for ext3 partitions and the swap space. I'd hold off on NTFS partitions until later.
Install packages selecting base-devel packages and sudo, wireless-tools, ntfs-3g, netcfg and openssh. Go to configure system and allow automatic hardware detection and usb boot devices. In rc.conf, set hostname and timezone, then set eth0="dhcp". We'll be adjusting this later but that's enough for now. In locales make sure that the locales you want are uncommented, then write and exit. Set the root password and nearest pacman mirror then return to the main menu. Install grub to your boot drive once you've added any necessary boot entries. You're done with the base install! Reboot and login as root.

Some Basics (A new user, ssh, sound):
Add any partitions to /etc/fstab that you didn't initially and create mountpoints for them. Use ntfs-3g for NTFS partitions.
Insert 'sshd: ALL' rights for ssh to /etc/hosts.allow and add sshd to the daemons list in /etc/rc.conf, then run the adduser command and give wheel, storage, audio, video, optical groups to the new user. Edit /etc/sudoers and comment out the line for the wheel group. Logout by typing exit at the command prompt and try logging back in as the new user.

To get sound working, run sudo pacman -Sy alsa-lib alsa-utils, then run amixer set Master 90% unmute and amixer set PCM 85% unmute and sudo alsactl store.

Then add alsa to the /etc/rc.conf daemons list.

GUIs GUIs GUIs! ...and a login manager:
Install the xorg group with sudo pacman -Sy xorg then check drivers with sudo pacman -Ss xf86-video and install one appropriate for your video card. For a window manager, install xmonad, openbox, gmrun, xcompmgr, openbox-themes and obconf like so: sudo pacman -Sy xmonad openbox gmrun xcompmgr openbox-themes obconf. For a login manager, install slim, archlinux-themes-slim and slim-themes with pacman and add slim to the daemons
in /etc/rc.conf. Then edit /etc/slim.conf to set themes to archlinux-retro,subway,fingerprint and set sessions to openbox,xmonad.
I use Openbox as my Window Manager at this point but hope to experiment with Xmonad down the line.

To get menumaker installed from the AUR (Arch User Repository) follow these instructions (you probablya want this):
mkdir -p ~/.config/openbox and cp /etc/xdg/openbox/* ~/.config/openbox/
mkdir ~/builds
cd ~/builds
wget && tar -zxvf *.gz
cd menumaker && makepkg -s && sudo pacman -U *.pkg.tar.gz && mmaker -vf openbox

For a system tray, I recommend stalonetray. Install it like so:
cp /etc/stalonetrayrc ~/.stalonetrayrc
nano ~/.stalonetrayrc
and change fuzzy_edges to 1, transparent to true, and icon gravity to NE.

I use the following pack so that I have icons for things but you may prefer another.
mkdir ~/.icons && cd ~/.icons
wget && tar -zxvf Crash*.bz2

nano ~/.gtkrc-2.0 and insert
# ~/.gtkrc-2.0
gtk-icon-theme-name = "Crashbit"

I add a run command to the Alt-F2 key by modifying the configuration files that come with Openbox.
nano ~/.config/openbox/rc.xml and add this to the keyboard section:


xscreensaver-command -lock

It's nice to have good wallpaper but I get bored with backgrounds after a while. What I do is dump a ton of good wallpapers (try Desktopography, for example) into a Wallpapers folder and then have the script run each time I login (or if I suddenly want a new wallpaper). Start off by making the script.

nano ~/ and add
ALIST=( `ls -w1 /home/yourusername/path_to_your_wallpapers` )
let "number = $RANDOM"
let LASTNUM="`cat $WALLPAPERS/.last` + $number"
let "number = $LASTNUM % $RANGE"
echo $number > $WALLPAPERS/.last

feh --bg-scale $WALLPAPERS/${ALIST[$number]}

Note that those ` are backticks not single quotes('). I got a little tripped up by that. To make the script executable do the following.
chmod +x ~/ && touch path_to_your_wallpapers/.last

I also like to run conky to monitor CPU usage, the current song playing, whether there are updates and other such things.
nano ~/.conkyrc and insert the following.

# Use Xft?
use_xft yes
xftfont Terminus 8

# Update interval in seconds
update_interval 1

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_transparent yes
own_window_type desktop
own_window_hints undecorate,sticky,skip_taskbar,skip_pager

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 512 16

maximum_width 1560

# Draw shades?
draw_shades no

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders yes

# Stippled borders?
stippled_borders 0

# border margins
border_margin 6

# border width
border_width 1

# Default colors and also border colors
default_color 738A88
#default_shade_color white
#default_outline_color black
own_window_colour 3C4746

# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
alignment bottom_left
#alignment bottom_right

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 8
gap_y 8

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes

# Add spaces to keep things from moving about? This only affects
certain objects.
use_spacer none

# Append this to TEXT on laptops...| ${color FCFCFC}${battery_percent}

${time %H:%M} | ${exec date "+%A %e %B"} ${color} | cpu: ${color FCFCFC}${cpu}%${color} | mem: ${color FCFCFC}$memperc%${color} | down: ${color FCFCFC}${downspeed eth0}kb/s${color} | up: ${color FCFCFC}${upspeed eth0}kb/s${color} | uptime: ${color FCFCFC}${uptime}${color} | root drive: ${color FCFCFC}${fs_used /} / ${fs_size /}${color} | music: ${color FCFCFC}${mpd_title 32}${color} | updates: ${color FCFCFC}${texeci 3600 perl ~/scripts/arch-updates/}

I should also note that the all of the stuff under text should be on one line.

To check for software updates we need to do a little more work.
mkdir ~/scripts/arch-updates && nano ~/scripts/arch-updates/ to insert:

#! /usr/bin/perl -w
use strict;
# November 15, 2006
# Daniel Vredenburg (Vredfreak)
# This is a program that checks for package updates for Arch Linux

open (MYINPUTFILE, "/home/yourusername/scripts/arch-updates/updates.log") or die "No such file or directory: $!";

my $i = 0;
if (/^(.*)\/(.*)(\..*\..*\.)/) {
#print " \n";

if ($i == 0) {
print "up to date";
} else {
print "available ($i)";

Thanks again to Daniel for this script. Make the script executable next.
chmod +x ~/scripts/arch-updates/

There's yet more to do for the update notifications.
nano ~/scripts/arch-updates/ and insert:


# This issues a command to 1. Sync the package database,
# 2. Check for upgradable packages, 3. print the URL of any possible
# The output of our command gets written to updates.log, which we will
# to parse to see if there are any available updates.

pacman -Syup --noprogressbar > /home/yourusername/path/to/updates.log

touch /home/yourusername/path/to/updates.log && sudo cp ~/scripts/arch-updates/ /etc/cron.hourly/
Thanks again to Daniel Vredenburg (Vredfreak) for this great script.

To tie it all together, we'll now write the startup script that tells what window manager and programs to start on login.
nano ~/.xinitrc and add this:
#xcompmgr -cC & ;;uncomment this if you want compositing enabled (for true transparency, drop shadows, etc.)
~/ & ;;the wallpaper script
xscreensaver -no-splash & ;;a screensaver program
thunar --daemon & ;;to keep the file manager checking for flash drives, cds, etc, being plugged in
/usr/lib/wicd/ & ;; a networking and wireless client


case $1 in
(sleep 1 && stalonetray) & ;; start the system tray
conky &
exec /usr/bin/openbox-session
/home/redline/scripts/dzconky &
exec /usr/bin/xmonad

This script will log you into the twm window manager unless you hit F1 at the login screen. If you do, it will toggle between Openbox and Xmonad as the window manager.

The Good Easy:
The following command will install most of the cool and useful programs in the known universe including a bunch of programming languages, a version control system, IM client, Movie and Music players, and of course Firefox. All we're down to now is fine tuning and (optionally) making a Live CD of the installed system.

sudo pacman -S mercurial xarchiver pidgin feh rxvt-unicode firefox flashplugin gforth ruby lua erlang ghc python sbcl drscheme emacs thunar mc xmonad xmonad-contrib openbox mplayer mplayer-plugin mpd ncmpc sonata codecs dzen2 transmission rtorrent conky epdfview libnotify libdvdread libdvdcss libdvdnav lynx dvd+rw-tools ttf-ms-fonts ttf-dejavu terminus-font zip unzip hicolor-icon-theme xchm scrot gqview stalonetray xscreensaver virtualbox thunar-volman qt3 sdl amule transset-df

Configure thunar-volman by opening thunar and going to edit->preferences->advanced, then enabling volume management and
clicking configure. This will finish enabling you to hotplug flash drives, cds, dvds, etc and have them automount properly.

Virtualbox was one of the programs installed and will enable you to try out or use other Operating Systems as VMs like VMWare or Parallels. Enable it for your account with the following:
Run sudo gpasswd -a yourusername vboxusers and then add vboxdrv to the modules section in /etc/rc.conf.

MPD and Sonata are the music players installed. You could write a book on all the different ways to use MPD (including as a home music server!) but for a lone workstation the following configuration works well for me.
sudo cp /etc/mpd.conf.example /etc/mpd.conf
sudo nano /etc/mpd.conf

Change the user from mpd to your username and change the music and playlists directories making sure they are uncommented, then run:
sudo chown -R yourusername:users /var/lib/mpd/*
sudo touch /var/run/mpd/
sudo chown -R yourusername:users /var/run/mpd/*
mkdir ~/Music/Playlists
mpd --create-db
sudo chown -R yourusername:users /var/log/mpd/*

Add mpd to the daemons list in /etc/rc.conf, then run nano .config/sonata/sonatarc and add your username and password to the audioscrobbler section and set use_audioscrobbler to True if you want to enable it to scrobble your tracks to Last.FM.

There are a few programs we'll have to build ourselves to use. Our CD Burner, Xfburn is a good example. The following commands should get the job done.
cd ~/builds
wget && tar -zxvf xfburn.tar.gz && cd xfburn && makepkg -s && sudo pacman -U *.pkg*

I use MIT-Scheme because I like it's interaction mode in Emacs and it's good for the SICP exercises. This program takes a few HOURS to compile though even with a powerful system and it can't be compiled on a system with less than 512mb of RAM, maybe less than 1GB. At any rate, you may not need it. If you do, I advise doing this:
cd ~/builds
&& tar -zxvf mit*.tar.gz && cd mit-scheme-c-20080130/src && etc/ && make install && sudo cp etc/xscheme.el
/usr/share/emacs/site-lisp/ && cd /usr/bin && sudo ln -s /usr/local/bin/mit-scheme scheme

Then nano .emacs to insert (require 'xscheme) and save and exit.

I don't have an iPod. If you do you can probably just sudo pacman -Sy gtkpod and be in good shape but I use gnomad2 to load my music player with songs. To get it:
cd ~/builds
wget && tar -zxvf gnomad2.tar.gz && cd gnomad2 && makepkg -s && sudo pacman -U *.pkg*

Then sudo nano /etc/sudoers and insert this below %wheel All=(ALL) ALL:
%wheel ALL=NOPASSWD: /usr/bin/gnomad2
%wheel ALL=NOPASSWD: /sbin/reboot

This will make it possible to add menu entries for gnomad2 and to reboot the system that don't require passwords to be entered.

To setup wireless install wicd with sudo pacman -S wicd.
Disable the network daemon and any network interfaces wicd should manage, then add hal and wicd to the daemons list in rc.conf and run sudo gpasswd -a yourusername network.

To create a mercurial repository so I can hack code and do a bit more work on the menu I run
cd ~ && hg clone
mmaker -vf openbox

Fiddly Stuff:
Now, we're done with most of the serious business. From here on out it's mostly fiddly stuff. Fixing application settings to my preferences and so on. You've come this far though, why not go all the way? :-)

I adjust some commands to menu.xml to make my life easier. This menu is the one that shows up when you right-click on the desktop, by the way.
nano ~/.config/openbox/menu.xml and change the execute command for emacs to urxvt -e emacs -nw and the execute command for gnomad2 to sudo gnomad2. I'd also suggest adding an item that executes sudo reboot.

Make urxvt windows borderless and enable mouse control of window transparency by editing rc.xml and inserting:


beneath and inserting

transset-df -p --inc 0.2

transset-df -p --min 0.2 --dec 0.2

beneath the frame context in mousebindings.

To get dzen to display something useful in Xmonad pipe our already finished conky script into it like so:
nano ~/scripts/dzconky and insert:

conky | dzen2 -e -h '16' -w '1560' -ta r -fg $FG -bg $BG -fn $FONT

And then make it executable...
chmod +x ~/scripts/dzconky

The Xmonad config file will still need to be modified to work with that properly. I may or may not address that in an upcoming post.

The last thing I do is set the Openbox theme to Onyx with Obconf and go crazy perfecting my ~/.config/openbox/menu.xml file.
It's a bit big to quote here so I'll link to it as a sample. Here it is.

The cool part of this is as least partly that after building your own version of Linux from the ground up (with some help from Arch's package system) that you can make a Live CD out of it and give it to your friends. Hopefully you won't leave personal information or data on it though. Then again, if you're using it as your own personal install CD there's no better way to go. Here's how to do it.

sudo nano /etc/pacman.conf and insert this:
Server =

then sudo pacman -Syu && sudo pacman -S larch larchin larch-live larchify dosfstools.

Finally, sudo ./larchify / to generate a restore/live cd image and burn it with wodim -v dev=/dev/cdrw /.larch/mylivecd.iso. Done and Done! Here's how it looks for me with everything finished. Click on the title of each picture for the high resolution version.

(Editor's Note: These pictures actually show the not quite finished system sans-transparency and the conky updates script. Also, at present wired connection users might as well not setup wicd as it won't autoconnect on boot though you can connect through it. Just leave dhcp enabled for eth0 in rc.conf.)

Clean Desktop:
Clean Desktop 07/07/08

Slightly Dirty Desktop:
Slighty Dirty Desktop 07/07/08
posted on 2008-07-07 14:24:37
I am not opposed to it.
I lived fully and well,
spending time perched in
dogwoods and chairs to
try and learn the lessons
of machines, men and dogs
in their cacophonous chorus.

I am not opposed to it.
I eventually did settle
with my own thoughts
after years of combat.
I knew rebellion, fought
a long war and nurtured
a false hope. Thankfully
in the end my carapace
had been punctured.

I am not opposed to it
though I am weary of the
dignity and the chase.
Who are we to be so presumptuous?
Who are we to assume that in our
affairs we should be entitled to
the presentation, if not the
substance, for all our days?

I am not opposed to it
though nod to a fear and
hubris that is hard-argued
as judgment. Still, if for
a year I loved and loved well
then I need not keep those
cherished ones waiting.

I am not opposed to it.
I recognized early that time was
my valued asset and treated
it accordingly. I fought for
ground in a society enamored
with the ephemeral. I won.
Mistakes were made, the wrong
losses suffered and less than
the best gains accomplished.
But in the end, I stand by my time.

This blog covers 2015, Books, Butler, C, Dad, Discrete Math, Displays, Education, Erlang, Essay, Gaming, Gapingvoid, HTDP, Hardware, IP Law, LISP, Lecture, Lessig, Linkpost, Linux, Lists, MPAA, Milosz, Music, Neruda, Open Source, Operating Systems, Personal, Pics, Poetry, Programming, Programming Languages, Project Euler, Quotes, Reddit, SICP, Self-Learning, Uncategorized, Webcomic, XKCD, Xmas, \"Real World\", adulthood, apple, careers, coleslaw, consumption, creation, fqa, games, goals, heroes, injustice, linux, lisp, math, melee, metapost, milosz, personal, poetry, programming, ragequit, recreation, rip, strangeloop, work

View content from 2015-05, 2015-03, 2015-02, 2015-01, 2014-11, 2014-09, 2014-07, 2014-05, 2014-01, 2013-10, 2013-09, 2013-07, 2013-06, 2013-05, 2013-04, 2013-03, 2013-01, 2012-12, 2012-10, 2012-09, 2012-08, 2012-06, 2012-05, 2012-04, 2012-03, 2012-01, 2011-10, 2011-09, 2011-08, 2011-07, 2011-06, 2011-05, 2011-04, 2011-02, 2011-01, 2010-11, 2010-10, 2010-09, 2010-08, 2010-07, 2010-05, 2010-04, 2010-03, 2010-02, 2010-01, 2009-12, 2009-11, 2009-10, 2009-09, 2009-08, 2009-07, 2009-06, 2009-05, 2009-04, 2009-03, 2009-02, 2009-01, 2008-12, 2008-11, 2008-10, 2008-09, 2008-08, 2008-07, 2008-06, 2008-05, 2008-04, 2008-03, 2008-02, 2008-01, 2007-12, 2007-11, 2007-10, 2007-09, 2007-08, 2007-07, 2007-06, 2007-05

Unless otherwise credited all material Creative Commons License by Brit Butler