MySquibbles.com Offline

Almost four years ago I launched MySquibbles.com – a community for parents and teachers to find and share links their children enjoy. It was a great idea and would have been extremely useful, but it failed for several reasons.

Primarily, it wasn’t enough to draw visitors. Parents tend to frequent sites that have parenting information from articles and advice, to links to great deals. Without offering that content as well, Squibbles wasn’t a place you would go because kids are not online that often until they’re older.

The other problem was that the average parent going online with their kids is a target audience that’s very difficult to market to. They typically only learn about things through other parents, school materials, or parenting magazines. Without any time to market or promote the website, it was left online only to serve as a good portfolio piece.

I’ve recently moved servers and during the transition, I made the decision to take the website offline. I’ve kept everything in the event that I want to restore it at some point, but for now it’s no longer needed.

Published by Michael Botsko on 12/30/2009

Transitioning MySQL Field to Foreign Key

When working with MySQL databases it’s often necessary to convert a regular field into one that refers to a second table using a foreign key. The process for this requires several steps:

  1. Insert distinct column values into new secondary table.
  2. Replace (update) existing table fields with proper foreign key for the related record in the secondary table.

This process can be time consuming if attempted manually. Luckily, MySQL 4.1+ allows for subqueries as well as the INSERT… SELECT… syntax.
Continue reading this post…

Published by Michael Botsko on 12/30/2009

Version Numbers Using git tag, git describe

I’ve spent the past year doing all of my development using the Git version control system. It’s far better than than subversion and has made my job as project manager/developer/commit manager much easier.

However, since it does not use revision numbers like subversion it’s more difficult to include as build numbers or version numbers. I wanted some automated way to identify the build in some way other than a non-incremental SHA1-hash. The only solution I’ve been able to find (without using any external software) is as follows.

The workflow to make this process work as expected would involve the following:

  • Prepare master for a new release. Create a new branch for the release and tag it with 1.0.
  • Make a single commit on master (necessary to separate the history) and re-tag with something for the next revision, like 1.1-alpha.
  • Tags on branch continue with 1.0-1, 1.0-2, etc. Tags on master continue with 1.1-alpha-1, 1.1-alpha-2, etc.

What’s problematic with this is the requirement to both tag and branch each time you want a release. You also need to add in a extra commit before re-tagging master so there’s an unwanted extra step.
Continue reading this post…

Published by Michael Botsko on 12/30/2009

Correcting CGI Perl Module for Bugzilla 3.4.2

I was recently installing Bugzilla on a new server and ran into problems with the CGI perl module from CPAN being too recent. Apparently, version 3.47 has some issues, so I had to downgrade to 3.45.

Bugzilla recommends that you use their installer when the checksetup.pl script spits out missing modules. However, if you encounter problems or need older version, this won’t work.

However, their own script makes a copy of the CGI.pm file inside of the bugzilla libs/ directory.

In order to solve the issue, you need download and install the proper version, but then copy of the file to the bugzilla libs folder.


$ wget http://search.cpan.org/CPAN/authors/id/L/LD/LDS/CGI.pm-3.45.tar.gz
$ tar -xzvf CGI.pm-3.45.tar.gz
$ cd CGI*
$ perl Makefile.PL
$ make
$ make install
$ cp /usr/lib/perl5/5.8.8/CGI.pm /var/www/vhosts/trellisdev.com/subdomains/bugs/httpdocs/lib/CGI.pm

Then, continue with your checksetup.pl process as usual.

Published by Michael Botsko on 12/30/2009

Bugzilla 3.4 localtime issue on CentOS

While recently upgrading and moving Bugzilla to 3.4.2 I ran into an issue on a CentOS 5 server that was giving the following error any time I tried to access a buglist:

undef error – Cannot determine local time zone

After some searching I finally discovered that the issue was with Bugzilla looking for the timezone information in /etc/localtime, while CentOS had not updated that file since it’s original installation.

The solution is to change /etc/localtime to a symlink that leads to the correct timezone file for you:

ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Published by Michael Botsko on 9/24/2009

Apache VirtualHosts on Internal Network (No DNS)

It’s quite common for web engineers to develop applications on either a local machine, or a server running on the local network. In many situations one does not have the luxury of a domain name service to base everything off of, and it becomes a matter of using the IP address or an internal host file.

For example, I have an internal server that we do most of our development on and we’ve typically placed everything in the default htdocs directory. That tends to be a problem if we’re working on a pre-existing application that was designed to work only from the root level.

In the following steps I’ll describe setting up a virtual host and how to trick your computer into simulating the domain service.
Continue reading this post…

Published by Michael Botsko on 8/18/2009

Creating a Remote Git Repository

Here is a quick and dirty guide to create your own remote repository. Access is controlled through standard ssh so it’s as secure as your ssh access is.
Continue reading this post…

Published by Michael Botsko on 8/13/2009

Installing Git on Cent OS 5

It’s pretty straightforward to install Git on a mediatemple DV 3.0 server. If you have later versions of their servers with Yum installed, you may be able to simply install it through yum.

To begin you need to download the latest version and run through the standard extraction and configure/make/make install.

Continue reading this post…

Published by Michael Botsko on 8/13/2009

Storing GMT in MySQL, Timezone Conversion in PHP

At Trellis Development we’re working on several applications which need to frequently convert dates between various time zones.

By default, both PHP and MySQL operate using a single timezone which is identified during installation and is quite often the same as the host server. Both tools allow you to specify a different timezone on the fly, and all following date operations work based off of that locale.

The primary goal is to preserve a base standard time so that we can easily convert between different timezones, without loosing the ability to convert again. Two choices emerged – storing a Unix Time stamp or a date string stored using GMT/UTC time.
Continue reading this post…

Published by Michael Botsko on 8/13/2009

Integrating QuickBooks for Mac-based Users

During development of a recent point-of-sale / e-commerce package, I started researching ways of exporting data from a web-based application into QuickBooks. A decent tool called Web Connector allows QB to connect with a web source and share information, and there’s even what appears to be a very thorough PHP class for interfacing.

However, Web Connector is Windows-only. My client runs a Mac.

Disclaimer: Prepare to be disappointed.

Continue reading this post…

Published by Michael Botsko on 7/31/2009