Older blog entries for badger (starting at number 30)

Ogg Radio

Yay! CBC (The Canadian Broadcasting Corporation) has Ogg Vorbis streams! If you go to the CBC page, scroll down a little and look on the right hand column. There's a box "For an alternative, try our streaming on Ogg Vorbis". This will bring up a dialog with the links to the streams.

This is apparently a test for CBC. They stopped streaming in Real Media Format in 2004 and concentrated on WMA only. If you want to see what's going on in Canada or like public radio, check it out. This is great!

On a down note, the BBC and NPR both stream in Realplayer and WMA but not in Vorbis.

My Laptop has been Freed

It's ironic that Chitlesh GOORAH has been posting how to install the proprietary ATI drivers on FC5. I'm celebrating because FC5's Xorg finally allows me to run the OSS ATI drivers on my laptop. Only with 2D at the moment because of bugs with the r300 drivers but at least I've been able to stop choosing between 1024x768 with the Vesa driver or somewhat unstable 1280x800 with the ATI proprietary driver. Since I was never able to get 3D acceleration with the proprietary driver, it's no big surprise that I'm happy to switch.

Other people with my laptop are slowly making headway with the proprietary drivers but with the issues being reported, I don't think I'm missing much :-)

I wanna live where the Fedora people do
(*) Apologies to Pulp

I've never lived among Red Hat users.

While I was living in Vermont, the extent of my Linux friends was four Gentoo users and an Ubuntu user. Now that I've moved to California the LUG I'm attending is over half Debian; SuSE and Ubuntu make up the majority of the remainder.

At my work we install Fedora-derived Linux Terminal Server Labs for schools. But in the office we're running Edubuntu and Linspire thin clients.

I went to a meeting at the neighboring LUG tonight. They had a summary of their monthly business including a report on their monthly installfest. Apparently, only one person RSVP'd to say they wanted help installing. And they wanted Fedora Core 5!... which the install folks told the would-be convert hadn't been released yet.

One member of the audience asked if anyone still ran Fedora....

After the meeting, the speaker was talking about the new Knoppix and then segued into Ubuntu. He had an interesting anecdote about plugging in a new Canon digital camera on Ubuntu and it just mounted the camera and offered to import the photo's in gthumb. (On his previous distro he'd had to hack something together with hotplug and autofs.)

Why can't I live someplace where the anecdote is about Fedora?

Or at least, somewhere where the people I'm talking with realize that this kind of out-of-the-box hardware detection is not an Ubuntu specificism but the fact that Ubuntu is integrating Project Utopia bits... just like Fedora and other bleeding edge distros.

That's why my birthday wish for this year (and yes, I've seemingly managed to fritter away another decade of life) is for Core 5 to convert everyone I know into Fedora users! If that works, next year's wish will be that they become developers :-)

QA Assistant
Finally put enough time together to test a new development release of QA Assistant. 0.4.90.4 is not so exciting because of what it implements, but of the number of things remaining before 0.5. Namely, a conversion script for save files in the qasave-0.1 format and making property interrelations scriptable.

Of the two, the conversion script should be pretty simple. The concept is to subclass the new CheckList class into a class called QAConverter. Then take the code for loading the old qasave format and use that to load the information into the checklist data structures instead of the new loading code. At this point we can use the CheckList's publish() method to publish to the new checklist format. The tricky part is also the neat part. The old qasave format didn't save the complete information on the checklist it was describing, only the changes relative to that checklist. In qa-assistant-0.4, this was constrained to the properties of the checklist, the state of the checklist items, and the output from the checklist items. These map fairly simply into the checklist-0.3 data so we should be able to load the new checklist and then replace the changed values with the ones from the qasave checklist. Now to test the concept.

Property interrelations are a bit harder. Essentially I need to determine properties from the checklist and then create them with a knowledge of how to update them based on other changes made to other properties. If it weren't for the dynamic nature of this problem, I'd quickly reach for my gobject stick and make each checklist property a gobject property. Then connect the properties to the notifications for property changes they're interested in. With dynamic properties, the problem can still be solved with gobject, but I can see several approaches and don't know which will be easiest/yield the best performance yet.

Update:
The qa-convert script works. I'm going to add some unittests to make sure I don't break it between now and 0.5 and it should be good to go. One feature down, one to go!

12 Sep 2005 (updated 12 Sep 2005 at 20:58 UTC) »

While I was at my parents' farm last weekend I saw my mother taking a post-it note off of a box of fruit and sticking it in a big plastic tray. Turns out she's been labeling each box of fruit that goes into the walk-in cooler with type of fruit and when it was picked. As the boxes get emptied, she saves the labels so she can figure out how many boxes of fruit were picked at the end of the year.

Being the computer geek that I am, I said, "Let me put those in a database for you!"

Now my parents are willing to try all sorts of things on a computer but in the end they just want things to work the way they expect. So what I wanted in the design of this application was something I could design and implement under Linux that they could use and view from their Windows computer at home. My plan was to create and fill the database on my end and design a small web front-end for my parents to generate and print reports from their house.

This would also give me an opportunity to take a look at some of the Python-based web frameworks that have entered Fedora. mod_python's psp from Fedora Core; Quixote and cherrypy from Fedora Extras. After a few days of trying out examples from all three frameworks I came to some tentative conclusions:

psp is a direct competitor for php. It is the simplest to setup on Fedora Core as it is a simple matter of uncommenting some code in the mod_python config file. The mixing of html (where whitespace barely ever matters) and python (where it most definitely does) is worked out pretty logically, but viewing the code still proves jarring. Just using mod_python's req.write() method makes things look more like a python program but doesn't make reading the html any easier. Like php, psp doesn't take a definite stance on separating the processing portion of a program from the GUI portion. This makes it very easy to write poor code... but also seems to make quick, one-page scripts a distinct possibility.

cherrypy does not integrate with Apache (in cherrypy's current stable version). It sets up its own webserver which handles requests for the documents. You can configure Apache to redirect requests to the cherrypy server if you want Apache to handle static pages/virtual domains/etc but the cherrypy server still has to run in the background to handle the requests. cherrypy does not include its own templating language (there is a recommended add-on for this but it's not necessary). cherrypy got some rave reviews from the PyWebOff as a quick easy way to get an Internet application built. Looking over cherrypy's docs, the framework's model seems to be mapping python objects to URLs. In many ways it looks like cherrypy could be a standout framework for a web programmer. Unfortunately it doesn't fill any of the requirements I have for (the initial stages, at least) this particular application. I need a templating system that is better than php and about as easy to use. This is a web framework without templating that doesn't leverage any of my previous Apache knowledge. Perhaps at a later stage in polishing this application I'll look at porting the overall architecture to cherrypy but for now it's solving different problems than I need.

quixote integrates with Apache or runs standalone. The documentation on how to do this is somewhat sparse. There are examples of most things but figuring out how to adapt those to your needs isn't always clear. I spent quite some time trying to figure out if I could enable a quixote application from a .htaccess file or .psp driver script in case I ever needed to use this on a hosted server where I didn't have access to apache's configuration. This led down several promising alleys but never quite clicked. So I never truly got to play with the application framework inside of Quixote. From the documentation and tutorials it looks like it shares the cherrypy metaphor of mapping URLs to objects in python. However, it looks more procedurally oriented, mapping functions rather than objects.

The real find, however, was Quixote's templating language, PTL (Python Template Language). Until I saw this, I didn't know what I was missing. Conceptually a PTL template is a python function wherein every expression within it becomes part of the return value of the function. So this template:


def hello [html](name):
closing = "

Good-Bye"
"""
<html>
<body>

Hello %s
""" % (name,)
closing
"""
</body>
</html>
"""

will return a simple html page that does what you expect. The [html] type template even quotes any html reserved characters (such as &, >, <) inside of variables for you so there's less chance that user supplied input can insert malicious html into your web page. To me, this format is much more readable than any of the asp/php code-within-html-style languages.

After a bit of experimentation I was able to get this portion of quixote to work from within mod_python. I started with an index.psp driver file that had no html in it, just the code to enable PTL and load things:

<%
import sys
from quixote import enable_ptl

# Enable loading modules in the script's directory
sys.path.append('/home/badger/public_html/orchard')

# Enable ptl
enable_ptl()

# ptl templates. common.ptl and front.ptl resp.
import common
import front
header = common.Header(title='Orchard Database')
footer = common.Footer()
page = front.FrontPage()

# And a mod_python call to output the page
# Note: Must format header/page/footer as strings as the raw objects are not
# strings. Instead they contain an __str__() function that returns the page as
# html. This could theoretically allow us to use the objects for output to something
# other than a webpage in the future.
req.write("%s %s %s" % (header, page, footer)
%>
Viola!

The nice thing about this is that I was able to get it up and running quickly. No messing around with Apache configurations since mod_python was already installed. Standard python-style hacking to define objects for pages/subsets of pages, meta-pages, etc. There are some drawbacks, though:

1) As I generate more pages, I find I'm reinventing some of the functionality present in the frameworks (quixote or cherrypy) in order to map URLs to my python page-objects.

2) mod_python byte-compiles the imported python files and then uses that in subsequent calls to that mod_python thread regardless of whether the *.py/*.ptl has changed. While developing and fixing bugs in the code, this quickly becomes annoying as I've been having to restart apache to get mod_python reloaded.

So PTL + mod_python looks like it was good to get me started quickly on this project but it's going to be PTL + one of the frameworks that I end up experimenting with for bigger things.

Moving
We're settling in nicely to our new place. My other two computers are sitting on the floor, unplugged, though. It's been so hot here I haven't wanted to turn them on.

A few boxes of our stuff are sitting out in the garage as we look for more cheap shelving. I'm a little concerned about that as we've already found two black widow spiders in the garage. Much to my wife's dismay, I caught them and released them at the end of our driveway. I'm hoping the spider gods are happy with that because I really do have a fear of spider bites. Living in Vermont, I'd grown used to not having to worry about these things.

If anyone is in the Roseville/Sacramento area let me know -- I need to find the Linux community here.

Farming
My grandmother owns a small family fruit orchard up here that my parents are farming. I've been helping out there. It's the middle of peach season so things are pretty busy. Farming is a dead-end in this part of the country, though. With more and more rich people buying land here and building million dollar homes, the land we're sitting on keeps becoming more expensive to maintain. Water was metered for the first time last year because of all the new residents. For a farmer needing to irrigate crops this is outrageous. My parents are also looking at a heavy tax burden because property values have shot up (not to mention if my grandmother dies -- we'd have to come up with over half-a-million dollars for inheritance taxes). My father told me yesterday that there's a saying "farmer's are land rich and dirt poor." As long as they want to farm they're barely going to make it.

Job
One of the people that stops to buy fruit from my parents is an IT consultant here. She took a look at what I've done and told me I should look into a job working for the State because it's got good benefits, pays for education, seldom fires people, and basically provides security. To get there, she advised spending a few hours each day "learning a hot new technology". And then including them on my resume. And that I should be willing to work on something other than Unix. Ugh. I didn't tell her that I actually prefer Linux, BSD, and the OSS platforms and even branching as far as Solaris makes me question my purpose in life :-)

Her point seemed to be that finding a job is important. Liking it, less so. After talking to her I gave my father the executive summary and ended with "I want a job that I wouldn't ever want to retire from." Which seems to be my whole problem right now. I would ideally like to be paid to program python apps or OSS software. Barring that, working with Linux or another technology where I can feel I'm helping to further the integration of Free Software and society. Unfortunately, no one I've talked to here seems to think that's a viable possibility for me. I might as well go stock shelves again.

Fedora, QA Assistant, and Email
I'm down to 788 unread messages! A bit skewed as that includes review requests for Fedora packages that I'm not going to look at. There are quite a few others that I want to see make it through QA, though, so hopefully I'll have time to work on reviewing soon. The new buildsystem Seth and Dan have put together is far better than the processes we had before and I think the new bugzilla-based review process is promising as well. That one's not a panacea, though, as I already see a backlog starting to form there. Only one way to fix that -- more people spending more time doing QA. Guess I'd better get to work.

All my recent non-job hunting, non-email reading, non-unpacking, non-farming time has been going into QA Assistant, though. I've knocked the uimanager code together in the past month which makes extending the program via the checklists pretty easy. I'm hoping to make another development release by the beginning of next week if I can piece together enough time for one more feature. My pre-0.5 TODO list is also quite small which is encouraging. Working on this program is what reminds me why I have to keep looking for a python/OSS programming job even though it's not the smart thing to do. Programming == fulfillment.

11 Jul 2005 (updated 11 Jul 2005 at 13:27 UTC) »

Hmmm... The new phone company seems to use PPPoATM for its DSL. Looks like I have some phone calls to make to see if I'm going to have to purchase a new DSL modem....

Movers
Waiting for the movers to arrive. Chisty and I have been packing since Friday. Mostly Christy as I get crazy when packing. Last night was okay, though. Maybe the 4AM hard-to-stay-focused bit overrode the stress-case-where-transitions-are-concerned. Wonder if I can take anything useful from that?

Anyhow, everything that's going is now packed. Just waiting for NorthAmerican Van Lines to show up. Hoping there's no screw up on the date and time. They scheduled us for this week. Last week when they had a definite date they called to let us know they'd be here on Monday in the morning. But for some reason they showed up at 8AM on Friday. A few phone calls later and we were told that Monday was very busy and they had been hoping they could load our stuff early. Since we'd been planing on using the weekend to pack, that didn't work out. They promised to still show up today as originally planned. We'll see.

My two year-old has been asking about (demanding to) watch TV all morning. Luckily he hasn't figured out how to plug the television in and out. Unluckily he's not willing to acknowledge the logicality of leaving the TV alone in preparation for the movers arrival.

Away from the Internet
We've found a place to stay in Granite Bay, CA. Called the local telephone company there. Phone and DSL should be hooked up on the 26th of the month. So, not accounting for Murphy, I should be lacking in Internet connectivity for ten days. I'm wondering how much email I'll have by then and how long it'll take me to dig out from under it. At least the hiatus will mean I can concentrate on some of the programming tasks I've set myself....

I do believe I'm an information addict. I habitually read all the email from the mailing lists I subscribe to. When looking for information on google, I click through a couple pages, opening new tabs with whatever looks half-way promising. Then I read those eight or so pages (and any threads if they're part of a mailing list.) Most damning of all, when I'm at a computer without Internet access, I often find myself fuzzily typing on keys unable to concentrate on the task at hand. This condition usually lasts for a few hours after which I give up on whatever work I was attempting to do and go find a newspaper to read.

Hopefully, ten days off will force me to resume creating content instead of consuming it.

Well, I'm moving. From Vermont to California. It's a big production. Three kids and all their stuff, Christy and all her stuff, me and all my computers :-) Don't have a house or a job lined up yet but we'll be staying with my parents for a while and helping out on the farm so we're not cutting adrift entirely.

They don't have high speed Internet access, though, so I'll have to figure out some new hosting arrangements for my software projects and figure out whether I can continue to maintain my packages for Fedora Extras or not.

Expectations

Reading the default homepage thread on fedora-devel brought up the interesting point that expectations for a group of users is both hard to figure out and not necessarily the best choice. I agree with that. Instead of asking what a user expects, it's much better to ask what a user needs. In the case of default home page, I think the release notes are a poor choice because I doubt most users need to see them there. Good admins will read the release notes before they install the operating system. End-users will be much better served by google, yahoo, or some sort of custom portal page (either online or statically placed on the filesystem) On top of that, the more knowledgable a person is, the more likely they'll customize their homepage away from the default. So, which group of users is it that will actually see the notes in the browser?

21 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!