gentoo's growth

DistroWatch has yet another “the sky is falling” post about Gentoo, and, going against habit, I’m going to comment on the situation in general.

I see a panicked argument on the threads every now and then that Gentoo is dying because of a lack of manpower.

Well, I’ll concede that as a distribution, we can use more volunteers. On the flip side, try to name one open source project that couldn’t benefit from more contributors. So in that case, we are no different.

One simple thing that I’ve realized lately is that the whole “foo is dying” argument rests on one arbitrary assumption: that a project has some standard of manpower that it needs to meet, and if it isn’t, it’s falling short. With that principle in mind, I don’t think Gentoo has ever been “dying”. It’s always been either growing or shrinking in strength, but dying implies that it’s not meeting up to its designated standard. The thing is, there is no standard.

Once upon a time Gentoo would have been just a brainchild idea by one person (Hi, Daniel), and grown from there. Was Gentoo equally dying when it lost maybe one developer among the five that were working on it? My question is basically this — where is the peak that we should constantly be comparing ourselves to? Is every record for growth our new standard? If you manage to get a 42 inch waist and gradually lose 10 inches, does that mean you’re dying? Sure, you can’t meet your same capacity as in the past, but that doesn’t mean you’re going to up and disappear.

The nature of any project — software, community, corporate, whatever — is that people come and go. People get burned out, want to move on, do something else. I would never be happy working on the first job I ever got, and by the same token, I don’t see myself working on Gentoo forever for the rest of my life.

Experience on my part has shown that while a group of users may unitedly cry the mantra whine that Gentoo is dying, individually, the reason is never universal. It all comes down to the the perception that it’s falling apart because one or a few small parts of what they want supported no longer is. Just because one popular desktop manager isn’t in the tree, does that mean that the collective work of every other developer is worthless? That’s an awfully short stick to measure by.

I’ve always been positive and optimistic about the future of Gentoo. One thing, more than any, I’m certain of, is that even should the distribution collapse in on itself and completely go away, the idea will never die. Gentoo has too many original ideas swirling all around it that will live on even if the primary project doesn’t.

I don’t know about anyone else, but everytime I want to go Planet Larry, I still type in, even though I ditched the domain a few months ago.

Well, I got tired of it not working, so I re-registered it, and it redirects once again as normal.

Also, we can always use more bloggers — if you have a Gentoo blog, lemme know about it, and we’ll get you added.  It’s a very informal process, just send me an email with your blog URL and stuff.  Now that I think about it, I really need to catch up with all the new Gentoo devs and get them on Planet Gentoo as well. Slack…

Finally, I decided I’m going to create a feed specifically for ex-developers, but since I’m too lazy to go out and find their blogs (and I don’t think I still have an old copy), if you guys could send me your info, that would greatly help to speed things along. Update: It’s too much work to create a separate feed, so I just put them back in the main feeds. Now, behave. :)

And here’s an image just because this blog post is so boring, it needs one.

pimp my mythvideo: another navigation patch

I’ve been working on a bug all night I noticed the other day that really annoys me in Myth, and I stayed up poking at the code trying to find a way around it. Actually, it’s a little weird how I “discovered” it, since I always perceived in the back of my mind that there was something annoying, but never pinpointed it specifically what it was doing until this week.

The bug is this: when you are using gallery view in MythVideo and you enter a folder, when you exit back to the main root menu, it repositions that folder at the top, regardless of where it was when you entered the folder.

Some pictures will probably make more sense.

Here is a screenshot of what my folder display looks like when I enter MythVideo’s gallery for the first time, and browsing for a folder to select:


Now, when I select that directory, I’ll see the files in there. But when I hit Escape or select the previous folder icon, it will return me back to the root menu. However, the folder layout has changed, and the row that the folder is on, originally the bottom, is now at the top.



Moving around the position of the folder layout throws my brain for a loop every time it happens, because I’m expecting to see the same display as when I was just in there, and since it’s different I have to rescan the layout visually and reprocess where I am and where I want to navigate.

This patch fixes that, and keeps the layout the same when you return to the root window.

I went ahead and added a new ebuild in my personal overlay which will install it for you if you don’t want to patch it manually. The ebuild is mythvideo-0.20.2_p15087-r2.ebuild and it also includes my original navigation patch.

Now then, there’s one small bug in it that I’d like to fix, but I don’t know any Qt or C++, and it’s a miracle in itself that I managed to even get this far on my own. In fact, I’m quite proud of myself actually that I even figured this one out all by myself, go me. :)

I originally patched it so that it would just reposition the parent view around the last folder row you were in … that is, I was doing the same thing, but not specifically for the root menu, just any folder you went into. That worked fine, provided your tree didn’t have more than one level. The second you went into a third directory Home -> Foo -> Bar, the 2nd variable would overwrite the first one so when you returned to the parent it would be whacked. If that makes any sense. Anyway, for someone with Qt knowledge, it shouldn’t be hard to fix so that it always does that no matter which folder you are in, and at what depth level. I have no idea how, though.

It’s actually kinda interesting how I figured this one out. There were two things I noticed from poking around in the code. One, to get videogallery to dump out variables to stdout, I would add this to the code:

VERBOSE(VB_GENERAL, QString(“Some text.”));

VERBOSE(VB_GENERAL, QString(“Some variable: %1”).arg(someVar));

Yah, brilliant hacking on my part, I know, but I managed to kludge my way through it and figure it out.

The second thing I realized was that if I wanted to find out if I was on the parent tree or not, I would have to create a new instance of GenericTree and check to see if getParent() returned the main root or not.

GenericTree *lparent = where_we_are->getParent();

Then, if lparent != video_tree_root you would know you’re not at the top yet.

Anyway, yah, my awesome debugging skillz at work there, but hey — it took a lot of patience and more than a few rebuilds, but it worked, and I’m happy. Woots.

One last thing — the patch will also apply cleanly against current SVN (r18336 as of this writing) since it hasn’t changed in a good while, so you don’t have to use my ebuild if you don’t want, or you could just rename it to the latest snapshot in portage and it’ll still apply.

salt flats, utah

Last Saturday, my friend Jason and I made another trek to the Salt Flats in northwest Utah. It’s actually right on the border to Nevada, about 2 minutes away. The Salt Flats is an incredible place — there is just this huge plain of tightly packed salt that stretches for miles in every direction, and you get to go out there and drive as fast as you freaking want. It’s great. :)

It’s also where a lot of world-record speeds are set, though I didn’t do any myself. I only got up to 120 mph this year, getting slightly nervous after that and backing off. I think Jason got around to 143 mph or so. Interestingly, it’s actually a lot easier to go fast and you don’t notice it nearly as much if you’re racing someone rather than just going fast by yourself.

We had a great time, though. Last year when I went the salt was kicking up everywhere and I literally caked my car in the stuff. It was at least half an inch thick on the back of my car, it was so crazy, and it took a very long time to clean off. This year, it was totally different. They had a long 8.2 mile strip of raceway completely flattened. It was just like driving on asphalt, it was so sturdy.

We met up with a professional photographer who wanted to build his portfolio, so took a lot of video of Jason driving his Mustang. The videos turned out really well, you can check them out here.

I had a lot more fun this year as well. Last time we went, I had just bought my car, and I was still learning how to use a stick shift, and I burned out my engine quite a bit screwing things up. This time I only choked about twice. Once, we found along the raceway this one part in the middle that was a little more salty than normal, and when we would peel out the salt would just spit up and go everywhere. So we decided to do a drag race starting from there, and as I took off, I redlined in first in no time flat, kicked it in second and kept spinning. I was in third gear by the time I had actually gone about 20 feet, because we could barely move. It was hilarious. :)

After we finished driving around for a few hours, we decided to go exploring a bit before leaving. I wanted to drive off in the distance and try and reach some mountains. We headed off, but the plains got really bumpy and it made us both a little nervous, since we didn’t wanna get stuck out there. As we were driving along though, in the middle of nowhere, we found a port-a-potty out there. It was at least 12 miles away from any roads, and I couldn’t even see it until we got quite a ways from the track. That was another highlight of our visit. Random toilets in the wilderness.

Jason put together a video of our visit in a blog post. Just as a warning, the first four minutes is of him singing, so you may want to skip ahead.

Good times all around, can’t wait to go back next year.

adventures in wifi: openwrt wireless bridge

Tonight, I managed to get one item off my wishlist done that I’ve wanted to accomplish for a very long time — I managed to switch my mythfrontend setup from a wired connection to a wireless one. I have had network cables running all across my house, from my living room through my kitchen to my laundry room where my media server is, and it always drives me nuts seeing the nasty things running around everywhere. With a bit of hacking, though, I got my Linksys router running OpenWRT to act as a wireless bridge to my wireless router. It works pretty good, too. Theres some small latency on the myth frontend, but with caching the playback it’s an acceptable few seconds to wait for playback.

Here’s how I got it all setup. First of all, I have a Linksys WRTSL54GS that I’ve had for a few years, and it works great as a router. It’s running OpenWRT WhiteRussian 0.9 with X-WRT on there. Up until tonight, I’ve been using it as my main router, but since openwrt provides me with everything I need to turn it into a secondary access point on the same network, all I needed was a second wireless router.

So, I went to Circuit City tonight and picked up a Linksys WRT110. After playing with it for an hour or so, I must say it is nice. It’s got this slick design that makes it seriously look like a little alien blinking at you. There’s no external antenna either, which is nice. Just really well designed. Plus, it seems much more responsive, though that could just be my imagination. I can’t put OpenWRT on there, but that’s okay — I’ve always been pretty happy with Linksys’ stock firmware if I don’t need to get down to the nitty gritty. And it’s still much simpler than Netgear’s and gives you more options. I’ve gone through a few Linksys routers in my day, and I didn’t expect to be disappointed, and I haven’t been yet. I picked mine up for $60. Not too bad. Plus, it supports the 802.11n draft, so it’s nice to have that for when I need it.

Anyway, now the new WRT110 is going to be my new router. I quickly set that up and set it next to my media server, ready to do its job.

Setting up OpenWRT wasn’t quite as simple, but really the hardest part was reading the documentation and understanding what I was supposed to be doing. I locked myself out of my router while setting it up, and managed to get back in failsafe mode and restore things, thank goodness. That’s happened before. Networking is seriously not my thing, I dunno why, but I have the hardest time just grasping the most simpe of principles. So I’m usually pretty dangerous and clumsy when it comes to messing around with nvram settings. My advice, though, is to simply document everything you change, and what the original settings were. Probably most importantly, though, is to see if you can get into failsafe mode if you do screw things up.

The instructions for setting up my openwrt router are here. I went with the routed client mode. I have no idea what that means. I’ll explain it in layman terms though. Basically the internet wifi router (the WRT110) acts as the main router (, and the openwrt bridged router (the WRTSL54GS, has it’s own subnet. Everything is pretty stock on the first router, and there’s nothing you would need to change to get it working. The openwrt router uses the wireless interface to connect to the first router using DHCP. So basically you’re turning the wireless part into a client instead of a server. But it will still act as a LAN router besides that, handing out DHCP leases on it’s own subnet ( for whatever you plug into the onboard ports.

I’m going to borrow some ASCII art from another part of the openwrt wiki to illustrate my setup:

                / - - - Wireless Clients
INTERNET-----WRT110- - - - - - - WRTSL54GS
             | | | |            | | | |
            4 clients          4 clients
----- Cable link
- - - Wlan link

I don’t wanna get into a halfway written howto on what I did, but I’ll illustrate where my changes (for *this* specific router) were different from the instructions. Actually, all I had to do was consult the page that lists my network configuration devices, and replace those with what the howto said to use.

Specifically, here’s all I changed:

  • nvram set wl0_mode=sta
  • nvram set lan_ipaddr=
  • nvram set lan_ifnames=eth0 (howto says vlan0, but my LAN is eth0)
  • nvram set wan_ifname=eth2 (howto says eth1, but my WIFI is eth2)

That’s about it. Commit the changes and reboot the router. You can also confirm that the eth2 device is the wireless one by running iwlist on it:

  • iwlist eth2 scanning

After that, I just had to take down the wifi, set the new ssid and channel, then turn the wifi back on, and it worked. :) I must say I was impressed it was so easy. I’m not exactly sure what my signal strength is like, but it seems to be a healthy connection, even though my walls are made of Kryptonite.

The first thing I did was poke at mythfrontend to see how badly the damage was gonna be on playback. Without any options, it sucked, skipping a bit. I threw in framedropping (mplayer -framedrop) and that helped a little, but would still bounce badly on any scenes with motion. I threw in an 8mb cache (mplayer -cache 8192) along with framedrop and it looks great. It does take a few seconds to start up, but that’s fine. One thing I was worried about was if mplayer-resume would handle it or not, since I thought that using -cache and -ss (starting point) would cause it to crash, but so far it’s working fine.

Most people probably wouldn’t have problems with their media files to start with. Mine are about as large as they can get, with MPEG2 video and AC3 audio. Over 802.11g it works fine though. No real complaints. Myth is a bit laggy pulling up the menus when I browse the folders in mythvideo. Everytime you go in a new directory it takes a good 2 to 5 seconds to come up. I’m guessing it’s my folder covers (usually between10 to 25k), and it has to display 30 of them at a time. I dunno. Could be anything.

I’m pretty excited. I’ve already yanked the offending network cables from my kitchen so I won’t trip on them anymore. I tell you what. I really can’t believe it was that simple, I was expecting it to be much harder.

Edit: I should clarify a few things.

First of all, using wireless to stream multimedia is not the best-case scenario.  Using a wired connection is by far the best solution, obviously.  I just don’t want anyone to think that this works super great and go out and try and duplicate the same thing.

Second, it’s really important to get a good line of sight, or I can’t get a good streaming connection at all.  I’m still looking at ways to improve my wireless connection, but again, it wasn’t really designed for this.  Sure, it works, but its not optimal.

blackberry pearl flip

I caught the news this morning via Engadget that Blackberry is coming out with a new phone pretty soon, the Blackberry Pearl 8220. What makes it cool is that it’s their first flip phone, yay!

I’m not big into cell phones myself, but my new job that I just started (which I still haven’t written anything about, meh) is going to pay for a new one and coverage. I’ve been looking around a lot, and decided on the Blackberry for the feature set it has, but I really wanted to get a flip phone. I’ve got a RAZR that I’ve had for about three years now, and its worked great for me — nice and tiny and gets the job done.

Looks like the new Pearl has all the features the other phones have, minus GPS, which I could live without, but it would come in really handy — half the reason I use my phone is to call someone when I’m lost, which happens way too much.

Edit: yay, piccies!

bend, drip, mythvideo

Here’s something I haven’t written about in a long time — bend, my custom written CLI PHP5 scripts to rip and encode TV shows.

I actually rewrote the entire thing over Labor Day weekend.  What’s amazing is it took so long to write the original one, but so short a time to completely revamp it.  It’s something I’ve been wanting to do for a long time, and I’m glad I finally got to it.  The code on the old one was so horrible, and was such a frustrating experience to patch, debug or add features.  The new one is already 20 times better.

The first one was just plagued by scope creep, though — I started off just mostly coding it around the way that I thought DVDs *should* work and how they ought to be authored, only to be constantly slapped in the face by so many exceptions that I’d have to go back and hack it to work around the new found realities.

One example is that either lsdvd or libdvdread is buggy in how it outputs chapter information.  Actually, my whole experience with chapters have been that if there are any oddities, then the players will just freak out.  You wouldn’t believe the cases I ran into.  Anyway, here’s a small example.  On one DVD, lsdvd will report in original output that one track has 30 chapters on it.  But when you go to display the chapters, it will only say that there are two.  Most of the time, what happens, is that it will choke anytime there is a chapter between others that is zero length.  In this case, lsdvd just chokes and stops counting them.  MPlayer (at least, the ancient version I’m using) will do a couple of things depending on its mood — sometimes freeze, sometimes skip over it, sometimes act like its not even there.  It’s very odd.  I’ve found a lot of interesting little bugs in the dvd libraries and tools.  I’d love to poke and the source and fix them up … when I have time.

The code is online in my svn repo, and the new one is called ‘drip’ for dvd ripper.  Original, I know, but eventually it will replace bend completely once I add in all the features the old one had plus all the new stuff I want.  I would throw in a link to trac which has prettier display output for viewing SVN files, but my installation is broken (again) and I have no idea why, and it’s always a royal pain trying to figure out what went wrong, so I’ll just fix it later.  I love trac, but its not easy debugging the setup.

Oh yah, also I’ve been working on my mythvideo setup, tweaking it even more.  One really thing that dawned on me, which I’ll write in more detail once I actually have a script ready, is that you can use it to execute shell scripts using the File Types admin menu.  Just tell it to execute .sh files in your folders with /bin/bash and away you can go.

Another thing I learned is that MythVideo will only pass two variables to any external scripts, the default player (%d) and the video file (%s), or more accurately, the file you’ve selected to run.  So if you wanted to see what you’re executing, you would add this to the file type for .sh files: /bin/bash %s %s

Then, say you had, this would be the contents:


echo $a

I’m getting ahead of myself, though .. I’ll write more about that when I’ve got something to show.  I’m actually working on a shell script similar to mplayer-resume to resume playback of a playlist you’re in.  It’s a bit trickier than I thought it would (or rather, not nearly as simple as I had hoped), so I’m still scoping it out in my head.

Speaking of mplayer-resume, I fixed a bug I kept running into with it for a while now.  The script will now catch the exit code of mplayer, and if it’s not successful (zero), then it won’t overwrite or delete the old position.  I used to hit it all the time because I used to run mplayer -hardframedrop when playing my videos, which would crash the playback about 10% of the time and of course kill the file that had the playback position.  I need to repackage it and push it live, but there’s a few more small fixes I want to make to it first … I might finish the playlist resume script first and add it to there.  Plus I want to get trac working, because that’s where it’s homepage is.

But, I moved my mini-itx to the living room and hooked it up to my HDTV.  It was sitting in my bedroom just collecting dust, and I figured I might as well move it to see if it gets any more usage.  Actually, I remember now, I moved it was because the LED lights were really bright in my bedroom at night, and I have to sleep in total darkness to get a good night’s rest.   Anyway, it’s worked out well so far.  My TV has a VGA port so it’s super simple to plug it in, not to mention I like the fact that it doesn’t use up an HDMI port.  I love my TV. :)  Once I have this series playlist resume script finished, I think I’ll be pretty much “done” with having the setup that I’ve wanted so long.  Well, aside from the fact that I need about 12 more terabytes of harddrive space.

Good times, I tell you what.  I’m gonna go watch some Star Trek TNG.