Archive | Home Page

Articles to appear on the home page (nearly all)

CentraLUG notes, 7-April-2008: Coleman Kane and FOSS development for Windows

Eight people attended the April meeting of the Central New Hampshire Linux User Group, held as usual at the New Hampshire Technical Institute Library, Room 146, on the first Monday of the month (see below, we’re evicted until fall).

Coleman Kane was the main presenter, showing us how the MinGW and GNU binutils packages could be used to create a cross-compiling environment to create Windows-compatible binaries on Linux (or actually, starting from BSD in Coleman’s case). He had a great slide deck and example source and was able to push through 55 slides in 75 minutes in a comprehensible fashion. The pace was fast and furious as he covered all of the highlights, took questions from the audience, edited and compiled code, and switched the projector between his BSD box and a Windows machine to show the code running. Whew! Well done and very informative!

CentraLUG’s meetings will be on the road for the summer. The library will be closed for evenings during finals week (!) and the summer hours have the library closing at 6 PM until fall semester begins. “See you in … October!” We’ll be announcing the location for upcoming meetings Real Soon Now. You’ll want to see Ben Scott’s May presentation on “The Linux Server That Could: Setting up a Small Office Server.”

Thanks to Colman for his great presentation, to Bill Sconce for providing the nice projector, to the NHTI for providing the facilities, and to all who attended for their attention and participation.

Listening last week to… April 5, 2008

Backdating this post a bit, as I didn’t get it posted yesterday,…

In Fresh Ubuntu, Harlem and Peter lead off this week with a conversation with Michael Ramm about productivity and GTD in “Michael from Blackbelt Productivity.”

PyCon2007 had a good and a not-so-good set of audio recordings: “Python and wxPython for Experimental Economics” was quite interesting, though there wasn’t as much deep programming insights as an interesting diversion about experimental economics. “Iterators in Action” (slides) was a flop, though. The recording was in the back of an echoing hall, and cut off in a little less that twelve minutes. I’ll ping the organizers to find out if that can be resampled.

Clay Shirky talks to Moira Gunn on Tech Nation “Here Comes Everyone.” Clay did one of my favorite presentations of all times, audio available on IT Conversations and a white paper here. Clay’s got a new book out and he’s marking the rounds of the media. I heard him on “On the Media” last week.

Tim Spaulding talks with Jon Udell about LibraryThing. in Jon’s “Interviews with Innovators” series on IT Conversations. I mention LibraryThing two years ago on this blog, and have been a regular visitor to the site. They continue to come up with intriguing features and make browsing through the stacks a lot of fun.

What I’ve listened to this week, 29-Mar-2008

PUI (Podcasting Under the Influence), Peter Nikolaidis is “drunk with the power” of swapping roles with his co-host Harlem for this week’s podcast of “Fresh Ubuntu,” titled “Peter’s Big Break.” These two guys put on a very good show each week, with high-quality audio, the week’s Linux/Ubuntu news, a “man page minute,” software reviews and more. Worth a listen. (Yes, they read a letter from me in this episode. At least I didn’t write too gushy a fan letter. How embarrassing.)

Over at The Conversations Network, Executive Director, Doug Kaye has a brief posting and audiocast on the new features of The Conversations Network. They are a 501(c)(3) non-profit organization that provides tremendously useful audiocasts for any computer professional. I’m a donor (the fact that I’m a “major” donor is an indication of how underfunded they are!) and encourage you to take a listen and contribute if you find it as valuable as I do.

Jon Udell has a regular “Interviews with Innovators” show on IT Conversations. This week, he talks with Ward Cunningham, famed creator (and co-author of the book of the same name) of “The Wiki Way,” about his latest venture and some of things he’s learned along the way.

Cyndi Mitchell had a sponsored keynote at RailsConf 2007 promoting the RubyWorks stack for the enterprise.

The Essentials of Stackless Python” from PyCon 2007, NOT from the Conversations Network, but direction from python.org

Tool of the day: lynx

lynx is a browser that renders html files as text, optionally using color and bolding. A client needed a word count of a bunch of html files and after installing lynx I used it in batch mode:
lynx *.html --dump --nolist | wc
The –dump option dumps the returned text rather than present it in an interactive fashion; the –nolist option prevents all of the anchor tags from being listed at the end of each document. The pipe character pipes the result of the function to the wc (word count) function that displays the number of lines, words and total characters of what it was fed. Following the UNIX principle of “small tools, loosely joined” this function could easily be included in a larger one, with perhaps sed or cut to isolate and format just the one number of interest, or the –word option added to the wc command to return only the word count. There are many ways to do it, another very Good Thing.

Should you buy software from a web-storefront-only operation?

A client had a demo web site developed by someone else and they were really excited about the interactivity. It was a very rich client application, with drag-and-drop and sizers and interactive widgets. The client wanted my team to use the same platform, which they thought was something-Dot-Net. Once we were finally able to chase down the developer, it turned out to be a commercial Javascript library. We looked up the vendor, and it is a curious site.

They have an online store, one of those generic things with box-shots of a product that’s download only (there must be an add-on for Photoshop or GIMP to make these fake boxes, don’t you think?), an “About Us” page that has the usual mission-statement-ish stuff, but no “Who We Are” or where they are, a “Customer Support” page that lets you submit a ticket online, no history, no searching. The only contacts are email addresses (generic, “marketing,” “legal,” “info” not “bobsmith@example.com”) and an 800-number I have no doubt is an answering service. There’s no online forum. It looks like no one’s home.

Searching about them in Google, there’s their web site, of course. There are a couple of mentions about XSS (cross-site scripting) and a few other exploits posted to the usual security sites, a good sign that someone is actually using the code. A couple of echos of their press releases. And… nothing. No user communities, either a forum on their web site or an ad-hoc third party set of posts. No additional information. No one posting anything, anywhere from @example.com. This is pretty strange.

So, what’s the deal? My best guess is that this is an off-shore operation without any US representation nor tech support, perhaps even no ability to provide support in English. Between a proprietary license and questionable support, I’ve recommended we do some more research and see if some of the open source or openly-available Javascript libraries can fulfill the client’s needs.

Recommendations for FOSS podcatcher?

I listen to audiocasts (I don’t have a *pod, and don’t agree with the brand implications. Since I listen on my ThinkPad, they’re PadCasts for me. Let’s say “audiocast” or we could be really retro about it and refer to them as “audio recordings” since they’re neither cast nor podded.) while working out and go through quite a few. The Conversations Network has been a great source for these: IT Conversations in particular. Phil Windley’s Technometria is one I try to catch each weekly episode. Other features, like David Heinemeier Hansson’s keynote at the 2007 RailsConf or Tim’ O’Reilly’s keynote as OSCON are other favorites. There’s lots of other good stuff on Coversations Network, so much so that I’ve contributed to the network, a non-profit 501(c)(3) organization.

But there are other, far smaller operations. I met Peter Nikolaidis through the Dartmouth Lake Sunapee Linux User Group, and he does an audiocast called “Fresh Ubuntu” with a fellow from the west coast named Harlem, a man with a voice for radio. An interesting show with contributions from many others, too, focused on Ubuntu, but ranging over many of the topics involving Open Source.

I like to keep up with all of these audiocasts (and would welcome more recommendations from others!), but it involves manually visiting the web site, checking to figure out if I’ve heard the audiocast already, and downloading it. I’m looking for an automated way of doing this.

I was (and still am!) a regular subscriber to Dave Winer’s Scripting News, and listened to his first audio enclosure (imagine that!) in his RSS feed, accessible directly through the Radio Userland built in feed reader. Since then, I’ve changed hardware a few times, operating systems at least twice, and feed reader software more times than I can recall. I’m looking for an application I can run from my Linux desktop that will regularly check the RSS feeds put out by the audicasting sites and download the new audiocasts of interests. Bonus points if the software is under a FOSS license, +1 for efficient and frugal resource use, cool interfaces, etc.

One recommendation off the Conversations Network is labeled iPodder, but points to JuiceReceiver, which doesn’t “yet” have a Linux port, despite being written in Python. It seems like there are close relatives to this code in CastPodder and IcePodder, but it’s not clear to me which of any of these projects is alive, well and legitimate. It appears to me that IcePodder has roots in the others, with directories still named iPodder (likely renamed due to near trademark infringement of a well-known player?) and a CastPodder manual buried in the download, dated 2005. (Here’s a clue: IcePodder’s About page says “IcePodder is a podcatcher (RSS client) for Linux conceived as a replacement for CastPodder. ” So my guess is that iPodder begat JuiceReceiver begat CastPodder begat IcePodder. Whether or not I’m on the “right” branch is something that a little more research ought to bring to light. (Update: a little Googling confirms the theory, and it appears to be pretty amicable.)

IcePodder was an easy install: download, unpackage, review the README and INSTALL, review and run the install.sh script. Written in Python, using wxWidgets for UI, GPL. A little shaky in operation – I’ve crashed it once or twice, but I’m running the old “stable” release rather than the current code, so I should upgrade before passing judgement. The code needs some serious search-and-replace s/CastPodder/IcePodder/g but it looks pretty promising. Anyone else have recommendations?

UPDATE: gPodder also looks promising. Don’t let the version 0.10 fool you – apparantly, that’s the version after 0.9, according to the developers…

Retro-tagging a WordPress blog

I’ve got a WordPress blog with a couple thousand posts, upgraded several times, from a TWiki blog to a Radio Userland blog to WordPress and a couple of upgrades. And I’d like to add the new taggin features available in WordPress 2.3. Here’s what I’ve figured out from poking around: what used to be wp_category is now wp_terms and terms contains both categories and tags. The categories are hierarchical from a self-join using the group column to link back into the term’s term_id primary key. wp_terms in turn links into wp_term_taxonomy: that’s got a column named taxonomy that contains groups like ‘category’ and ‘link_tag’ and a parent column that self links into term_id, which I think is a duplication of what wp_terms is doing. There’s also a count field, meaning that we’re denormalizing the count of categories and tags, meaning if we hack at them, we’ll need to manually update this (see below). Finally, the posts are related to categories and tags using the table wp_term_relationships that’s a many-to-many link from the post’s primary key, object_id, to the term_taxonomy_id primary key of the wp_term_taxonomy table.

So, here’s the recipe to retrofit tags into some posts. I used phpMyAdmin as the web interface into the MySQL table that holds WordPress’ data. You can do the same via the mysql terminal interface or using other remote connectivity like ODBC or your choice of tools.

1. Create or update a tag in the wp_terms table. Note the term_id PK.
2. Insert the term_id and category of ‘post_tag’ into the wp_term_taxonomy table.
3. Create the linking records in wp_term_relationships with the following SQL. In this case, I’m tagging with “Ruby” any post that has “Ruby” in the title or post.

INSERT INTO wp_term_relationships
SELECT wpp.id object_id, `term_taxonomy_id`
FROM wp_posts wpp, `wp_term_taxonomy` wptt
JOIN wp_terms wpt ON wptt.term_id=wpt.term_id
WHERE wpt.name='Ruby'
AND wptt.taxonomy='post_tag'
AND (wpp.post_content LIKE '%Ruby%'
OR wpp.post_title LIKE '%Ruby%' )
ON DUPLICATE KEY UPDATE
wp_term_relationships.term_taxonomy_id=
wp_term_relationships.term_taxonomy_id

(The ON DUPLICATE code is just a quick hack to tell MySQL to ignore it if you’ve already tagged some posts Ruby by hand.)

4. Hack away. When you’re all done, you’ll want to fix the count in the table with the code below:

UPDATE wp_term_taxonomy wptt
SET wptt.count=
(SELECT count(*)
FROM wp_term_relationships wptr
WHERE wptr.term_taxonomy_id = wptt.term_taxonomy_id
GROUP BY term_taxonomy_id)

Slide presentations: S5 and Google Present

I’ve mentioned and endorsed S5 (the Simple Standards-based Slide Show System, if memory serves) before, as a great way to write a presentation, and at the same time generate slides, handouts and the HTML to post it to the internet, all as the same set of documents. Creating a set of slides in S5 means I don’t have to worry if the machine at the presentation site has a ‘viewer’ as long as they can read standard XHTML and run Javascript. I can post it directly to my web site archive of shows, and carry it on a USB tab in case my laptop decides not to work.

Google has recently announced Google Present as part of their free Google Apps. It’s a pretty cool AJAXy interface familiar to anyone who’s worked with one the many slide programs. One killer feature is that it will import PowerPoint files, even some of the ugly old ones. You can publish them online as I’ve done here with a Y2K presentation from the dFPUG Conference. The import came over with pretty good fidelity, far better than the original HTML export that PowerPoint 9 attempted. So far, so good. But what happens if you’re planning on doing a presentation and can’t trust the internet will be available (important safety tip here, folks: you can’t trust the internet to be available. Murphy has a special place in his heart for presentations)? Even better news: Google Apps also lets you download a copy of this. It comes down as a ZIP file, handy to throw on a USB tab (you should save an unzipped copy, too) and put in a different bag than the one that holds your laptop. It unZIPs to an HTML file and a couple folders holding the CSS, JavaScript, images and supporting files to run the show and runs from a local disk. You could upload this version to your web site, too, and look what you get: a slick slideshow with slides, fonts and graphics that scale to size of the screen (essential when you discover the projector can only handle 800×600!) and redraw pretty snappily.

Finally, S5 has a competitor! This one looks promising.

Powered by WordPress. Designed by Woo Themes

This work by Ted Roche is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States.