JavaScript Developer Position at Unboxed Technology

Senior JavaScript Developer

Unboxed Technology is looking for a JavaScript developer to create exciting applications to be used on a mobile platform. Unboxed is a company that excels in developing interactive tools to help companies train their employees and sell products to their customers. These tools are used online, in stores, and on mobile devices.

The Senior JavaScript Developer will help build interactive training modules that will be used on handheld devices. The modules will be written as web pages and installed via PhoneGap for disconnected use. The emphasis for this project will be on stand-alone mobile web development with occasional web service calls when connected.

Required skills:

· JavaScript



· JQuery (including animation)

· JSON service calls

· MySQL database and SQL queries

· Experience creating rich web pages with interactivity, animation, and media

Preferred skills:

· HTML 5 experience

· CSS 3 experience

· Tailoring UI for iPad/WebKit browsers

· PhoneGap

· Basic animation

· Multiple JavaScript frameworks

· Source code control

· Working with geographically dispersed teams

This is initially a 2-3 month contract with strong potential for follow-up work or a full-time position.  Applicants can be in Richmond, Virginia or work remotely from the Portland, Oregon/Vancouver, Washington area.

Please include resume and any sample applications showing your own work. To validate the skills of the applicants, each will be asked to create a basic sample program that should take just a few hours to complete.

If interested, please e-mail

Working with Orientation on the iPad in PhoneGap

I had a web app that I wanted to shift a toolbar’s location to bottom in portrait mode and to the right in landscape mode.  I got this working fine in Mobile Safari, but then ran into some issues when I moved it into PhoneGap.  Here is how I got it working.

Continue reading

Problems downloading Zip files from SharePoint

We had some problems with our SharePoint (on SBS2008) with Zip files.  Users could upload the files fine, but when trying to access them it would say:

Cannot open file: it does not appear to be a valid archive. If you downloaded this file, try downloading the file again.

We found the problem was that IIS had compression turned on and was gzipping the Zip file a second time.  Following the instructions at we solved it by changing the MIME type of Zip to application/octet-stream.  The steps were as follows:

  1. Click on Start, point to Administrative Tools, and then click on Internet Information Services (IIS) Manager.
  2. Right-click on the server (local computer) tree, where server (local computer) is the name of your IIS server, and then click on Properties.
  3. Click on MIME Types.
  4. Scroll down to the registered MIME type list to find the .zip entry.
  5. Click on the .zip application/x-zip-compressed entry, and then click Edit.
  6. Modify the MIME type value to application/octet-stream.
  7. Then Stop and then restart the IIS Admin Service to apply the change to the MIME type.

HP Slate 500 vs. iPad

HP quietly announced last week the availability of the HP Slate 500, a Windows 7 slate tablet.  There’s a lot of buzz about whether this will be an iPad killer (with the general concensus that it won’t be). 

HP is marketing it to enterprises, and indeed it does have some features that enterprises need.  If they have applications or websites that work on Windows PCs and laptops, they will work on the Slate 500.  The Slate can print everything.  And the Slate fits into the support model of the current enterprise (e.g. using SCCM to push out patches).  But it comes with some trade-offs, most notably the screen size, the battery life, and not having a 3G option.

Below is a chart I made that shows the specs of the devices side by side.  There’s no “right answer,” but this can help aid in deciding what’s most important for your situation.


HP Slate 500






(model comparable to Slate is $699)

iPad has same features for less money

Screen Size

8.9” multi touch

9.7” multi touch

iPad screen is bigger for same weight

Screen Resolution



Slight advantage to iPad

Stylus support

Yes, active digitizer

(can use finger or the digitizer)


The stylus allows handwriting recognition and drawing

Size (inches)

9.2 x 5.9 x 0.6

9.6 x 7.5 x 0.5

Slate slightly thicker but smaller height and especially width


1.5 lbs

1.5 lbs

(1.6 lbs for 3G models)



1.86Ghz Atom Z540 processor

1 Ghz Apple A4 custom

Different technologies so it’s hard to compare. Some people argue the Atom processor is underpowered for Win 7.


2 GB 800 MHz DDR2

256 MB (speed not publicized)

The 2 GB on the Slate is a plus as Win 7 needs it. iPad uses memory in a different way so these really can’t be compared

Battery Life

Up to 5 hours

9-10 hours

iPad the clear winner here.

Hard Drive


16 to 64 GB SSD


SD card slot

Up to 64 GB


Plus to the Slate for having expansion options. Could also help with app distribution.


Windows 7 Professional 32-bit

iOS 4

iOS 4 is optimized for touch, Windows 7 will have awkwardness




Can be used for mouse and/or keyboard

USB Ports



Plus for the Slate

Application Distribution

Standard Windows “download and install” or Enterprise options

App Store or Apple Enterprise Server

The Windows distribution will be much easier for Enterprises, whereas the App Store is great for consumers.

Flash Support



Steve Jobs would say this is a plus for iPad to not have Flash “problems”, but for enterprise this is a huge benefit of the Slate.


VGA Webcam + 3 MP still camera


For Enterprise, the addition of cameras may have barcode reading potential.

Printer support

All Windows printers, either wireless, USB, or Bluetooth

None currently, limited support for specific printers in upcoming OS release

Plus for the Slate


Optional external USB CD/DVD R/RW


Plus for the Slate, but may not be a big deal for Enterprise




Pretty comparable

TV/Video Output

HDMI via Dock

1024 x 768, 576p, 480p or 480i with special adapter or cable

Slate requires Dock to output to screen

3G Support



iPad may have huge advantage here

Instant On

Long initial boot and then must configure standby with longer resume

Short initial boot and then automatic standby and instant resume

Slate will feel more like a Windows laptop while iPad acts more like a mobile device.

Transferring from Tivo to iPhone or iPad

I tried all sorts of things to get Tivo content to my iPhone.  Tivo has a paid version of its own software, and I tried things using trial versions of other paid software like VideoRedo, but it always seemed either expensive or convoluted.  Google searches kept steering me to these same approaches.

But today I found an open source Java-based program that does it all.  It’s called kmttg – I have no idea what it stands for.  You download it from and follow the installation instructions.  Then you run it.

The interface isn’t fancy, but it gets the job done.  You enter your media access key for your Tivo and then you can browse the Tivo.  Once you find a movie you just need to select the boxes for “decrypt” and “encode” and select the encoding profile (there’s one for iPhone, iPad, Droid, etc.).  It does its thing, and at the end you have an mp4 ready to open in iTunes and sync.

It even allows you to set up AutoTransfers so your favorite shows are ready to go.


I haven’t tried all its advanced features, but for getting my favorite shows where I can watch them on a plane, I’m hooked!

Quick, Free way to show PDFs in a page flip book

I’ve been building a Silverlight page turn application at work and just stumbled across this neat little service.  It allows you to upload a PDF file and have it display in a flippable book.  You have to use their interface as-is so it’s a bit limited, but it’s free and they host it so it’s a quick and easy way to spice up a PDF on your web site or application.

Silverlight Behavior that Accesses Children

Silverlight Behaviors are a very powerful way to extend a control to do more than in natively does, without having to fully subclass.  I was writing a behavior to attach to a Canvas that would allow for a page turn effect.  In my case I wanted the Canvas to contain other Canvases that it would manipulate.  But I ran into two main dilemmas:

1. The OnAttached event fires before the Children are created.  So how do you manipulate the Children when the control loads?

2.  How do you let the UI Designer tell you which child elements to manipulate?

The answers are quite easy.

Continue reading