Firefox or Chrome?

Nine months ago the official launch of Chrome Extensions marked a significant milestone in its competition with Firefox. Now Lifehacker is reporting a significant shift in it’s readership from Firefox to Chrome.  What struck me, however, are the areas where Firefox still wins, including extensions like Firebug, NoScript and Adblock Plus.  I now use Chrome for UIs like GMail, Yahoo Mail and Outlook Web Access, but improved speed is not enough incentive to wean myself onto a new set of browser features and extensions for general use.

Google Apps Sync

Used to be I always worked in a corporate environment where someone else was responsible for providing email with Microsoft Exchange and everyone used Microsoft Outlook.  Email was not my problem, life was good.

Now I have my own business and I manage email for clients with limited resources.  Life, or at least email, is a lot messier.

Common options these days are

  • Run your own Microsoft Exchange on Windows Server.
  • Use a hosted Exchange solution, eg. from Rackspace.
  • Use Google Apps.

My experience with Google Apps Sync has not been as seamless as I had hoped for: calendars didn’t seem to sync quite right, and including iPhones with ActiveSync just made it worse.  Then there was all the confusion around Apps Sync wanting to remove emails from in-boxes over 2-4 GB – maybe justifiable but it just didn’t work in the same way as Exchange, and sometimes trying to introduce change in an organization is simply not worth it.  My client is now happy with hosted exchange from Rackspace: not as cheap as Google Apps, but cheaper for a mid-sized organization than administering email in-house.

Installing Phusion Passenger on Ubuntu 10.04 LTS

Before installing Phusion Passenger you will need a working installation of Rails:

apt-get install ruby rubygems # distro packages rubygems 1.3.7
gem install rubygems-update
gem install rails -v=2.3.4 # or whatever

The Phusion installation script builds an Apache loadable module by linking various libraries. Make sure these libraries are installed before running the script.

apt-get install build-essential ruby1.8-dev libopenssl-ruby
apt-get install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev
apt-get install libcurl4-openssl-dev

gem install passenger
passenger-install-apache2-module # compilation dependencies satisfied above

The Passenger installation script displays a message to add some lines to your Apache configuration script. One way to do this with Apache2 on Ubuntu is:

cat > /etc/apache2/mods-available/passenger.load <
   LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15
   PassengerRuby /usr/bin/ruby1.8
a2enmod passenger
/etc/init.d/apache2 restart


One of the weaknesses of PostgreSQL compared to Oracle is the lack of a strong bulk loader utility like sqlldr. Natively Postgres offers only the COPY command, which does not include suppport for a bad file and reject log. EnterpriseDB have acknowledged the need for a better tool but it has not been a priority. There is, however, a Python based utility called pgloader available through pgFoundry that wraps COPY and provides a usable bulk loader. Using Python with Postgres requires psycopg2: for Windows an installable package is downloadable from Stickpeople,  for Ubuntu installation can performed with:

apt-get install tcllib libpgtcl-dev python-psycopg2

pgLoader itself is simply a collection of scripts in some folders so download and untar as follows:

tar zxvf pgloader-*.tar.gz

Ruby, Python & ODBC

I recently tried extracting data from an Access database using Ruby and ODBC.  The first challenge is that Windows ODBC drivers can be either 32 or 64-bit.  On a 64-bit host only the 64-bit configuration panel is present in the control panel, and the 32-bit panel must be accessed directly by invoking C:WindowsSysWOW64odbcad32.exe.  More seriously, however, the ruby-odbc home page only lists Win32 binaries compiled using Microsoft Visual C, but the popular RubyInstaller for Windows distribution is compiled with MinGW making the two effectively incompatible.

Contrast this with Python which has pyodbc downloads compatible with the canonical distribution from, even if trailing the latest release.  For enterprise applications there is even a commercial ODBC driver supported by egenix.

Both Ruby and Python also have DBI interfaces, but Python DBI has been deprecated, and for Ruby the DBD-ODBC implementation relies on the same underlying ruby-odbc package.  For now it looks like I’ll be sticking with Python for ODBC.

OpenSolaris is Dead

Looks like concerns about Oracle’s Sun acquisition are being fulfilled.  After suing Google using a loophole in the Java license and losing James Gosling Oracle has now cut back significantly on the openness of Solaris development.  Whether or not this was a good business decision this is surely damaging to Oracle’s reputation amongst supporters of FOSS, and great news for Microsoft.  Like MySQL and MariaDB there is already now a community effort sponsored by Nexenta to fork OpenSolaris outside Oracle.

Top IT Business in Southern Florida

Business Leader Media publishes an annual ‘top 100’ small business roster for southern Florida. Tech companies on this list include

  • Datacorp.  A services partner with strong relationships with Microsoft, Cisco and Citrix.
  • United Data Technologies.  A services business with an established customer base in education and government.
  • Bayshore Solutions.  A web design company based in Tampa.
  • AAJ Technologies.  A Microsoft Gold Certified Partner in Fort Lauderdale with an established customer base in healthcare and government.
  • Palindrome Consulting.  A Microsoft Gold Certified development partner based in north Miami.  Also partners with Cisco, Citrix, VMware, HP and Apple.
  • Retail Technology Experts.  A Retail Pro certified partner.
  • Nu Info Systems Inc.  A complete software solutions provider based in Jacksonville, previously in the Inc. 500.
  • QuinnCom A web development company in North Palm Beach.
  • Dedicated IT.  Another Gold Certified Microsoft Partner in West Palm Beach providing a helpdesk and support.
  • International Consulting Group.  Partnerships include IBM, Cisco, Shoretel, Microsoft, Dell and VMware.
  • Kuster Computers.  Provides hosted Microsoft Exchange and desktop installation services.


DD-WRT is a popular open source router firmware package originally developed for the Belkin WRT54G.  The package caught my attention as it allows a cheap old router to be reused as a client wireless bridge.  The download page has an excellent utility for identifying which routers are compatible.  To flash my router I needed to use TFTP. First I established an Ethernet connection with a static, not dynamic IP address, then I downloaded the Linksys GUI tftp client. There are some comments on the DD-WRT wiki about Windows 7 using CTCP, but I did not have this issue. Instead the challenge with a Belkin router is to initiate the file transfer immediately after the router starts responding after a power cycle.  The other issue I discovered is that not all bin files listed as compatible actually are: some bin files successfully upload but then are ignored.  My problem, however, was resolved by some detailed notes on the wiki which recommended dd-wrt.v24_generic-8184.bin for my hardware.

If the upload is successful the router responds for a few seconds while the upload is flashed, and then the connection is lost as the router restarts and DD-WRT defaults to instead of Reconfiguring the static IP address and browsing to the new default address revealed DD-WRT successfully loaded on my device.

ping-ddrt linksys-tftp

Resizing an LVM swap partition

I tested this on a lightly loaded Ubuntu 8.04 server.

swapoff /dev/vg01/lv_swap
lvextend -L+500M /dev/vg01/lv_swap
grep swap /etc/fstab # find the UUID for the existing swap space
# remake the larger swap using the same UUID as before
mkswap -U fc7f369e-c655-4a35-a227-a7c725a2b9bc  /dev/vg01/lv_swap
swapon /dev/vg01/lv_swap

Posts navigation

1 2 3 4 5 6 7 8 9 10 11 12 13
Scroll to top