David Eisinger
The Iceman. David's parents met at IBM and he's been using (and breaking) computers since before he could walk. After studying computer science at TJHSST and Duke University, he's been at Viget since 2008, where he leads technical engagements with some of our biggest clients.
David strives to deliver high quality, forward-thinking software on time and budget. His primary interests include database design, functional programming, distributed architectures, and being right almost exclusively.
David’s Articles
-
StackStash: Taking Bookish Musings to the Next Level
-
Maintenance Matters: Good Tests
-
What’s in a Word? Building a Verbose Party Game
-
Simple Commit Linting for Issue Number in GitHub Actions
-
Maintenance Matters: Continuous Integration
-
Pandoc: A Tool I Use and Like
-
Local Docker Best Practices
-
Extract Embedded Text from PDFs with Poppler in Ruby
-
Five Turbo Lessons I Learned the Hard Way
-
Let’s Make a Hash Chain in SQLite
-
“Friends” (Undirected Graph Connections) in Rails
-
Making an Email-Powered E-Paper Picture Frame
-
Email Photos to an S3 Bucket with AWS Lambda (with Cropping, in Ruby)
-
Let’s Write a Dang ElasticSearch Plugin
-
Why I Still Like Ruby (and a Few Things I Don’t Like)
-
Things About Which The Viget Devs Are Excited (May 2020 Edition)
-
Testing Solr and Sunspot (locally and on CircleCI)
-
The Right Way to Store and Serve Dragonfly Thumbnails
-
The Little Schemer Will Expand/Blow Your Mind
-
JSON Feed Is Cool (+ a Simple Tool to Create Your Own)
-
Using Microcosm Presenters to Manage Complex Features
-
Get Lazy with Custom Enumerators
-
Functional Programming in Ruby with Contracts
-
Romanize: Another Programming Puzzle
-
OTP: a Functional Approach (or Three)
-
OTP: a Language-Agnostic Programming Challenge
-
Adding a NOT NULL Column to an Existing Table
-
Required Fields Should Be Marked NOT NULL
-
Use .pluck If You Only Need a Subset of Model Attributes
-
First-Class Failure
-
Diving into Go: A Five-Week Intro
-
“What’s new since the last deploy?”
-
Write You a Parser for Fun and Win
-
Level Up Your Shell Game
-
AWS OpsWorks: Lessons Learned
-
Simple, Secure File Transmission
-
Simple App Stats with StatBoard
-
Large Images in Rails
-
Manual Cropping with Paperclip
-
Three Magical Git Aliases
-
New Pointless Project: OfficeGames
-
The Balanced Developer
-
Regular Expressions in MySQL
-
Testing Your Code’s Text
-
PUMA on Redis
-
On Confidence and Real-Time Strategy Games
-
Rails Admin Interface Generators
-
Convert a Ruby Method to a Lambda
-
Static Asset Packaging for Rails 3 on Heroku
-
New Pointless Project: I Dig Durham
-
Getting into Open Source
-
Practical Uses of Ruby Blocks
-
Social Media API Gotchas
-
CoffeeScript for Ruby Friends
-
DevNation Coming to San Francisco
-
Around "Hello World" in 30 Days
-
Gifts For Your Nerd
-
HTML Sanitization In Rails That Actually Works
-
Refresh Recap: The Future of Data
-
Viget Devs Storm Chicago
-
Single-Use jQuery Plugins
-
Simple APIs using SerializeWithOptions
-
How (& Why) to Run Autotest on your Mac
-
Unfuddle User Feedback
-
Backup your Database in Git
-
Shoulda Macros with Blocks
-
Out, Damned Tabs
-
Stop Pissing Off Your Designers
-
Sessions on PCs and Macs
-
Getting (And Staying) Motivated to Code
-
Multi-line Memoization
-
Protip: TimeWithZone, All The Time
-
Introducing: EmailLabsClient
-
RubyInline in Shared Rails Environments
-
Refresh 006: Dr. jQuery
-
cURL and Your Rails 2 App