Posted by h3rald
Thu, 25 Oct 2007 13:18:00 GMT
It’s time for a new beta release of RedBook. This was actually going to be a fairly modest release in terms of features, but I actually ended up implementing a lot more than expected, even things which were planned for the first production release 1.0. So, let’s see what’s new
New operation names (which break compatibility with previous versions)
I had a look at the names I choose for the operations and I noticed that they were either not intuitive enough or too verbose. So I decided to change a fair few of them (thus breaking compatibility with previous versions, but after all that’s what beta releases are for, right?):
| OLD |
NEW |
| :complete |
:finish |
| :load |
:select |
| :load_config |
:config |
| :load_log |
:refresh |
| :timecalc |
:calc |
| :stop |
:quit |
New Manual/Home Page
A while ago I discovered TiddlyWiki, but as a matter of fact I never used it for anything practical. From last week though, I started using it a work for taking notes and create short memos, and then I thought of using it to replace RedBook’s standard README file (which was made in a hurry and was kinda cryptical). Now a brand new “manual.html” ships with RedBook—308 KB (30 of actual docs and 278 of Javascript/HTML/CSS magic) with everything you need to know about it. Additionally, an online version is available at the following address:
redbook.h3rald.com
Removed Win32::Console Library
OK this is not good news for people (like me) who use RedBook on Windows, but I promise you’ll forgive me when you read about the other new features below. I discovered by chance that the Win32::Console library (which was used to get colors working on Windows) seems not to handle international characters properly and also seems to be conflicting in some way with the Readline library I decided to include (see below). I don’t know whether this is a problem of the actual library or just of the gem used to pack it.
rbconfig.yml
The config.yml file has been renamed to rbconfig.yml. Additionally, if you place a file with this name in your $HOME directory it will override the one in your RedBook folder (This was done in preparation for the RedBook RubyGem).
New operations
The following new operations are available:
- :relog—Re-logs a previously-logged message (keeping the same tags and updating the timestamp)
- :clear—Clears the screen.
- :ruby—Evaluates arbitrary Ruby code outputting the result (use with care…)
Auto-completion
Some Mac users originally complained that the backspace key wasn’t working in RedBook (and it didn’t in Linux either). Fortunately the solution to this was easy enough: include the GNU Readline library.
Readline is now being used in RedBook to:
- Provide basic (Emacs-style) bindings
- Auto-completion for keywords and tags
- Allow the user to automatically customize key bindings via an .inputrc file placed in their $HOME directory (on Windows you’ll have to define a HOME environment variable pointing to a directory of your choice). An example .inputrc file is distributed with RedBook with some specific key bindings.
Support for international characters
Finally, I decided to implement another feature which was originally planned for the 1.0 release: international characters support. This is possible using the Iconv Ruby extension (requires GNU libiconv) which can convert strings between different character sets. The character sets needs to be configured via the rbconfig.yml file.
For more information, check out the ChangeLog
Download RedBook
Posted in Blog | Tags OpenSource, productivity, redbook, ruby | no comments | no trackbacks
Posted by h3rald
Mon, 08 Oct 2007 11:05:00 GMT
“Release Early, Release Often”
—Eric S. Raymond, The Cathedral and the Bazaar
In other words, time for another (early) release of RedBook. There are quite a few new features which are worth examining, in particular:
Regexp search for messages
This was actually already available before, just if you inputted a search string which was not a regexp, you’d get an unhandled exception (more or less). This exception is now handled propertly so you get a pretty message instead, if an error occurs when parsing the search string.
Log Backup
A new :backup keyword is available to quickly backup your log file. Here’s what it does:
- Loads all messages silently
- Writes them to a file in the same directory as the original log file named <log-alias>.bkp.yml.
Handy, especially if there was a similar keyword to restore the last backup, which is planned for later on.
Support for multiple log files
This is perhaps the most important feature introduced by this release. It is now possible to configure more than one log file by adding any number of :data_<alias>: settings inside your config.yml file, where alias is the name of your log file. So, for example, if your config.yml file contains the following:
:data_test: “testlog.yml”
You can load the “test” log by typing
:use test
(:use is a shorthand for :load_log). Similarly, another new keyword :dest has been introduced to be able to log a message to a different log file without loading it into memory, like this:
:log This message will be saved to testlog.yml :dest test
Finally, a :refresh keyword has been introduced as an alias to reloading the current log.
(Almost) automatic log of completed activities
Right when I was coding the :timecalc operation, I thought it would be nice to be able to log the start and end of a task without having to type it twice. Now this is possible using the :complete keyword:
:log Testing feature X in product Y
:complete
:complete will re-log the last message prepended with [COMPLETED]:
4 Mon Oct 08 2007 – 10:47:45 AM Testing feature X in product Y
5 Mon Oct 08 2007 – 10:54:31 AM [COMPLETED] Testing feature X in product Y
What if I start another task before completing the first one? No problem, it is sufficient to load the last activities using a :load command and then issuing :complete <number> where <number> is the index of the loaded activity.
This nifty little feature will become more and more important when (starting from release 0.4) I’ll implement more time tracking functions, and it will be possible to track completed tasks in a specific timeframe and/or marked with a specific tag.
Easy integration with launchers like Launchy and QuickSilver
To conclude, as someone pointed out that it would be cool to use RedBook from launchers like Launchy or Quicksilver, I made another standalone script (redbooklet.rb or redbooklet.exe) which is just able to parse a log command and write a message to the specified log file.
To use it with Launchy, for example, all you have to do is the following:
- Create a shortcut to redbooklet.exe (or to a way to execute the corresponding ruby script) named “log”.
- Copy the “log” shortcut anywhere in your start menu
- Bring up launchy (ALT+SPACE) and type in “log”
- Hit tab
- Type in your log message, optionally with the any :tags or :dest keywords.
- The message will be logged to your default log file or to the log you specified using the :dest keyword. If an error occurs, it will appear in a command line window for 15 seconds before the program is closed.
That’s all folks! As usual, if you have any comment or suggestion feel free to reply to this post or email me. For a list of the planned features and releases, check out the Milestones page.
DOWNLOAD HERE
Posted in Blog | Tags OpenSource, productivity, redbook, ruby | no comments | no trackbacks
Posted by h3rald
Wed, 03 Oct 2007 11:53:00 GMT
After reading the very first paragraph of Mr. Neighborly’s Humble Little Ruby Book (HLRB for short, from now on) it was very clear to me that it was going to be quite an unconventional read:
“Yes, there is a Chapter 0. There is a little bit of introductory stuff we need to talk about before
we set you loose on Ruby. You wouldn’t want to get psyched about a new gadget, get it home,
and then figure out you need batteries, a grapefruit, and the ability to speak three languages to
even open the box would you?”
That reminded me immediately of Why’s Poignant Guide to Ruby. without a doubt. I don’t know how it is possible that two witty, crazy, and very inventive guys grew fond of the same programming language. Anyhow, to reassure a few of you, you won’t find any foxes or chunky bacon cartoons in HLRB, just some very well made (although still pretty unconventional) diagrams like this one:

Got the picture? Good. Let’s move on…
Read more...
Posted in Articles | Tags books, review, ruby | no comments | no trackbacks