I've been using the same IBM Model M keyboard for about 6 years now. I never thought I would see the day when it would quit working. I love this keyboard -- the buckling springs deliberately and assuredly clicking and clacking beneath my fingers blow the pants off any cheap-ass keyboard you get for "free" with your factory Dell PC. It's amazing that the best keyboard ever made was actually one of the very first. Created in 1985, the Model M set the standard to beat, but the quality of PC keyboards over the years has only gone downhill. Thank goodness Unicomp still makes these things. Otherwise, I'm not sure what I would ever replace this keyboard with... maybe a Das or a Deck.
Luckily, I don't have to replace it. It hasn't died yet, and probably never will.
Chris McDonough recently wrote an excellent article on the 25 years of the Model M. Since reading it, I've been thinking quite a bit about my trusty Model M and I decided to give it an early 25th birthday present: some new colors!
I followed a guide from Overclock.net describing the process of applying rit dye to the keys. I've used other keyboards that had paint jobs on them before, but the rit dye process is soo much nicer. With paint, you always get a sticky paint feel on the keys and of course it also covers up the letters on the keys permanently. The rit dye, on the other hand, permeates the plastic and leaves no residue on the surface at all. In fact, you can still see the letters quite well.
I liked the red and brown combination used in the Overclock.net guide, although I left the original color differentiation of the model M intact: letters and numbers red, and the meta keys and some of the F keys brown. The red keys turned out fantastic, the letters on them are very distinctive. However, the brown turned out a bit differently; being much darker, almost black, it all but obscures the markings on the keys. No big deal though, I guess my new Model M is half-way to a Das Ultimate after all. :)
I've gotten better at thinking about my finances over the years but I've never had anything better than a mental budget. I've never actually written anything down on paper. I've got a brand new job so I figure I've got a clean slate. Starting right now, I pledge to myself to keep a balanced checkbook at all times and to do monthly reviews of my finances looking for things to cut out of my budget.
Fiscal Conscience: Ha! How many times have you said that?
Me: Dozens of times!
Fiscal Conscience: And did you ever actually do it?
Me: No, but this time it will be different!
Fiscal Conscience: You're going to have do to better than that!
Me: Fine, I'll show you.
GnuCash is a wonderful piece of open-source accounting software. I have used it myself, dozens of times. But as it happens I inevitably stop using it. Not because the software is flawed per se, it does everything a good accounting application should do:
- Use Double-Entry accounting
- Support multiple currencies
- OFX import from online banking sites
The only thing they get wrong is the fundamental design choice they made when developing the application: they made it a GUI. Sure, GUIs are great, but in my opinion GUIs should be interfaces to a service oriented application rather than the application itself. Unless I'm sitting at my desk at home I can't use my application. I don't consider remote desktops a reasonable response to this problem due to the huge network latency issues as well as firewall problems.
I want to be able to record my transactions from anywhere. At home at my desk, at work at my desk, on my N800 when traveling, or on my phone when running around. With an application fundamentally written as a GUI this is essentially an insurmountable problem. An application written as a service can do all of these things quite easily with minimal amounts of programming.
Ledger does not keep track of your accounts. You keep track of your accounts in a plain text file and Ledger helps you understand them better. I can update my checkbook register from any text editor, anywhere I am. Most often this is Emacs through SSH on my home computer. Because of the triviality of the file format (being plain text) I can write a simple application that takes text messages from my phone and adds them to the register automatically.
But what about all my automatic payments?
I have most of my monthly payments automatically debited from my account. This is nice since I don't have to spend the time submitting payments to X number of companies each month, but is a nightmare when it comes time to balancing my checkbook. What I have done in the past is to just import an OFX file from my bank directly into GnuCash. This works great until you realize that something is wrong with the import and your checkbook is no longer balancing correctly. For this reason alone I prefer to record each transaction I make by hand. My money is my responsibility after all.
So, I wanted to be instantly notified of any debit on my checking account as soon as it happens. This gives me the following:
- A text message to my phone describing the time, place and amount of the transaction
- The total balance of my account
- A way to constantly keep an eye on how I'm spending my money without the hassle of (remembering to) signing into my bank account
- A reminder to balance my checkbook. (tells me when my actual checking balance has been out of sync with ledger for over 48 hours.)
Enter Selenium RC.
Selenium RC is an application that can remote control a real web browser and submit and receive data. I run selenium which launches Firefox in a headless X-server (Xvfb) and continuously refreshes my online banking site and parses out my account activity. This is probably a bit memory intensive to always keep a browser open for this specific purpose. I may want to experiment with python-spidermonkey in the future and go back to using mechanize, but I think there's a lot of glue missing in that solution whereas Selenium RC works perfectly right now!
No code to share at the moment, it's all a giant hack. If a similar setup appeals to someone out there, let me know and I'll think about releasing something.
I got a new phone today, a Samsung A737 from ATT. I signed up for their media net unlimited for an additional $15 and it gives me internet access, not only on my phone, but on my N800 too.
I have the Vagalume Last.FM client installed on my N800, and guess what? The 3G connection is sufficient for streaming! :)
I tested it out today, only a 5 mile trip on I-15 (SLC metro area). At 75 MPH, I went through about 3 songs. I advanced (skipped) the song about 5 times, and each time it went to the next song very rapidly (1-2 seconds delay). The whole time the music only cut out once when I first got onto the freeway, but only for about 2 seconds and it corrected itself.
I am extremely giddy at all the geeky prospects that lie ahead for me :)
Achievement is overrated. Not worthless mind you, just overrated. The value of achievement is weighted so heavily in our lives that we tend to neglect the very prerequisites for it.
This is what beauty is: to find happiness and fulfillment in every single day.
Lifelong 'achievement' cannot be realized unless it is done daily. This country's education system and expected work schedules don't help much in this regard but it cannot be blamed for my lack of daily achievement. I can achieve something and find fulfillment in spite of the apathy that may surround me.
This video is very inspiring to me. Because of it I am reminded that I must refuse the concept that I will someday arrive at the beginning of my life.
I am already here.
I always have been.
What I do today is what counts.
I got an email this morning from one of my favorite liberty activists: Michael Badnarik. Michael has been wrapping up a very rigourous campaign for US Congress and so we haven't heard much from him lately. But he is back and sounding better than ever!
Michael began today with his new show Lighting the Fires of Liberty on the We the People Radio Network. I wish Michael the best of luck, I feel that being an educator is one of his best roles and he will do extremely well, I'm sure of it.
Check his out podcast today!
Next Page »