Writings

Technology, open source, personal essays, and everything that isn't climate.

MediaGate MG-35 Review

Last night my MediaGate MG-35 arrived. This is a small front end device for playing back video, audio, or picture content off of a central server. I've got an xbox solution for this in the main living room, but with Susan and I using the exercise bike a lot more of late, I wanted the same thing going on in the family room. It was reasonably cheap (I got the one without a local hard drive for ~$120), so was worth the risk.

Once plugged in an running, the device was pretty easy to use. The remote is a little small (it's actually powered by a watch battery), so it is hard to know if you've always hit the buttons. The interface isn't as intuitive as XBMC, and the Samba server scan takes a little time when you first start to drill down into your media folders, but it isn't very awkward. The interface looks a lot prettier than most of the filesystem browsing DVD players I've seen out there, which is a nice change.

Video playback worked fine, though one set of encoded videos I've got were a little jumpy. They are 704x400 in size, and I'm doing a test on some other media to figure out if it is a specific encode, or if the device just doesn't have enough juice to scale at that size (which would actually be a scale down for the 4:3 tv it is on right now). I'm slightly curious if the MG-350HD has a better video processor to handle that (as it is "designed for HD"), but the price jump on that unit makes it a little beyond what I'd be looking at. I'm also curious if I'd get the same jitter if the media was local, vs. coming over a smb share.

For how we are going to use this, and the price, it works fine. It isn't stellar by any means, but you can only expect so much from a device this cheap.

Related: Thoughts on a smarter home · Why I'm excited for Google TV · A new way to find something good on TV

Winter arrives... finally

It's pretty pathetic that the 1/2" of snow that came down last night got everyone here excited, but it did. We've now broken the record for latest snowfall in a season in Poughkeepsie (previous record was Jan 14th). It's just enough snow so that our lawns are white instead of green (yes green, as the crazy warm weather meant lawns didn't really brown over this winter).

I just hope we get a real storm at some point (6 inches would be great), as I'd really like to get out to do some kind of winter sports this year. Susan and I are all geared up for x-country skiing, snow shoeing, sledding, or ice skating, and haven't gotten to use any of that gear since February of last year.

Related: Astronomy makes a good winter hobby · For love of cross country skiing · Fahnestock Winter Park in the Poughkeepsie Journal

Tips for creating good presentations with Open Source Tools

If you are a Linux user, and you have ever had to give presentations, you probably used OpenOffice Impress to do it. OpenOffice Impress is a reasonable clone of PowerPoint, though certain things like Animation, work very poorly in OpenOffice, and you can't insert a table (grrrrr....).

Any good presentation has graphics or diagrams in it. There is a drawing tool in OpenOffice to create them, which is a little clumsy, but works. However, the output looks like poo. While OpenOffice will antialias fonts (making them smooth), it won't do so for graphic elements. Thus you end up with reasonably nice looking fonts, and graphics that look like MacPaint circa 1996. What is a budding presenter that wants to stay on Linux to do?

About 2 years ago, I found Inkscape. Inkscape is a vector graphics program that would be comparable to Adobe Illustrator (though it's been 9 years since I last used Illustrator, so I don't claim any ability to compare them). Inkscape is largely designed for graphic artists (which I will not claim to be by any stretch), and has all the sort of drawing tools you would expect for that. I originally stumbled upon it when creating block diagrams in Dia, which while pretty straight forward, again looks like poo if you've got anything that isn't a vertical or horizontal line in it. While Inkscape requires a little more freehanding of shapes, the control over those graphics, and how pretty they look on export, entire makes up for that.

Inkscape's native format is SVG, which is vector based, and thus scalable to any size without looking bad. While it has the disadvantage of being a different tool then OpenOffice it has the distinct advantage that nearly anything drawn in Inkscape looks about 10x better than OpenOffice drawings, without even trying. If you try, you can get stuff that is clearly 100x better.

What I've recently found works best is to create a base image in inkscape with all your elements you are trying to explain. Don't add much text or any arrows showing flow, as OpenOffice does this reasonably. Then use that base image for 1 or more slides in OpenOffice where you draw over it with Arrows, Simple Blocks, and Text. OpenOffice objects can be transparent (or partially transparent), which means doing overlays in OpenOffice works pretty well, and looks pretty reasonable. Believe it or not, the final OpenOffice presentation will look better in Adobe Acrobat as a PDF, which has very good scaling algorithms, and will antialias your OpenOffice graphics objects even when OO doesn't (which, granted, is pretty retarded).

Pictures are worth 1000 words, and good pictures are worth a lot more. But also remember, good pictures take time. Yesterday I spent 3 hours coming up with, and creating 1 graphic which was the basis for 4 slides, then 2 more hours figuring out how to best represent the information on those slides to be clear, simple, and useful. Just like any programming effort, don't think you can crank it out in the hour before it is due.

Ok, back to diagrams and presentations. Happy Friday!

Related: OpenOffice Base... never again · OpenOffice Lessons for the Day · A Few Tips for Casual Speakers

ExifTagger 0.42 Released

I had some time this weekend, as well as some motivation, to add a couple more things to ExifTagger.

One of the things that took longer than I expected to sort out was how to change the cursor to a watch prior to doing an expensive (time wise) operation in a call back. Loading my 7 MP digital photos takes ~ 4 secs on my laptop, which is enough time that I'd like to provide user feedback that something is happening. The naive approach to this is:

sub new_img {
    my $file = shift;
    $glade->get_widget('main_window')->window->set_cursor(
                                                          Gtk2::Gdk::Cursor->new("watch")
                                                         );
    
    $img = ExifTagger::Image->new($file);
    load_image(_target_image_size());
    _populate_fields();
    $glade->get_widget('main_window')->window->set_cursor(undef);
}

This doesn't work, due to the way gtk works. set_cursor is effectively a signal, which triggers a built in call back just like any of the call backs you would write yourself. The net effect of this is as follows:

pop new_img_signal
start new_img
	push set_cursor_signal
	load_file
	load_image
	populate_exif_fields
	push set_cursor_signal
end
pop set_cursor_signal
start set_cursor # watch
pop set_cursor_signal
start set_cursor # normal

The following is how I solved the problem. There may be a more elegant solution, but this is working quite well for me:

sub new_img {
    my $file = shift;
    $glade->get_widget('main_window')->window->set_cursor(
                                                          Gtk2::Gdk::Cursor->new("watch")
                                                         );
       
    Glib::Idle->add(sub {
                        $img = ExifTagger::Image->new($file);
                        load_image(_target_image_size());
                        _populate_fields();
                        $glade->get_widget('main_window')->window->set_cursor(undef);
                    });
}

Which lets the set_cursor call run, has the gtk main loop go idle, then schedules the rest of the work.

Related: ExifTagger 0.1 Released · ExifTagger 0.40 Released · ExifTagger v0.20 and feedback

The Good and Bad of Open Source Desktop Apps

The Bad Dear Open Office, Why can't you insert a table? All I want is a simple table. Tables are good ways to organize some information. No, I don't want to embed a full spread sheet, that uses entirely different fonts, and may or may not size correctly in my viewport, depending on the size of my window at any given time. You import tables from Power Point reasonably well, even if it is just a bunch of grouped lines. Why couldn't you just draw me that in the first place! The Good Dear Inkscape, You are brilliant, and keep getting better. Putting the color palette horizontally right above the status bar is so nice for doing quick fills of objects on the screen. Plus, all your drawings always look incredible once they are done.

Related: The Open CD · Getting Involved in Open Source · Tips for creating good presentations with Open Source Tools

MHVLUG Meeting Notes - January 3rd 2007

Last night was the first MHVLUG meeting of 2007, and marks a return to Wednesday nights (which I think is where we started, though I'll need to look that up.) The Wednesday night shift appeared to be a good thing, as we had 30 people there, including some new faces. Monday nights were definitely hard, often with the group dropping to 15 or so, so I think Wednesday is probably a good place to keep the meetings for a while.

Mike Kershaw gave an overview of Digital Photography on Linux. After a few slides giving some back ground, Mike started showing demos of applications like gphoto2 (command line tool to get photos off your cammera), ufraw (for manipulation of color and light levels on raw images, if you have a Digital SLR that produces them), and the gimp.

The Gimp demo lasted for quite a long time, and included a lot of tricks including using basic tools such as unsharp mask, and color balance, to touch up any image. The example of using a layer mask to put together 2 images with vastly different light levels was very cool, and explains how the image Mike gave us as a wedding present was created. :) I personally never knew you could drag around the magic wand to expand the selection, which was a great piece of info that I'm glad to have now.

The demos ended with putting together images using hugin and autopano. I love these tools, and Mike did a live demo of stitching together parts of the room into an image showing that with almost no effort you get quite reasonable results. It was a great meeting, with something for everyone there.

Related: MHVLUG November Meeting Synopsis · 10 Years of MHVLUG · 7 Years of MHVLUG

Linux Job Spam

As president and founder of Mid-Hudson Valley Linux Users Group, my name is associated with the group in many directories in which MHVLUG is listed. As we all know, having your email address all over the interweb is how you get spam.

I'm getting an average of 1 email per week of people looking for qualified Linux professionals in the greater New York area. Usually the jobs are sys admin related, though from time to time they are programming positions. The part that bothers me about these emails is that most of them specifically say don't send them on to the mailing list, but are basically looking for me to give an active referral.

There are 150 people on the MHVLUG mailing list, 30ish people come to each meeting (about 15 solid regulars, then a rotating mix of another 40 people that come to many meetings but don't make it to all). I'm in a position where I actually know the skills of about 10 of those people, and all of them are very gainfully employed at the moment (and doubtful they want to move to Long Island anyway, as this latest request would like). I will happily forward along emails to the list about jobs, and anyone is allowed to post them there, as it is a good audience to try to get qualified people. However I am not a head hunter, and don't really have the time to play one on TV either.

I'm trying to figure out which of the following is the right response:

  • bitbucket - which is the current policy. If the email doesn't specifically state that it can be sent on to the group, it dies on the vine.- form letter - that I could bounce back immediately saying "we encourage posting of job opportunities to our mailing list, please resend in the following format and I'll forward it on"- web form for job submissions to the list - which either means bitbucket on the emails, or form letter pointing to the web form

Any opinions from the Lazy Web? Feel free to email or comment below.

Also, in the long standing debate that seems to pop up in various circles, I'm seeing lots of evidence that there are plenty of tech jobs for qualified, motivated individuals. This Linux Job Spam has seriously upticked in the last year, as has the rate of job posts I've seen on the NYLUG and Perl Jobs lists. No, jobs aren't falling off trees like overripe coconuts as they were in 2000, but they are out there if you spend some time looking and know what you are doing.

Related: Migration to Google Email · How to keep a group vibrant · 10 Years of MHVLUG

OpenWRT upgrade

I upgraded my OpenWRT firewall/router/wap last night, as traffic shaping broke on my previous build a couple weeks ago. I learned a couple of things in the process:

  • While ipkg looks like apt-get, openwrt isn't really set up to do a full system update in the same way as debian. To upgrade from where I was to RC6, I needed to reflash my base image.- Flashing an image is a lot less scary now. The inband mtd tool is very nice.- OpenWRT does a really nice overlay between a squashfs ro and jffs rw filesystem now. What that means to the layman is the base image never is modified, just changes on top of it are tracked, so you can easily revert a disruptive change to the base. I was using an old jffs only image, so this is a nice change. It also looks like a future update of the squashfs image will leave my overlay alone (not tested). I'll do the backup later to ensure I can recover after another backup.- There is a traffic shaper built in now (via the qos-scripts package) which is a Layer 7 classifier (so it doesn't matter if bittorent / http / anything uses different ports, as it is doing classification by examining the packets for content). One of the big reasons for me doing the upgrade is wondershaper on my old image broke for me after an update. The shaping by qos-scripts are quite good from all my tests last night.- The web configuration interface for OpenWRT is a lot better, and doesn't seem to break things horribly (which is what happened the last time I used it).

Upgrading firmware on any device is always a scary thing, however I'm really happy with what the openwrt team has done so far. I'm looking forward to getting my hands on an Aruba AP70 to play with kamakaze (openwrt-unstable) on. Moving up to a current 2.6 kernel would be a nice thing. :)

Related: Getting things done... one six month old project at a time · Ubuntu upgrade: solving the unresolvable package issue · Image tagging marathon...

MHVLUG December Meeting Notes

Debugging Hardware/Software on Linux Joe Appuzo presented the topic. There was an initial discussion about wants vs. needs when it came to a Linux system, followed by a lot of discussion on partitioning a system for success when it comes to system updates and upgrades. One of Joe's themes when it came to debugging hardware solutions was "value your time". If a piece of hardware costs $100 to get a Linux friendly version, and you spend weeks trying to get the non Linux friendly version working, you've come out behind in your wasted time.

Ed brought up the fact that Turbo Tax is a must have application, which still doesn't run on Linux. We discussed solutions around that, including using VMWare Server for that class of Windows Apps that you need from time to time. Many people in the room have a single machine on their home network whose job is to run windows, often headless with VNC. The benefits of virtualization here is power savings.

On the hardware point, there was much discussion on old hardware, and about when it's power costs exceed it's usefulness. Many folks in the room end up in that "collector camp" and do still have 486s running at home (as a router or such).

On the software debugging front, Joe didn't get quite as deep in that as I was hoping. Some very basic tips were provided including where to start looking by looking in /var/log, and dmesg output, as well as thinking logically about isolation. "Did this ever work?" "What changed?"

All in all people had a pretty good time, the crowd was chuckling quite often.

At the end of the meeting I gave away 4 books for review, and announced the fact that meetings are moving to first Wednesdays starting in January.


Vital Stats Attendees: 29
Start Time: 6:10
End Time: 7:55
Dinner Crew: 14

Related: MHVLUG November Meeting Synopsis · 10 Years of MHVLUG · 100 MHVLUG Meetings

Code Monkey on NPR

Listening to NPR's Weekend Edition this morning, and there was an interview with Jonathan Coulton who wrote and performed the song Code Monkey as part of his Thing-a-week blog this past year. had brought up Code Monkey during the past couple of weeks, and I hadn't gotten around to finding it yet.

If you are a software person, listen to the song. It will make you crack a smile, if not laugh out loud. Jonathan Coulton also has other songs which I would link here, except it appears that his site has been cratered temporarily by the NPR story. Hopefully it will be back soon.

Related: It's the First of May! · Reading Code · My Saturday Night