Archive for the 'Technology' Category

A Computer In My Living Room: The Software

Saturday, August 27th, 2005

There is a rift between this post and the one before it. The reason? Computer hardware is a wily beast that I have yet to tame. I guess I could write a post about my adventures with Newegg’s RMA system, but I won’t, so don’t expect to read about that. Seriously.

I outlined the hardware residing in my living room in my previous post and now I will bore you with the minute details concerning the software portion.

The computer runs Windows XP Professional with all the graphical hoopla turned down to a minimum. No fancy shadows or crazy animations. Menus don’t “slide” or “fade” into view.

On top of Windows XP is Litestep. I’m using Litestep as the desktop shell for a few reasons. First, it saves RAM. I’m not loading up an intricate theme, so all Litestep needs to load is the following:

  • Jdesk (desktop environment)
  • xPopup (popup menu)
  • xLabel (graphical element)
  • LsLua (lua scripting module)
  • xTray (system tray)
  • A second reason for using Litestep is that it lets even the most base computer user (such as myself) write scripts and create widgets without having an in-depth knowledge of programming or coding. I will explain that now.

    The concept behind the interface on the couch-side monitor is that when I’m not actively using the computer, it shows an easily readable display with relevant song information such as the artist, the song title, and the album cover. I based this interaction model on whether the mouse was actively being used or not. When the mouse is idle for a specific interval, the UI takes over the screen and shows the information and when I move the mouse the UI goes away and I can manage the playlist and song database.

    The script proved to be something I couldn’t figure out, so I commissioned a friend of mine to write it for me in LsLua. Here is the code he came up with:


    MOUSE = {
    x = -1,
    y = -1
    }

    IDLE = {
    current = 0,
    limit = 15 --in seconds
    }

    function unidle( x, y )
    if x == MOUSE.x and y == MOUSE.y then
    IDLE.current = IDLE.current + 1
    if IDLE.current > 999999 then IDLE.current = 999999 end
    else
    IDLE.current = 0
    exec( '!LabelHide Playlist' )
    end
    if IDLE.current == IDLE.limit*4 then
    exec( '!LabelShow Playlist' )
    end
    MOUSE.x, MOUSE.y = x, y
    end

    It works like a charm and does exactly what it’s supposed to. Thanks for the help, tnl. I set up the script so the “time out” for mouse movement is 15 seconds. And after 15 seconds, the screen displays something along these lines (graphics c/o Scott Prindle):

    MediaPC UI

    As you can see from this screen capture, the UI displays the song title and artist centered above a progress bar. Below the progress bar is a time elapsed/remaining label and even farther below that is a medium-sized album cover.

    When the mouse is moved, this is what I see:

    MediaPC Foobar Config

    The computer runs Foobar2000 to output the tunes. Loaded components include:

  • foo_ui_columns (modded Azrael config)
  • foo_uie_volume
  • foo_uie_albumlist (config by tnl)
  • foo_uie_history
  • Using this interface, I can navigate through songs by artist or by album and queue them up as I see fit. Right now it’s just a large mess of my music which ranges from Belle and Sebastian to Motorhead to The Blood Brothers to Elliott Smith. Skipping between genres that large is often quite jarring and I need to find a better way to organize these things (thinking about adding one more level to the hiearchy of foo_uie_ablumlist to sort by genre first, then artist/album).

    So that, my friends, is that. It’s a tight ship I run and by that I mean don’t fucking touch my computer or I’ll kill you and your immediate family. Also, when I say “ship” I really mean “living room”. Just clearing all of this up for you.

    A Computer In My Living Room: The Hardware

    Thursday, July 7th, 2005

    Upon graduating from Seattle University this June, I moved into a new apartment. My girlfriend graduated from a different university and moved into the new apartment with me. You might say it’s “our apartment”. People probably reference it as “Brian and Rachel’s Apartment” when they speak of this place in conversation, I’m certain of it.

    Let’s get to the point here. We have this apartment and we want it to look nice. She and I outfitted the place with choice elements from Ikea and Craigslist Postings. The apartment shaped up nicely. Take a peek, won’t you?

    Snapshot One
    Snapshot Two
    Snapshot Three

    All of the furniture, save for the couch, is from Ikea. God help me. But what is that couch-side monitor doing? What is its purpose? Why would I have a monitor next to my couch? Media PC baby. I’m talkin’ ’bout a Media PC.

    Now, this is a limited configuration. I refuse to watch movies that come from the s-video output of a video card. I’m not an animal. I don’t eat my own crap. Until I can afford to purchase a projector for my living room this computer is solely for audio and I’m completely fine with that since I have a metric ass-load of music to listen to including over three hundred bootlegged live shows.

    The computer itself isn’t anything out of the ordinairy. I’m not going to spend thousands of dollars building a computer that is just going to run Foobar2k and Litestep. Here are the parts:

    Case: Antec Overture Piano Black ATX Case
    Motherboard: PC CHIPS V3.1C Socket A (Socket 462) VIA KT266A
    Processor: Athlon XP 2400+
    RAM: WINTEC 512MB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200)
    Video Card: MSI RX9550-TD128 Radeon 9550 128MB
    Sound Card: CHAINTECH AV-710 8 (7.1)
    Optical Drive: LITE-ON Black 16X DVD-ROM 48X CD-ROM
    Hard Drives: 120 GB and 160 GB Maxtor drives I had lying around.

    If you look at the contents of the entertainment center of those pictures, you can spy the computer nestled snugly underneath my tape deck. Look at how smoothly that blends in with the other components. It’s almost a crime how nice this looks.

    As far as the audio is concerned, the sound card I purchased for a mere twenty-five dollars came with an optical audio cable and since my receiver has optical inputs on it, I felt it was a sign from God. The fact that my thrift store bookshelf speakers sound so damn good are testament to this divine intervention.

    In order to interface with the computer visually, I hemmed and hawed over a solution for a few days. I sure as hell wasn’t going to browse through files using my television (no matter how big I made the font, it’s just not going to happen). I almost bit the bullet and bought an LCD projector when Woot had a good deal on an InFocus refurb, but I went with my better judgement and refrained from the debt-building purchase.

    I really didn’t want to disturb the beautiful dual monitor setup I had going in the office, but I think it’s for the best. I lifted one of the monitors from my desk and put it in the living room on the couch-side coffee table we bought. I ran a longer-than-necessary VGA cable from the monitor, under the couch, under the area rug and into the computer (along with an extension cord) and everything was good to go.

    Now, to actually interact with the computer I need to decide upon a proper input device. I didn’t want a keyboard sitting out on the coffee table (wireless or otherwise) but I don’t mind an unobtrusive mouse sitting on the table, so I went with a Bluetooth mouse. If someone can explain to me why all Bluetooth devices must a) be blue and b) be shaped like a tooth, I’m more than happy to hear the reason(s) why.

    Finally, I didn’t want to string a cat5 cable across my apartment because I did that in my old place and it looked like I lived in a college dude’s house (because, well, I did). I’m an adult now and I have standards. I got a cheap-ish USB 802.11g wireless dongle and it sits snugly behind the television set.

    So I have my computer built, I have my monitor solution, and I have an input device that works well. What about the software? What do i do for a media-browsing/playing solution? I guess you’ll have to read the next installment for that because I’m not even done developing the system I’m going to use yet.