Version 0.27 of flashbake Released!

Quite a bit of time has passed since the last release of flashbake. I had some time to myself yesterday during my week off while my visting family was out of the house with the kids. I decided to act on a couple of pull requests and tag those along with some file layout changes as a new release.

Version 0.27 is also the second release that I’ve uploaded to pypi, the Python package index from which flashbake can easily be installed with setuptools. I used this request from a user to do some reading on git. The first release I pushed to pypi, as a test, was the previous one, 0.26.3. I created a short lived maintenance branch to add the additional metadata that pypi submission requires. That change has been merged into the main branch for the project hence this new release also being pushed to pypi.

You can see the release notes for this and all past releases on github. The source distribution is available from github as well. If you are familiar with installing python packages using easy_install, you can now do so with flashbake. I am not sure how long it will take for MacPorts and Debian to pick up this change.

The next release will probably be a while coming. Hopefully the reason will not be lack of activity but rather the ambition of its scope. I have used the git Python library, a wrapper that works more directly wirh git’s internals, for another project with good success. I plan to rip out as much of my own git specific code in favor of using this existing library and where that doesn’t cover to change the process interaction code to take advantage of git’s porcelain option that produces machine readable output.

The reason for overhauling the git code, including introducing a plugin protocol for other VCS’s, is so that I can finally tackle remote operations in git. I’ve now been bitten a couple of times by forgetting to push changes on my work machine in projects where I am dog fooding flashbake. Eventually we will be getting a VPN but for now this breaks my own writing workflow pretty badly. Clearly if flashbake could smartly push local changes where there is a remote origin configured for the repo, that would be the correct fix.

If you have any thoughts on remote operation support, in particular any odd use cases for me to consider other than a sole author working rather naively, let me know and I’ll try to factor it into my design and implementation.

This Week’s Feature Cast is Likely to Be Delayed

I’ve been using my own program, flashbake, to ease keeping all the notes I write for the podcast under source control and to enrich the commit history with ambient information from my life stream. Unfortunately, as long as the requested feature has been on the to do list, I simply haven’t gotten around to figuring out how best to implement remote operations. The upshot is that I have to always remember to pull and push changes when I move from work to home and back again. You see the flaw with this plan, right?

I wasn’t finished with my notes for tomorrow’s feature but I was close. I spent a little bit of my lunch hour today getting closer, committing several hundred words, good words I don’t feel up to trying to re-write from memory. Before I left the office I failed to push those changes from the repository on my work machine to the one on my server. It is unlikely I’ll get home early enough tomorrow to finish writing, to record, and still have enough voice left to tackle a large pile of listener feedback needed to finish up this week’s feature cast episode.

The more likely schedule for the rest of the week is that I’ll fix my gaffe tomorrow and complete my notes tomorrow night. I’ll record the audio of what is likely to be a longer feature segment. Thursday night I’ll sit down to do the usual intro and outro recording as well as wading through the back log of feedback to finish the episode and get it posted.

I appreciate your patience and your understanding of how my own laziness has gotten the better of me. I am going to try to make the best of the inadvertent down time by tackling that neglected feature of flashbake. I doubt I’ll finish it or even get anywhere close, but it will make me feel better.

flashbake is in Debian

I was contacted a few weeks ago by Abhishek Dasgupta. Abhishek offered to put together a package for inclusion in the Debian repositories. There was a short laundry list of fixes, mostly around licensing and documentation, that needed sorting. Over the weekend, I got the official word: flashbake is live in the Debian repositories!

Specifically, it is included in Sid, the version that tracks bleeding edge changes. If you are using Debian as your Linux distro, the installation and upgrade of flashbake just got easier, you can simply use apt just like any other supported piece of software. (Well, assuming you are OK configuring the source for unstable packages.)

Abhishek also set up a PPA for Ubuntu users. Ubuntu is Debian based but expresses some selectivity in what they include in their own repositories. It is possible that some day flashbake may make its way downstream into Ubuntu’s repositories proper but in the meantime, you can add the PPA to your software sources so you can install and update flashbake through Ubuntu’s very friendly software management system.

This is not the first time that flashbake, the bit of version control and life streaming automation that I originally wrote for Cory Doctorow, has been packaged up in this way. A port in the MacPorts project has been available for quite some time. With each new package and repository into which flashbake makes its way, the larger the potential user base is for the little tool I wrote to help authors capture their ambient online information into proper version control for their various projects.

Version 0.26 of flashbake Released

This release is long overdue but the hurdles that held it back, mostly in adequate data for some maintenance and testing, have been cleared well enough that future releases should come more frequently.

From the release notes:

There is now a purge capability that can be manually invoked to remove any files deleted from the repository that are listed via a glob. This is most useful when working with authoring software that adds, changes and removes files behind the scenes. The Scrivener file plugin has been updated to use the purge function automatically, to clean out files Scrivener removes as the result of empty the application’s internal trash or merging parts of a project.

I found another IP location services to replace the one that went away before the last release. As a consequence, the location plugin has been restored and updated to use that replacement service. If you only use official release, you should notice no difference, no interruption in the workings of this plugin. If you are a developer and have been using the in-progress code, then this release officially restores the plugin. Hopefully the service it now uses will last a little longer.

I have incorporated Andrew Heiss’ iTunes plugin alongside the existing Banshee plugin. Use the plugin spec, flashbake.plugins.music.iTunes, in your .flashbake file to activate the new plugin. It has only been tested on OS X and relies on AppleScript being present. The plugin reports on the currently playing file, if there is one.

Another plugin protocol has been added, for extensible notifications. The email plugin has been reworked to use this new protocol. A plugin for Growl has also been added that uses the protocol. The Growl plugin has been tested on OS X and will issue notices of valid commits as well as problems that may need attention.

See the project’s wiki for more information or download from the project’s download page.

Version 0.25 of flashbake released

From the release notes:

This release include a new protocol for file plugins. A file plugin runs before the git automation can can programatically update the hot files list to better deal with types of projects, like OS X bundles, where the file list may be deterministic but unknown ahead of time. Scrivener fits that bill very well and thanks to jpenney, flashbake now can support Scrivener projects with a new set of plugins. See the Plugins page.

The location message plugin is also finally ready to go. It is not perfect in that it does require a network connection and relies on a database that may or may not be entirely accurate. The weather plugin has been updated to use the output from the location plugin if available. Also see the Plugins page for details.

See the project’s wiki for more information or download from the project’s download page.

Version 0.24 of flashbake Released

From the release notes:

Under OS X, there were reports of problems with flashbake not finding git. This problem was most noticeable while running under cron. OS X 10.5 replaced cron with launchd and provides a pretty stripped down cron-like wrapper to run compatible crontabs but it doesn’t setup the execution environment correctly. Even if you add some env vars to the tab, it still was encountering problems.

This version changes the git calls to use Python’s subprocess module which allows for better control of the execution environment. This version also catches problems finding the git executable raising a clear error. You may now also add the git_path: option to .flashbake to tell flashbake explicitly where to find git.

See the project’s wiki for more information or download from the project’s download page.

Help Test the Next Version of flashbake

If you are a Mac user of flashbake and have had some troubles getting it to work correctly, especially but not limited to a cron job, please email me if you are willing to help test some fixes specifically for running the program on a Mac.

As near as I can figure out, the way I was invoking git from Python could run into problems with the execution path environment variable under OS X.  It is most noticeable when setting up a cron job on Leopard as that version of the OS mimics cron with its Mac specific launchd service.  It doesn’t seem to set up a full environment and just adding a PATH entry to the crontab still led to some difficulties in my own testing.

Generally, flashbake assumed git was installed and simply invokable when this may not have been the case.  I have added some code that on startup tries to find git and raises a clear error if it cannot be found.  I also switched the git calls to use Python’s subprocess module which gives me much more control over the execution environment.  In the forthcoming version, there will be a new option in the .flashbake file to provide the path to git if problems occur.

I have tested these fixes as much as I can on my own machines.  I have also sent off the pre-release to a few users who are on Macs and reported these problems.  If you want to help with testing and email me I will also send you a pre-release copy of version 0.24 with instructions for the new configuration option.  I’d like to get some more testing in before releasing this version generally to cut down or eliminate the rapid patches I have had to write for past versions when other users found issues my own testing failed to reveal.

Version 0.23.3 of flashbake Released, Critical Patch

From the release notes:

There was a serious regression in the new glob support that I completely missed. The symptom was that flashbake would consider paths that were valid in 0.22 to be unknown. Some attempted to fix this on their own by changing the hot files in .flashbake to full, absolute paths. While this appeared to work, it interfered with the git commit, so flashbake would fail to commit without giving any sign of a problem.

The fix enhances the sanity checks to catch any hot files that are mistakenly pointing outside of the project directory. So as not to interfere with people’s attempts to fix this problem on their own, flashbake also now should handle both full file paths and paths relative to the project directory correctly.

Thanks to Cory, Ben and a few others whose emails I cannot locate in my email, at the moment.

See the project’s wiki for more information or download from the project’s download page.

Version 0.23 of flashbake Released

From the release notes:

Simple globs are now supported. ? matches any single character in a filename, * matches any number of characters. [] can be used for sets of characters, like [0-9] will match all digits, zero through nine. Glob support will break Python 2.4 compatibility, do not upgrade (yet) if you are using anything older than 2.5. I’ll release a patch for 2.4 and earlier “soon”.

Thanks to Ben Snider, there are now stock plugins for Twitter and Identica in the flashbake.plugins.microblog module. There is also a new plugin specifically for Banshee, the music player, in flashbake.plugins.music. I’ll add other music players as I have time. The Plugins page has been updated.

There is now support for a shared control file, ~/.flashbake/config. This file, if present, will get read first, then the project specific version. There are a few gotchas, however, to this central file. If you name a plugin both in the central file and the project file, it will get run twice. Plugin options will use the project file value if they are duplicated (I think). You can put hot files into the central file but they will be evaulated against the project directory so probably won’t be very useful if you have more than one project. You still must have a project specifiec .flashbake file, anyway.

garthrk also contributed some fixes, in particular for a nasty infinite loop problem on OS X. I have fixed some other some issues too, in particular making debug messages clearer.

See the project’s wiki for more information or download from the project’s download page.