I don't know, I work my fingers to the bone writing FlickrLilli, and FlickrStorm gets the TechCrunching. Maybe if I'd got round to doing the "favourites" area (where you can bookmark images you like) I'd be toast of the month. Ho hum.
Had to release a new version of AxleGrease to keep up with the everso severe security warning released by the Rails team yesterday. Upgraded to Rails 1.1.5.
I got fed up with the name "ROROX" for my Linux Rails package (Ruby on Rails on XAMPP). So I have now changed its name to AxleGrease. The project is still hosted on RubyForge under the old name, though.
To accompany this "exciting" name change, I am pleased to announce the new version, which brings the stack bang up to date. You can get the latest version from RubyForge. Full details are in the CHANGELOG, but here are the highlights:
./rails_add_app.sh mongrel /path/to/app app_name <port>
or de-mongrelise with:
./rails_add_app.sh /path/to/app app_name
As ever, it is designed for my environment: XAMPP 1.5.3a running on Ubuntu Dapper. It may work on other Linux distributions, but I've made no effort to test it. I might do eventually. Using XAMPP means I can also integrate the start/stop scripts into the XAMPP start/stop sequence, and can do:
/opt/lampp/lampp stopmyapp
/opt/lampp/lampp startmyapp
/opt/lampp/lampp restartmyapp
to control my Rails applications.
My approach to configuring Rails applications also goes against the grain of other packaged systems: rather than creating new virtual host configurations, I mount individual applications on directories within Apache's document root. This means no need to edit /etc/hosts and simpler setup. However, this is somewhere where I'd like some feedback, as I'm not a mod_rewrite or mod_proxy expert. Currently, Mongrel/Apache configuration looks like this for a typical application available at http://localhost/emaildir/:
ProxyPreserveHost Off ProxyRequests On # so redirects work properly ProxyPassReverse /emaildir/ http://127.0.0.1:9999/ RewriteEngine On # redirect requests for dispatcher to the application root RewriteRule ^/emaildir/dispatch(.*)$ /emaildir/ [R] # requests for the root get redirected to index.html if it exists RewriteCond /opt/lampp/htdocs/emaildir/index.html -f RewriteRule ^/emaildir/$ /emaildir/index.html [R] # any requests which can't be served from static files go to the proxy RewriteCond /opt/lampp/htdocs%{REQUEST_URI} !-f RewriteRule ^/emaildir/(.*)$ http://127.0.0.1:9999$0 [P,QSA,L]
For this to work, you also need a line at the end of config/enviroment.rb like this:
ActionController::AbstractRequest.relative_url_root = '/emaildir'
(My scripts automate all this, by the way; and the remove script undoes any changes made. This is likely to work better with later versions of Rails which are being patched to work nice with Mongrel.)
It has taken me some time to get this straight. About 4 hours, to be precise. So hopefully it should work OK. Fingers crossed.
I like the way in Gnome/Nautilus you can create a "pseudo filesystem" over an SSH session: you can treat a remote filesystem sort of like part of your regular filesystem. However, it's not a real mount, as you can't reference it using a standard path (there's no /media/remote path you can point to from the command line, for example).
I was facing this with a client this morning, where we wanted to make a filesystem mountable via an SSH session. After a quick google, we found shfs. This enables mounting a filesystem which is accessible via an SSH session on a mount point on the local machine. We then found a simple installation guide and had it up and running in about 10 minutes. On Ubuntu Dapper, here's an overview of the process:
apt-get build-essential shfs-source shfs-utils linux-headers-`uname -r`shfsmount --persistent user@server.com /path/to/mount/ontoecho 'shfs' >> /etc/modulesuser@server.com /path/to/mount/onto shfsWe needed to set a few permissions to finish up; here's where I'm at so far in /etc/fstab:
user@server.com /media/ssh shfs rmode=755,auto,rw,group,cmd-user=ell,type=shell,stable,user,uid=1000,gid=100 0 0
This is useful as it logs into my remote machine using my personal public key, and sets the user and group to my user account and the users group. I'm still having a few issues with writing into the root of the mounted directory from Nautilus (I can from the command line, though).
We then explored whether tools like "TortoiseSVN": are available for Linux. EasyEclipse is great, but a bit heavyweight for some users; perhaps a simple Explorer-like interface which allows visual diffs will do. Enter Meld. It's packaged for Debian/Ubuntu, so you can do:
apt-get install meld
I hadn't looked at it for a while, and when I last looked it was quite simple and only did file-file comparisons. But the latest version is really cool. You can use it like a Subversion client and do visual comparisons of a local working copy and a repository without much fuss. I plan to look at this a bit more as it could be a great tool for companies who don't want to go as far as Subversion (you can do directory-directory comparisons too). Couple with shfs, it could be a great lightweight "revision control" system for Linux.
Note: If you're installing Ubuntu Edgy as a guest OS, I've updated these instructions (as it's easier than Dapper). See this page of instructions instead.
Hmm, not simple. But I've licked it. I'm using VMware Workstation 5.5.1 build-19175 and Ubuntu Dapper as the host operating system. I am installing a second Ubuntu Dapper as the guest operating system. I also worked out how to get the VMware Tools to work. Here's what I did:
Hurrah! It works!
Why has no one come up with a good solution for this yet? Is it because there's too much money to be had from selling licenses? The solutions available are all pretty atrocious for a normal user. Yes, they have lots of functionality, but their interfaces are a confusing mess. Here are some I've looked at today:

This is not intuitive: the user is actually registered, but needs to confirm their account before they can log in; the pop up makes it look like their account has been denied. Believe me, I've tried to stop it doing this, but short of hacking the PHP code, I can't seem to change it.
Can someone please suggest something half decent that can be picked up in a few minutes? I've written previously about trying to write something to address this gap in the market, and despite being really busy, I'm getting so frustrated at the lack of a good solution that I'm almost tempted to get down and do it myself. How hard can it be? I don't necessarily mean something that will work anywhere in the world and be ultra-configurable; just a simple product listing with PayPal integration, a few categories, one currency, order processing, that kind of thing. Any ideas?
We occasionally get asked about project management software, and to date there have been few real contenders. We know about Planner (was MrProject) and a few others, but no really nice, good looking, easy to use tools. activeCollab looks set to fill that gap. Very similar to Basecamp, a synch to install (PHP and MySQL), and slick. Supports users with different privilege levels (so clients could have view-only access, while the project team can read/write); as many projects as you like; association of milestones with projects, and tasks with milestones; tasks are assignable to anyone involved in the project; documents can be attached to projects; and so on. Pretty good, and with a good chance of rapid improvements.

(By the way, miskanda mornek is the project name, in case you were wondering. I made it up.)
Completed my first Drupal 2 day training course last week. My report is online at http://www.openadvantage.org/articles/20060727_drupal_fasttrack_report. An interesting course to teach; quite difficult compared to a programming course, as you are talking about an application, which has a coarser grain size than a programming language. I think I feel more comfortable in "the lower levels". It also made me aware of many Drupal shortcomings, like the lack of a decent and simple e-commerce module, the lack of a good way to do "members only" areas, the hit and miss quality of 3rd party modules, the confusion caused by the term input format (for what is really an output format), and some inconsistencies in Drupal terminology and layout (e.g. when you install the Content Construction Kit you get two content types entries in the admin. menu).
You can get my presentations/training materials/exercises from the OpenAdvantage website.