Agora Octave: Update #9

« Back to blog :: October 15, 2012 :: Categories: octave, django

Agora Octave: Update #9

Lots of progress on the bundle feature this week. I also significantly revised my plans for the feature, based on some very helpful feedback from the mailing list. Some other smaller changes - bug fixes, minor feature additions, cosmetic changes - were committed as well.

This week

Bundles, continued

I’ve committed all the progress I’ve made over the past couple of weeks on bundles. See commit 151. It’s still incomplete, but most of the basic functionality is there. Feel free to test it out for yourself.

Optimising dynamic line-number insertion

The dynamic line-number insertion was extraordinarily slow for long snippets. Optimising it was pretty simple, though - I just had to minimise the number of DOM manipulations and to change the $.each() call to a standard for loop (see commit 141). I should really have done this from the beginning, but at the time I thought that the initial method was neater and that performance wouldn’t be an issue, which turned out to be very naive.

LESS compilation

I added server-side LESS compilation as an option (commit 143). To trigger it, set compile_less = yes in agora.conf. Now, stylesheets load faster, still work with Javascript turned off, and aren’t cached in localStorage when you don’t want them to be.

Contributions sidebar for user profiles

There is now a sidebar on user profile pages showing what snippets and bundles that user has created (commit 152).

Fixing registration

There was a bug in registration before relating to an incorrect usage of the django-registration app. It should be fixed now (commit 160).

Other cosmetic changes

Minor cosmetic changes include:

Next week

More on bundles

Here’s a revised version of the to-do list for bundles from last week:

I’ll be working on the downloads feature first, then versioning and licensing. I’ll probably also come up with other small features while working on these.

Housekeeping changes

Deleting unused code, making use of Django shortcuts and other conveniences when possible, checking concordance with PEP 8, etc.

Position in timeline

(This timeline isn’t really relevant anymore, but I’ll keep including it for reference.)