I should....

I should blog about the Ontario Linux Fest, it was amazing.

I should blog about the OpenStreetMaps after party, and how we're going to have one in Pittsburgh in two weeks.

I should have gone to school today, to find out what happened to my suddenly canceled Yiddish class, due to an ongoing fight between the PhD student, the University and the ADL.

Instead i'm in bed, sick. Damn Autumn.

Open Source to the Rescue

Today I finally debricked a sansa c250 i bought last spring and promptly bricked. It turns out that the most recent firmwares for that model only use MTP, and i was trying to overwrite the firmware with one that would support standard USB mass storage support. I tried any number of methods of debricking the device, but to no avail. The Sandisk website only offered a poorly written tool for Wintendo that utterly failed to recover the MP3 player.

Fortunately most devices have *some* hardware only recovery mode, no matter how difficult to access, that can be used to reflash everything from scratch. In Sansa's case, the c200 and e200 series use a combination of bootloader and rom to run. Factory wiping the device is a matter of forcing the device to load a bootloader directly from USB and then use the emergency safe mode of the standard bootloader to load a new ROM from scratch. It takes an open source ecosystem for some motivated hacker to come along and write a tool that only Sandisk has, and only in factory. A few more clicks away, and now the device is running Rockbox dual booted with the original firmware.

I used this guide. http://www.rockbox.org/twiki/bin/view/Main/SansaE200Unbrick

This got me thinking. One aspect of open source that wins it many followers is that 'it just works, because everything is just a generic case'. For example, when connecting to the cisco crapware PEAP authentication system on my university's wireless network, NetworkManager just sees it as another network, shows me a standard dialog to get the user name and password, and then does the right thing. Likewise connecting to the crapware cisco VPN i have to connect to daily. There is no need to use special software to access remote network shares, whether they are SMB, NFS, or SSHFS, whether i am using nautilus, dolphin, or the command line using Fuse. Everything behaves like a general purpose system, and components on a Linux System get along just fine.

Hardware corporations that make consumer hardware aren't going to just start writing debricking software for Linux (or even OS X) just because Linux is out there though. Much like the beginnings of the Linux Kernel, there are certainly many hobbyists are coming up with novel ways to take control of our own paid for hardware using every hack possible. The only catch is, to execute many of these fixes, it requires running a compiler, entering things on a command line, and tinkering with various firmwares until it works. What would it take to make debricking 'just work?'. Could we convince Gnome and KDE to detect a bricked USB device when attached to the computer? Can we convince them to pass it on to a standardized recovery program with optional plugins for all sorts of devices? Would this convince enough of those clever hackers to come together and start writing plugins for their own devices? Would larger companies jump on the bandwagon once we advertise that we can support their hardware better on Linux?

Even if we can't, i'm certainly indebted to all those clever hackers out there who at least keep trying. Today i've saved a 30 USD device from the garbage bin.

CPOSC Endnotes

Last night when i came home from CPOSC, all i wanted to do was go straight to bed. It was a pretty long trip, and it turns out pretty destructive on my schedule. All in all, it was worth it though.

Some highlights:

Setup of the table couldn't have gone smoother. Kudos to the Fedora Event Kit for making it so easy. The hardest part was finding somewhere where we could get electricity, and as it turns out, our booth ended up right at the entrance to the hall we had available. I love it when Fedora is the first thing that people see at a conference or show. Once we had our location picked, getting started was just a matter of getting our posters up on the wall and the two OLPCs set up and running, along side Jon's laptop running Fedora 10 Snap 2.

The original plan was to get 100 units of media to hand out with everyone's welcome packet. When i got my welcome packet, i was worried that Anteil, a local company had upstaged us there, with a complete portfolio, marketing materials and Anteil branded USB stick. To my complete surprise, one of Anteil's employees is a big Fedora fan, and put persistent Fedora on all those sticks ahead of time! Our media was useless, because of someone else's generosity. I want to thank everyone at Anteil for supporting us so much; we really value this.

I got the chance to see a few presentations. They mainly went along the lines of, 'look, here's something cool I can do with FOSS in the workspace." There were presentations on using puppet to manage email systems, using PExpect to manage over 10,000 units of Cisco hardware, one guy gave a presentation on a few cool things he liked about git, and so on. I think the highlight of the presentations was when Chris Moats wiped the first 10MB of a CentOS box that was a wireless router to the room we were in. As he gave his presentation, cobbler and puppet reinstalled and reconfigured the server in the background in 15 minutes, without a single bit of effort on his part.

Although i didn't plan on speaking, Jon Stanley and i held a BOF session on the OLPC. We had yet more problems, as usual, getting mesh networking to work. The laptops are incredibly finicky at shows, unfortunately. We started off with some QA on the laptops, while I made sure they circulated the room and let people get a chance to play with them. Once again, when i had the chance to visit the OLPC lab in Boston last summer as part of my Red Hat internship, the experience was invaluable. It's so much easier to talk about the XOs despite not being a developer, when i actually know what i'm talking about.

One of the guys there brought up an interesting issue though. He was considering buying his niece an XO last spring during the G1G1 program. Unfortunately, his niece is exposed regularly to 'those other established Redmond and Bay Area operating systems'. If he got this laptop for his niece, how would she be able to participate in the real value of the OLPC? Most of that value lies in there being a mesh network of kids all with laptops available. In a world of beige and brushed aluminum boxen, though, she'd be pretty isolated with her green and white system. How are we going to get the incoming computer users integrated into the world as a whole, once we give them the XO laptops? The conversation moved quickly to integrating people using any Linux system in a commercially dominant world.

I noticed very little talk about distros. I got a few grumbles about how much Spacewalk/Satellite sucks, but except in some practical conversations, there was absolutely no discussion of Fedora vs. LTS, nor Fedora vs. Ubuntu vs. SuSE vs. Flavor Of The Month. Overall though, i did see a few Fedora laptops, although there were quite a few Apple laptops there too. Pennsylvania is a state, though, where there are people living there with some very widely conflicting views, politically, socially, and religiously. It's good to know that we all know how to get along with each other when we do have some common goals.

One fact I had to stress to a few people is this. The Fedora Infrastructure stack is as Open Source as it gets. Launchpad and Github are not open source the way we are open source. The goal of Fedora Infrastructure is to have a stack of applications that anyone can redeploy on their own. While it's a conversation for another day, webapps present a huge threat to Open Source. One thing that Fedora Ambassadors might want to consider talking about more is this: Fedora is 100% open source, including our Web Applications, Infrastructure, and Know-How. What other distribution or open source supporter can claim the same?

One of the companies here, Anteil, really gets Open Source. Jim Capp, the CEO told me that he is very open minded about which distros are used inside the company, and they really try to focus on supporting what ever the customer asks for, and not just what the technicians like. Even so, he said many of the customers ask for Red Hat over everything else. If anyone doubts the value that Red Hat brings to Linux, it's certainly not Anteil or their customers.

Jim and i also talked about plans to get Fedora and CentOS into some of the university laboratories in Harrisburg, and that the faculty there seems fairly open to the idea for now. He's really interested in being able to focus on the philanthropic side of Open Source, and not just the day to day business side. It's a great feeling to know that Open Source is so well represented in Central PA.

Finally, I was wondering what was so special about CPOSC that David Nalley told me last summer, "Yaakov, we have to get some Fedora Ambassadors to CPOSC". Right now Linux doesn't hold a very dominant presence in PA at all, other than local companies that provide and service it. Looking at the future recession, service industries always fare off better than production industries, and Linux and Open Source are positioned well to succeed quite nicely. PA is known for its service industry, and so far Pittsburgh and Pennsylvania have done better than most with the looming recession. Central PA is a great area to get involved with Open Source on a grassroots level. Everyone I met there understood the value of Open Source, and knew why they were there. It's been a pleasure getting a chance to meet everyone there.

Midterms and CPOSC

Midterms were apparently brutal this semester. This would more or less explain my otherwise disappearing off the face of the planet. Fortunately, i've managed to squeeze in CPOSC related things, so hopefully that will go smoothly on Sunday. Hopefully, next week, i'll have a chance to push out some updated xmonad packages.

As for CPOSC, as I've said before, it's this sunday, in Harrisburg, Pennsylvania. Saturday night, we're going to have a small social for local members of the LUG and anyone coming from out of town for the conference near the conference hall. We're meeting Gilligan's on Eisenhower Road at 8pm, and if you want to come join us, just look for the guys with the usual Linux paraphernalia.

Hopefully, i'll be more relaxed by tomorrow night after recovering from my midterms.

The CPOSC is coming up.

I want to announce and remind everyone that the Central Pennsylvania
Open Source Conference is going to be in Harrisburg PA (that's in the
US) this coming Sunday. The CPOSC is open to all ends of the Open
Source spectrum, from applications to low level hardware and a whole
smattering of IT. Fedora will be sponsoring the event this year, and
we'll be hosting a small table for all things Fedora as well.

We currently are already staffed and have everything running on
schedule (so far), and we have volunteers already for manning our
table.. Still, we love seeing faces of Fedora users. If you want to
come help out, show up wearing a Fedora T-shirt or your trusty
Ambassador Polo.

Todd M Zullinger mentioned that he would like to hold a relatively
informal keysigning. If you want to participate, bring a copy of your
PGP and some form of photo ID.

There will be a get together of out of town guests and any locals with
some free time Saturday, the night before. We'll be meeting at a
bar/restaurant near the conference hall, although more details are to
follow.

Links:
http://www.cposc.org/

I look forward to seeing you there!

Python just got cooler for me

Being the Functional Programming fan i am, the following goes against every best functional programming practice. Fortunately, it's still good code :).

I'm trying to get some code with a few ugly 'global' objects in python to be reduced to something a bit more modular. Sometimes code is clearer than words:

>>> def foo():
... print foo.a
...
>>> foo.a = 1
>>> foo()
1
>>> foo.a
1
>>> foo.a = 2
>>> foo()
2

In otherwords, I have some value I need persistent between function calls. However, there's only one function that needs that value. I can store it in the function itself, and have it available.

The only unfortunate tragedy is that code like this still fails epically:

>>> 0.15 * 6
0.89999999999999991