Tim Case

Tim Case Wants To Build Beautiful Apps

as fast as possible

Tim Case TLDR

Rails dev for the past 14 years.

On the frontend, I spent the last 4 years doing mostly javascript using Angular, React, and Elm frameworks.

On the backend, I've been programming Rails since October 2004 before Rails was even 1.0, I consider myself an expert in both Rails and Ruby by virtue of having written and read code on so many projects in different domains. I would add that I've also been humbled by how many geniuses I come across in the Ruby community so while I consider myself an expert, I can point to a lot of people much smarter than me.

On the devops side I love doing server stuff I also think I might be quite good with Chef configuration management and I'm thinking of getting certified in it.

I spent the last year working on my own app called WingTask and now I'm returing to looking for full time work because quite frankly I'm not convinced my app will generate any revenue.

I'm American and Thai, I grew up in Southern California and now I work remotely from Bangkok, Thailand. I match my hours to US time so there's no issues regarding hours overlap. I have a girlfriend who owns a bar and so if I don't work nights then we don't see each other. It's unusual but it works for us.

I work during US hours.

I'm generally contract with the company's I work for as a 1099 contractor.

Skills

Key

Confident and competent, this skill is practiced over many years and is kept up to date with the latest developments.

Comfortable yet there is still some aspect of this skill that can be further explored and learned.

This is a skill that is currently being learned and used. Mastery has not yet been achieved.

This skill was once learned and maybe even at level of mastery but it hasn't been used in a long time and now is outdated.

No previous experience with this skill beyond perhaps reading an article or dabbling with it.

  • 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
          • Enumberables
      • 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
          • 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
  • React
      • React
          • Composing components
          • Using props
          • Using state
          • Writing JSX
          • Configuring React router
          • Going with one way data flow
          • Using different lifecycle methods for different reasons
      • Redux
          • Connect React with Redux
          • Dispatching actions
          • Writing pure functions
          • Creating reducers
          • Adding middleware/thunks/sagas
      • Testing
          • Writing tests with Jest
          • Using Enzyme utilities
          • Writing tests with Mocha
          • Writing tests with Chai
          • Code coverage with istanbul
      • Tooling
          • Writing ES6
          • Configuring Babel
          • Configuring dev and prod with Webpack
          • Add ESLint
          • Yarn as NPM replacment
          • Flow for typesafety
          • Typescript for typesafety
  • Elm
      • Build and launch an Elm app
      • Understand how to use the Elm Architecture
      • Child Parent communication
      • Talk to Servers with HTTP package
      • Performance optimizing Elm
      • Decode JSON responses using decoder and/or pipeline
      • Webpack and Elm
      • Functional programming
      • Elm Views with Html package
      • JS interop with ports and subscriptions

Timeline

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

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

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

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.

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

Kingsquest2

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

Bbs

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

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

Worked as a staff accountant for various companies.

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.

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.

What I did for them
.NET SQL Server

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.

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.

What I did for them
.NET SQL Server

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.

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.

What I did for them
SQL Server

As vice president of technology at an insurance company, I wrote SQL scripts to process hundreds of thousands of health claims to allow a brokerage to arbitrage better rates for hospitals based on proving insurance providers with more accurate health data that I calculated. This was a small 7 person insurance brokerage and everyone there was a vice president of something.

Asp2rails

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.

Brazil

Moved to Florianopolis Brazil, it was a goal in my life to learn a foreign langauge fluently and I chose portuguese. I spent 10 year in Brazil which allowed me to realize my goal of learning a language and also it gave me very special experiences.

Can't remember the name of the company
What I did for them
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.

Seattle

Moved to Seattle for approximately a year where I worked with a friend on his startup that never panned out.

Vulcan Labs LLC / Gist
Company Profile

Vulcan Inc. is a privately held company founded by philanthropist, investor, and Microsoft co-founder Paul Allen. Established in 1986, Vulcan oversees Allen's diverse business activities and philanthropic efforts—from sports teams, which include the Seattle Seahawks and the Portland Trail Blazers to conservation projects such as the Great Elephant Census and business ventures like the Seattle Cinerama. Vulcan Labs LLC was the experimental startup arm of Vulcan where experimental startup ideas where incubated.

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.

What I did for them
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.

I learned two important lessons that still inform my decisions to the current day. The first was that my job as a developer is to deliver business value and not as I had previously thought to build well-written software that was bug free. Instead with Gist we were trying to shotgun ideas fast enough and with just enough visibility of features to allow decison makers to decide whether to move further with the project. This meant that the app itself was either not functioning or riddled with bugs most of the time in the initial stage and that was fine with the stakeholders.

The second lesson occurred after Paul Allen gave his personal greenlight to go further which was then we had to shift focus and take the half built features and make them perform as expected without bugs. An effort towards that end was to have the developer who knew the most about writing unit tests (me), write the unit tests for the entire app at 100% code coverage. Though I achieved the end goal, I realized that a lot of the tests I constructed were meaningless shells of a test designed to fool the code coverage tool rather than providing what I believe to be the constructive value of unit tests. The reason this happened is because part of unit test is expressing the intent of the code that it's testing, this goal is lost when the developer writing the tests is not the one also writing the code. Although I lost faith in this activity I would further down the road repeat the same action of writing unit tests retroactively despite my protests.

Socrata
Rails PostgreSQL
Company Profile

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

What I did for them

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.

City Winery
Rails Spree
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.

What I did for them
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.

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.

What I did for them
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.

Rise Clothing
CompanyProfile

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

What I did for them
Rails Spree

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.

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.

What I did for them
Rails

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

Novawhite
Company Profile

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

What I did for them
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.

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.

What I did for them.
Rails Spree

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

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.

What I did for them
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.

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.

What I did for them
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.

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.

What I did for them
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.

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.

What I did for them
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.)

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.

What I did for them
Rails Spree

This was another standard launch of a greenfield Spree store.

End Point
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.

What I did for them.
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.

Econify
Company Profile

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

What I did for them
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.

Thailand

Moved to Thailand. After 10 years in Brazil I decided that it was a time for a long-term change and moved to Thailand at the suggestion of my parents. Being in Thailand allows me to take care of my parents as they get older, and it's also a fantastic place to live.

Taxjar
You are comfortable either working remotely or commuting to our office in San Francisco
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.

What I did for them
Ruby

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

Bidsketch
Company Profile

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

What I did for them
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.

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.

What I did for them
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.

WingTask

Check Out WingTask
Wingtask tag

What It Is

WingTask is a UI GUI for Taskwarrior, an opensource command line app for Task/Todo Management that I did not create.

It's a progressive web app so on first visit a mobile user can opt to add the app to their home screen, and then when launched is indistiguishable from a native app.

Its'a app with responsive design so it's actually three different interfaces for mobile, tablet, and desktop.

Data refresh model is pull to refresh/sync or click to refresh/sync.

It's built as a single page application so navigating through the app is fast with no pauses for data requests.

Material design was used as the UI framework and makes the app more Android focused but the app works just fine on IOS

Why I Built WingTask

I wanted to build an app that I would use myself.

I wanted to take a shot on building a one man startup.

I found taskwarrior and decided to build a UI for it because I thought it handled the domain of Task/TODO better than anything I'd seen and felt it was also better than what I could build on my own. People cite the only drawback that prevented it from being adopted by a wider audience was the lack of support on mobile and that's what I decided to try to fix.

I thought the scope of the app was focused enough that I could finish it in the time frame that I had, and that launching it to a small group of advanced tech people was my best chance of getting some traction with a new app by an unknown developer.

I felt the next step for my career was to create an app all on my own, complete, end-to-end. I wanted to see how big of a job it was in terms of what I expected vs reality. I felt I needed to learn the things that could only be learned by trying to take a project from start to finish. I also wanted to prove to myself that I could do it.

Who built it.

WingTask was built end-to-end by myself. I did the graphic design for the look and feel and the provisioning of the servers to host it and everything in between

Tools and Frameworks

Sketch app
Sketch

Design

Zurb foundation
Zurb Foundation 6

Responsive Layout

Elm logo.svg
Elm

Frontend SPA

Rails logo
RubyonRails

Backend API

Taskwarrior logo
Taskwarrior

Domain Logic

Chef logo
Opscode Chef

Server Provisioning

Riemann logo
Riemann

Monitoring

Linode
Linode

Server Host

Ubuntu logo
Ubuntu

Operating System

Transparent
Transparent
Transparent

How Long Did It Take?

1 Year. I started the full-time dedicated work on the project in September 2017 and finished it September 2018, so it was a little more than a year.

Hire Me

I'd love to speak with you. Send me an email and we can set up a time to speak. Thanks

Skype: recordkick
Phone: +1-714-329-6847