phpBB 3.0 has been released!
Close to 6 years after the release of phpBB 2.0, we are given a new version which includes an enormous number of new features, tightened security, extensive bug fixes, optimisation for mobile devices and search engines, and remains free under the GPL.
You can view the feature changes from 2.0 to 3.0 here. Most notable changes include the removal of MS Access for data storage (who would want that anyway!), syntax highlighting, a lot of security improvement, caching, also a lot of user-centered features.
If the default phpBB 3.0 package contains all the features you need, go ahead. The biggest features missing is plugins or add-ons, whatever you want to call it. You still have the ability to add MOD’s, which are basically hacks to your phpBB codebase. I don’t mind hacking some code and getting my hands dirty, but every time there’s an upgrade, you get into trouble. You need re-apply all the MODs your site relies on.
In all, I think phpBB 3.0 is quite a nice package to replace the famous, but leaky phpBB 2.0 forum tool, but it just isn’t quite there yet. My recommendation would, at this moment be Vanilla. If you have any other kick-ass forum solution, feel free to drop a comment here.
Flickr Adds Stats To Photo Pro Accounts
Flickr has provided an attractive place to show off your photos and get constructive feedback from the community. However, their advanced comment and tagging system leaves out the vast number of people that simply peruse the site. But today Flickr unlocked those stats for Pro users.
Earlier this year Flickr whetted our appetite for stats when they released numbers on what kinds of cameras are used on the site. The stats are like Google Analytics for your photos. They track page views and visitors across each of your photos and go all the way back to the start of your pro account (or at least 28 days back if you upgrade from a free account).
The numbers are updated daily and don’t count views you make yourself or that are from embedded versions of your images around the web. Referrals are only listed for the past couple of weeks. For search engine referrals, stats will show what people searched for to find your pictures.
How to install MySQL on Ubuntu/Debian
It may seem easy for some, but for others, installing MySQL on Ubuntu or Debian Linux is not an easy task. This article explains to you how to install the MySQL Server and Client packages on a Ubuntu/Debian system.
First of all, make sure your package management tools are up-to-date. Also make sure you install all the latest software available.
sudo apt-get update sudo apt-get dist-upgrade
After a few moments (or minutes, depending on the state of your system), you’re ready to install MySQL.
By default, recent Ubuntu/Debian systems install a MySQL Server from the 5-branch. This is a good thing, so don’t worry.
First, install the MySQL server and client packages:
sudo apt-get install mysql-server mysql-client
When done, you have a MySQL database read to rock ‘n roll. However, there’s more to do.
You need to set a root password, for starters. MySQL has it’s own user accounts, which are not related to the user accounts on your Linux machine. By default, the root account of the MySQL Server is empty. You need to set it. Please replace ‘mypassword’ with your actual password and myhostname with your actual hostname.
sudo mysqladmin -u root -h localhost password 'mypassword' sudo mysqladmin -u root -h myhostname password 'mypassword'
Now, you probably don’t want just the MySQL Server. Most likely you have Apache+PHP already installed, and want MySQL to go with that. Here are some libraries you need to install to make MySQL available to PHP:
sudo apt-get install php5-mysql
Or for Ruby:
sudo apt-get install libmysql-ruby
You can now access your MySQL server like this:
mysql -u root -p
Have fun using MySQL Server.
Apple explorer IE IE6 IE7 internetexplorer leopard mac Mac OS X MacOSX osx parallels tiger windows
by Ariejan de Vroom
leave a comment
Run Internet Explorer 5, 5.5, 6 and 7 natively on Mac OS X Leopard or Tiger
As a web developer, you probably know all about browsers. They suck. Well, some more than others. But, if you develop apps for Windows users, you’ll have to test your app with Internet Explorer.
Now, as a good Rails developer, I’m using a Mac. I can test apps with FireFox, Safari and Opera without problems. But Internet Explorer is always a problem. I used Parallels for a while to run an instance of Windows XP to test with IE. But this in itself presented me with a problem: you can’t, without nasty hacks and a lot of trouble, run IE6 en IE7 side-by-side.
My only option seemed to run two Parallels sessions, one with IE6, the other with IE7. Since every images takes about 5 Gb of disk space, I just wasted 10 Gb of disk space to test web apps with Internet Explorer. This is kind of ridiculous.
But, now there is a very, very nice solution to this problem that every Mac-oriented web developer should know about: ies4osx This solution uses darwine (±70Mb), a wine version for OS X, using X11 and allows you to install IE 5, 5.5, 6 and even IE7. All at once, right in Mac OS X. You can run any of these browsers, from the same system, all at once in parallel!
Although this allows me to use Internet Explorer the way I want it to, I’m still not a fan…
Wil jij mijn collega zijn? - Kabisa is hiring!
Zoals je waarschijnlijk al wel weet, werk ik al een tijdje bij Kabisa, en ik ben op zoek naar nieuwe collega’s!
Ben jij een een ICT’er (liefst met Java of Ruby ervaring, maar dat is niet vereist), laat dan even je gegevens achter op jobs.kabisa.nl.
Ook als je iemand kent die ICT’er is, en toe is aan een nieuwe uitdaging, kun je deze persoon opgeven op jobs.kabisa.nl.
De eerste 100 aanmeldingen ontvangen een Nationale Bioscoopbon. Bovendien wordt tussen alle aanmeldingen op 29 februari 2008 een Apple iPod Touch verloot!!
Heb je vragen over Kabisa? Neem gerust even contact op met me op.
English version, for the non-Dutch folk
As you may already know, I’ve been working at Kabisa for quite some time. Now, I’m looking for new colleagues.
Are you a programmer (with Java or Ruby experience, but it’s not required), please leave your credentials at jobs.kabisa.nl.
If you know a programmer who is ready for a new challenge, drop his or her credentials (and your own) at jobs.kabisa.nl.
The first 100 applications will be rewarded with a national cinema voucher. At February 29th, 2008 we will also pick one of the applications and reward it with an Apple iPod Touch!
Do you have any questions about working at Kabisa? Feel free to contact me now.
Installing and Configuring Nginx and Rails on Ubuntu
James O’Kelly has put together a comprehensive tutorial going through all of the stages necessary to install and configure Nginx and Rails together to run applications on an Ubuntu server. James’ blog RailsJitsu.com is definitely worth a look (and perhaps to subscribe to!) as he seems to have a knack for regularly putting together good Rails (and especially Mephisto) focused posts.
Faker: Quick “Fake Data” Generation in Ruby
I love finding a library that does exactly what it claims to do, and does it in the simplest way possible. Faker by Ben Curtis is a Ruby library, packaged as a Ruby Gem, that generates “fake data” for you, in the form of names, telephone number, e-mail addresses, addresses, and so forth.
For example:
Faker::Name.name # => "Gwendolyn Wehner" Faker::Internet.email # => "ava.conn@emmerich.info" Faker::Internet.free_email # => "angelina.labadie@hotmail.com" Faker::Internet.user_name # => "mitchel.heaney"
This could be particularly useful for throwing data at any libraries or systems you develop that need to process personal details.
I had trouble installing Faker in the usual way (with gem install faker) as the Ruby Gems server reports that the file could not be found. An easy workaround, for now, is to download the gem manually:
wget http://gems.rubyforge.org/gems/faker-0.2.0.gem gem install faker
Fresh New Ruby Implementation Benchmarks: So Who’s Fastest?

Almost a year ago, Antonio Cangiano performed some benchmarks on the then present Ruby implementations: Ruby 1.8.5, YARV (now Ruby 1.9), JRuby, Ruby.NET, Rubinius and Cardinal. The results were that YARV, although nowhere near ready for production use, was streets ahead of Ruby 1.8, and the other implementations raised enough errors to still be considered ‘experimental’.
Now Antonio has rerun the tests on Ruby 1.8.6, Ruby 1.9 (from trunk), JRuby (from trunk), Rubinius (from trunk) and XRuby 0.3.2. Ruby 1.9 again takes the lead by quite a margin, but the best development is that instead of being a distant third (behind Ruby 1.8), JRuby has made significant improvements and is smack bang in between Ruby 1.8 and Ruby 1.9 in terms of performance (while offering, of course, the benefits of the Java ecosystem). JRuby now also passes all of the tests without error, a feat that even Ruby 1.9 doesn’t yet achieve. The Rubinius team hasn’t been slacking either. On the previous test, Rubinius was coming in miles behind the other implementations, but is now quicker than the stock Ruby 1.8.6 interpreter on a wide selection of the tests.
Antonio’s post is blog pornography for those of us who are into benchmarks, comparisons, and graphs, so just go soak it all up now.
cache find join order Rails Ruby Ruby on Rails select sort
by Ariejan de Vroom
2 comments
Rails: calculated column caching
Sometimes you’re working on a Rails project and you think: “hey! This should be easy!”. Well, most of the time it is. I’m working on a project that allows people to rate objects (what they really are doesn’t matter at all).
I’m using the acts_as_rateable plugin which creates an extra database table containing all ratings. I also have a table with my objects. Using the plugin I’m now able to do the following:
obj = Object.find(:first) obj.add_rating Rating.new(:rating => 4) obj.add_rating Rating.new(:rating => 5) obj.rating => 4.5
This works all perfectly, until you want to sort objects by rating. You could construct a huge SQL query to join the two tables, but that’s not really efficient, especially when your database gets bigger.
The solution is very easy and even more elegant. Use a cache! For this, you’ll first have to add a new field to the objects table. Do this in a migration:
add_column :objects, :rating_cache, :float
Now, in the Object model, add the following method:
def rate_with(rating) add_rating(rating) update_attribute('rating_cache', self.rating) end
You’ll need to change your controller from using #add_rating to #rate_with. The syntax is exactly the same. Now, when you add a rating, we also store the average rating in the rating_cache column.
To get back to the sorting problem, you can now use the rating_cache column to sort Objects.
Object.find(:all, :order => 'rating_cache DESC')
Of course, you can use this trick on all sorts of relations. Have fun with it.
MySQL: (Re)set the auto-increment value of a table
Sometimes it’s necessary to set the starting point of a MySQL auto-increment value.
Normally, MySQL starts auto-incrementing at 1. But let’s say you want to start at 10.000, because you want at least a five figure number. You can use the following query to set the MySQL auto-index:
ALTER TABLE some_table AUTO_INCREMENT=10000
If you want to delete all records from your table and restart auto-index at 1, you might be tempted to run a DELETE query, followed by the above example, setting the auto increment value to 1. There is a shortcut, however:
TRUNCATE TABLE some_table
This will basically reset the table, deleting all data and resetting the auto increment index. Do not that the truncate command is a hard-reset option. For instance, any triggers “ON DELETE” will not be fired when using truncate.

