Happy time with recent GRUB2 update with Ubuntu 12.04 LTS

My short story of dealing with failed grub2 install which rendered my server unbootable.

It was all good till recent update of grub2. Apparently it no longer fits into MBR and I missed related warnings. Or may be I had grub-legacy. I do not know honestly, but in result I had un-bootable remote server.

Using rescue mode (which is like Live-CD, but instead of GUI gives you SSH access so you could restore your server) I was able to get into server and try to update grub. Here is what I got for grub-install /dev/sda:

Nice, SEO-friendly URLs in Catalyst application

I really enjoy power behind Clean URLs in Drupal CMS. It allows me instead of "http://www.example.com/node/123" path to have nice URL like "http://www.example.com/blog/nice-seo-friendly-urls-in-catalyst-application". And most important I can change this nice url to whatever I want or need.

I found it is quite easy to implement something similar for Catalyst application.

How to run QuickBooks Pro Timer under Ubuntu

QB Pro Timer could be used under Ubuntu. You need to install few libraries for it, since this piece of "software" written on VB.

It uses MDAC, OLE automation, MS JET for handling database and bunch of other activex components.

In order to make life easier, I installed 'winetricks':

$ wget http://www.kegel.com/wine/winetricks

Next, install required "tricks" in order to run QuickBooks Pro Timer:

SproutCore and Catalyst

I always liked Perl language. Unfortunately, PHP popularity forced me to start do major development with this language. That's why Perl became "hobby" tool of choose.

Whenever I am doing new "own" project, I try to do it with Catalyst Framework. This is another web framework, written on modern Perl and utilizes modules like Moose, DBIx::Class, Template Toolkit. It gives nice structured code which allows to extend or refactor it later easily.

FeedAPI PHP Filter

Just released new Drupal module - FeedAPI PHP Filter. This module is add-on for FeedAPI Item Filter, implementing hook hook_feedapi_itemfilter().

This module creates new item filter to run custom PHP code on already parsed $feed object. This useful in cases when you need pre-process feed before importing it into nodes. For example, you may want to remove some text from feed item's description or fix relative image paths, etc.

Simple backup solution with backup-manager and Amazon S3

After the disaster with the Ukraine hosting data center hosting.ua I started thinking about backup options for my own dedicated server that I use to host yepcorp.com and dozens of my other projects and a few clients' sites. So far it has been a plain backup on the second drive, but this accident showed that even having a hosting company do backups in the same building is not really a safe solution.

Finally obtained Drupal.org CVS account

Finally I was able to get CVS account on Drupal.org to submit my own modules.

This time I was able to fix all issues with new module Time Limit and finally got approval to upload it to CVS.

This module was developed while working on client's site who wanted to keep site freely available for user only for limited time. So basically, anyone who wants to show site content for some limited time and then force users to register - could use this module.

Importing big MS Access legacy DB into Drupal nodes

Sometimes I need to move old data from a client's legacy site. Last time it was MS Access.. 96 Mb of CVS data =)

Here is how I managed to import all of this:

1) First thing I did - I imported CSV files as tables into the same DB which the Drupal site uses. This would simplify working with it and in case something would be forgotten you could always import this back. And once you are sure that all data is in place - just dump the imported tables.

Drupal and SEO Links

While developing sites for web marketing company Leads You, I've developed SEO Links module. Its main purpose is to provide ability for centralized creating links with keywords. It work next way - you define list of keywords, URLs for these keywords and from now all node's content passed through SEO Links filter will be processed so all keywords will be replaced with links to appropriate site.

After you define new keywords:

Google Maps APIs & Drupal

On of our latest interesting project was Vancouver’s Business Guide with Reviews. This is directory of businesses in Canada (right now owner filling Vancouver part of it).

The different thing was integration of Google Maps APIs. Client wanted to show new listings and reviews on map on the front page. Also he wanted to show search results on map when searching by category & location.