Falling Dollar Kills Off-shoring

For anybody following economic news, the US dollar is in shambles. Initially, I thought this would bring about a depression in the IT sector and possibly a bubble collapse. Don’t get me wrong: I believe there will be a softening in our industry due to things like the crashing housing market (think of all the Adwords purchases that will evaporate). However, another unintended consequence is that off-shoring (the practice of hiring foreign programmers), which was all the rage 2 years ago, is becoming impractical.

As evidence, check out the exchange rate between the Dollar and Rupee: it’s down 15%, and the vast majority only in the past few months. We can sit here and argue if the drop will continue, but we can probably agree that the dollar isn’t going to rise back up anytime soon.

Dollar vs Rupee

This sort of exchange rate suicide means off-shoring practices are now 15% more expensive across the board compared to 24 months ago. Any company doing this has more and more reason to boot the practice, especially considering the added cost of managing remote, non-native English speaking employees. Considering things like term contracts and the threat of a further falling dollar, the practice actually becomes quite dangerous. Just think: you sign a $3M two year off-shoring agreement only to have the dollar drop 10% next year — suddenly you owe an extra $300K.

So aside from all the arguments that exist about money flowing from the housing market back into IT in the form of capital investment (rather than through ad purchases), we can also safely assume that in-house IT operations themselves will become more valauble in 2008. 🙂

Unrealistic Expectations in Job Posting

A funny Craigslist post (now deleted):

Web Designer/Programmer Needed
Reply to: job-483872814@craigslist.org
Date: 2007-11-19, 4:51PM EST
Must have specific database and Web-development experience to include in-depth database management and Web design services. Experience with government clients providing extensive data management and document tracking support a plus. Must have strong computer programming skills across a wide range of platforms/software programs to include:

• PHP5
• ColdFusion 5, ColdFusion MX
• Classic ASP, ASP.NET
• Visual Basic, VB.NET
• Adobe Flex
• JavaScript and VBScript
• Zend Studio
• ColdFusion Studio
• Visual Studio .NET
• Dreamweaver MX
• Front Page
• Acrobat PDF
• Content Management
• Photoshop / Image Ready
• Quark Xpress
• Flash MX
• Fireworks MX
• SQL Server 2005
• Access
• Oracle
• Paradox
• Informatica Data Analyzing and Procedural Mapping
• PC (Windows XP)
• MAC (OS X Tiger)
• Novell Netware5
• Internet Information Server 5
• SQL Server
• MS Windows Server 2003
• ColdFusion Server & Administrator
• Microsoft Office User Specialist
• Corel OfficeSuite

Please email resume and links to websites you have created or on which you have collaborated, to be considered.

    * Location: Williamsburg Area
    * Compensation: Negotiable
    * Telecommuting is ok.
    * This is a part-time job.
    * This is a contract job.
    * OK to highlight this job opening for persons with disabilities
    * Principals only. Recruiters, please don’t contact this job poster.
    * Please, no phone calls about this job!
    * Please do not contact job poster about other services, products or commercial interests.

That’s like pretty much every single web technology plus random experience with Corel.

Improving Your JavaScript Load Time

On our production website at work, I noticed that there was considerable lag time when loading the page due to a high number of JavaScript files. For those of you who don’t know, when a JavaScript file is loaded into a page, the rest of the page will hang until that file is completely downloaded. So unlike an image on a page, a slow JavaScript file can completely bog down your page. This is similar to an issue I noticed many months ago with FeedBurner. Each JavaScript file that is pulled requires the full overhead of firing up Apache and serving an HTTP request. This can be slower for you and painful for the web server if you have a high traffic website.

Additionally, once the JavaScript files load, if the code is full of asynchronous snippets (AJAX, event handlers, etc), the pieces can load in the wrong order! This has caused me headaches when unexplainable and random JavaScript errors began popping up (undefined variables and functions that are clearly defined in another file that should have loaded prior). This issue became increasingly common as the number of files being loaded increased. While I admit I don’t understand browser physiology enough to explain why this problem is more common with more files, I concluded there is some correlation that likely is attributed to the rendering order.

So after some thought, I came up with a solution. The goal was simple: decrease the number of web calls and try to make the JavaScript code render in 100% reliable and linear matter. Additionally, the hack would need to be easy to implement and take issues such as caching into account. The solution is a PHP file that looks like this:

 * This file compiles a collection of JS files and then dumps them collectively
 * to the page, thereby reducing overall request overhead
 * Copyright 2007 Michi Kono (www.michikono.com)
 * Feel free to modify this however you want.
header("content-type: application/x-javascript");
foreach(explode(",", $_GET["files"]) as $filename) {
    * prevent malicious attacks, only allow JS files
   $filename = basename(trim($filename), ".js") . ".js";
   if($filename && file_exists($filename)) {
       $handle = fopen($filename, "r");
        * in case there is no trailing ;
       echo ";";

Put this file in your JavaScript folder next to the rest of your JavaScript files. I called mine render.php.

Then, you put this in your HTML:

<script type="text/javascript" src="/javascript/render.php?files=firstfile.js, secondfile.js, thirdfile.js, etc.js"></script>

Ta-da! Faster JavaScript loading for everybody. 🙂 Oh, and the issue of caching? Just put a timestamp on the end of the JavaScript URL string (like, "&<?php echo substr(time(), 0, -2) ?>" — cache changes every 100 seconds)

Other useful ideas: JS code could be compressed during this step, with comments and extra spaces being removed. Because code is being run through PHP, server side macros are now possible, rather than relying on cryptic JavaScript functions (such as for date management or database integration).

Rabbid Hackers Beating Apple’s iPhone

Apple is set to release version 1.1.2 of their iPhone’s firmware.

The rumor is, it’s already been hacked, and it’s not even out yet.

Apple is finally getting a taste of being popular. This is the same fight Microsoft fights every time they release a new version of windows. One wonders if Apple will continue this fight thinking it can win, or if this fight is really just for show (to its carrier partners) and Apple doesn’t really care.

Either way, the hacked iPhone is so much cooler than an unhacked one thanks to all the customizations you can do to it. 🙂

No G-Phone, but Open Phone OS from Google

Finally, those damn rumors about a Google phone can die. As expected, Google has released a Google branded mobile phone OS. This operating system is called Android, and is based on Linux. They produced this with cooperation from 30 mobile handset partners, and we should see the first phones utilizing it within the next six months.

This approach made the most sense since production of hardware would alienate Google from all of the mobile handset makers they are trying to woo into setting Google as their default search engine. All those crazy screen shots we saw were probably leaked partner phones that were undergoing integration — it’s so obvious in hindsight, huh? Since Google arrived to the personal computing party two decades too late to have a say in operating systems, they are now re-positioning their new operating system to unseat Microsoft. And unlike most potential competitors, Google doesn’t personally care to become Microsoft of mobile phones. Instead, their goal is to unseat Microsoft with a free alternative that could be maintained by anybody.

Because Android is open source, it is entirely possible that in a few years, someone else will come in take over the project. Google’s reasoning is simple: in a completely level playing field, they are the preferred search engine choice.

With the combined functionality of the Google Docs, G-Chat, Google411, GMail, and Google Maps (a staple in mobile phones these days), Google’s plan is to gain even more insight into its users. Just imagine: now they’ll know what you search for, where you’ve been, who you’ve called, what you write about in documents, who you emailed, what restaurants you’re interested in, and with the integration of Google’s new Open Social, get an additional insight into your social life.

Google’s theme this week is to bring together splintered markets under a unified, open standard… for them to harness. Data is easiest to mine when it is in a consistent format.