Carl the Zealot

February 8, 2009

My super-awesome mutt configuration

Filed under: News — Carl Myers @ 2:05 pm

One of the things I really miss about my old job is we had a default mutt configuration available for folks to use as a starting point which was really awesome. Additionally, we had a custom build of “muttng”, mutt “next generation”, a now long-dead fork of mutt which contains lots of super-hot extra features. I decided it was time to make my mutt “whole again”, so what follows are the steps for getting an awesome mutt configuration on Debian Linux.

So first off, I thought I would have to apply all these crazy patches and things, and build my own mutt package. Gladly, this is not the case. Most of the muttng patches have now been applied to the original mutt source. Also, to my joyful surprise, most (if not all) of the patches that weren’t merged in are available in Debian by installing the “mutt-patched” in addition to (or instead of) “mutt”. This includes the much-loved “sidebar patch”, among others.

After I got that figured out, I got to just muck with my .muttrc file. The docs I referenced are available here and the wiki is here. Now for your configuring pleasure, here is an “anonymized” version of my configuration, I hope it has some helpful ideas for you seasoned mutt users out there.

February 7, 2009

Using the iPhone G3 to listen to music under Debian Linux

Filed under: News — Carl Myers @ 2:36 am

Greetings all, I have once again found myself wishing someone else had written up this mini-hell I had to go through just to use my shiny new toy the way I want to, so once again I have written it up for posterity. I did use a mac to jailbreak my iPhone G3, but everything else I detail here I was able to do using my home wifi network, and my Debian desktop. Please enjoy, and feel free to email me if you have any questions or comments!

Now because there is a lot of out-of-date and incorrect info out there, and it was a major point of contention for me, let me just throw some stats out there: This is an 16 GB iPhone G3 (black) running firmware 2.2 (5G77) on the AT&T 2.9 network. The exact model is MB704LL. I am running Debian unstable and updated today, February 7th. I used gtkpod 0.99.12-3 and libgpod-common 0.7.0-0.1, and gnupod-tools 0.99.7-2. My kernel version (which shouldn’t matter much) is 2.6.26 (custom built from Debian patched kernel source), arch is x86_64.

Step One: It’s a Jail Break!

This is the only step in the process where I wimped out. I tried to find a Linux jailbreak solution, but most of them involved downloading some strange source code from “some dude” (not sourceforge) and building and running it, so instead I went ahead and fetched QuickPwn. It worked great. Another mac option (which appears to support some more advanced options like modifying the image you are going to upload) is Pwnage Tool. I followed the easy directions there and like a charm, my iPhone now has a pineapple shown on startup, and I was able to run Cydia (an iPhone GUI frontend to APT, my favorite package manager!) and install openSSH, perl, and all sorts of other goodies.

NOTE: do *not* try to move your home directoy. Don’t be fooled, my friends, it looks like BSD, smells like BSD, has a broken “ps” which doesn’t work with my favorite flags “-auxwwwfg” like BSD….but it is NOT BSD, it is “crazy apple OS land”. “chsh -s” does not work to change your shell, but you CAN do it by editing /etc/passwd AND /etc/master.password (the shadow file). You CANNOT edit these files to change the mobile user’s home directory, it is hardcoded out the wazoo in all of the apps. It should already be on the largest partition on the device, and if it isn’t, feel free to move it and create a symlink, but do NOT try to actually change the home directory via other methods. While we are at it, make sure your “local” directory where all the apt stuff goes is on the big partition – I think mine went there by default but I don’t remember – I think it goes to /private/var/local (and /var is symlinked to /private/var). Wow, that was a long rant…

Step 1.5: Installing Perl on an iPhone

I wanted to write some perl scripts to do some nifty tasks – one example is, I wanted to run a script like “xkcd.pl 534″ and it would use LWP::UserAgent to fetch that comic from xkcd.com and grep for the alt text, and print it out, since it isn’t possible to see it from mobile Safari. Unfortunately, perl was not in the default repository, but fortunately, I found one that had it. Super huge kudos to the fellow at Coredev for sharing his work – I was not too excited about the idea of trying to build perl myself, on my iPhone.

Step 2: Mount your iPhone

Immediately after jailbreaking your iPhone, you should change the “root” and “mobile” user passwords. I believe the default root password is “alpine”, at least it was on my version.

You probably want to set your iPhone to take a static IP address on your network so you can SSH to it. Some routers let you do this via the wireless router’s GUI, others you just manually pick one and tell the iPhone “use this static address”. I assume a user reading this can figure this part out, or google it, this part of the process was not hard to find guides for.

Once you can ssh into your iPhone, we are ready to set up “sshfs”. Have you ever asked yourself “geez, what *can’t* you do with SSH?” Well, the answer isn’t “mount a remote filesystem”, I can tell you that much. Run the following:

# apt-get install sshfs

SSHFS runs in the userspace, which means you don’t need to use sudo to mount things over SSH. This is good. It does mean, however, that some setup is required. You must add your user to the “fuse” group:

# adduser cmyers fuse

Obviously, substitute your username for “cmyers”. Now here is the tricky part – you must must must log out and back in for this to take effect. you cannot use the same terminal to continue. If you did this in a screen session, in fact, your whole damned screen session, and any windows you subsequently create, will still be using the out of date group list. Use your window manager to start a completely fresh terminal window for this – or hell, even switch to a virtual terminal and log in fresh (Ctrl + Alt + F[1-6]). If you get an error like this:

$ sshfs mobile@10.0.1.150:/var/mobile /media/iphone
mobile@10.0.1.150's password:
fuse: failed to open /dev/fuse: Permission denied

Then that means you failed to get a “sufficiently new” terminal. Also, pop this and make sure it looks right:

$ ls -lsa /dev/fuse
0 crw-rw---- 1 root fuse 10, 229 2009-01-31 09:52 /dev/fuse
$

Note that the “fuse” group has both read and write permissions to /dev/fuse.

Ok, assuming you heeded the bolded advice above (the amount of explanation in my blog is directly proportional to how much time I wasted figuring out that part – so be thankful you don’t have to muck with it!), you should now be ready to mount your iPhone.

The way most iPhone apps in Linux expect your mount to work, you actually mount “/var/mobile/Media” – which is where the iTunes DB and music goes, rather than mounting the home directory itsself (/var/mobile). To do this, run:

$ sudo mkdir /media/iphone
$ sudo chown cmyers:cmyers /media/iphone
$ sshfs mobile@10.0.1.150:/var/mobile/Media /media/iphone

Obviously, replace the IP address, and “cmyers”, with the appropriate equiavlents. Note also that the actual sshfs command runs as you – after that initial setup, you can mount and unmount the iphone without sudo – joy and hoorah!

Step 3: Teach your iPhone who’s the boss – it ain’t Apple.

It turns out that in the 2.2 update (or maybe 2.1?) Apple decided to change the iTunes DB format quite a bit, including checksumming and crap that is part of the (un)”FairPlay” DRM crap. If you are curious about the details, this is all explained here: Marcan’s Blog. Long story short, you need to tell your iPhone “please, sir, use the old version of the DB”.

Yes, that’s right. Apple added all these extra, super-annoying, redonkulous security measures, but let the configuration option to control whether they are enforced or not in plain-text XML on the device. Apparently, they don’t want to actually stop people from using their jailbroken iPhones with third party apps that can read and write the iTunes DB, just piss them off as much as possible in the process. As the blog explains, simply open the file:

vim /System/Library/Lockdown/Checkpoint.xml

Erm, you did install vim on your iphone, right? I feel sick if I ever use a *nix system which doesn’t have vim on it =) Anyways, edit that file, search for “DBVersion”, and change the value on the line below it to “2″ (instead of, probably, “4″). Now reboot your phone. ( I had a sadface @ rebooting a *nix machine )

Step 4: Exercise super cow powers!

You can fetch down everything you need (I think I got ‘em all…) by running this on your Debian box:

# apt-get install gtkpod gtkpod-aac gnupod-tools

Next go ahead and start up gtkpod. You will have to go to “repository options”, and “add new repository/iPod”. Trust me, you want to get “Music Library” all set up the way you like, THEN copy it to your ipod. Editing directly on the iPod is bad times, I lost some playlists that way. Put in the mount you used (I used “/media/iphone”), and for Model select Touch -> “16GB Touch (black) (xA627)”. Turns out the iTouch and the iPhone 3G are almost identical.

At this point, go ahead and hit “check ipod files”, or try to drag over a playlist or something, and hit “save”. You should see it copy to the iPhone, then say something like “updating DB”. If this works, you are golden, but I think most people will still have one more problem to overcome.

Step 5: Getting the “Firewire Id” (wtf, Apple, it doesn’t have a firewire port!!!)

Apparently, the newer hardware (or firmware, or something) needs some sort of hardware ID to write the DB in a way the iPhone can recognize. Without this step, you may get an error popup along the lines of “Couldn’t find the iPod firewire ID” from gtkpod when it tries to write the iTunes DB, or your iPhone may simply report it has no music on it, when it clearly does according to the storage usage info. To fix this, you follow the info on this wik, under the “determining the Firewire GUID” section. Basically, you must connect your iPhone USING USB, but you don’t have to mount it (because that won’t work), then do the following:

# lsusb -v | less

Note this should be run as root. Search for “iSerial”, and find the one that belongs to the “Apple” device (you don’t have more than one Apple device, do ya?). Record ONLY THE FIRST 16 CHARACTERS of this string, it should look like hex (0 through 9, a through f). Next, edit the “Sysinfo” file (or create it, if it doesn’t exist). Now I have seen different guides claim this file exists at two different paths. One was “/var/mobile/Media/iTunes_Control/Device”, and another was “/var/mobile/Media/iPod_Control/Device”. Chances are, one of these directories will already exist and the other one won’t, so use that. For me, it was “/var/mobile/Media/iTunes_Control/Device”.

$ vim /var/mobile/Media/iTunes_Control/Device/SysInfo

Now add the following to it:

FirewireGuid: 0xFFFFFFFFFFFFFFFF

Where the 16 Fs are replaced with your GUID (doubt it matters, but mine had lowercase alphas in it). Some restarting of various programs (force-quit the ipod app on your device, close out gtkpod and reload it), and you should be able to transfer playlists now. Works like a charm for me.

See, wasn’t that easy? =|

Props

I couldn’t have done this without the generous assistance of the “teuf” on irc.freenode.net#gtkpod, All of the libgpod devs, all the folks that contributed to the jailbreaking efforts, and many helpful forum posts on the Ubuntu forums, about both gtkpod and sshfs.

What do you tell your kids when they ask “what happens when you die?”

Filed under: Free Thought, Me, comic — Carl Myers @ 1:19 am

I wrote this post a long time ago, but forgot to publish it. Better late than never, huh?

This is a topic I have spent an extra long time thinking about, one which was recently brought up by Jeph Jacques in his strip Questionable Content (which I enjoy very much). Jeph posed the question in this strip:

…I wouldn’t want to make up a bunch of stuff about an afterlife or use some religion’s version of things, since I don’t believe in that myself, but I also wouldn’t want to completely horrify my kid by being all “oh there is just nothing. You cease to be aware and that is it.” I know that concept freaked me out nearly as bad as the concept of hell when I was little. I guess “make up something comforting” is the lesser of the two evils, but still…

Atheist/nonreligious parents, what do you tell YOUR kids? I am curious to know!

I am not a parent, and I’m not sure if I will ever be one, but I have spent an awful lot of time thinking about this very question. I am a big believer in Douglas Hofstadter’s take on intelligence and sentience as presented in Godel, Escher, Bach and I am a Strange Loop

Specifically, intelligence and sentience and everything about us that makes us who we are – the “spark” that so many people attribute to souls, lives exclusively in our brains, and in the physical world. It requires no metaphysical explanation. He goes on to suggest that if that is true, there is no reason why parts of us couldn’t live in *other* people’s brains also. He talks about the bond developed by close family, especially husband and wife, how they finish each other’s sentences, know each other “better than they know themselves”, and when the worst happens, often remark “it is like I lost a part of myself”.

The point I am finally about to reach is, if sentience is just a “strange loop”, a complicated feedback system in our brains which causes us to feel and experience life as we do, anyone we make contact with over the course of our lives carries with them a “granular copy” of that pattern. The more time we spend with them, the more detailed the copy. When I die, I will live on not just in the memories, but in the active mind of those I cared about, and who cared about me. That is something I could tell my children without being disingenuous or depressing.

I discuss this from the perspective of love and relationships in a recent blog.

January 29, 2009

Why this is a bad time for a software design job hunt, and how to overcome it

Filed under: News — Tags: , , — Carl Myers @ 4:11 am

So recently people have been saying “this is such a bad time to be looking for a job” all the time – and I agree with them. In the software design biz, however, I think it is not for the reason most people assume.

As someone who was recently responsible for interviewing people and participating in making hiring decisions, I can say that in my experience, the problem is not only a lack of jobs. Sure, many companies are scaling back hiring a little, and scrutinizing new hires more closely to ensure they are of the highest quality, but that is just a effect, not a cause.

The cause of this, that job seekers should realize, is many of the job seekers out there are seeking a job because they were “the first to go”. Nobody is going to lay off a highly valuable employee right now (I would hope!). Rather, people who were on shaky ground to begin with are the people now looking for work, and there is a real deluge of them to sort through.

Thus, to get hired in this environment, when the hiring managers and interviewers know most of the candidates out there are in this position, you have to prove you aren’t one of the “bad apples”. How does one do that? There are a couple ways. Mostly, it is a lack of warning signs, but there are also lots of affirmative traits as well.

First off, your resume should have certain attributes. Be specific, don’t just throw out an alphabet buzz-word soup, but put everything down that is relevant. It isn’t necessary to list HTML or “Microsoft Excel” or “Internet Explorer”, or for that matter, even something like “AJAX” unless you are a super rocket scientist at it or something. What programmer can’t figure out how to use Microsoft Excel? Everything that is listed on your resume, you should be able to answer the question “Why is X relevant?” with an interesting, well-thought-out answer that includes a specific example of your experience with that item.

Another important thing about your resume is it should include that experience. You don’t want your resume too long, but as much as will fit, you want a specific project or example of each of the types of experience you have. If you put down C++, you had better list a project where you used C++ and are able to talk about what it involved, and how you were instrumental in its success.

A resume lacking in experience, or dripping with buzz words and alphabet soup, sends up a huge warning flag. Beyond the resume, however, there are lots of other warning flags recruiters look for. For example, any programming job is going to expect you to answer some questions, write some code, or somehow demonstrate your skill set. Do not shrink away from this. Always think carefully about your answer, but try to think out loud as well so they can see your thought process. If you don’t know, admit you don’t know, then try to “get partial credit” by working through it anyways, or taking a different approach. Don’t be a defeatist, don’t give up, and don’t demonstrate you are not confident in your abilities. If you really are so under-confident that you can’t at least act confident, you aren’t right for the role anyways.

Also, be thorough. Ask for more details when appropriate. The difference between a “strong coder” and a “rock star” is largely in the details. Instead of making certain assumptions, question them – or better yet, say “I am making this assumption, but if I didn’t, it would have the following effect on the answer”. Discuss alternatives and why you make the decisions you make. Remember, coding isn’t about knowing everything, it’s about knowing what you need to learn and apply the tools necessary to get the job done, quickly.

Finally, if they ask, and possibly even if they don’t ask, don’t be afraid to talk about why you left your other job (that is, assuming you aren’t one of the “bad apples” I previously mentioned). Talk about the success you had at that job, and why you decided to move on. If the only thing you can say is “I hated it there” or “they weren’t happy with my performance”, that’s going to send up a big red flag, and I often asked that question for that very reason. Examples of really excellent answers I have gotten include “I wanted to have a larger impact”, “I wanted a change of pace but there was nowhere else to go at that company”, “I didn’t like the direction the company was going in”, or even “I didn’t feel my growth was recognized” (which is a nice way to say “I didn’t feel my compensation was fair given my experience”).

December 10, 2008

Holy Crap – Teacher’s Ignorance about Linux Threatens Children

Filed under: Linux, News, Open Source, funny — Carl Myers @ 4:48 am

This is absolutely the worst case of “stupid teacher” syndrome I have ever seen. I want to share it with everyone I know so they too can first laugh, then cry, as I did.

Linux Stop Holding Our Kids Back

December 9, 2008

Friend with Detriments

Filed under: Private, comic, funny — Tags: , , — Carl Myers @ 12:32 am

I was rather amused by this xkcd comic. I somehow feel like if I had seen this comic about 10 years ago, it would have saved me a lot of angst.

October 29, 2008

The Ultimate Home Fileserver

Filed under: Uncategorized — Carl Myers @ 2:23 am

Greetings all, I am proud to announce that my ultimate home file server is now up and running (besides a defective hard drive, but the replacement is on the way, and when it arrives I will rebuild the array and complete my testing).

Now written here, preserved for posterity, are the complete instructions, hardware and software recommendations, and steps necessary to make your own ultimate file server for under $2300! First, the complete hardware list:

  • SUPERMICRO CSE-833T-R760 Beige Steel 3U Rackmount Server Case with 760W Triple-Redundant Power Supply
  • Intel BOXDX48BT2 LGA 775 Intel X48 ATX DDR3 Intel Motherboard
  • 2GB or 4GB of 1600Mhz DDR3 RAM (I suggest 2GB as when I tried 4GB it was very unstable with this mobo)
  • Any Core 2 duo processor (but feel free to go all-out if you really want…)
  • 8x 1TB 32MB cache SATAII Hard drives – if you don’t need as much space, feel free to save some money and go cheaper.
  • 1x IDE hard drive – use one you have lying around, or get a new one. The smallest I could find was a 40GB drive for $25 on pricewatch.
  • SIIG SATAII PCIe Controller – even though it doesn’t say, some internet research proves it does work on linux.
  • You probably want a video card for troubleshooting – I would have been lost without one (sadly). They just don’t make quality motherboards with good serial consoles these days.
  • You probably want a CPU fan, as the stock CPU fan for intel core 2 duos is QUITE disappointing in my experience.
  • You may want a SATA CDRom drive to use just for installation – the IDE is really picky about detecting hard drives and optical drives at the same time on boot.
  • You may want a power supply extension cable (24-pin, from pwr supply to mobo)
  • You may want some fan extension cables, this case has a ton of fans but the cables are short.

I know for a fact the above-mentioned hardware works, with Debian Lenny, as I am about to describe. With reasonable effort (not counting DOA parts… =| ), I now have my file server up and running. I can’t promise similar results, but let’s just say, it would have saved me a TON of time and money if someone had posted this list for me.


Ain’t she a beaut? Complete with 8 hot-swapable units of goodness. See the rest of the pics at the bottom.

First, you need to assemble everything. Open up the case, plop in the motherboard, screw it in (be sure to put in all the risers, they are necessary to support the expansion cards when you plug them in so the board doesn’t break. Hook up the power supply, motherboard, memory, main OS hard drive, and video card. If you have an optical drive, slap that in there, otherwise be prepared to network boot, USB boot, whatever.

Next, install your OS. Anyone who knows me knows Debian is the only way to go! Do a minimal install, you don’t want an X server lying around or anything. Apt-get install your usual necessities (zsh, screen, vim, sudo, less, etc). Next you will want to apt-get install “mdadm” and “lvm2″, and “nfs-kernel”, and probably “rsync” as well. Once you are sure your hardware is working, shut down, and go ahead and install the extra 8 drives by placing them in the hot-swap bays, then running SATA cables from the backplane to your motherboard. Since it is really tough to find a motherboard with 8 SATAII ports, all 8 of which are usable in Linux, I decided to compromise and just go for one with 6 ports, and buy a PCIe controller card. If you wanted your OS drive to be sata, or have some hot spares somewhere, feel free to buy additional controller cards, but this case only holds 8 hot-swap drives plus 2 5.25in bays.

I got these directions from LVM2 and Software RAID in Linux. Without these directions it would have been quite a bit more time consuming to figure out. The directions are a little old (and not debian specific), however, so best follow these. First, note that mdadm by default will scan all your devices (see: /etc/mdadm/mdadm.conf. Assuming all your drives show up and seem functional, go ahead and create partitions on them, then link them all in an array.

# for i in sda sdb sdc sde sdf sdg sdh sdi; do sudo fdisk /dev/$i; done

Each time fdisk runs, do the following. Press “n” to add a new partition, “p” for primary, then press enter twice to accept the defaults (use the whole disk). Then press “t” to change the partition ID to “8e” for “Linux LVM”. Next press “w” to write the new partition table and exit. After you have done this to all 8 disks…

# mdadm --create /dev/md0 --chunk=64 --level=raid6 --raid-devices=8 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sde1 ...etc

At this point it will create the raid and start syncing the disks. You can do this to check the status.

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdh1[6] sdg1[5] sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0]
      4883799680 blocks level 6, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
      [==>..................]  resync = 10.2% (100386816/976759936) finish=640.8min speed=22789K/sec

unused devices: 

As you can see, it takes some time, but eventually you see this:

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdh1[6] sdg1[5] sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0]
      4883799680 blocks level 6, 64k chunk, algorithm 2 [7/7] [UUUUUUU]

unused devices: none

Now things are ready for you to set up LVM. I am writing this part after the fact, and in my set-up I decided not to do LVM. This may or may not be a bright idea. If you wanted to set it up, it’d go something like the steps below. Also, I may have forgotten some of the steps, so please let me know if I am missing anything or if you believe any of this stuff is wrong.

# pvcreate /dev/md/md0
# vgcreate fileserver /dev/md/md0
# sudo lvcreate -l 1192333 -n fileserverlv fileserver

I think the number after the “-l” was the size I got from the output of the vgcreate command. Basically, you are creating a physical volume (which is just composed of the array), then a volume group which consists of that physical volume, then a logical volume in that volume group. What does all of these levels of abstraction buy you? You can resize the array, or the partitions (logical volumes) you create on the array, at will. I just created one large partition for now, but later, I could break it up if I wanted to. Also, if I replace all the drives, one by one, with larger ones, I can grow the physical volumes then grow the logical volumes which lives on them. Yeh, it’s pretty hot. At this point, you should have a device for the logical volume you can use (in the example above, /dev/fileserverlv I think, or maybe /dev/mapper/fileserverlv).

Next you create the filesystem. Since the chunk size I chose was 64kb, I wanted something which evenly divided that, and I wanted the index sizes to be appropriate for what is, basically, an enormous drive by most standards.

# sudo mkfs.ext3 -b 4096 -m2 -T largefile -n /dev/md/md0

Now the drive is ready to mount

# sudo mount /dev/md/md0 -t ext3 fileserver

Finally, get NFS set up.

# sudo apt-get install nfs-kernel
# sudo vim /etc/exports

You probably want something like this:

cmyers@petabyte.cmyers.org:1 (3:47:18)] cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
/media/fileserver 10.0.0.0/255.0.0.0(rw,sync,no_root_squash,no_subtree_check)

The above example lets every host on the 10.0.0.0 network access the drive, read-write, and allows root users to get root access. Go ahead and start NFS next:

# sudo /etc/init.d/nfs-kernel-server restart

You probably want to copy over some stuff – here is the rsync command I used to grab stuff from the old server – be warned, I had to install rsync, then I had to muck with things to make sure the versions of rsync were the same – different versions are not always compatible, so if you have an old file server which is a couple years old, it probably has an older version of rsync.

# rsync -aAX --progress :/path/to/source :/path/to/second/source [...etc....] .

And there you have it! Your new fileserver is ready to go!

cmyers@petabyte.cmyers.org:1 (3:44:42)] df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              12G  902M   11G   8% /
tmpfs                1007M     0 1007M   0% /lib/init/rw
udev                   10M  148K  9.9M   2% /dev
tmpfs                1007M     0 1007M   0% /dev/shm
/dev/md0              5.5T  521G  4.9T  10% /media/fileserver
cmyers@petabyte.cmyers.org:1 (3:44:43)]

The inside of this case is so beautiful, I wanted to hang it on my wall next to a picture of Liz Hurley.


You can see the board layout pretty well in this shot. You can also see the totally sweet removable fans, and the ridiculous heatsink I picked up to replace the disappointing stock one that came with the CPU.


This shot shows off the SATA backplane. It’s a tight fit, but you can remove the fans to make it easier to work int here while you are plugging things in, as you can see in the picture.

October 26, 2008

What I don’t understand could fill several libraries of congress…

Filed under: Me, News — Tags: , , — Carl Myers @ 5:14 pm

…but anyone who claims that not to be true of themselves is quite deluded. The most recent subject of non-understanding which brings me to pour out my soul is happiness. Happiness is the drive by which evolution encourages certain very complicated behavior in animals, in a way which genetics alone cannot. Happiness is older than writing, older than language, older than music, older than just about any concept we take for granted today. It may be the second oldest emotion (I would wager it isn’t older than pain/sadness, but I bet it is close).

I have long wondered what it would take to make me happy. I mean, I am happy now, in that I am happy with my job, happy with my car, happy with my material possessions. I am happy to have my friends, and happy to have things which drive me (my current project at work, open source, music, and other things). But I always felt I could be happier. I often felt something was missing from my life. Primarily, I think that is someone to share it all with.

I often hear things from my friends like “You can’t find someone to be happy with if you are unhappy to start”, or, “you have like yourself or nobody will like you”, and other choice gems of wisdom. To me they seemed like quite the catch-22. We in the computer world call this a “circular dependency”. It is a real problem, A cannot be satisfied without B, but B cannot be satisfied without A. What is one to do?

The way to solve this problem, in Computer Science and in life, is by breaking the circular dependency. I always said “so what I am supposed to do, just try to be happy even though I’m not, that’s the only way I can be happy enough to meet someone and be happy?” and they would reply “um, basically, yes.” Well I think I finally understand that now.

Last weekend was an amazing weekend. I went out, I saw a show with friends, I saw a symphony concert with a date, and I met a new friend as well. None of these things were things I hadn’t done several times in the last year. Really, I have no idea what was different, maybe it was just that they were all in such close proximity, and I was just really trying to enjoy them, but I felt great. Last week, I went back to work on Monday feeling great. I didn’t let anything get to me. I worked hard to make progress on my project, and I did. I hung out with friends, went to rehearsal, and did all the stuff I normally did. I consider last week to be one of the happiest weeks of my life.

Now, this weekend, I had a concert. I had to wake up early for a rehearsal on Saturday. Then, I went to a cello lesson right after. The cello lesson didn’t go so great because I was pretty tired. After that I went home, and worked on my file server project, which is nearly done. I found that one of the 8 hard drives I had ordered was DOA, meaning I can’t complete the project until I RMA it. I didn’t care though, I still felt great that I all but had it working.

Today was our concert, at 2pm. I slept great – amazingly. I just took some Claritin to clear up my allergies and made sure everything was working right on my CPAP machine, and I went to bed around 1am, and woke up on my own around 10am, feeling great. Our concert could have gone better – we were playing VERY challenging music and we had a little slipup in the second number which was very disappointing (but, fortunately, was not particularly noticeable to anyone besides us). The soloist for Rhapsody in Blue was wonderful, and it went very well. The second half of the program was also pretty uneventful.

Well, all gussied up in my tux, dragging along my cello, I headed back to my car, put it in the back seat as usual, and sat down in the drivers seat. The car was warm, and I was warm from the tux, so I put down all the windows. It was a beautiful, absolutely perfect 56 degrees outside. I started driving, and I just…felt great. The concert was over, and the rest of my weekend was open, I could just go home and watch some TV or something, whatever I wanted. I started to put on some music to get the concert stuff out of my head, and the CD system settled on my “drivin’ mix” – a bunch of upbeat techno and trance from Overclocked Remix.

This is when I realized everything that I have written up to this point. I realized how great the last week was. I realized how great this weekend was. I realized how happy I was. And so, I opened the windows all the way, put down the moon roof, and turned up the music.

Now I have seen folks like this before. Driving down the road, blaring their music. I always thought how inconsiderate they were being, like they think their music is so good they have to blare it at the world or something. “Hey, everyone, look at me, I have a sweet car and loud music, and I want to turn heads”. Only now do I realize why people really do this (at least, I think my explanation is right). I did it because I was so happy, the wind in my face, the music loud and out there, and it just felt good. I was happy. The only way to keep that happy feeling was to turn up the music and put down the windows and just enjoy it all. Air conditioning blowing in my face was not going to replicate this priceless feeling.

And so I drove all the way home like that, windows down, music up, a big goofy grin on my face, wearing my tux still, driving around in a beautiful 2008 Acura TL, accompanied by the most excellent techo-ized theme songs from Mega Man, Sonic the Hedgehog, and Street Fighter.

The point of this whole story is, I was supremely happy. I don’t think even a significant other could have made that particular moment much happier. I realize now that finding someone isn’t everything. It remains the most important thing on my “to-do list” for certain, but that in no way prevents me from having the time of my life. Happiness is hard to understand, but that’s what is so great about it. You never know when it will strike.

October 24, 2008

Friday afternoon excitement at Pine and Summit

Filed under: Uncategorized — Carl Myers @ 5:45 pm

Well, I decided to head home a little early on Friday, I wasn’t getting much done anyways at work. As the bus tried to turn onto Pine, we saw a police vehicle blocking the way. The driver opened the door and asked what was going on, and the officer explained there was a pretty big wreck up ahead. We got off the bus and I started walking home to see police cars, fire trucks, and indeed a very bad wreck up ahead.

The ambulances, if there were any injuries, had already left, so I figured it had happened at least 10-20 minutes before I got there (around 4:50). I grabbed my camera and snapped a few photos.


View of the full scene.


Closer view – one of my better photographs, IMO.


Another close up.

Obviously, I didn’t want to get in anyone’s way so I took all my photographs from across the street, but it was pretty obvious what happened here. A taxi plowed straight into a white BMW. It seems likely someone was speeding, and someone else wasn’t paying attention. The taxi hit the BMW with enough force to drive it off hte road and onto the sidewalk, where it hit a telephone pole. I wouldn’t make any guesses about fault or what happened beyond that, however, since I didn’t actually see it, nor was I able to ask anyone what happened.

October 1, 2008

The ill-fated drive through the hills

Filed under: News — Tags: , , — Carl Myers @ 12:25 am

Last weekend I was supposed to go on a drive through rural Washington with some friends. It was to be a 400-mile trek during which we could enjoy our vehicles, form important male-bonding type stuff, and bitch about work. That was the plan, anyways.

It all started out last Sunday morning. The plan was to meet at a gas station about an hour north of Seattle, at 8:30am. I was careful to go the speed limit and leave myself plenty of time to get there. Ominously, I saw two cars pulled over on the way down, which seemed like a lot. I also saw about 4 billion bikers. One pack, some riding 3-wide in a lane, 15 rows, no fewer than 30 bikes at least, passed me on the right. Something was amiss.

I showed up a little early to find Ben and Keith already there. We gassed up and waited for our other friends, Jerry, and Forrest. At about 8:40, we decided to call them. “We’re on our way, we just got held up” was the reply. About 10 minutes later, they arrived, and explained what the delay was. Forrest was pulled over for speeding, getting his first speeding ticket ever. We commiserated briefly, I gave him the name of my lawyer, and we all made the requisite “ominous start” and “better not get another one today” jokes. They gassed up and we proceeded on our way.

We went Ben first in his dark blue BMW, with Keith as a passenger, then me in my black Acura, then Forrest in his red Honda Civic Del Sol (it’s a very nice car, not your run-of-the-mill civic) then Jerry (I forget what he drives, but it was white and fairly unassuming). There were bikers everywhere. We also seemed to be seeing a lot of cops. As we came to the first turn, there was a police car right in front of us, in fact. He made the light and turned left, while we sat at the light and waited for it to turn.

After the light turned, we made our left and proceeded down the road. We had little radios, and Ben and I were talking over hands-free cell phone as well. We weren’t sure of the speed limit, but this close to that many cops we were taking it pretty easy. I warned them that my radar was going nuts, but we were going under the speed limit anyways. Sure enough, the radar warning was right on, there was a cop sitting directly off the road, facing in our direction. As soon as we passed by him, he pulled out and headed right for us. I immediately saw this and exclaimed “oh shit”. I assumed Jerry was about to be accosted, but as Jerry pulled out of his way, he made a beeline for Forrest, and pulled him over. Again. Second time today. And we were CLEARLY under the speed limit, all of us.

Via the implicit, unspoken rules of common sense, we immediately entered radio silence, but Ben, Keith, and myself continued to speculate over the phone. We saw a church and pulled over in the parking lot, and waited for Forrest to catch up. There was this adorable white kitten we found – he was initially on the roof of the church. He jumped around, into trees, back to the roof, exploring, clearly playing and having a fine time. I grabbed my camera and the photo shoot began. After a while he decided to check us out. Forrest called us on the radio and we said where we had pulled over. When he arrived he explained that the cop pulled him over because he didn’t have a front license plate. Ben frowned, noting that he didn’t have one either. The cat literally jumped into Forrest’s car. He climbed in the driver side door, which was ajar, then all over the seats, then out the back window (it is a convertible which had the top down). The kitty started to climb into Ben’s car but he shooed the cat away since he is allergic to cats.

This time, the cop let Forrest off with a warning (what is that? I’ve certainly never heard of this strange “warning” you people sometimes talk about…I just get “Hello, sir, I see you have a pony tail, here is your speeding ticket”). He also explained to Forrest that there is a biker rally to the east today, and the entire area is crawling with cops, especially the back roads. He should expect to be pulled over several more times before the day is over unless he gets that plate on. Realizing that 50% of our caravan was now big shiny cop bait even without speeding, and the cops were CLEARLY biting today, we decided to call it off and try again next weekend.

Carefully ensuring no kitties were in the way, we pulled out of the parking lot and headed to a Denny’s to grab some breakfast, then headed back to Ben’s place for Rock Band. On our way back to the highway, we passed about 10 cops, including an unmarked car sitting by the side of the road training their radar directly at us. On the bright side, I had plenty of opportunity to prove my radar detector works (if you were curious, WA cops seem to use K/Ka band radar in that area, not laser). Drivers, bikers and car operators alike, were “dropping left and right”. I think they made their entire ticket quota for the month that very morning. Fortuitously, none of us were pulled over. Hopefully this means they will all have some vacation next weekend, I guess we’ll just have to try again then. Stay tuned for part two, and adorable kitty pics!

« Newer PostsOlder Posts »

Powered by WordPress