Tim Long Creative

As long as I have want, I have a reason to live.

Satisfaction is death.*
George Bernard Shaw


Welcome

Background

I am fascinated by the modern web, and constantly finding ways to converge my technical background with current design trends.

Once upon a time (2005) I took a course in Object-Oriented programming with Java. Over the next many years, while working my way through a PhD program in mathematics, I used what free time was left to continue learning and using various technologies, including:

  • JavaScript (ECMAScript)
  • HTML5 / CSS3
  • Java
  • XML
  • SharePoint / SharePoint Designer
  • Android Studio
  • Bootstrap
  • Various JS libraries, e.g.: jQuery, Angular, Underscore, Google Charts, D3, SPServices

In 2014 I completed my Ph.D., published my HTML5 game website, collegemathgames.com (originally udoubleprime.com), and joined Booz Allen Hamilton as a web developer. I spent a few years serving government clients and then started my own single-member LLC to focus on both web development and mobile development. I love working in a field where I get to combine my technical and creative talents. This site serves as a home to display some of my personal projects.

Web Apps

  • Pixel Paint Basic drawing tool, for creating pixel art on the go.
  • Background Eraser Quickly change a solid background (for instance, of an image made in MS Paint) to transparent.
  • Mobile Browser Console A demonstration of my mobile-browser-console.js module.
  • Mobile HTML Editor With live UI updates, test out some HTML and CSS on any device, even your mobile phone.
  • Panorama Panner For Mobile Devices - take or upload a panorama picture, and move your device around to view it as if you were there.
  • Color to Code Quickly grab the color code information from part of a picture. Upload the pic, or take it live.
  • Crossword Writer For crossword creators, gives you a tool to create your own puzzles, even on your mobile device.

Math-based Web Apps

Games

Any Device

Gameplay may be slightly different but you can play these games on mobile or non-mobile devices.
  • River City Street Fighter A 2D fighting game, crossover of two of my favorite games, River City Ransom and Street Fighter II.
  • Dodge-em A tribute to one of my favorite Atari games, Atari Dodge-em. Controls can be switched for left-handed play.
  • Tic-Tac-Toe 3-Layer A CSS3-driven 3D tic-tac-toe game for 1 or 2 players.
  • Ellie's Game A short 2D adventure game, paying homage to some classic 2D games.

Mobile Web

These games require an accelerometer, for instance in mobile phones.
  • Tim Crisis (Turn Shot) (mobile) A mobile game where you move to control the view. Inspired by the Time Crisis game series.
  • Ball and Paddle (mobile) A simple time-killer for mobile devices. Simulates a basic ball and paddle toy.
  • Phone Duel A short game using my Mobile Movement library. Take 10 paces, turn and fire with your phone.
  • B-Ball Move A movement-driven basketball game. Dribble with your phone, shoot with your phone.

Non-Mobile Web

These games are designed to use desktop web technologies not inherently available to mobile devices.
  • Console Quest A text-based adventure game, played directly in the console. Requires ECMAScript 6, so be sure to play on a modern browser.
  • Table2Game Demo A demonstration of my table2game.js game engine. Play simple 2D games IN A DATA TABLE!

Android

These game were built with Java and XML using Android Studio.
(Coming soon)

Code

Below are some links to various JavaScript modules, libraries, frameworks, and plugins I have built.

Definitions

Stand-alone JavaScript code can be characterized in multiple ways. I am categorizing these code modules with the following conventions, though these definitions will vary depending on who you ask. They are modular pieces of code (they can constitute stand-alone building blocks used by multiple different programs, and contained within their own scope created by an IIFE or immediately invoked function expression), but how they are used varies.
Module
In JS the term module is often used to describe any stand-alone piece of code that can be used with other code. I am also assuming that any module is self-contained within an IIFE, where the object returned (exposed to the outer scope) is a plain JavaScript object with keys pointing to internal methods. Thus there is only one object instance ever created, and that same instance is used to access all the available methods.

Examples: math.js, underscore.js

Library
In JS the term library is often just used to describe any stand-alone piece of code with multiple methods available. This makes it difficult to distinguish a module from a library, and sometimes devs will basically just say a library is a large module, or a module is a small library. I agree that the structure is similar, as a library maintains its internal scope in an IIFE, but I am adding a requirement in my definition that the object returned is a constructor function (generally with methods bound to its prototype). Thus the library can be used to create multiple different object instances.

Examples: jQuery, Google Charts

Framework
A JS Framework is similar to a JS library, with the main distinction being "inversion of control". That is, a programmer calls a JS library into action by invoking methods provided by the library. A framework by comparison performs numerous automated tasks based on a set of rules provided by the programmer. The definitions overlap often, so I am combining my libraries and frameworks into a single section below.

Examples: Angular, (JS and CSS) Bootstrap, various game engines

jQuery Plugin
A jQuery plugin is a stand-alone piece of code, generally maintaining an internal scope with an IIFE, in which new functionality is bound to the jQuery constructor prototype, $.fn.

Examples: DataTables, Jeditable

JS Modules

  • YouVid Add custom context menu features to a webpage's video. Use in your own project or paste into your web console to use on various websites, like YouTube and DailyMotion.
  • MobileBrowserConsole Do you wish you could use a JavaScript console in your mobile browser? Add this to your page to be able to use standard console features on any device. On Android, you can even use the browser's address bar to add this to virtually any page on the web.
  • CursorPointer Having trouble getting people's focus. Add this to your page to make the mouse pointer change direction.

JS Libraries and Frameworks

  • HoverSum Want to double-check some subtotals on your web app, without opening the calculator or web console? With this tool all you have to do is move your mouse.
  • MobileMovement Want to build a game or web app with a mobile device's accelerometer? This library has detection for multiple common movements built in, and also lets you create your own.
  • UpCurrency Basic functionality for currency inputs to format to U.S. currency when not active and to easily editable text when active.
  • Table2Game Turn virtually any HTML data table into a playable game! This engine lets you play one of many built-in games, or create your own!
  • Cruciverb A size-responsive, HTML5/HTML4 hybrid UI-building webpage crossword framework.
  • Gryptocram A simple framework for putting a cryptogram puzzle onto a webpage.

jQuery Plugins

  • jquery.dom-tank Turn any HTML element into a movable tank!
  • jquery.red-decoder Remember those children's puzzle books with the red magnifying glass that decodes seemingly scrambled images? This plugin lets you toy with similar visuals on your webpage.