People working on laptops
"Hmm. I think I'm seen something like this before..."

Tim Case RubyonRails Developer

Veteran developer with 18 years experience wants to be your next hire

RubyonRails

plus modern javascript, modern css, and devops

RubyonRails Speciality

Rails versions 1 to 7.0.3
Ruby versions 1.8.2 to 3.1.2

Javascript and Functional Ready

ES6 / Vanilla Js
Elm
React
Typescript
Babel
Webpack
NPM
EsBuild
Hotwire
Rails 7 Js bundling

CSS

TailwindCSS
Responsive design
Design systems
Style Guides / Storybook
Bootstrap
Sass
BEM
CSS Grid
Flexbox

Databases / Theory

Postgresql
Mysql
Redis
Solr
Elastic Search
MongoDB
DB Constraints
Index
Boyce-Codd Normal Form
Application DB vs. Integration DB vs. Reporting DB

Devops

Linux VPS
Containers
Opscode Chef configuration management
Jenkins continuous integration
Prometheus monitoring

Testing

Unit testing / Minitest / Rspec
Fixtures / Factories
Test doubles (mocks, stubs, spys)
Javascript testing / Mocha / Chai
Testing strategy
Fixing slow test suites

Questions nobody asked

Why do you still want to work with Rails in 2022?
I spent the last few years working on Javascript frontends using React and Elm where Rails served up the backend API. I think I've made prudent decisions regarding tech stacks and choosing to build apps as single page applications, but I've suffered tremendous discomfort with how much longer it takes to get things done when compared with the developer productivity of Rails. Rails 7 came out in 2022 and it takes some interesting turns by abandoning Webpacker and introducing Hotwire. So far I really like esbuild and I'm hoping to put some time in with Hotwire in an effort to understand what the SPA vs. Rails tradeoff is at right now.
What kind of Rails app have you worked on?
In the beginning it was greenfield startup projects such as Gist an app that was an experimental project for Paul Allen of Microsoft fame. Later, I focused mainly on custom ecommerce sites based on Spree. I took on a developer / maintenance role for a large Rails project at Harvard University. The past few years have been a mix of new app development and maintenance of older Rails projects. I think I have a special knack for upgrading terribly old versions of Rails that are still out in the wild by virtue of having worked on all the versions of Rails since it's inception.
What kinds of javascript frontends have you worked on?
Mostly React and Elm. My last Rails position was a Rails app that had both a mobile app and web app done with Typescript and React. I have quite a bit of experience with Elm, a functional frontend that is partly the inspiration for Redux, and I use Elm because it's the most Rails like framework I've found for the frontend, I buily my app with Elm.
What kinds of css / design skills do you have?
Making things look good has always been the bane of my existence as a mainly backend developer, and I feel like I finally turned that story around in these past few years. Right now in mid 2022 I think I might even be ahead of the rest of the industry in that I'm creating my own design systems based on web components. What this means is that I'm building what I think are great UIs that are both visually appealing and well constructed. I feel I'm very good with responsive design and I believe trying to conform to accessibility rules is not just morally necessary but also results in better user interface.
What kinds of database skills do you have?
I know databases from the perspective of an app developer. I know 3rd normal form and all the classic DB features of relational databases. I'm comfortable with writing SQL by hand because that was the only way to do it when I first started. I understand the implications of slow queries that may be inefficient because they are doing whole table scans. Probably the biggest consideration with databases is knowing the tradeoffs of design for fast reads vs fast writes and how that impacts trying to generate reports since most relational databases are designed for fast writes. When using ActiveRecord the most common issues to watch for is not having the right indexs in place and sneaky N + 1 queries. I've never sharded a database so if you are having bottlenecks caused by the DB that would be outside my wheelhouse but I'd be interested in working on it.
What kinds of devops experience?
I've been deploying apps to virtual private servers for the majority of my career, most of the time that means provisioning ubuntu or debian based servers with Chef, and tehen deploying a Rails app with Capistrano and finally serving it up with Passenger and Apache. Sometimes the app server changes to unicorn, puma or mongrel, sometimes Heroku or a container provider was used. With WingTask I have five different servers, the first is a Rails app serving up static content like landing pages, blog, and documentation, the second is the WingTask app itself having both it's Elm frontend and Rails backend being hosted on the same server, the third is a demo server, the fourth is a staging server, and the fifth is a Prometheus / Jenkins server.

From the blog

OrangeSodium is the blog of Tim Case and WingTask

Skills

A list of skills

Ruby Language
Object Oriented Programming
SOLID principles
Refactoring
Classes & Modules
Attributes & Methods
Inheritance & Mixins
Functional Programming (with Ruby)
Blocks
Procs and Lambdas
Flow Control
Conditionals
Enumerables
REPLS and Debugging
Metaprogramming
Ruby Gems
rbenv
Gems
File Structure
Vetting gems for inclusion in a project
Bundler and dependency managment
Rails Framework
MVC
Asset pipeline & preprocessors
UJS
Monitoring
Caching and pagination
Background Tasks
REST
Routing
APIs
JSON and XML
Hypermedia
ORM
Relational Schemas
Migrations
Normalization
Foreign keys
Indexes
N + 1 optimization
Document Stores
Associations
Dependencies
Eager Loading
Validations and callbacks
User management
Authentication
Authorization
Multitenancy
Conventions and best practices
i18n
Time Zones
ActiveSupport
Security
CLI
Rails console
Rails generators
Rake tasks
Actionmailer
SQL & Data Modeling
Select
Group
Order
Limit
Insert and Update
Transactions
Joins
NoSQL
Performance
Slow query logs
Query Plans
N + 1 avoidance
Tests
Types
Unit
Functional
Integration
Code under test Performance
Acceptance
Regression
Tools
Rspec
Minitest
Factories and fixtures
Test doubles (mocks, stubs, dummies, fakes, spies)
Philosophy
Test driven development
Behaviour driven development
Test first
Test at the seams
End to end
TATFT
Deployment
Automation
Continuous Deployment
Continuous Integration
Server monitoring and logging
Configuration Management
Release Management
Security and Data Integrity
Git
Version control systems
Distributed VCS
Branch
Merge
Conflicts
Diff
Rebase
Workflows
Github
Fork
Pull Requests
Config
Remotes
Default Behaviours
Software Engineering
Application Architecture
Modularization
Domain driven development
Microservices
Agile Processes
Daily Standup
User Stories
Retrospectives
Working Software
Sustainable Development
Changing Requirements

Work History

  • WingTask
    Company Profile

    WingTask is a mobile UI for the popular opensource command line task manager, Taskwarrior. WingTask is an app wholly created by me and represents my desire to build and launch my own app as well as trying to provide a useful addition to a CLI app that I use daily.

    Tim Case Role
    elm rails javascript webcomponents tailwindcss ruby chef

    In the next iteration of WingTask I replaced the Material Components based UI with a custom UI of hand built web components. The benefit of this is a UI that can serve IOS users and Android users with a neutral bias. Abandoning Material Design also allowed me to create a branding for WingTask that was more unique, and finally I think it just looks better.

  • 1bios
    Company Profile

    1bios provides software and solutions that make it easy for group practices and care teams to deliver virtual health programs that generate new revenue and improve health outcomes. The health tracking and engagement platform that helps insured and patient populations achieve their best health.

    Tim Case Role
    react typescript rails ruby

    1bios is a complex set of RubyonRails applications that serve different populations of users. It has a web admin area that is mostly Rails and React. It also has a mobile frontend that is React being served from a Rails API. The app is unique in that it's a monorepo containing about 3 or 4 different Rails apps being serviced by a Ruby middle tier library.

  • WingTask
    Company Profile

    WingTask is a mobile UI for the popular opensource command line task manager, Taskwarrior. WingTask is an app wholly created by me and represents my desire to build and launch my own app as well as trying to provide a useful addition to a CLI app that I use daily.

    Tim Case Role
    elm rails ruby chef

    I did everything for WingTask from the graphic design of the Logo to the provisioning of the servers and everything in between. For the look and feel I designed the app in Sketch and then coded the front end using a combination of Elm's Material Design Components for Web library along with Zurb's Foundation 6 for responsive layout. Elm was chosen as the frontend framework because I feel it's a lot more productive for developer than other frameworks, particularly React. A Rails api only backend provides access to the data for the separate Elm frontend app. The Rails app makes use of a custom ruby gem I wrote to execute taskwarrior commands. Taskwarrior is a CLI app written in C and is the only part of the WingTask stack that I didn't build. Finally both the front end and back end are hosted on as single Linode server which I keep provisioned using Chef configuration management.

  • Bidsketch
    Company Profile

    Bidsketch proposal software lets you create, electronically sign, and track professional looking client proposals in 50% less time

    Tim Case Role
    rails react

    Worked on an unreleased app called Docsketch which is an electronic signature signing app similar to HelloSign or RightSignature. Using React I created the ability for a person to drag and drop signing elements onto an uploaded document in order to specify what needs to be executed for the signing. For example dragging a date from the sidebar onto the document would specify a date needed to be added by one or both parties. The drag and drop was provided React's DnD library and all of the advanced features both of it and HTML 5 drag and drop api were utilized so that the user interface was intuitive and worked as expected.

  • Taxjar
    Company Profile

    TaxJar makes sales tax filing easier for online sellers and merchants located in the US. See local jurisdictional tax reports, and get payment reminders.

    Tim Case Role
    ruby

    I created the initial version of the Taxjar Ruby API wrapper.

  • Econify
    Company Profile

    Econify is a development shop in New York City, they specialize in Web Development, Mobile / Smart TV, and Devops.

    Tim Case Role
    rails

    Econify created an app for selling parts in an Ebay like market for the large machine industries. For instance, it allowed people who had spare parts for locomotive trains to sell parts to one another. I worked generally on fixing bugs and adding features to this marketplace app.

  • Endpoint
    Company Profile

    End Point was founded in New York City in 1995 as a full-service software consultancy specializing in ecommerce, custom applications, enterprise security, and managed infrastructure.

    Tim Case Role
    rails

    Harvard Law commissioned End Point to build an app called H2O which is a platform for creating, sharing and adapting open course materials. While this app was adapted for many other institutions initially it allowed Harvard Law Professors to upload PDF copies of US court cases that would be part of the curriculum for Harvard Law students. I worked on an annotations feature which allowed a professor to share annotations of a document to their class as well as allowing a student to add their own annotations. There was a versioning component to this that also allowed viewing annotations at different points in time.

  • Morlen Sinoway
    Company Profile

    Morlen Sinoway is Chicago's premiere Retailer of over 60 Brands of contemporary furniture, contract lighting, unique home accessories, and custom area rugs.

    Tim Case Role
    rails spree

    This was another standard launch of a greenfield Spree store.

  • Soletron
    Company Profile

    The Soletron platform was designed to facilitate the interaction between designer sneaker consumers and independent brands. Soletron has a structure similar to Etsy as it does not hold any inventory. Sellers sign up through the website to post their inventory online. Soletron brings a social element to retail as users can create profiles to follow brands or other members. They can also favorite products and share them with the online community. Soletron features a lifestyle blog meant to keep their visitors up to date on sneakerhead trends.

    Tim Case Role
    rails spree solr

    Soletron wanted to add faceted search to their Spree store. I custom implemented faceted search for them by replacing Spree's search functionality to instead use Solr. Solr did the heavy lifting of faceted search and so I created a user inteface to support the facets that Soletron specified (color, size, price, type of shoe, etc.)

  • Paradise Marketing
    Company Profile

    As one of the largest sources for condoms and personal lubricants in the industry, Paradise Marketing is one of the largest sources for condoms and personal lubricants in the USA. As a wholesaler they source from condom manufacturers and sell to retailers.

    Tim Case Role
    rails spree

    This store was another standard Spree store, with the only thing unique about it was that they had a large product base that I had to write custom scripts to import.

  • Cosas de Regalo
    Company Profile

    Cosas de Regalo is an ecommerce site in Barcelona, Spain they carry gifts for him and her, gifts for children and home decorations.

    Tim Case Role
    rails spree

    Rails 3 was almost complete rewrite of Rails introducing completely new internals and often a completely new interface for every aspect of Rails. Upgrading from 2 to 3 was not a small undertaking. Compounding things further Spree also introduced its own version of a dramatic rewrite between versions that also mirrored the Rails upgrade. The net effect was that upgrading a Spree store was no small undertaking. Cosas de Regalos contracted me to upgrade their Spree store which had been customized to both handle their type of ecommerce as well as handling different tax and shipping requirements to support their business in Barcelona.

  • Currix
    Company Profile

    {"Currix was a destination for teachers to discover just these sorts of resources. It's also a marketplace for this content"=>"teachers will be able to monetize the lessons, activities, logos and more that they upload there."}

    Tim Case Role
    rails spree

    This Spree store was customized to first have a seller's admin type page where seller's of content could upload their content and then place it in the store for sale. Content could be pdf files, videos, or audio so each file type was customized for display in the store based on file type. For pdfs the first page of the PDF was displayed in the store, for videos a clip was generated from the first 15 seconds of the video and displayed, finally for audio another 15 second clip was automatically generated. Additionally, the seller could also upload their sample to be shown in the store.

  • Recruit Military
    Company Profile

    RecruitMilitary is a wholly-owned subsidiary of Bradley-Morris, Inc. (BMI), the largest military-focused recruiting company in the U.S. Together, BMI and RecruitMilitary offer employers access to more than 1,200,000 military job seekers via services that include contingency recruiting, military job fairs, a job board, employer branding, a military base publication and more.

    Tim Case Role
    rails spree

    This was a pretty bog standard creation of their ecommerce store using Spree.

  • Novawhite
    Company Profile

    Novawhite is a Singapore company offering a range of teeth whitening products.

    Tim Case Role
    rails spree

    Novawhite was a Singapore company with a Spree store and they were having problems processing credit cards particularly with US customers. They decided to switch to a different payment gateway that was uncomon and specific to Singapore. I hooked up the payment gateway after figuring out how to inteface with it's clunky API.

  • thoughtful
    Company Profile

    Thoughtful.co helps consumers quickly and easily give the right gift, at the right time. Available as a web and mobile application, the service recommends unique and thoughtful gifts and helps users manage important dates for the most important people in their lives.

    Tim Case Role
    rails

    I built features for their app that helped with the display of products.

  • Rise Clothing
    Company Profile

    Rise is one of the fastest growing and most innovative sports fitness brands in North America.

    Tim Case Role
    rails

    I created their first store using Spree. Most notable was that they were clothing store where the each article of clothing came in a variety of colors and sizes called variants. The variants inventory was pulled from a 3rd party inventory management that exposed a REST api.

  • Pernod Ricard USA
    Company Profile

    Pernod Ricard USA is the premium spirits and wine company in the U.S., and the largest subsidiary of Paris, France-based Pernod Ricard SA, which employs a workforce of approximately 18,000 people worldwide.

    Tim Case Role
    rails

    I was hired by a design firm who had built the site previously as a Rails CMS. They hired me to periodically update the site. Even though the site had a CMS admin section they preferred to just send new content for me to post up to the site. Additionally, when needed I would code new features to the CMS to support some new requirement such as the addition of a modal that greeted visitors of the first visit and verify that they were over the age of 21.

  • City Winery
    Company Profile

    City Winery in New York City is a fully functioning winery with intimate concerts, food & wine classes, private events in a variety of configurations, and elevated dining.

    Tim Case Role
    rails spree

    I built an online store capable of handling both sales for their live events as well as shipped to customer merchandise such as wine and t-shirts. The store had a hard calendar deadline of the last week of the year because the winery opened on New Year's Eve with a Joan Osbourne concert. A Spree store was created and modified so that rather than just entering products a different type of product was also supported which was an event. Events held at City Winery of course occurred at particular times and so they needed to support cut off dates where after a particular time passed the site no longer listed the event and sales were closed. Additionally patrons were allowed to pick their seat in the 500 seat venue with different seats being provided at different price levels. A CMS was also fused into Spree to allow more content to be displayed about the artist and event. This store was extremely complex, and although the job itself was very stressful, I singlehandedly delivered the project to the satisfaction of City Winery after the company who hired me as a contractor broke both obligations to both City Winery and me.

  • Socrata
    Company Profile

    Socrata develops and operates a government domain-specific, cloud-based data as a service platform that breaks down government data silos.

    Tim Case Role
    rails postgres

    Analyzed slow performing pages and changed both Ruby code and SQL Queries to make the pages run faster. First indexes and compound indexes were added where possible. Expensive Ruby Array operations were analyzed to see if they could be better pushed to PostgreSQL particularly when it came to filtering and sorting operations.

  • Vulcan Labs LLC / Gist
    Company Profile

    Gist integrated with Microsoft Outlook and Gmail to aggregate emails and related material (links, attachments, news articles) by people and company. It also brings together feeds and information across social networks.

    Tim Case Role
    rails

    I worked on the core features of the app, which in the initial stage was the importing of emails from both IMAP and Gmail. A rudimentary parser was built to extract email addresses and urls from emails. Attachments were analyzed and recorded for their size, type, and title. Next the data was packaged for the UI which would present the user a dashboard that included a list of all attachments or things like a 3-D cloud / graph of the user's email social network.

  • Universal Music Group
    Company Profile

    UMG owned a subsidiary specializing in ringtones and mobile phone content in the days before smart phones.

    Tim Case Role
    rails

    Wrote a Rails app that interfaced with a java backend and allowed for the purchasing on ringtones and other content for mobile phones. This mobile app was before the iphone so the app was very rudimentary and the actual transaction to place across SMS. Later developed a 3rd party ringtone app for selling Ringtones at Skype.

  • RubyonRails

    Tim Case Role

    Discovered RubyonRails and quit .NET forever. A friend sold his startup to Microsoft and he wanted me to architect the next start up he was build after his acquisition obligations were finished. I started building an app stack for .NET using the best frameworks and tools available at the time. One afternoon I tried Rails and saw in an instant that it was better than anything else that existed. I knew I saw the future. Ruby at that time was unknown and my friend asked with incredulity that if I was switch to a dynamic scripting language then, "Why not Perl? They have Cpan." My story of switching from .NET to Rails was picked up as one of the first conversions soon to come.

  • Stop Loss Insurance Inc.
    Company Profile

    Stop-loss insurance is insurance that protects insurers against large claims. Stop Loss Insurance was a brokerage that specialized in selling stop loss insurance to Hospitals where the hospital would take insurance for rare high cost cases such as extremely premature babies or people with rare diseases that required very expensive treatment.

    Tim Case Role
    sqlserver

    Global investment bank RSM EquiCo Capital Markets LLC, was one of the US's most successful merger and acquisition advisory firm. They eventually became the mergers and acquisitions subsidiary of H & R Block.

  • RSM Equico
    Company Profile

    Global investment bank RSM EquiCo Capital Markets LLC, was one of the US's most successful merger and acquisition advisory firm. They eventually became the mergers and acquisitions subsidiary of H & R Block.

    Tim Case Role
    dotnet

    Worked with the in-house development staff to build new features for software package that managed the workflow of the entire company. A deal comprised taking a new prospective company and doing the groudwork and research necessary for that company to receive a valuation and be sold to a buyer. Deals were tracked through various stages by large number of staff in various departments.

  • Piaggio USA
    Company Profile

    {"Piaggio & C. SpA is an Italian motor vehicle manufacturer, which produces a range of two-wheeled motor vehicles and compact commercial vehicles under seven brands"=>"Piaggio, Vespa, Gilera, Aprilia, Moto Guzzi, Derbi, and Scarabeo."}

    Tim Case Role
    dotnet

    Created their warranty claim system as a windows app. Dealers submitted claims for work performed on scooters as part of their warranty obligations. I wrote a dotnet app that helped with the tracking of the claims, pulled in information from the Great Plains database, and allowed for the support of a workflow for staff who needed to approve the claims and send payment to dealers. The app was highly successful and was showcased when the President of Piaggio visited from Italy, as no other Piaggio subsidiary had a similar system.

  • After automating the generation of an Excel spreadsheet using Visual Basic I was pulled out of my accounting position and rehired as a programmer at the same firm with double the salary. At this point I started my career as a programmer leaving accounting forever.

  • Passed half the of CPA exam and decided I didn't want to be a public accountant.

  • Attended the University of California at Santa Barbara, graduating with a degree in Business/Economics emphasis in Accounting.

  • Dialed into Bulletin Board Systems with a modem to play multiplayer online text games.

  • Got a PC clone and Beat King's Quest II, Space Quest, and Leisure Suit Larry.

  • My family are all engineers so computers were often around. Tandy, Texas Instruments TI-99/4a, Apple II. Hacked a text based zork-like game written in Basic to figure out the exact text input needed to win the game.

  • At the age of 5 Moved to Anaheim California, and grew up there.

  • As a toddler, lived in Okinawa, Thailand, Phillipines, and Guam

  • Born at USAF Kadena Air Base, Okinawa Japan to Thai mother and American father.

WingTask

Application by Tim Case

WingTask

100% built by Tim Case

WingTask is an app that provides a mobile UI and sync server for popular opensource CLI application Taskwarrior.

Launched without any announcement, growth is glacial with over 500 users!

“WingTask is decent enough (no affliation)”

Inbox user interface

Designed first for mobile

Responsive web app

Looks good and functions appropriately on mobile, tablet, and desktop. Each view of WingTask is designed to support multiple viewports not just in appearance but also in function.

Progressive web app

Progressive Web Apps (PWAs) are web apps that use service workers, manifests, and other web-platform features in combination with progressive enhancement to give users an experience on par with native apps.

WingTask can be installed to the home screen of a device and launched the same as native apps.

Single page application

Single page applications are too popular in my opinion. The issue is complexity that drives development time to be an order of magnitude longer.

I tried as much as I could to build WingTask as a server side Rails app, but after I functional demo decided that if wanted a web app that had the feel of a native mobile app, then I had to bite the bullet and go SPA. After having mixed results with React, I switched to Elm and am pleased with both the app dev speed and the end results.

WingTask on mobile

Tim Case

How I Work

1099 Contractor

I work through my WA state LLC, Power Up Development LLC

Remote Only