Monthly Archives: June 2010

Another Quickshot teaser

Following quickly on the last update (a trend I intend to continue), here’s a screenshot of the non-admin side of the entry created in the last page, demonstrating what a project owner will see when looking at a project version’s status. I decided to include part of the browser interface this time, to show the pretty URL structure, which is sure to be welcome when it comes time to advertise for help with projects.

Each language link (visible and accessible only to owners, due to resource consumption) will lead to a section that allows screenshots to be approved in a task-oriented manner, rejected screenshots older than a minimum age to be purged (age enforced to prevent rogue vandalism), and, for exceptional circumstances, approved screenshots to be rejected. Important features from the first iteration, open in the tabs on the left, will return as well, albeit with a substantial facelift; highlights follow, for those who didn’t play with the original: archived downloads of approved screenshots, access to reference images, and the ability to browse everything in the system. All in all, it should be quite intuitive and smooth.

New changes, design-wise: implementation of a “you are here” bar that sits beside the already-existing (but not-always-visible) admin bar, to balance functionality with whitespace, sans fonts, tasteful and informative progress indicators, and eye-catching-but-not-distracting inline help.

Quickshot teaser

Although it will still be about another month before the server is functionally complete (when I’ll start working on the client, alongside the other project members), I figured now would be a good time to provide a screenshot of the new Quickshot design in its early stages.

This image doesn’t capture much (there are a number of unrepresented project variables, since the architecture is parent-inheritance-driven), and the styling is sure to change once the functionality is complete enough to warrant the involvement of one of the Ubuntu Manual Project‘s web designers, but I think it shows enough to whet the appetite of anyone who’s been longing for a system to simplify the inclusion of screenshots in their multi-lingual documentation: tiered project management, project-family-common settings, support for languages at generic and dialect levels, OpenID-based administration, browser-configurable settings, human-grokable status messages, support for privacy at both the family and project levels, and the capacity for projects to go inactive (either by flipping switches or, though unpictured, setting deadlines).

Symmetric encryption in pure Python (Blowfish)

For a project at work, it became obvious that I would need to implement some form of partial encryption between hosts in a self-configuring network. Nothing super-extreme, of course, since all traffic will exist within a closed environment; I just need enough protection to prevent casual observers from finding out enough about the protocol to inject malicious packets and provide some simple handshaking between the components of the system.

Blowfish came to mind as a good scheme for handling this (each host and operator can be considered sufficiently secure, so sharing an application-specific pass-phrase via config-file is an acceptable solution), and a small amount of Googling turned up http://ivoras.sharanet.org/projects/blowfish.html (based on http://felipetonello.com/scripts/python/blowfish.txt, though I doubt that’s the original site), which I ended up using as the basis for my implementation. Actually, ‘basis’ isn’t the right word, since I didn’t change any logic at all. Rather, I just replaced the more antiquated data-types and access methods with more modern equivalents, restructured the layout, and sought to bring things more in line with PEP 8. The result being a slightly faster, leaner implementation that’s a bit more readable.

My code, with an identical interface to Ivan Voras’s version, dual-licensed under the GPLv1 and Artistic Licenses, like the original, is reproduced below:
(more…)