James Garrett's Blog

You are currently browsing the Technology category.

Nest Learning Thermostat

nest_coolingI wanted to take some time to write about one of my favorite new inventions– the Nest Learning Thermostat.  I bought my first home in Dec 1012, and immediately bought a Nest Learning Thermostat.  The concept came from one of the developers on Apple’s iPod team, and completely revolutionizes the thermostat.

Installation was a snap.  I had a few questions and was able to immediately get through to a very helpful support staff.  The website documentation was above average for most technology products as well.  My only real issue had to do with my previous thermostat, which had been wired incorrectly when the AC was installed.  The system connected to my WPA2 network quickly and easily, and the navigation during setup was very well designed.

Programmable thermostats have been around for years, and with varying success.  If you live a life with set hours, you might have a lot of success with a basic programmable thermostat.  However, if you’re like me, the Nest can be a HUGE savings.  Here are just a few examples

  • I work in IT, so if there’s an issue in the morning, I’ll work from home to fix it before going in.  I also go in late the days after a major code release/update when I have to stay up at night to check on it.
  • Working for an airline, I travel a lot.  Sometimes I forget to set the thermostat off, resulting in 3-4 days of unnecessary heating and cooling.
  • Days when I come home early, I can use the iPhone/Android app to turn the temperature down before I get home.
  • Just last week, I left the house and forgot to close the door to the garage.  The door was left open for two days, exposing the inside to hot garage air.  Due to the auto away feature of Nest, this didn’t effect the utility usage.

If you haven’t had a chance to try the Nest, I highly recommend visiting your nearest Lowes, or going online to their website!

Posted 7 years, 9 months ago.

Add a comment

Theming WHMCS – It’s EASY!

After reading several people struggling to theme WHMCS, I decided that I would write a brief tutorial to attempt to emphasize how easy this is if you read the directions and think it through.  First off, modifying the default them is *not* the easiest way to do it, you’re going to beat your head against the wall trying.  WHMCS has setup their system very simply.  Imagine the following php file-


This is an oversimplified version of how WHMCS works.  So here are the steps

  1. Setup a static design that you would like to use.
  2. Split the file around the main content area
  3. Copy/Paste everything above the main content into the header.tpl file for your skin
  4. Copy/Paste everything below the main content into the footer.tpl file for your skin.
  5. Replace meta variables (these can be found in /templates/default/header.tpl)
  6. Use FireBug to fix any minor issues in your css.

WHMCS uses the smarty template system.

Posted 9 years, 11 months ago.

Add a comment

Learning the Facebook Graph API

Earlier this month, I was approached by a software company to assist writing a Facebook application.  I hadn’t done this, however I have read about their powerful Graph API and was anxious to give it a shot. The first step was to learn to connect to the facebook API, which was greatly assisted by using the PHP SDK that has been written and released as open source. I’ll write a longer blog soon once I develop the application, but here’s the steps to begin writing your own external facebook application.

  1. Register your facebook application ( link )
  2. Download the Facebook PHP SDK (link)
  3. Read tutorials to learn the basics (click here for a good one)

Posted 10 years, 1 month ago.

Add a comment

Fixing “About this Mac” on an osx86 Machine

After recently building a Hackint0sh, I had an issue where my about this mac was showing an “Unknown” processor. I found this script (click) that fixes that!

Here’s the before screenshot-

After screenshot-

Posted 10 years, 10 months ago.

1 comment

Playing with Final Cut Express

Playing with Final Cut Express… from James Garrett on Vimeo.

Just a short clip of random diving things that I threw together with Final Cut Express. I’ve been wanting to try this app for a while now, but I didn’t own anything more powerful than a macbook until just recently. Most all of these shots are from Ginnie.

Posted 10 years, 10 months ago.

Add a comment

Installing Decoplanner on a Mac using Crossover (10.6.3)

OK, for a while now I’ve heard several people state that they won’t switch to a mac because deco planner isn’t compatible…here’s how.

First, download crossover.  You can get this here.  Now, install crossover.

Next, place the DecoPlanner install file somewhere you can easily find.  You can purchase and download it from gue’s website here.  After installing crossover, setup.exe will have a crossover icon, like this-

Double click the setup.exe and you’ll be greeted by the following screen. The default settings work, so leave them and press “install”-

You’ll see the progress bar for several minutes…never fear, it WILL eventually finish, but you’ll think it’s hung up because it takes so long.

Finally, you’ll see the DecoPlanner setup launch.

Run through the normal setup process leaving ALL OPTIONS DEFAULT, and you’ll be greeted with this-

Next, run and enjoy 🙂

Posted 10 years, 10 months ago.


Uploading old email to new IMAP account…the fast way!

I nearly titled this “Uploading old email to new IMAP account…the easy way!”, but I’m afraid it might not be “easy” to those of you who haven’t had much experience using command line based programs.  I certainly prefer the GUI, but after hours of trying to get Thunderbird to upload the email, I gave up.  The task before me was to upload about 19,000 emails from my boss’s old computer to our new email server hosted with RackSpace Apps.  Most of the commands here can be used to import email into RackSpace Apps with very little change, but can also be adapted to import email into gmail as well.

Step 1 – Download this email upload python script from sourgeforce and download ActivePython.  ActivePython is a bit easier to install than the default Python because it automatically configures the command line stuff, which is why I recommend it in this tutorial.

Step 2- Extract the .zip file.  Make sure to copy the file path as seen in the screen shot, this will make the next command line steps easier.

Step 3- Open a command prompt.  Go to Start->run and type “cmd” then click OK.

Step 5 – Navigate to the folder the python script is in.  You can do this by typing “cd ” (include a space) and then right clicking and pasting the file path you copied back in step 2.

Step 6 – Locate your MBOX file and copy it into the python script directory.  You can leave it where it’s at (obviously), but I’m writing this to be as easy as possible.  Click here for directions finding your Thunderbird mbox file.

Step 7 – Run the following Python command, replacing “example.com” with the address of your IMAP server and then enter your username and password when it asks.   It took 5 or 10 minutes to get past the “Counting the mailbox” screen for me.  Takes a while longer to finish the upload, especially if you’re like me and have almost 2GB of email you have to upload.

  • python imap_upload.py –host secure.emailsrvr.com –port 993 –ssl –box imported inbox.mbox

Posted 11 years, 1 month ago.


Formatting Phone Number and Fixing User Input With PHP

Recently I was writing a franchise module for a shopping cart software that required franchise owners to input their phone number.  I’ve ran into the problem where no matter what instructions I’ve given, the franchise owners consistently like to format the phone number in their own unique way.  Rather than add 3 text boxes to where they have to tab between every part of the phone number, I wrote a quick and easy php script to handle all the leg work for me!

//Input example
//Output examples
//formatPhoneNum($phone_number, 1) outputs (999) 999-9999
// Inputting 999-9999 would cause the function to return “False”
function formatPhoneNum($phone_number, $style){
// Style 1 – (999) 999-9999
// Style 2 – 999-999-9999
// Style 3 – 999.999.9999
// Style 4 – 9999999999
$number = str_replace(array(‘(‘, ‘)’, ‘-‘, ‘ ‘), ”, $phone_number);
if (strlen($number) == 10){
$area = substr($number, 0, 3);
$first = substr($number, 3, 3);
$last = substr($number, 6);

case 1:
return “($area) $first-$last”;
case 2:
return “$area-$first-$last”;
case 3:
return “$area.$first.$last”;
case 4:
return “$area$first$last”;
// if the phone number was too long or too short
else {
return false;

Posted 11 years, 1 month ago.


Enom Outage…

If anyone is seeing their website not working, or website up but email down, etc, several people in twitter have posted that ENOM is having outages issues.  We currently have 273 domains registered through ENOM and we’re seeing the same issues as everyone else on most every domain.  I’ve placed the correct IP addresses into my etc/hosts file and I’m seeing everything correctly.  Our support technicians over at RackSpace have confirmed that they’re seeing the same thing.  If you’re seeing this, good luck reaching ENOM support, I’m just getting a busy signal.

I guess the only “fun” thing to come of this is having angry clients call and getting to calm them down.  I’m not sure why I enjoy it, but there’s something very rewarding about having someone upset with you when you start the phone call, and thank you by the time you get done.

Edit– ENOM posted an update on their twitter account, but seemingly can’t post one on their homepage.  That’s TERRIBLE customer service!  Screen shots below.   At least we know something now, I guess we’ll lead by example and do a mass email to our clients explaining what happened, and post an alert on our homepage.

12:06pm – “We are currently managing through a DDOS attack. All resources are focused on solving this issue ASAP. More updates shortly.”
12:25pm- “Customers should begin to see a significant improvement in services. We are still addressing some remaining issues. More updates pending”

Another interesting tidbit is that their outages page doesn’t reveal the info their twitter account does.

Posted 11 years, 1 month ago.

1 comment

Over troubleshooting the problem…grr!

So last night I changed a client’s DNS over around 8pm. For those of you who aren’t familiar, DNS settings are somewhat like physical mail address settings in that if I want to go to our office, I type in 1802 N Alafaya Trail into my GPS, just as I type in www.yourdomain.com to get to “your domain”. Let’s say we move physical addresses, it takes propagation time before Google maps phone books, and various GPS software update our company’s location. Well, there’s propagation time (only a few hours typically, max of 48 hours) when you change the IP address behind a domain to switch the server the domain points to.

Anyways, back to my story…I did it this late because they had requested that we do it after hours due to email being their primary means of taking and receiving orders, and they couldn’t afford being down during the business day. 7:30am my cell phone was ringing and waking me up with a panicked customer on the other line. My first thought is “oh no, I missed up the DNS switch”, but I had stayed up to make sure I saw the DNS swap go through on my end. I asked the customer to ping “mail.yourdomain.com” and it was seeing an incorrect location. My first assumption is that this machine had cached the IP address, so I asked if I could remote control the computer with LogmeinRescue (this software is the best thing to ever happen to technical support), which they agreed.  I ran a “ipconfig /flushdns” and then redid the ping with the same bad results (ipconfig /flushdns would be like throwing your address book away so that you have to look up new addresses each time, referencing the analogy I was using earlier).

Now here’s where this whole post starts to have a point.  The customer was upset because their email was “down” and in a moment of panic, I started looking for answers as to why a computer might not respond to “ipconfig /flushdns”.  The truth is, I had no reason to believe that this command didn’t work.  The solution was letting the customer know their internet service provider’s DNS information was outdated and might take a few more hours to get refreshed.

Lesson learned: When presented with a problem, focus on the primary causes,  then eliminate them one by one.  Don’t let frustration or panic on a customers end cause panic on your end!

Posted 11 years, 1 month ago.

Add a comment