Long strings in Python

In Miro, we've got long strings that are displayed in the user interface. I think the code that defines these strings is messy and hard to parse. For example:

def some_func():
    description = _("""\
This is a really long description that has multiple sentences and a few \
things that need to %(getfilledin)s and it goes on and on and on and on \
and I'm not really sure what's the best way to format it so that it's happy \
in editors and easier to parse.""") % {"getfilledin": blahblah}

PEP-8 doesn't address this, which is fine. I was curious to see what other projects do.

Stamp values

The United States Post Office increases the cost of postage periodically. They do faster than I use the stamps that I've bought. In the process of this, I ended up with first class stamps that have no value listed on them, so I had no idea how much they were worth.

Buried on the USPS web-site is this quick service guide that lists the values of all stamps that have no value listed on them.

status (6 or something)

I haven't written much in the last couple of weeks because I was on vacation. On the first day of vacation, I went to the beach and got knocked over by a wave, somersaulted for a while, jammed my shoulder somehow, skinned my knee, and finally came up for air. I said, "Screw this!" and went back to my beach chair where I sat around, bled, whined about how my shoulder hurt and ended up with a serious sunburn. I spent the next few days indoors--vacation is dangerous.

In the last couple of weeks, I threw together a preferences panel and a channel settings dialog which, while mostly functional, are "putrid looking". Luc is going to spend some time fixing that. Ben spent time re-implementing itemlists and allowing for channel searches, saving channel searches, and some other things. We've been tweaking the widgets to make them more functional and pretty.

We still have a lot of other ui stuff that still needs fixing and tweaking. The dialogs that you sometimes see at startup when things are awry need reimplementing. The sort bars need to be reimplemented. There are some other tawdry odds and ends that also need to be redone. Generally, things are coming together and most of the big features are in, but there's a bunch of work that still needs to happen.

This morning, we talked about where we want to draw the line and encourage people to start testing the nightlies again. We haven't thus far because the laundry list of things that weren't working was pretty long. Janet thinks it's probably a good idea until most of her litmus tests pass. Otherwise you'll all be wasting your time finding things we already know about.

However, I think if you're interested in testing out Miro 2.0, we've hit a point where it's stable enough to use. I think we're at what other projects would deem an Alpha 2 state.

Definitely take the time to back up your database BEFORE you try testing a nightly.

We've got a laundry list of issues targeted for 2.0. If you encounter problems with a nightly, let us know. We hang out on #miro-hackers on freenode and on the develop mailing list, too.

If you're interested in helping out, we sure could use the help: testing, translating, triaging existing bugs, writing patches, drawing a fancy 20 page comic describing how great Miro 2.0 is going to be, ....

everything i know i learned from bugzilla

I did some bug triage today and then went through and fixed some old bug data (apologies to everyone for the bug spam). A couple of interesting things came out of that.

First off, it's interesting to note that 2.0 so far has 163 bugs marked as FIXED. That's more than any version of Miro since 0.9.5. Hard to know what happened before that because we have inadequate bug data. Go team!

Second, there are a total of 877 open bugs right now. 323 of those are targeted as Wishlist items. We've been around the 850 mark since September with a big bump between December and February in the 1000 range. I think that means generally speaking that we're keeping up with bugs which is good.

Third, it's pretty clear that the widget overhaul will clear out a lot of older bugs. Partially because we're ditching the HTML interface and the issues that caused, but also because we're re-implementing a lot of stuff and in doing that, fixing issues in the process.

Miro 2.0 is going to rock your socks!

status (5)

Progress went well this week. We've been working on the missing functionality, fixing bugs, removing dead code, cleaning up existing code, and generally progressing on Miro 2.0 development.

Last week, I wrote up the list of must-have features before Miro is ready for testing. We finished the following items:

  • diagnostics dialog.

  • open_file needs to be implemented in the OSX Application class for "show" and other things to work.

  • fullscreen playback

  • hook up volume control to playback renderer

  • Make playback take over the whole window on GTK

  • search tab

  • show/hide details - needs to be fixed on OSX

  • download tab: pause all, resume all

  • download tab: Top bar display, download / upload rate

And fixed a bunch of bugs. Ben did some optimization work on OSX, too. Some of those are new items added to the list in the last week. Some of them are smaller chunks of existing items.

We have the following list of things to do still:

  • Preference window

  • Chrome Search

  • within channel search and save

  • ff / rw / seeking

  • download tab: External Downloads section in main view

  • show/hide details - Needs seeders and leechers info for torrents

  • Channel Settings

  • overlay playback controls on OSX (including fullscreen button)

You can follow the progress on the timeline.

status trunk (4)

Things are progressing. I landed the last of the menu handling changes, Ben did a bunch of Mac OSX tweaks and Windows tweaks, there's been work on playing videos, Ben re-worked how we deal with resizing thumbnails so it no longer uses imagemagick and no longer generates lots of files in the icon-cache, and there have been a lot of bug fixes as well.

On Tuesday, a bunch of us got together in Worcester for the Miro Summit and worked out some things including the plan going forward. From that discussion, Nick wrote up a list of must-have features that need to be re-implemented before we want to get functional testing going. This list is likely to change, but here it is generally speaking:

  • Preference window

  • Chrome Search

  • search tab

  • within channel search and save

  • search all for search engines

  • fullscreen playback

  • ff / rw / seeking

  • hook up volume control to playback renderer

  • download tab: Pause all, resume all, cancel all -- Top bar display, download / upload rate -- External Downloads section in main view

  • channel details view

From that list, Chris Webber is working on a patch for channel details view which I think is close to done. I think I'm going to tackle Preferences next. I'm not sure what other items are spoken for. I'm also not sure how much time it will take to tackle all of these--maybe a month?

That brings me to my next two points:

First, I know it's taking us a long time to get things done, but it'd be faster if we/I didn't have to answer issues along the lines of "are you done yet?" and "i tested xyz nightly and the following things don't work...".

I really appreciate the fact that you all are eager to help out with Miro development and I really apologize for the frustration that comes with not being able to do anything and having to wait around for a while. We're working as hard as we can, but it's just going to take time. I'm in this weird position where I want to maximize the time I'm spending doing the work and minimize the time I'm spending talking about it and managing it, but I don't want to leave you in the dark about where we are. It's a tough thing to balance especially where I'm trying to minimize the time I spend thinking about balancing. ;)

Oddly, I bumped into this post on 43 Folders which I think is pretty relevant here.

The second thing is that we've had a lot of help from Chris Webber over the last few months. He's been working in his spare time to come up to speed with the new widget code and help re-implement functionality. His efforts are fantastic, the quality of his work is solid, and he's absolutely making a big dent in our ability to finish the work faster. You can see the efforts of his work here--I refer to him in the checkin comments as "Chris", "Christopher" and "Chris Webber". Thank you Chris!

That's it for this update!

status of trunk (3)

I apologize for skipping last week's status of trunk.

Trunk is still unstable. I consider "trunk is stable" to mean that most things are re-implemented and it's usable. We're not quite there yet. I'm seeing occasional crashers (most of them my fault so far), there are a bunch of features that haven't been re-implemented (site search, channel search, playing through a playlist, setting preferences, ...), and there's still ui nits that need ironing out.

We're moving along, though it seems as if the progress comes in waves during the week. I think part of this is that we're all using git over svn and batching commits. I know I am.

I was gone all last week at OSCON, but I'm back again to help out with the push to Miro 2.0.

You can follow along in your story book with the Trac timeline.

Status 07/28/2008

I was at OSCON last week and met many people some of whom I've known for several years (Ted, Steve, ...). I also met a bunch of people who I've followed for many years and some people I've worked with when doing the Firefox 3 work I did. It was really exciting to be there. I didn't attend any keynotes or sessions, but the conversations I had were well worth trekking all the way to Portland, OR and back. I also got to spend a week with my sister who lives in Portland.

On the flight there and back, I worked on PyBlosxom. I mostly concentrated getting better acquainted with nose and using nose and coverage to help guide my testing efforts. The results were phenomenal. I increased the test count from 53 or so to 207, I increased coverage from some low number to 57% and I discovered and fixed a bunch of bugs. Because I switched to git over svn, I was able to commit locally and manage the work I was doing. All very exciting.

Miro is coming along very nicely. We took the plunge to ditch the previous frontend for a new one that has fewer layers of indirection. The results so far are encouraging--I think it was absolutely the right thing to do. Incidentally, I blogged about OSCON on my Miro devblog.

In the last few months, I've thrown together several web-sites using werkzeug, sqlalchemy, and mako. I really like this stack since it doesn't involve a lot of infrastructure and the number of files and "things" involved is pretty small. I think this is going to be my preferred stack for webapps going forward.

Just before OSCON, I signed up with identi.ca. It's my first micro-blogging account. Mostly I wanted to see what micro-blogging was like and follow other OSCON attendees. OSCON had a lot of back-channel conversations going on.

Just before signing up for an identi.ca account, I met Jack, who lives around the corner from where I live. I wish I had made the effort to contact him years ago.

I think that's about it. It's been an interesting few months.