Older blog entries for Pistos (starting at number 12)

Chaminade - Scarf Dance, Op. 37, No. 3

This piece, also known as Der Schärpentanz or Pas des écharpes, is by French pianist and composer Cécile Chaminade.

Read more about my piano recording series here.

Share/Save/Bookmark

Related posts:

  1. Chopin - Prelude in A major, Op. 28, No. 7
  2. Debussy - Rêverie
  3. Thomas - For Thee

Syndicated 2009-05-30 02:37:18 from Catholicism Computes

8 reasons why I prefer FriendFeed over Twitter

On account of the recent Twitter reply system fiasco (see Twitter blog entries 1, 2, 3, 4 and related backlash spewed across the Internet), I recently joined FriendFeed on recommendation by Jaykul. It didn’t take long for me to be really impressed with this service, and for Twitter to look pretty rinky-dink in comparison.

If you just want a basic short message service with almost no frills, then sure, Twitter fits the bill. But if you’re going to be using your communications service a lot, I think you might be pleasantly surprised, like I am, by all the great things FriendFeed is and does. The following points may not provide enough justification for you to join FriendFeed (or completely switch over), but it is for me.

Of course, there are other features of FriendFeed beyond the ones I list here, but they are not the main selling points for me personally. You can read FriendFeed’s own sales pitch on the FriendFeed home page.

8. Quickly find friends already on FriendFeed

While signing up, you are given the opportunity to find your friends who might already have FriendFeed accounts. After one click (and giving my nick), it imported everyone I knew on Twitter who were already on FriendFeed. Granted, Twitter has a similar on-join feature, but Twitter only imports from popular email services, whereas FriendFeed also imports from Twitter and Facebook.

7. Comments are second class citizens

I care about what I post to the Internet. I believe in the quality of my postings. I think that I owe it to my readership (and potential readership) to make everything I post on the net worth reading — something that would, if even just a little bit, enrich the life of the reader. This holds especially true for this blog of mine, but also applies to my microblogging, even if only to a lesser extent.

Sometimes we want to reply to or acknowledge a tweet, or maybe just chuckle with the tweeter when they make a joke or witty remark. On Twitter, what am I to do? If I reply tweet with nothing but “@Jaykul lol”, I’d have degraded the quality of my tweetstream. If I’m not willing to do that, then I have effectively been suppressed by the limitations of Twitter.

On FriendFeed, everyone has a main feed to which they can post messages, just like on Twitter or Facebook. But over there, I can comment on Jaykul’s tweet with my one-word laugh message, and my main feed is not polluted.

6. Like or Share, not retweet

On FriendFeed, I can indicate I like something with a single click. Then, everyone who cares to know (dependent on their account settings) can see what I marked. The advantage there is that I don’t need to expend message text on attribution (”RT @nickname …”). FriendFeed records and displays that metadata for me. This character savings becomes more pronounced with further degrees of retweeting; you lose dozens of precious tweet characters when trying to preserve multiple attributions (”RT @nickname1 @nickname2 @nickname3…”). Not so with FriendFeed.

Full-fledged sharing is also possible, to any of several other social sites, including Twitter, Facebook, Digg, Reddit and Delicious.

5. Shortened URLs are expanded

Those of you wary of (or downright averted to) URL shortening will be pleased to hear that FriendFeed expands URLs for you in your FriendFeed homepage. If you don’t know what the problems with URL shorteners are, I’ll let you exercise your google fu and find out.

4. Echo to Twitter

FriendFeed allows you to echo your messages over to Twitter, so you still have a heartbeat over there while you wait for people to get FriendFeed accounts. This of course removes the need to post the same message manually in both places.

3. Aggregate other services, including Twitter

FriendFeed has this great feature called “imaginary friends”. Yeah, get the giggles out of your system from that name, then let’s move on. :) By creating an imaginary FriendFeed friend, you can in effect follow (subscribe) to their accounts on other services — 57 other services, to be exact, including Twitter, Flickr, Facebook, and many others. This way, you can effectively import your Twitter friends who haven’t joined FriendFeed yet. Once added as an imaginary friend, all their Twitter updates (or Flickr photos, or Facebook updates) appear in your FriendFeed home page.

Let’s recap the last two points again: You can post to Twitter from FriendFeed instead of at Twitter, and you can receive your Twitter friends’ updates on FriendFeed instead of at Twitter. In other words, it’s really starting to look like you don’t need Twitter much any more. I only check it once in a while for direct messages, or for updates from people I haven’t turned into imaginary friends yet.

You can also follow any RSS feed with FriendFeed, which makes it a sort of primitive or summary-only RSS reader or aggregator. I’m not an avid RSS collector (uses up too much time, a resource of which I have precious little to spare), so this suits me just fine. For example, it’s allowed me to follow my personal github.com feed on FriendFeed instead of in a separate github browser tab. Nice and tidy and unified.

2. No 140 character limit

For the most part, I do not communicate in short squirts.

I’ve lost count how many times I’ve tried to tweet something, then had to trim it down because of the 140 character limit, and also because I was trying not to break a message across two tweets. One time I used “shorthand” like “2″ for “to” or “u” for “you”, and was almost ashamed of myself for doing so. Those of you that know me know that writing like that is so not me.

So, not having to restrict myself to the limits of an archaic technology was a huge selling point. I don’t use my phone for text messaging, and I definitely don’t use it for updating Twitter, Facebook or FriendFeed. So that 140 character limit feels annoying at best.

1. Very high usability; nice design

FriendFeed’s website is extremely well-designed. There are many signs of the user interface being well thought out, and it’s clear that usability was given importance during development. You should check it out for yourself, so you can experience what I’m talking about first-hand, but I can list a few items here.

The FriendFeed site strikes a great balance between AJAX versus full page loads. You get a spinner (AJAX) or popup (JS/CSS) where appropriate; a full page refresh where appropriate. This lends to a snappy and fluid user experience.

Hover over an account or group, and you get a handy JS/CSS popup that gives info and links for doing things or learning about that account or group. This in effect reduces click depth, which gives the feel that the information you want is that much more accessible and readily available.

Text boxes start out small, but automatically expand in size as needed, when the text you type gets lengthy. This lets the interface remain tidy and concise, but grow dynamically if there is a functional need.

When viewing a feed (such as the one on your personal FriendFeed home page), it updates in realtime with AJAX/JS effects. Contrast that behaviour with the pages on Twitter.

FriendFeed is very customizable. You can tweak notification settings, Twitter publishing preferences, and numerous other little things. As with all software, options help to give a very satisfying experience, because the same software can be tailored to satisfy many different tastes and preferences.

Multiple messages are compressed into “see more” links, which further helps keep the interface tidy. You can also Hide things with one click. With another click, you can hide similar items, too. For example, you might choose to hide a particular flickr photo of one friend — or go the distance and ignore their entire flickr photo stream.

When viewing someone or a group you might subscribe to, it tells you that the person posts “about 5 posts per day”. This lets you quickly gauge how much activity the person or group would add to your feed.

Conclusion

In summary, I think these reasons combine to make switching from Twitter to FriendFeed very compelling. FriendFeed offers everything Twitter does for me, and it does it much better, while also providing several enhanced features that Twitter does not provide.

If you’re a Twitter user, you at least owe it to yourself to make a FriendFeed account and test drive it. Compare and make a decision for yourself.

Share/Save/Bookmark

No related posts.

Syndicated 2009-05-19 15:45:33 from Catholicism Computes

Ramaze 2009.05 released

Ramaze 2009.05 has been released. This marks a new, brighter era in the Ramaze world.

Innate

For those of you that have not been following, manveru (Ramaze lead dev) had been brewing a new web framework core called Innate since the middle of last year. As of today, Innate is pretty much done, and only sees minor updates. Innate has its own repository on github, where you can find a detailed README. Innate is built on top of Rack, the “web framework framework”, and acts as the core for Ramaze as of this Ramaze release.

Upgrade carefully

Because of this big change, Ramaze applications built with Ramaze 2009.03 or prior need non-trivial effort to port to 2009.05. As such, proceed with caution when upgrading your gem, especially on production servers. You can install multiple Ramaze gem versions side by side, and then select a specific version in your applications as follows:

  require 'rubygems'
gem 'ramaze', '2009.03'
require 'ramaze'

Install or update Ramaze with

  gem install ramaze

The Ramaze team would like to apologize to those who unwittingly upgraded their Ramaze gems to 2009.04, which was essentially a beta release of the new Innate-cored Ramaze. We understand and acknowledge that it may have caused some confusion for some, since legacy apps have a high chance of not working without modification, and also since nearly all online information written about Ramaze to date covers pre-Innate Ramaze. We hope to rectify the situation with this release and announcement, and thank you for your understanding.

Documentation

As is the tradition in the Ramaze community, new code doesn’t come without a healthy dose of documentation. manveru has taken a lot of time to document the way things work in Ramaze 2009.05. Along with this release, he presents the fully updated, official online Ramaze book. It is quite detailed, and should help newcomers and old timers alike get to know the new Ramaze. Although not complete at this time, it is receiving regular updates and additions. The source of the book is open source.

manveru has also updated his Ramaze todo list tutorial to work with 2009.05.

Don’t forget that the source code repositories of Ramaze and Innate also have abundant documentation in them. Questions about Ramaze are sometimes answered by simply grepping the source code and reading the documentation, examples and tests. Consult both Ramaze and Innate source.

It’s a good idea to bear in mind that anything written about Ramaze up to March 2009 may not accurately reflect Ramaze as it stands in April 2009 and onwards.

Major changes

Below are some of the changes introduced by the advance from 2009.03 to 2009.05. Do not consider it exhaustive; you’d be better served checking other sources like the Ramaze book, and also hanging out in IRC so you can ask questions and receive live support. The mailing list is also a good way to get specific questions answered.

Content representations

Controllers can now provide one of multiple representations when responding to requests, based on conditions of your choosing. For example, this new feature lets you serve a normal response to /foo, but a JSON response to /foo.json. You can even use different templating engines for different wishes. See the content representations section of the Ramaze book and the source code of Innate::Node for more details.

Modes

Ramaze applications can now run in different modes, such as :dev and :live. You can make up custom modes since a mode is simply a nested array of Rack middleware.

Layouts

Layouts now reside in their own directory, layout/, distinct from the view/ directory. (As usual in the Ramaze world, these specific directories are only defaults.) Layout specification can also now take a code block to control when a layout is applied. See the layout section of the Ramaze book for more details.

Helpers

The old link helper’s methods (A, R and Rs) have been deprecated and replaced by Innate’s link helper’s methods: a, r and rs. They are mostly interchangeable, but the r methods can now also be called “off of” controllers:

OtherController.r( :foo, :bar, :a => :b )
#=> URI('/other/foo/bar?a=b')

The old partial helper has now been replaced by the render helper of Innate. The source code for the render helper is well-documented. Refer to it for usage syntax and examples.

Apps

Ramaze Apps have been introduced (notice the spelling with a capital A). A Ramaze App can be thought of as a namespace for controllers and options. You can thus take related controllers, and then package, distribute and reuse them with relative ease. An App is itself mapped to a path of your site, and can also use directories specific to it. Some example code:

module Forumaze
  class MainController < Ramaze::Controller
    map '/', :forumaze
  end
 
  class AdminController < Ramaze::Controller
    map '/admin', :forumaze
  end
end
 
app = Ramaze::App[ :forumaze ]
 
# path on site (relative URL)
app.location = '/forum'  
 
# filesystem paths relative to current dir
app.options.publics = 'forumaze/public'  
app.options.views = 'forumaze/view'
app.options.layouts = 'forumaze/layout'

With the above code, hits to http://yourdomain.com/forum would be served by Forumaze::MainController, and hits to http://yourdomain.com/forum/admin would be served by Forumaze::AdminController. Views would be taken from the directories forumaze/view/ and forumaze/view/admin. The same idea applies for static files and layouts of this App.

You can have multiple Controllers per App, and multiple Apps per Ramaze application.

ramaze binary

The ramaze binary has been updated. See ramaze --help and the ramaze command section in the Ramaze book.

Ezamar -> Etanni

The old default templating engine, Ezamar, has been replaced by the Innate equivalent, Etanni (or the more powerful Nagoro, if you choose). Ezamar templates should be forward-compatible with Etanni, but Ezamar Elements have been removed. To keep using Elements, use either Nagoro, which has Elements too, or the new render helper, which can accomplish the same thing in a different way.

Miscellany

The old start.ru Rackup file has been replaced with config.ru. This is particularly important for those of you deploying with mod_rack (Passenger).

Ramaze::Global has been removed and replaced with Ramaze.options which is intended to be a much better means of configuring Ramaze. Ramaze.options is also extensible, so you can use it for custom configuration of your applications.

Contributors

Direct contributions to the code repository for this release came from the following people (listed alphabetically, nickname in parentheses):

Innate

  • Sam Carr
  • Michael Fellinger (manveru)
  • Ryan Grove (rgrove)
  • Andreas Karlsson (jeltz)
  • (Pistos)
  • Tadahiko Uehara (kiko)
  • TJ Vanderpoel (bougyman)

Ramaze

  • Clive Crous (clive)
  • Michael Fellinger (manveru)
  • Ryan Grove (rgrove)
  • Aman Gupta (tmm1)
  • Andreas Karlsson (jeltz)
  • Victor Luft
  • (Pistos)
  • Tadahiko Uehara (kiko)
  • TJ Vanderpoel (bougyman)

Of course, all the folks who use and test drive Ramaze every day also deserve thanks, not just for using it, but also for providing valuable feedback on previous releases ramping up to this one.

As usual, we’d love to hear from long-time users and newbies alike. :) Stop by and say hello in our IRC channel (#ramaze on Freenode), or ask questions on our mailing list. We know converting old Ramaze apps may be challenging for some, but we’re here to help make the transition as smooth as possible for you. :)

Enjoy this release, and keep on Ramazing!

Share/Save/Bookmark

Related posts:

  1. Ramaze 2009.02 released
  2. Ramaze 2009.01 released
  3. Managing web application errors with Hoptoad and Ramaze

Syndicated 2009-05-06 16:02:38 from Catholicism Computes

Chopin - Prelude Op. 28, No. 20 in C minor

A short, sombre prelude by Chopin.

Read more about my piano recording series here.

Share/Save/Bookmark

Related posts:

  1. Chopin - Prelude in A major, Op. 28, No. 7
  2. Chopin - Waltz Op. 64 No. 2 in C# minor
  3. Chopin - Waltz Op. 69 No. 1 in Ab major

Syndicated 2009-05-03 19:20:39 from Catholicism Computes

Chopin - Prelude in A major, Op. 28, No. 7

A very short prelude in A by my favourite composer.

Read more about my piano recording series here.

Share/Save/Bookmark

Related posts:

  1. Chopin - Prelude Op. 28, No. 20 in C minor
  2. Chopin - Waltz Op. 69 No. 1 in Ab major
  3. Chopin - Waltz Op. 64 No. 2 in C# minor

Syndicated 2009-05-02 03:05:43 from Catholicism Computes

Diakonos - version 0.8.8

Version 0.8.8 of Diakonos is now available. This release delivers several new features, and also brings about a big change…

No more gem

Beginning with this release, I am doing something radical: I am not releasing Diakonos as a Ruby gem. While that may seem strange to some, I think the move is not only justified, but better for Diakonos.

I don’t believe Diakonos has a tremendously large user base at the moment. According to DistroWatch and LinuxRank, Ubuntu is easily the most popular Linux distribution. If Diakonos is to gain any popularity, it behooves me to ensure that it installs onto and plays well with Ubuntu.

I noticed that the Debian package for Diakonos had fallen behind my upstream releases (it was stuck at 0.8.4). I exchanged e-mails with Ralph Amissah, the maintainer of the Debian package (and, by extension, indirect maintaner of the Ubuntu package too), and was thereby informed that the inception of the new help system (introduced in 0.8.6) impeded the downstream updates. In particular, Diakonos’ downloading of configuration and help files for first time users was behaviour that ran contrary to Debian policy.

I think Debian and Ubuntu users who are not advanced Linux users would be more inclined to install packages via the apt system, as opposed to via RubyGems.

Furthermore, I have concluded that the RubyGems system is tailored much more towards libraries, and not applications. It’s great for putting files where Ruby’s require and load statements can find them. But it’s not so well suited to moving global configuration files into /etc, or system-wide documentation into /usr/share/doc. I mumbled about this over two years ago. At first, I worked around the problem by having Diakonos installed via RubyGems, and then downloading configuration files (and, later, help files) from the Internet when the user first runs Diakonos. But, as I’ve mentioned, this prevented smooth inclusion into the Debian package repositories.

RubyGems is focused on letting Ruby developers disseminate their libraries to other Ruby developers; Diakonos is an end-user application. That it is written in Ruby is secondary and peripheral; it is not my intention to present a cute novelty to the amusement and delight of a fraction of the developers of a subculture programming language. My goal is to create the most user-friendly console editor for Linux (”a Linux editor for the masses”).

In light of these facts, I elected to abandon the RubyGems system in favour of a custom installer (install.rb in the package). This installer would allow a distro package maintainer to install Diakonos to specific locations of his or her choosing in the filesystem. I envision that package maintainers for all distros should have little difficulty using it to create or update their packages. Of course, it is easy to use for the end user himself, as well. It can be used to install Diakonos completely in userspace (i.e. somewhere under a user’s home directory, without the need for root/sudo privileges).

The new package (simply a tarball) contains everything needed to run Diakonos, including default configuration files and a full set of help files. Diakonos no longer accesses the Internet for these like it used to in previous versions.

Configuration is loaded from the system-wide location (specified during installation), but user-specific overrides are (as before) loaded from ~/.diakonos/diakonos.conf.

Configuration inheritance

Configuration settings can now be inherited (cascaded). Simply use an equals sign (=) to set one setting to the value of another.

  one.setting = another.setting

For an example, have a look at the Ruby language definition in the default config file. See how the shared settings are defined earlier in the file.

This inheritance will work for any setting, not just formatting. The important thing to remember is that Diakonos will parse configuration files top to bottom, and visit each included file in the order the include directives are encountered, with a depth-first strategy. So you should define ancestor settings before descendant settings.

Block selection

You can now switch between block (columnar) selection and normal (flow) selection. Default keychains: <Alt-Shift-M, B> for block, <Alt-Shift-M, N> for normal. Mnemonic: M for Mark, B for Block, N for Normal.

Line numbering

Default keychord <Alt-Shift-L> can be used to toggle line numbering on and off. Line numbers appear in a left-side margin. Enable line numbering permanently by setting view.line_numbers to true in your config. Set view.line_numbers.width to the number of columns to use for the line numbering margin. view.line_numbers.number_format is the setting to use to define a sprintf format for the line numbers. Set the colour and brightness with view.line_numbers.format.

Code block navigation

A cool thing I’ve added in this release is code block navigation. Using Ctrl-PageDown, you can jump to the next code block of the same indentation level as the current line. Ctrl-PageUp goes back in the opposite direction (up or previous block). You might use this to easily browse: the methods of a class; or the different when clauses of a Ruby case expression; or the components of an if-elsif-else tree; or the rules of a CSS stylesheet; and so on. Diakonos will automatically limit the extent of the navigation, so if you start your browsing within an if-elsif tree, your cursor won’t jump outside that tree if you press Ctrl-PageDown too many times.

Alt-PageDown brings the cursor one block level deeper; Alt-PageUp brings you out one level.

Column markers

You can now define column markers using the view.column_markers.* settings. I’ve provided an example in the default config:

  view.column_markers.margin.column 80
view.column_markers.margin.format 9

Uncommenting or adding these lines would set up a column marker named “margin”. The name “margin” is arbitrary; use whatever names you want for your markers. The “margin” marker would highlight the 80th column using the format code 9 (white on red in the default 16-colour configuration).

You might use such a column marker as a visual cue to help you not exceed a certain line length. You can set up as many column markers as you like.

Remove word from input line

Pressing Ctrl-W on the input line will now delete the last word on the line. I mainly included this to lop off file path components when opening new files or grepping directories.

Ruby 1.9 and 1.8 support

Ruby 1.9 support is even better now. There are no known issues with Diakonos running under Ruby 1.9.1. If you encounter anything, please let me know.

As I move forward with development, I am preferring 1.9 styles and constructions where there is a choice. As such, some functions of Diakonos may no longer function under Ruby 1.8. I encourage you to install Ruby 1.9 if you have not already, and to keep both versions concurrently installed on your systems. The Ruby community benefits when people move forward to adopt and use this latest stable release of Ruby.

A corollary of running under 1.9 is the ability to open and edit files with encodings other than ASCII. The little test files I opened were handled by Diakonos without difficulty. I could insert and delete UTF-8 characters and save the file. Any real world usage (testing) of Diakonos with non-ASCII files is appreciated!

Also, don’t forget that things run faster under Ruby 1.9, and Diakonos is no exception!

Et cetera

Several bugs were fixed (see the git commit log for details). If you subscribed to the particular LinisTrac tickets in question, you would have already been notified.

The rest of the changes are described in this version’s full changelog:

  • New installation and uninstallation method: tarball + install.rb.
  • Added configuration setting inheritance.
  • Added block selection mode (Alt-Shift-M B; Alt-Shift-M N).
  • Added line numbering settings.
  • Added spawn function.
  • Added go_block_previous, go_block_next (Ctrl-PageUp, Ctrl-PageDown).
  • Added go_block_outer, go_block_inner (Alt-PageUp, Alt-PageDown).
  • “Remove word” functionality (Ctrl-W) added to readline.
  • Added find.show_context_after setting.
  • Added view.column_markers.
  • Added lang.____.indent.not_indented setting.
  • Introduced $d shell variable: current buffer’s directory.
  • $f and $d now expand to absolute paths.
  • delete_to and delete_to_and_from can now operate over multiple lines.
  • delete_to_and_from can now delete between matching brackets.
  • Added git diff (F9).
  • Ruby 1.9 support smoothed out. Ruby 1.8 support being deprecated.
  • Support for non-ASCII encodings tentatively confirmed.
  • Several bugs fixed.
  • Help files updated.

As usual, report any bugs here, or come visit me in IRC. If you like Diakonos, please consider making a small donation.

Enjoy version 0.8.8!

Share/Save/Bookmark

Related posts:

  1. Diakonos - version 0.8.6
  2. Diakonos - version 0.8.7
  3. Diakonos - version 0.8.5

Syndicated 2009-04-03 19:17:26 from Catholicism Computes

Debussy - Rêverie

Another dreamy, reflective, cloudy piece by Claude Debussy.

Read more about my piano recording series here.

Share/Save/Bookmark

Related posts:

  1. Debussy - Arabesque No. 1
  2. Debussy - Golliwog’s Cakewalk
  3. Chaminade - Scarf Dance, Op. 37, No. 3

Syndicated 2009-03-19 03:50:56 from Catholicism Computes

Diakonos - version 0.8.7

Version 0.8.7 of Diakonos is now available. Install by gem install diakonos. This version brings several new features and more bug fixes.

strip_trailing_whitespace_on_save

A strip_trailing_whitespace_on_save setting was added, defaulting to true. I’ve joined the camp of those who believe that trailing whitespace doesn’t belong in source control repositories (due to diff false positives).

Sessions

I’ve added sessions to Diakonos, and use them all the time now. Name your session by starting diakonos with a -s option:

  diakonos -s my-website

The default configuration will show the session name in the bottom right. If you close Diakonos and reopen it with the same session name, it will reopen all the same files as were open when you closed it.

If you open Diakonos without a session name, it will still maintain an anonymous session until you quit. If Diakonos or your computer should crash during your session, you can start up Diakonos and it will prompt you to restore any sessions that were not closed gracefully.

Grep as you type

The previous release of Diakonos saw the inclusion of “find as you type”. This version provides grep as you type. Behold the coolness via this mini screencast:

delete_to

Being forced to use vi on occasion at work, I’ve become acquainted with at least one neat thing: You can press “dt” in vi to “delete till”. So I brought this functionality over to Diakonos. Type Ctrl-D-T, " to change this:

 some_method( "here is a string", 3 )

to this:

 some_method( "here is a ", 3 )

Type Ctrl-D-I, " to change this:

 some_method( "here is a string", 3 )

to this:

 some_method( "", 3 )

custom.conf

The default diakonos.conf configuration file now has an include custom.conf directive. This lets you keep your custom Diakonos configurations in ~/.diakonos/custom.conf while allowing you to regularly upgrade diakonos.conf with each new Diakonos version.

Ruby 1.9 compatibility

Version 0.8.7 marks the first version of Diakonos that can run under Ruby 1.9. Diakonos 0.8.7 will also run under Ruby 1.8.6. Please be advised that I am tentatively planning on dropping Ruby 1.8.x support beginning with the next Diakonos version.

Changelog

Here is this version’s full changelog:

  • MRU buffer history added.
  • strip_trailing_whitespace_on_save setting added.
  • Sessions (named and unnamed) added.
  • grep as you type added.
  • delete_to added.
  • delete_to_and_from added.
  • find.return_on_abort setting added.
  • Makefile config added.
  • Markdown config added.
  • Sass config added.
  • Now including custom.conf from default diakonos.conf.
  • Help files updated.
  • Some Ruby 1.9 compatibility introduced.
  • Lots of code refactoring done.
  • Numerous little adjustments and fixes made.

Report any bugs here, or come visit me in IRC! Enjoy this release.

Share/Save/Bookmark

Related posts:

  1. Diakonos - version 0.8.5
  2. Diakonos - version 0.8.6
  3. Diakonos - version 0.8.8

Syndicated 2009-02-23 03:35:35 from Catholicism Computes

Ramaze 2009.02 released

Ramaze 2009.02 has just been released. There are just a few changes since 2009.01:

  • Redirection within https fixed.
  • flash.delete now fully deletes from flash.
  • Subclass controllers now properly inherit the template engine of the parent controller class.
  • Ruby 1.9 compatibility improved.

manveru has always been conscientious about Ruby 1.9 compatibility in Ramaze (indeed, in all his projects), so Ramaze had already been considered 1.9-compatible for some time. With the recent release of Ruby 1.9.1, though, a fresh problem crawled out of the woodwork. This release addresses the issue; see the mailing list thread for details.

As some of you can probably appreciate, 1.9 compatibility is a non-trivial assignment. If you encounter any sort of problems using Ruby 1.9.1+, please don’t hesitate to let us know.

Contributions to this release came from the following people (listed alphabetically):

  • Andreas Karlsson (jeltz)
  • Michael Fellinger (manveru)
  • (Pistos)
  • Riku Raisaenen (rikur)
  • Sean Lai

Install or update Ramaze with

  gem install ramaze

As usual, we’d love to hear from long-time users and newbies alike. :) Stop by and say hello in our IRC channel (#ramaze on Freenode), or ask questions on our mailing list.

And don’t forget that the next generation of Ramaze, with an “Innate” core, is on the horizon, with several features and improvements. In the mean time, enjoy this release!

Share/Save/Bookmark

Related posts:

  1. Ramaze 2009.01 released
  2. Ramaze 2009.05 released
  3. Ramaze by Example - Conclusion

Syndicated 2009-02-14 05:22:32 from Catholicism Computes

Selfmarks - anti-social bookmarking

I’d like to introduce a project I’ve been working on for the past week.

From the Selfmarks site:

Selfmarks is anti-social bookmarking for the technically endowed. Trouble-free bookmarking for geeks. Bookmarking without the centralization handcuffs; you take all the credit (and blame).

I used Diigo to manage all my bookmarks for the past couple years, and for the most part the service has been decent. I would still recommend them as a good site for social bookmarking. But now and again, I would find their servers responding very slowly, and I just got fed up with that, because I never really used the “social” part of social bookmarking. All I really wanted was a place on the Internet I could put my bookmarks.

So, after one more episode of dissatisfactory service, I finally cracked and started writing up my own bookmarking site.

Selfmarks is written in Ruby, using the Ramaze web framework. I access a PostgreSQL database using M4DBI for ORM. Thanks go to Alexut for the Selfmarks logo.

Selfmarks is OpenID-enabled, so go ahead and use your OpenID to instantly create an account and play with the site. You can import your bookmarks in delicious format.

The project is open source; grab it from github, or

  git clone git://github.com/Pistos/selfmarks.git

Installing Selfmarks for oneself should only be a mild challenge for a seasoned programmer. There has already been one other successful installation by an experienced Rails and Ruby dev.

Let me know what you think! Leave a comment on this blog post, or chat with me on FreeNode.

Share/Save/Bookmark

Related posts:

  1. M4DBI - Models (and more) for DBI
  2. Got a good thumbstream?
  3. Ramaze by Example - Part 8: Deleting Tasks

Syndicated 2009-02-06 21:01:58 from Catholicism Computes

3 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!