Misc Computers and Tech

Goings Ons

Hard Day in GNOME

All day long, people have been talking on IRC about the Novell lay-offs. It’s been sad to see, and as hard as it was for the people who were let go, I’m sure it was just as hard for those that had to let people go. My condolences to everyone who’s been affected by this.

I’ve talked to a few people individually about this, but it’s been recommended to me by a couple of people that perhaps using Planet GNOME would be the best way to reach everyone interested…

I’d like to offer to anyone affected by this who is looking for a job to send me your resume if you’re interested in a job at VMware. I can make sure it goes to a human being who will actually read it, rather than in some queue somewhere. We’re looking for good people, and the company is nice to work at. Although the Palo Alto offices are where all the interesting things happen for the Linux desktop development, some jobs are available at our new Cambridge office. So if you’re looking for a fun job where you can do interesting work with good people, and this interests you, even a little, we can try to get the ball rolling. To everyone else, best of luck. I don’t doubt that you will all find good jobs soon, and everyone appreciates what has been done so far by everyone in the Ximian team.

Nokia 770

My Nokia 770 came today. I haven’t had much time to play with it, but it’s quite nice so far. Cute little device, and I’m eager to hack on it. I have a couple of games I’ve written or PDAs that I hope to port. Taco would be fun to port to it, if it had cairo (which I don’t believe it does? Correct me if I’m wrong!).

Galago

A lot of work has been done in Galago SVN the past couple of weeks. A lot of the code has been cleaned up and the API is in the process of being fine-tuned. Python bindings are being written. libgalago is moving to glib. All neat stuff. I’ll post more when I get closer to being finished, but this is very cool:

for service in galago.core_get_services():
    print service.get_name()
    for account in service.get_accounts():
        print account.get_username()

Just so easy. That’s not the final API, though. The core_get_services() part will change. Anyhow, fun stuff.

*CLANK* *CLANK* *CLANK*

Ah, the sound of a dead drive. That’s what my 200GB Western Digital drive said to me this morning as I rebooted. This was after I realized that I couldn’t access any of my source code. dmesg was yelling at me about having trouble accessing /dev/hde. This drive contained my source code (almost all of which are on remote SVN or CVS repositories, of course) and all my media (audio, video, images).

I just chuckled.

A very short while ago, a matter of weeks really, I had this bad bad feeling that I was going to lose all my data. No real reason, but I started getting very paranoid about it. I looked around and after factoring in cost and laziness, I picked up a 1.0TB Buffalo Terastation, which is a cute little machine. It’s a PPC-based Linux RAID-enabled NAS, basically, with SMB, FTP, and AppleTalk support. After RAID5, I was left with about 700GB. I immediately copied everything I truly cared about to it (media files, basically). While most places sell this for $1000, I found it just over $900 at Comp-U-Plus.

It arrived and I set it up. I have to say, I like it. It just works. It has gigabit ethernet, for when I finally get around to upgrading my network. You just set it up over the web. Users, groups, permissions, mounts, RAID configuration, formatting, diagnostics, optional periodic status e-mails, etc.

One nice thing about the Terastation is that it has 4 USB ports. You can connect a printer to it and have network printer sharing. You can also connect up to 4 USB hard drives and set up a second RAID array, expand the current array, or back up your array. Nice and expandable. It also has support for hooking up to a UPS system, so it can shut down gracefully.

So with the Western Digital drive dead, I shut down, pulled the drive, and rebooted. I then proceeded to play some music and think to myself how glad I was I bought this thing earlier this month.

Now, the Terastation isn’t perfect. My main complaint was that I couldn’t use symlinks, due to SMB not supporting them (or at least this particular version?). That wasn’t a huge deal, considering it’s mostly media files, but I wanted the option, damnit!

I looked around and found a coupel sites on hacking the Terastation. The main one with all the info is a nice wiki at terastation.org. I went to the section on gaining root access and saw that he soldered dip switches onto his Terastation’s motherboard to make the serial port actually usable. I wasn’t ready to do that just yet. Or ever. Maybe if this thing was a few years old and I had another solution.. Maybe.

I checked back today and looked over the firmware pages. It turns out that Buffalo, the makers of the Terastation, provide a zip file with a image.dat, which is just a password-protected zip file containing a tarball and some other stuff. The passwords are available at the aforementioned wiki. The wiki also has some nice instructions on taking an existing firmware image, adding a sudoers file and an ssh server, and repackaging it.

Feeling stupid, I decided to give it a try. I figured that even if I bricked the Terastation, which I very much doubted I would do (given that I was just installing another server and a sudoers file), I would at least still have my drives, so no data loss. I packaged up the new image, compared the old and new tarballs a few times, and then put it back into the firmware zip file. I went over to my Windows machine and ran the updater. It found my terastation and, after a few moments, I clicked the button.

And waited…

And waited…

They really need a little thing underneath the rarely updating progress bar saying, “Don’t panic, everything’s okay, we’re just really slow. Get some coffee, it’s alright.”

I ran back and forth between my work room and the living room and watched as the Terastation rebooted itself a few times (as was documented in the README). Finally it stopped doing that. I stared at it, daring it to blink. It didn’t blink, but it didn’t have the Red LED of Doom, either. I went back to the Windows machine and it happily indicated that the firmware update was successful!

I ran back into the work room and pinged the Terastation. It ponged! I mounted the shares… I could access my files! The worry was over, but the shaking continued for a few minutes still. One last test… I tried to ssh in.

admin@OLYMPUS:~$ 

Huzzah! Life is good.

And now that I have a little hackable Terastation to play with, I think I’ll play with the NFS packages available for this. More to follow, maybe.

Oh, and if anybody has a Terastation and wants a known working hacked 1.08 firmware file, let me know. If it doesn’t work, though, I claim no responsibility whatsoever.

Silent Noise

So we don’t have flying cars. That’s okay, I didn’t think they were a great idea anyway. There are no personal android helpers. They’d just take up my closet space anyway. What I can’t figure out though is why we’re still using wired headphones. I know there are wireless ones available, and that wireless phone headsets are becoming more popular, but it sure is taking a while.

The wires a nuisance, I believe, but it seems most people have become accustomed to them. I still haven’t. I sometimes get my arms or backpack tangled in them. If I’m listening to my Rio and stand up without thinking, the Rio will fall to the ground. And they just look ugly!

I’d like to see a future world, maybe 3000 or so at this rate, where every earphone set can communicate wirelessly to devices through, say, Bluetooth. I want priorities in the devices where, if I’m listening to music and my cell phone rings, the music will mute and I’ll hear the ringing. Tap the headset/earphones and it’ll answer the phone. When listening to music, a tap could pause/unpause. No more pressing buttons on the device or changing volume if I need to listen to somebody who’s talking to me.

How hard would this be? We’d definitely need a standard for communications and priorities, and every upcoming CD player, MP3 player, radio, etc. would have to support it. The technology for actually doing the communication would have to fit inside the earphones/headsets, though that’s probably doable or close to doable now.

If we all wanted to look like cyborgs, there are other options if we kept these on or with us all the time. A TV in a bar or pizza place or even at home could mute its speakers and yet still broadcast the audio wirelessly. If you need to listen to the news real quick, and it’s too noisy in the restaurant, put on the headset and listen in clearly.

Just some stuff I was thinking about earlier.

I Can’t Believe It’s Not Chicken, now in gelatin style

Dinner!
Something I threw together the other night in Inkscape

Galago

I finally gave up with the whole “playing everything politically safe” with Galago and am now moving the whole library to GLib. It’ll take some time, and there’s a few things I need to figure out first. For example, a very useful feature that Galago’s object model let you do was connect a signal handler on a class itself, which would call the handler any time the signal of any object of that class was emitted. This of course didn’t translate to other object models or bindings well, and certainly doesn’t translate to GLib at all.

One of my potential solutions was to create a Manager class for each class where developers would want to do this. The Managers would be singletons and objects would emit signals on them as well as themselves. Maybe Manager is a bad name of the type of object… I’m still not sure what to do about this. It’s a very useful feature though, and the only alternative for everything that currently uses this is to set up a bunch of signal handlers for parent containers to know when these objects are added/removed and then register/unregister signal handlers every time the objects of interest are created/destroyed. It’s a lot of messy code, and would take up more memory than a manager interface. Still got to play around with the idea more…

Notifications

I’ve begun work on porting libnotify and notification-daemon to D-BUS 0.3x. I plan to use a simple abstraction layer consisting of macros to keep compatibility with D-BUS 0.23.x for now. I have a lot of work to do this week at VMware, so I don’t have a whole lot of time to devote to it right now.

Mike Hearn and I had a talk earlier about extending the notifications spec. Sorry, we’re still not going to provide a way to embed Mozilla. One thing people have been wanting, though, is to be able to associate a notification with something on the screen, say, a notification icon. So what we’re going to do is provide support for X, Y coordinate hints. Since they are hints, the renderer will be able to just ignore them if they want. However, this would allow the battery applet (for example) to say, “I have a notification, and here’s my location!” and the renderer could pop up a notification near there with, say, a little arrow pointing to that X, Y location. This could be useful in a few situations, though hopefully it won’t be abused.

I have some future plans for the notification daemon. I’m going to put together a (for now at least) experimental daemon that has two types of plugins: Render plugins and Transition plugins.

The Render plugins will be responsible for rendering the notification. They could do the nifty folding thing that appeared on Planet GNOME a while back. They could do a bar sitting at the bottom of the screen, semi-transparent. They could do toaster popups. Whatever.

Transition plugins handle how the notification will be displayed. They could just show a notification, fade it in, slide it in, make a poof of smoke.

Again, it’ll be a while before I can start on this, due to life just being busy right now.

Disneyland

And this is one other reason why life is busy. My girlfriend Jamie and I are going with my family to Disneyland after next week. Unfortunately, this week is spent on some deadlines at work. But that’s just going to make the next week even more fun 🙂 We’re staying at the Disneyland Hotel, which will be a first for both of us. I’ll have plenty of pics when I return.

Revenge of the *bleep*

Hurray! Leo and Patrick and some of the others from the old The Screen Savers show have gotten together and started a “podcast.” I’m sure anybody reading Slashdot knows this already, but I’m still pretty excited about it. I’ve been watching The Screen Savers since it was created on ZDTV, and have been pretty upset about how badly G4TechTV mangled it. Now I have a radio show I can look forward to hopefully every week or so.

I’ve been thinking a bit about getting back into doing an online radio show. I used to host “Voices In My Head” on WOPN/Freenode Radio, back when that still existed. Ever since that station fell to the ground, I’ve been wanting to set up a new one with 24-hour independent music and weekly radio shows of various types. It’s something I’m seriously considering now. Maybe I’ll look into expenses and talk to a few people…

Pretty Shiny Monitor

So, a few days ago, Dell had a deal on a 20.1″ Dell 2005FPW Widescreen LCD monitor. We have the 20.1″ non-widescreens at VMware, and I love them, so I thought I’d throw some money Dell’s way and pick up a widescreen. I found out that I could also purchase a $35-off coupon on ebay for only $5, so I managed to get another $30 off there. All in all, before tax, it came down to $450. It arrived a few days ago, and I must say, it absolutely rocks. I’ve been using it in the living room, playing World of Warcraft on it. It makes such a difference 🙂 Everyone should get one.

Now that I type this, I see that Chris Lee purchased one too. Very cool. Enjoy 🙂

Just A Little Easier, Please – Networks

The Linux desktop has progressed quite a bit in recent years. Ubuntu, out of the box, mainly just worked. I was able to quickly set up a nice desktop for my girlfriend using it. It was really nice to see the little things all fit together. For example, when we took a pic with her new camera and plugged it into the USB port, a dialog popped up asking us if we want to import the pictures. Now obviously, I expected that, and it’s not like that was invented in Linux, but it’s one of those nice touches that just makes life a little bit easier. Still, there is so much room for improvement.

I’ve been trying to think about what specifically I find annoying in day to day usage of Linux. I think my biggest gripe right now is how much of a pain it is just to move my laptop from network to network. I have five networks I tend to use. The first is my home network through my wireless router. The second is also the home network, but wired, through another router. The third is the network at work. The fourth is the wireless network back at my parents’ house, and the fifth is the wireless network at my grandparents’ house, which is next to my parents’ house.

Now, I don’t visit my parents that often, and I don’t connect to the wired portion of my network often either. However, I do switch twice a day between the wireless network at home and the wired network at work. And every time I do, I have to switch network interfaces, re-enable/disable the proxy servers, and change my Gaim account configurations (port numbers for going through the proxies, accounts I wish to auto-login, proxy settings, etc.). It’s just enough of a chore where I think to myself, “Ugh, must do this again.”

When I plug in a Windows computer into a wired network, a little bubble pops up saying that the Ethernet is connected, and it (usually) tries to configure my network settings. It doesn’t always work right, but hey, it’s an effort. It would be nice if we had such a thing in Linux. Maybe we do and I just don’t know about it, but if that’s the case, then we need an easier way for users to discover it and to configure it. Basically, when I plug in a network cable, I want my wifi connection to go down, my wired connection to go up, and a DHCP server to be scanned for. Now the wired-only portion of my network at home doesn’t use DHCP (yet), so it’d be nice for some kind of auto-discovery magic to happen, but really I should be using DHCP here anyway.

The little network selector in my panel is a nice start, really. It’s been buggy here, but it mostly works. However, it’d be much nicer if I could also configure proxy servers for each interface and network. Not tied to that applet, mind you. It would have to be a layer below it somewhere. When I change networks on the command line, the same magic should happen.

The Gaim auto-reconfiguration could happen via a Gaim plugin, which I’m very tempted to write. I don’t know what the easiest way would be to determine when a network changes on an interface, and when interfaces change. Perhaps some kind of D-BUS layer somewhere could intelligently broadcast this information in an easy-to-use form.

I don’t imagine a lot of this would be difficult to develop, and it’s largely a matter of putting the small pieces together (once written). It would certainly make this one aspect of my daily usage a lot easier. I’m sure I’m not the only one frustrated by this. I don’t know if there is work going on in this area or not, but hopefully someone will get the motivation to hack on a piece or two.

My little Home Theater PC

A few months ago, I bought a nice little Sony Vaio desktop computer from a co-worker for a really good price. I saw that it had TV out capabilities, as well as two TV tuners, so I thought it’d be fun to get something plugged into the TV. So I got it all set up and played around, but the Giga Pocket software that came with it was really quite pathetic. I ended up just using Explorer for a while to view my videos, but that required either having a keyboard and mouse hooked up, or using VNC. I would have put Linux on it, except the TV tuner was incompatible with Linux, and I wouldn’t have been surprised if the rest of the hardware was as well.

Then a story ran on Slashdot about a wonderful little project called Media Portal, which is essentially like Freevo or MythTV, but for Winodws. It’s open source, written in C#, and works well. Although still a very early beta (0.1.0.5.1 is the current release), it lets me do almost everything I want to do. I can play videos, music, view pictures, check the weather, and all the other standard stuff.

Unfortunately, the little remote control and receiver that came with this Vaio was incompatible with everything but their Giga Pocket software. I ended up going with a SnapStream Firefly remote and receiver, which I must say works quite well and is comfortable to hold.

The setup was starting to work well enough, but the video quality sucked. I was using standard composite cables, and as I also use a TiVo, I didn’t want to give up my TV’s S-Video port. My DVD player was using my component ports on the TV, but I figured I could experiment a bit in that area, and purchased a DVI-to-component adapter for my Radeon 9600 Pro. I plugged it in and was amazed at the sharpness I got in comparison to the composite and even S-Video cables. I could actually read small text, even though some of it was still flickery. Ah well, it’s not like it’s a monitor.

The last major piece of the puzzle was a good case. A big silver Vaio tower next to my TV just wasn’t all that appealing. So I shopped around and saw the SilverStone LC03V case. It was love at first sight. I found a vendor selling it for a cheap price and purchased it, along with a new black DVD-RW and a black In-Win CR-I530 (USB/Firewire/Audio/Compact Flash/Secure Digital/MMC/Smart Media/MiniDisk) expansion bay. Unfortunately, the audio and firewire ports don’t work on my crappy Vaio motherboard, but I’ll replace that someday.

Everything arrived and I put it all together. It’s very sexy. I put the case in front of the TV and noticed that I could actually read the text on the TV in the case’s reflection. Oh yeah, while I was at it, I bought a new stick of RAM for my main desktop, bringing it up to 1GB.

Despite the suckiness of Windows, the media box generally runs well. The only times I have problems are when Windows decides it’s time to interrupt what I’m doing to tell me that I should upgrade to Service Pack 2, or when the virus scanner pops up, or when I start up Windows and it tells me that I’m not smart enough to decide the resolution I want, and that it wants me to bump it up from my custom resolution for my TV to 800×600. But it’s Windows, nobody really expects to be treated intelligently anyway. As long as I don’t have to reboot often, it works well enough.

I’m in the process of working on a plugin for Media Portal to allow me to see and update my NetFlix queue from my remote, as well as browsing other movies and seeing their video clips. It’s starting to work pretty well, but it’ll be a while before it’s ready for normal use.

I need to resist the temptation to put any more money into this for a while 🙂

Gmail

Being an active user of Blogger.com when Google purchased it, my brother was offered a gmail.com account roughly a week ago. As part of this, after several days of use, he was given the ability to invite two people. One of the people he chose was me.

So far, I’m quite impressed with what Google has done here, though not surprised. When Google sets their mind to something, they seem to usually do it right. The interface is very clean, and nearly everything you see is something you will regularly use. That is quite different from the webmail interfaces I’ve used previously.

I use mutt for all my e-mail, as I can simply SSH in from school and send mail or check discussions. Another reason for using mutt is the keyboard shortcuts. I can get around pretty quickly without using the mouse. Those two reasons are why I currently do not use Evolution for all my e-mail, and the keyboard issue is why I’ve never used webmail systems.

Gmail solves the issue of using my e-mail remotely, which isn’t surprising. It is, after all, a webmail system. What did surprise me was the fact that it has keyboard shortcut support, and let me tell you, it works well. I can quickly jump to my inbox (g, i), read a message (enter) and all its threads (or in gmail terms, “conversations” — more on this in a second). If I hit r, it lets me reply to an e-mail. Hit c, and I can compose a new e-mail. There’s far more than that, and I would link to the list of shortcuts, but it appears you must be a gmail.com subscriber first.

E-mails are represented in an interesting fashion. Instead of threads, you have “conversations.” These look like stacked cards. You can see them below:

gmail.com conversation stacks

The first unread e-mail in a conversation is presented first. Each e-mail shows the name and e-mail address of the sender and the date/time sent, or how long ago it was sent. If the e-mail is partially covered, it will show a snippet of text from the e-mail. Multiple e-mails can be shown at once, or you can hide all but one, if you choose. It’s flexible, and it works. If you’d rather see the quoted text from the previous e-mail, click the little “Show quoted text” link and it’ll just unfold. No reloading or anything silly.

Conversations take up a single entry in the Inbox. You can see a list of the contributors in the conversation, how many unread messages it contains, and then the label (more on that in a sec), the subject, a snippet of text, and the date/time info. When a conversation has a new, unread e-mail, it will appear at the top of the Inbox. Clicking it will bring you back to the conversation view with the unread e-mails unfolded.

Gmail has a hidden frame or something that it reloads regularly. When it does this, it checks for new mail. If it finds new mail, it will update the interface. No more periodic reloading of the entire page, or manual reloading.

Labels are one of gmail’s ways of organizing e-mails. A label is like a folder, except that multiple labels can be assigned to an e-mail. You can quickly set labels on a per-e-mail/conversation basis, or through filters. Clicking the label in the Labels box on the left of gmail’s interface will display all e-mails with that label. For quick reference, each e-mail will have its attached labels prepended to the subject.

Stars are another method of organization. If there’s a particular thread you wish to follow, click the star next to it. It will automatically appear in your Starred mailbox (keyboard shortcut g-s).

The search features work wonderfully, and should be included in every e-mail client. You can put in a simple search for anything and get immediate results, or click “Show search options” to be more specific.

The overall interface for gmail is lightweight, and very responsive. I never find myself waiting for anything, and I can get around to any e-mail effortlessly. It doesn’t behave like a webpage, rather it’s more like an actual application.

Like other e-mail applications, gmail has a handy Check Spelling option when composing conversations. It doesn’t check on the fly, but rather when you wish to check, you click the little link. It’ll replace the textbox with some custom javascript control of some kind, and highlight all misspelled words. The traditional pop-up menu with suggested replacements and an option for editting the dictionary is available for all misspelled words. When finished, click “Resume editting” and you’re back in business.

gmail.com conversation stacks

For those who keep address book entries (Gmail automatically helps with this a bit), Gmail also provides auto-complete in the To: box.

gmail.com conversation stacks

Finally, I’d like to comment on the ads that struck so much controversy. For those who don’t know, when you read an e-mail, “Sponsored Links” appear on the right of the e-mail box. These are often related to the e-mail in some way. For example, a conversation on gaim-devel talking about various IM and networking protocols produces ads for “Tcp/ip Protocols” and “Network Protocol Poster.” I haven’t found them to be annoying, and at least right now, Google doesn’t put any ads in the e-mails you write.

Underneath the Sponsored Links is a list of Related Pages. Sometimes. These don’t always show up, but when they do, they’re usually relevant in some way. However, I think that they may need some work.

Overall, I’m very impressed with Gmail. I will be using it for some time, though it probably won’t be my primary e-mail interface. I figure I’ll subscribe some of my listservs to it and use its powerful search capabilities. And you’ve got to love that “You are currently using 0MB (0%) of your 1000MB.”

Adventures with the MS Office Keyboard

For the past few years, I’ve been using the Microsoft Office Keyboard. It was a gift from my mom, as my previous keyboard stopped working one day. Now, I’m sure a lot of people’s first thought is that this keyboard sucks because it’s from Microsoft, but so far, I’ve really enjoyed it. I have the Application Left/Right buttons mapped to switch desktops quickly and easily, and the Cut, Copy, and Paste buttons for making a window sticky, shading it, and launching a terminal. Works well enough.

Until just the other day, I had this all configured through .xmodmap and my window manager settings. However, in GNOME 2.5.x, the keyboard settings are apparently supposed to be controlled by the Keyboard control center applet, and my xmodmap settings are now ignored. My latest build of gnome-control-center CVS even shows a dialog saying that the xmodmap settings will be ignored.

So, I launched the keyboard control center applet and selected my MS Office Keyboard from the list. Perfect, I thought. That is, until I learned that my End key no longer worked, and none of the shortcut keys on the keyboard did what they were supposed to. I put it away for awhile and started manually using xmodmap and resetting the shortcuts every time I launched GNOME, until I had time to actually fix it.

The other day, I decided to fix this. The problem was actually in XFree86’s inet keyboard symbols file, in the Microsoft Office Keyboard definition. After poking around and learning how these files were constructed and what the <I#> and <E#> codes meant, I finally patched up my definition. It was an almost 100% change, so I’m assuming that either the guy who wrote this entry was on crack, or that it was for an older version of this keyboard (unless it’s a newer one, but I kind of doubt that).

I’m mostly writing this so that if any Linux users with this keyboard want it set up properly, they’ll have the information available. I have a replacement inet file available that works with my keyboard. I’d be curious to know if there are MS Office Keyboard users out there that have their xkb settings set to use this keyboard who aren’t experiencing problems.

Scroll to Top