*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.

*CLANK* *CLANK* *CLANK* Read More »

Ducky go down the hooooooole

(Subject and pictures courtesy of Walter, one of my co-workers)

Yesterday, while chatting on VMware’s internal IRC server, we got a bit silly and started talking about the wooden ducks somebody places in one of the upper ponds at our building. It was suggested that we should send one of the ducks down the waterfall. We talked about it on and off all day and eventually gathered together to send the duck on its merry way.

Of course, we took pictures 🙂

Ducky go down the hooooooole Read More »

libsexy, mmmmm

I just put out a release of libsexy and the new GTKMM bindings, libsexymm (pronounced “libsexy, mmmmmmmmm”). The files will probably move at some point, but for now, they’re available here.

I moved GalagoGtkIconEntry into libsexy, and renamed it SexyIconEntry. Also, SexyUrlLabel has been fixed up to allow for hyperlinks that span multiple lines. Thanks to everyone who pushed me in the right direction there. It’s also been optimized a little.

This is not a stable library. I imagine I’ll break things without soname bumps right away, but maybe not. Who knows? This is just a fun library, but useful.

Obligatory screenshots follow.

SexyIconEntry
SexyUrlLabel

SexyIconEntry
SexyIconEntry

libsexy, mmmmm Read More »

libsexy – Doing naughty things to good widgets

I’ve been needing a label widget with support for embedded URLs lately for a couple of projects, but nothing was available that met my needs. So last night I put together libsexy, which will be my testing ground for experimental widgets that do things that I consider very wrong but very cool.

The first widget I put into libsexy is SexyUrlLabel. It’s an actual GtkLabel subclass with a custom sexy_url_label_set_markup() function. This function takes the same markup that gtk_label_set_markup() takes, except it also groks <a href=”…”>…<a>. The link turns into the standard blue text with an underline. Moving the mouse over the link changes the cursor to the standard hand cursor. Clicking it will emit a url_clicked signal, and right-clicking it will pop up a menu with “Open Link” and “Copy Link Address.”

Sexy URL Label

The only problem I have encountered so far is that if you have a link that spans multiple lines, the hyperlink won’t work on the second line except for parts below the top line’s link. I’d like to blame Pango for this, but I know someone will tell me a way to make this work 🙂 I’m currently getting the X and Y coordinates based on the range that Pango specifies for the attribute, but this doesn’t handle line wraps well. Suggestions are welcome.

This will be going into notification-daemon probably today. I won’t be around after today until next Saturday or Sunday. I’m going to Disneyland with my girlfriend and my family, and won’t have net access (nor do I want it). If anyone messes around with the widget and has any patches, please send them to me and I’ll get back to you when I’m next available.

Update: notification-daemon now uses SexyUrlLabel. Markup (as per the spec) is supported and links are supported. Have fun!

libsexy – Doing naughty things to good widgets Read More »

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.

Silent Noise Read More »

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.

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

The self-planted rumors are true!

So over the past few hours, I managed to put together a new Galago release. There was a lot done in this release, and I wouldn’t be surprised if I broke stuff, but at least now it should work with both D-BUS 0.23.x and D-BUS 0.3x. I have neat things planned for the next release, but as I’m basically going to be away from computers for a week, spending time with Jamie, I probably won’t get to any Galago hacking.

Releases of this magnitude take forever.. There’s just so many components to package up. I need to get a small release team together. Any packagers want to package things up for Fedora Core or some other distro?

I also need to find a sane way to announce releases for several independently versioned apps and libs at once. Shame I can’t really give them each individual release names without being too confusing. Hmm, and I need to get screenshots of the contact chooser dialog up. Lots to do still.

The self-planted rumors are true! Read More »

Scroll to Top