Cap'n AjaxSM

[Powering STEAM]


  • Difficult components

    Expert problem-solving skills to make the impossible easy

  • Performance

    Make your app run smoother, or make your server work harder

  • App architecture

    Get your project started right or clean up years of legacy code

  • Mentoring

    Make your own team stronger and your project successful


Science Technology Engineering Art Mathematics

Thomas Wilkinson has over 20 years of professional experience on platforms ranging from handheld devices to big iron and in industries from health care to heavy industry, manufacturing to major retail, food service to finance, infotech to infinity and beyond.

He is a strong coder and a creative problem solver who can think outside the box when conventional solutions cannot work. He is also a strong mentor who provides trusted advice, writes clear documentation, and strengthens the skills of your own employees to make them successful in the long-term.

He takes the greatest joy in projects that allow him to express his creative problem solving skills, enabling innovative companies to create slick and exciting apps.

The "Cap'n Ajax" moniker is a personal brand for a JavaScript expert, with skills forged in Titanium, Node.js, HTML5, and Dojo.

Contact Thomas today EmailLinkedIn

Thomas doesn't like being called "Tom". It hurts his feelings.

STEAM Solutions

Useful things that I have created recently and released for public use.

Power Converter and Level Shifter for Neopixels

Problem: Driving 5V Neopixels from a 3.3V controller

Many sensors, bluetooth and wifi modules, and flash cards operate at 3.3V but RGB LEDs like Neopixels need 5V.

Solution: Create a board to handle the power and level shifting.

I created a compact board to handle all the complexity of level shifting and power delivery for the Neopixels made it a product.

Unified Drawers and Navigation

Problem: An app needs a native navigation with a drawer on both iOS and Android

An app needed a native look and feel on both iOS and Android, that's 100% lightweight so a developer with no Java or Objective-C knowledge can maintain it.

Solution: Create a widget to abstract all navigation

I created a widget to handle all navigation. Using NavigationWindow on iOS, ActionBar on Android, and SplitWindow on iPad, I created a widget to handle all app navigation, including a drawer that slides in from the left, that is simple to use.

Implementation: Make it so simple to use, you'll use it all the time

The complexities of handling multiplatform navigation are isolated and confined to a widget. Drawer content is simply a view, and navigation is provided by a few simple method calls.

Framework here.

Smart Wall Clock

Project: Define a smart clock

It's easy to make a clock out of LEDs and an Arduino, but I wanted to go beyond the obvious and se what I could do to make the clock smarter and more beautiful, so I introduced apps:

  • Clock, that dims with the lights
  • Artificial Horizon, to help get the clock straight on the wall
  • Weather Alerts to let you know it's raining or that there's a tornado warning
  • Mood Lighting, really let those LEDs shine!
  • Photos, programming the individual LEDs from the server.

Bluetooth Doorbell with Push Notifications

Project: Create a Bluetooth doorbell with Push Notifications

I created a doorbell that uses Bluetooth to a base station that sends an interactive push notification, and lights an "I'm Coming" light on the doorbell when I respond to that notification. This implements a complete path: AVR ⇒ Base Station ⇒ Cloud ⇒ Mobile, and back to the AVR.

Faster Tabs

Problem: Tabbed apps take too long to start up.

Tabbed apps render the entire tab content on all tabs as soon as the app starts up. This means your app is doing a lot of work on startup, slowing it down, only to render screens that the user may never visit in a session.

Solution: Delay the content rendering until the tab is selected.

Now only the first visible tab renders immediately on startup and the other tabs wait until they are selected before rendering.

Implementation: Make it simple and totally transparent

By adding a simple library to the project, and a few simple modifications to the view, you can convert and existing app into a FasterTabs app.

Library here.

Elements of ListView

Problem: Colleagues and customers struggled with a new API

The Titanium ListView API preforms far better and provides a much cleaner MVC than TableView, but it was so different that developers had a hard time understanding it.

Solution: Create an tutorial on ListView

I created an app that's based on ListView, and wrote a tutorial on how to get through each step.

Implementation: A simple tutorial on a real-world app

The tutorial app is more than just demo-ware. It starts with the most simple ListView implementation, and then enhances it feature-by-feature, until the reader has an app suited for the real world.

Tutorial here.

STEAM: Science Technology Engineering Art/Design Mathematics
Copyright © MMXIV-MMXVIII Cap'n Ajax. All rights reserved. "Cap'n Ajax", "Captain Ajax", the rocket ship logo, and the Cap'n Ajax gradient are service marks of Cap'n Ajax. Appcelerator and Titanium are trademarks of Appcelerator, Inc., registered in the U.S. and/or other countries. Cap'n Ajax is an independent expert on Titanium development and is neither sponsored nor otherwise affiliated with Appcelerator or Axway. AVR is a registered trademark of Atmel Corporation. Cap'n Ajax is an independent expert on ATMEL® AVR® development and is not sponsored, endorsed or otherwise affiliated with Atmel Corporation. The JavaScript logo shown is not endorsed by W3C, The Mozilla Foundation, or any other interested parties. The HTML5 logo is by W3C is used under Creative Commons license CC BY 3.0 All other trademarks are property of their respective owners. Social icons: Socicons, licensed by SIL Open Font License 1.1 The following images are from Wikimedia Commons, licensed by CC BY-SA 3.0, modified by Thomas D Wilkinson: brain icon, blueprint icon, turbofan icon, puzzle cube icon