Getting To Know Me, Getting to Learn All About Me
I like patterns; taking abstract ideas and bringing them into the world of the ‘real’ in order to help people get more done and have more fun.
I have taken on diverse roles and responsibilities throughout my career. From individual contributor to systems architect.
Wondering about my nickname? I <3 JS: so much so that my nickname, J5, is both a reference to the 80’s movie Short Circuit’s Johnny 5 robot-with-emotions and to the tongue-in-cheek h4x0r spelling of JS.
I am seeking a Principal Software Engineer or Tech Lead position. For the right company, that will support me in furthering my career, I am happy to take a Senior Developer role while I learn your business.
My ideal company is past the early startup stage, with developed processes, strong leadership, and a clear strategy and long term vision.
I am a big believer in agile methodologies and iterative delivery, offering both the opportunity to fail quickly, the motivation to succeed, and the incentive to constantly strive for quality code.
The ideal culture for me is one where everyone — particularly leadership, product owners, and managers — is heavily invested in the success of the company, the quality of their work, and personal growth. But also one where work/life balance is emphasized and tight deadlines don’t translate into a high pressure, high stress environment or death marches.
I strongly prefer to work remotely, but am able to make myself available for on-site meetings as long as they are near my home in Fairfax, VA (greater Washington, DC area).
Check out my Resume or Fun Resume!, and LinkedIn profile, if you want to know more about my skills and the work that I’ve done in the past.
Keywords
In alphabetical order, a keyword dump of technologies I’ve worked with over the years:
.net
4gl
adobe aem
adobe ecm
akamai
android web browser
angular
angularjs
animation
api
artifactory
asp.net mvc
backbonejs
backend
backgroundworker
bash
bdd
bitbucket
blueprintjs
bootstrap
bulma
c#
c++
chai
chrome plugins
circleci
cisco routers
classic asp
compass
confluence
cookies
cross-browser compatibility
crucible
css3 flexbox
css3
css
cvs
d3
day cq4
day cq5
debugging
dhcp
dns
docker compose
docker
dom-testing-library
echarts
edgecast
end-to-end testing
envox
es2015
es5
es6
esnext
etl
exchange server
express
fogbugz
frontend
full stack
git
github issues
github pages
github
grunt
gulp
hackathon
hibernate
homebrew cask
homebrew
html5
html
ibatis
immer
integration testing
intel dialogic
ivr
java
javascript
jcr
jenkins
jest
jira
jpa
jquery plugins
jquery-ui
jquery
jsunit
junit
knockoutjs
laravel
less
localstorage
macos
metaprogramming
microservices
mocha
ms access
ms sql server
mvc
nginx
node.js
normalizr
novell
npm
nunit
nvm
orientdb
osgi
osx
performance optimization
php
postgresql
ras
raw tcp/ip sockets
react
react hooks
react-redux
react-router-redux
react-testing-library
reactjs
redux
redux-sagas
remedy
reselect
rest
rxjs
sass
scrum master
scrum
secure coding
selenium
selenium webdriver
session storage
server-side rendering
sinon
sling
smtp
spa
spring
spring boot
spring data
svn
tcp/ip
tdd
third party javascript
tinkerpop
tsql
typescript
unit testing
user experience
user interface
vb4
vb5
vb6
vba
vbscript
webpack
websockets
webworker
windows 10
windows 2k
windows 7
windows 8
windows 95
windows 98
windows nt
xml
xslt
zsh
zurb foundation
Basically, I’ve been programming since I was a kid. I have the longest and closest relationship with the Javascript programming language, having worked with it since the mid 90’s. Based on my mastery of it’s C-style syntax and experience with application development, I quickly picked up programming Java and C#, and soon became aware of more rigorous ways to go about solving problems than are typically associated with Javascript.
At the same time as I like to be conscious of design patterns and algorithms, my roots as something of a ‘cowboy coder’ mean that I can get things done and think outside of the proverbial box.
While I’m versed in many of the latest frameworks and libraries like React, React-Redux, and Redux-Sagas, I don’t use the latest and greatest just because it’s cool. That’s not me. I evolve existing legacy systems into the future, and I want to use the right tool for the job. Sometimes that means building out your own tooling, embracing functional programming, meta-programming, and more.
Videos which demonstrate products and projects I have worked on.
View all my repos and the repos I’ve forked.
An ES6 implementation of a deck of playing cards, including mix-ins, base classes, and more. In addition to implementing a standard deck of playing cards, the code is extensible and can be used as the basis of any kind of card deck.
As this is base code which doesn’t include any implementation using the classes the demo site shows information for various project metrics such as code coverage and complete report of test results. The test results reporting is done using React components.
A React UI using CSS3 Flexbox, showing an implementation of shuffling and dealing using the deck-of-cards code. Also allows for changing the card face design between the English pattern and a Russian “Atlas” design.
An ACID Trail is a sequence of colors and/or color names which is generated from arbitrary data and can serve as a unique identifier for that data, and especially a particular version of that data. Distinguishing between different versions of resources (e.g. files, records) which have the same “base” identifier is a difficult problem. I attempt to address this problem by using colors which are not randomly generated but rather generated as a representation of the data to create. Identical versions of the same resource would have the same ACID Trail identifier.
This implementation utilizes ES6 and WebWorkers for the logic and code structure, and React/Redux and Bootstrap for UI.
A (much) earlier version without ES6, WebWorkers, React, etc. is also linked below.
An application / toolkit extending AngularJS by introducing composite multi-aspect components. Composition occurs along many lines including heirarchy, layout, component definition, component configuration, component behavior, and contract/data consumption.
It is presented in the form of an example application, the Interface Designer. To get to know how the toolkit works, you will need to examine the example application code’s configurations and data along with the angsturm.js code itself.
Early version of a utility to create a memorable / human readable identifier for an object / document / state by mapping hashes to color sequences. Integrating existing functionality from other tools to solve a new and unique problem. Easily translates to other languages, I have implemented the code in C# as well as the javascript shown here.
A small javascript puzzle game which implements the ‘tower of hanoi’ also known as ‘lucas tower’. Designed so it can be embedded easily as an application easter egg :)
web worker shim (defunct)
Before the announcement of Chrome Frame, I was working on a shim for HTML5 Web Worker API based off of Google Gears. After the announcement I mothballed the project. It still stands as an example of my ‘raw’ JS programming.
Collectist: The Walking Dead and Collectist: Gogos Crazy Bones
Two sites running off of the same code engine — collectors maintain a checklist for the particular hobby (obviously I have started with toys) which is stored for them via localStorage. The code leverages require, knockback (knockout + backbone), and a little bit of zurb foundation.
When completed, the site would enable different types of checklists such as ‘have’, ‘want’, ‘will sell’, ‘will trade’, etc. as well as sharing collections with others via links. I would like to implement distributed (i.e. via Dropbox, Google Drive, etc.) as well as centralized storage options (via document store such as MongoDB); also distributed (i.e. OAuth, OpenID) and centralized authentication.
A site built around and for the community of the Simpsons Collector Sector message board. The site served as the primary hub for information and socializing around the Playmates’ ‘World of Springfield’ line of Simpsons toys that were produced from 2000-2004.
While the language (VBScript/Classic ASP) and the coding is well below my current standards, it still represents the implementation of a large hand-rolled application with important features like image manipulation, CMS, blog, user management, etc.
medium@j5bot and j5bot.blogspot.com
I am not an extremely active blogger, but the items I have written should help demonstrate my communication skills as well as my approach to problem solving.
Some of my works as a poet.