California State Fair

We went to the California State Fair on Saturday. It's in Sacramento, so it was about a 1.5 hour drive away. But we had nothing else going on and somehow Jess has managed to never go to a state fair like thing ever. So we had to remedy that.

We went up in the evening once it was starting to cool down for the day. We're still learning how the weather out here works and so far have concluded that we're no good at predicting how it will go. Sometimes the sun sets and the temperature drops 20 degrees instantly (like when we went to the play last month), and sometimes the sun sets and the temperature barely changes (like at the fair). We had changed into pants and I carried around our jackets the whole time thinking it would get chilly. It didn't.

Sadly we forgot to bring a camera and by the time I remembered that we needed pictures we were already half-way done. So all I have are a handful of cell-phone pictures.

First thing we did was buy cotton candy, a requirement for Jess anytime such a possibility presents itself. Then we wandered through some of the buildings to learn about all the fabulous crap that we never knew we needed (the life-blood of any state fair). Upon leaving one of the buildings we ended up on "the farm". We went into the Insect Experience where we saw all sorts of gross things like gimongous moths and butterflies, hissing cockroaches, crazy stick bugs, and other such wonders. After seeing enough of that we went and visited the Kiwi vines (Kiwis grow on vines, who knew?). Then we rested our feet and watched them show off some of the horses.

By this time we were starting to get hungry and began questing for further fair-food. A funnel cake was a must, as always. It wasn't great, but I think that just keeps up the carny-tradition of low quality food for five times the price anyone would reasonably pay. Not wanting to leave without the full experience of this motto we got some low quality French fries. With a large helping of ketchup we were able to finish those off.

Being filled with grease we were ready to head in to the Garden of MAGnificent Proportions (their capitalization). Here's were I took some pictures:
Whose life is complete without a giant snail, giant frog, and giant radish and shovel?

Giant Snail Giant Frog Giant Shovel

We then wandered through the art exhibits and then my feet were ready to fall off. So we went and took a ride of the giant swings before heading home:
Jess on the swingsI was going to try to take a picture while we were actually swinging, but they got us going at a pretty good speed and I didn't want to watch my phone shatter into a million pieces.

That ends our trip to the California State Fair. It is gigantic. It seems vastly larger than the Utah State Fair and even the Big-E, and I hear that this year's was smaller due to the financial problems, so normally it must be huge.

New Phones

Jess and I have switched to our own family plan for our cell phones. So we now have new phone numbers. If you need our new phone numbers, email one of us and we'll get it to you. Or I suppose you could comment on this post and we'll find a way to get it to you as well.

We ended up going with T-Mobile for several reasons. The main reason that they offer more minutes for the same price as all the other family plans that were available. The other reason is that they let you tack on unlimited data (internet access) for $10/month. Whereas the closest competitor is $30/month and if you want to use a device other than your phone they'll charge you $60/month. So, having my little Nokia n810 I thought that might be handy. Since they were also offering a 30-day trial of the data access I've been having fun trying it out. I've decided it's great if you're traveling a lot and want to stay connected. But rather unnecessary otherwise. So I'll probably cancel it and add it back on for $10/month when I do lots of traveling for the month (assuming I'll be able to actually do this).

So far I'm happy overall with the switch. It didn't go off without a hitch, but that's, sadly, to be expected. The first problem was that we wanted to keep our old numbers, but you're only allowed to do this if your name is on all the accounts. Since my name wasn't on my old account (being part of the family plan) I couldn't keep my number. And since we were putting the new plan in my name, Jess couldn't keep her number. But, that's probably for the best anyways, this way people who live here can call us from landlines without paying long distance.

The second problem was that they gave us phone numbers that weren't local to Livermore. Which was really stupid. So I had to call them up on this one. After getting sent in circles on their stupid menu system I got a hold of someone (thankfully their call centers are actually in the US and the workers speak intelligible English). They changed the numbers for us, but I was still annoyed when they acted like they were doing us a big favor by not charging $15 each line to change the number.

The phones themselves are good and pretty much exactly what I was looking for. I searched for weeks before doing this to find phones that were good at being phones. We don't want phones that try to be a camera, music player, fish scaler, gourmet chef, and, oh, and maybe make calls too. We want phones that are phones first. I finally found the Motorola w490:
MOTOROLA-W490-BLACK-RB-2T

The review I found gave it 3 out of 5 stars and said something along the lines of, "It is good at making calls and has incredible battery life (8+ hours talk-time tested), but the music player isn't very good and the camera isn't very good." That sold me. I'm happily using my phone as a phone.

Another aspect of our plan that has made me happy is that T-Mobile isn't going out of their way to be obnoxious. The phone comes completely unlocked. You can add a microSD card for extra space. It charges through a standard miniUSB connector which you can charge from a socket or your computer (if you happen to have the proper connector), and you can transfer files over the connection or even use the phone as a modem. They don't stop you from loading your own songs to use as ringtones, they don't stop you from tethering your device via Bluetooth and transferring files or using the data connection. You've paid for the hardware and they let you do what you want with it. Very refreshing considering most companies (I'm looking at you, Verizon) still screw you over in this respect pretty badly.

Unfortunately, T-Mobile is still following all the other American companies and screwing you on text messages. I'd be perfectly happy to sign up for a 100 text a month plan to be split across our phones for $1/month (heck I'd even pay $1/month for 50 or even 25, it's still better than $.20 per message), but I'm not going to pay $5/month/phone for some ridiculous number of messages that neither of us is possibly going to use. So we'll live without text messages. Hopefully the FTC or DOJ or whoever it is will finish their investigation and rain down fines and penalties until this collusive practice ends.

Graduation!

My official graduation date was August 2009. So I used the one vacation day I'd accrued and Jess and I went back to Provo so I could walk in the convocation ceremony.
GraduatingAfter the ceremony we walked over to the Talmage building for food. This was vitally important because an 8:00 ceremony after flying in late at night, getting 4 hours of sleep, and not having time to eat breakfast means that by 9:15 we were starving. So that food was good. In the lobby there they scroll through the names of people graduating, so we took the obligatory picture of me in front of my name:
IMG_4622Graduation itself was fun, I got to wear a silly looking robe with a Master's hood. Somehow we managed to not get any really good pictures of the hood. But we wouldn't be done without a picture to show how silly the whole getup looks:
IMG_4628We stayed in Provo until Sunday evening. It was good to visit our friends and such. On Sunday evening we hopped back on the plane and flew home to California. Anyone using the Oakland airport should note that the airport economy parking lot calculates the charge as far in favor of the airport as possible. Something I was annoyed to discover when the $16/day parking charge resulted in a $60 charge for 3 nights.

America's Broken Laws

Do you remember Real Player? Huge in the late 1990s. They provided software for streaming audio/video over the Internet before Macromedia blew them out of the water with Flash. They've been quiet for a while, but recently they re-emerged with their latest product: RealDVD. It is software that allows you to make a backup of a DVD.

They knew that this was going to get them sued by the MPAA, and they were looking for the fight. As much as I (and millions of others) hated RealPlayer back in the 1990's I (and millions of others) have been on their side in this battle.

So what is the battle? DVDs are "protected" with the Content Scramble System (CSS). In 1999 DVD Jon gained his name by cracking this system; allowing anyone to access the data stored on DVDs without paying the fee required to get the code to decrypt the content. Yes, that's right. Any DVD player you've ever used; whether in your laptop, desktop, or connected to the tv; was only allowed to be produced after the manufacturer ponied up the cash for the license to legally decrypt the CSS and agreed to the demands that they wouldn't produce a product which allows the consumer to make a copy of the DVD.

So when DVD Jon reverse-engineered CSS, and let the cat out of the bag, the MPAA was not happy. Luckily for the MPAA they had already managed to pass the Digital Millennium Copyright Act (DMCA). Section 1201 (2) Says:

`(2) No person shall manufacture, import, offer to the public, provide, or otherwise traffic in any technology, product, service, device, component, or part thereof, that--
`(A) is primarily designed or produced for the purpose of circumventing a technological measure that effectively controls access to a work protected under this title;
`(B) has only limited commercially significant purpose or use other than to circumvent a technological measure that effectively controls access to a work protected under this title; or
`(C) is marketed by that person or another acting in concert with that person with that person's knowledge for use in circumventing a technological measure that effectively controls access to a work protected under this title.

In short: If there is any kind of copy-protection measure on a piece of media then it is illegal to access the content without paying the proper people for access (and since the people authorizing access won't authorize any use allowing duplication we have our problem).

DVD Jon's work is illegal under the DMCA. Fortunately for DVD Jon, he lives in Norway and the MPAA can't really do much about it. The bigger issue for the MPAA is that the code necessary to break the encryption on a DVD is so simple it can be written on a t-shirt. Not exactly a big hurdle for people that want to use it.

So why is this an argument at all in the first place? Something is illegal, so you shouldn't do it, right? Well, the problem is this little notion of Fair Use (also see the Electronic Frontier Foundation's FAQ). The Fair Use doctrine says you can make a personal back-up copy of content you own.

Fair Use says you can make a backup copy of any content you own, the DMCA says it's illegal to make that copy if the content has any type of copy-protection system in place. Take a guess which side wins in these arguments. I'll give you a hint, it's not us, the individual citizens of the country. If we want to make a back-up of The Fox and the Hound so that when the DVD gets all scratched and destroyed we don't have to buy it again, we can't.

This is the current state of the law in the United States. Absolutely ridiculous and inconsistent. The RealDVD case was decided today by U.S. District Judge Marilyn Hall Patel in San Francisco (ruled against Real). In her remarks she made this absurdity very clear:

So while it may well be fair use for an individual consumer to store a backup copy of a personally owned DVD on that individual’s computer, a federal law has nonetheless made it illegal to manufacture or traffic in a device or tool that permits a consumer to make such copies,

(For a complete article on the matter see Wired's Judge Rules DVD-Copying Software Is Illegal)

Django - Cronjobs Made Easy!

For those that have no interest in reading about my nerd-ventures, you can stop reading this post now.

If you're still reading, don't say I didn't warn you.

As has been mentioned previously (mainly on my previous blog), I've been doing a fair bit of side project work using the Django Framework. Sadly, the out-of-the-box Django doesn't provide a solution for running cronjobs (for tasks that need to be run within the Django environment).

Since that's a fairly common requirement I didn't think it was going to be a big deal, but there wasn't a really solid solution out there. There are a few different attempts, but they each have some limitation. There's django-cron but that just skips over the native cron entirely, which I felt was a bit extreme. Cron can already do a good job of waking up and running a command, so duplicating that functionality doesn't seem necessary. It also self-declares that it is designed for frequent tasks (hourly or more frequently), which doesn't work for me. Tasks on the Board need to be able to run from a minute scale to a daily scale and beyond.

Then I found this guy's method, which works, but I'd like a little more integration. That way when developing apps the "go add cron job" isn't a separate step. I want the job information to right in with the rest of my app information. That way I can see what should be happening and when.

That's when I came across Django-Chronograph. This solution was 95% of what I wanted. It provides a nice interface to the system to monitor your jobs and view logs. It requires only a single crontab entry. It uses the iCalendar style of task declaration so you have total control of when your jobs run. However, it is limited to running commands through the Django Management system. I wanted something a little more programmatic. Such that I could just point at whatever function I wanted for my jobs.

So I took Django-Chronograph and started my modifications. The result is Django Cron Manager. Setup is very similar to using the Admin system. You call the cron_manager.autodiscover() function from your urls.py file. This goes out and inspect your installed apps and registers any Cron Jobs they declare. Then, using the guts of Django-Chronograph, it keeps track of these jobs in the database and monitors when they need to run.

I'm planning on posting all the code with an example at some point, but I'm going to try to get in touch with Weston (the guy who wrote Django-Chronograph) to see if he just wants to roll my changes into his system permanently. If you stumble upon this post and the changes aren't in Django-Chronograph, and I haven't provided any further information. Just leave a comment that you're interested in the code with a way to contact you and I'll get something to you.

*** Update ***
I've posted the code here: http://code.google.com/p/django-chronograph/issues/detail?id=15