About

I specialize in web-dev (full-stack, many stacks), 3D graphics, hardcore debugging, read and implement research papers for fun, and am absolutely obsessed with optimization. You can find random nuggets of gold scattered throughout my twitter stream.

I keep up with the latest conferences. From Business Of Software and MicroConf to anything by ACM (eg: SIGGRAPH) and GDC.

Web-dev began for me when Geocities were hot like Heroku, and the ancient pre-css flame-wars of iframes vs tables raged on. I love it.

I can take a project from Ideation, through IA, into Wireframing, give constructive feedback on Mockups, ensure Comps will look pixel-perfect on various devices and browsers, slice up PSDs into beautiful modern HTML/CSS, wire it up with Javascript, and build a reliable, secure, and efficient backend using LEMP, or whatever stack the project needs. And I do it Agile.

My favorite web-stacks right this minute:

Build tools:

  • Ruby’s Guard + Compass to concatenate, minify, and reload CSS and Javascript assets. Learning the NodeJS and Python equivalents.
  • LiveReload (+ ssh tunnels) to automatically refresh the browser on code, style, and markup change. When code change hits the browser in under a second, rapid iteration makes it easy to implement pixel-perfect designs and smooth interactions.
  • Polyfills, shims and mixins for HTML5+CSS3. I’ve done some exciting stuff with Audio API, Canvas and WebGL.
  • Git push-hooks for easy deployment and testing. CI for the win.
  • Gherkin syntax BDD with PhantomJS, Behat, and Mink.
  • Composer and Ender for dependency management.

Platforms:

Linux-fan since Slackware 3.4; these days I’m mostly using Ubuntu. Joyent’s SmartMachines (OpenSolaris + DTrace) look exciting. I admire how much PaaS solutions like AppFog and Heroku have raised the bar for ease of deployment.

  • AWS EC2 servers + S3 storage
  • Joyent’s Linux VMs
  • Docker Containers (Absolutely positively super excited for Docker and AUFS)
  • DigitalOcean’s droplets

Systems:

  • HTTP for dynamic, static, load-balancing: Apache, Nginx, and a little IIS
  • FCGI/WSGI: PHP-FPM, gunicorn
  • Databases: Love MySQL/MariaDB (10+ years), comfortable with MSSQL/TSQL, familiar with PostgreSQL internals (ask me about the diff between their MVCC implementations). Very excited for TokuDB’s Fractal B-Tree Indices.
  • Full-text: Sphinx-Search. Curious to try Solr and Elasticsearch, or anything that supports regex search or realtime updates.
  • Queues and Key/Value stores: Redis rocks for queues and session storage. MemCached/Apc for caching. Learning MongoDB (newbie)
  • Messaging: ZeroMQ for performance-sensitive work

Languages and frameworks:

I love micro-frameworks! And prefer building my own solutions to being tied to someone else’s rails :)

Have written my own frameworks, O/R mappers, caching systems, template renderer, smart and beautiful image-resizers (high-quality filtering, attention to aspect-ratio, effective caching).

  • PHP: Slim, Klein, Alto Router, components from Symfony. (10+ years, on and off)
  • Javascript: Hardcore/Vanilla, Knockout, Backbone, and components like Jasny’s tweaked out Bootstrap and the marvelous Select2. I’m down for anything from microjs.com (15+ years, on and off, always coming back to JS)
  • C#: embedded IIS Core, or a Sinatra-clone called Nancy.
  • Ruby: Sinatra! It’s neat, small and beautiful! (complete newbie)
  • Perl: Fun for building tools to process data and analyze logs. Haven’t used it for web-dev since CGI was a file-extension. I’d be curious to try something like Dancer (a Sinatra clone for Perl!)
  • Python: Flask, definitely Flask. (newbie)

Analytics:

To quote Tom DeMarco, “you cannot control what you cannot measure.” I instrument everything using the best available tools for the given project. I build my own when that’s an option. Some of my favorites:

  • Librato Metrics – big, beautiful, and fast renderer. Push all the things.
  • New Relic – completely automated; turn it on and it does all the work for you. Effortlessly drill into database/code performance.
  • Google Analytics – their social-media integration is interesting. I’d love to use MixPanel, KissMetrics, and SeoMoz.
  • Graphite + Etsy’s StatsD – for the custom self-hosted graphs
  • Hierarchical schedule visualization, sample-based call-stack analysis via WebGrind.

IDEs:

I use tools that make life easier and inspire clairvoyance.

  • JetBrains’ PHPStorm and WebStorm IDEs hit the spot. Komodo is good. Sublime Text will do in a pinch. I know better than to discuss console text editors in public, those flames continue to burn.
  • Xshell – multi-tab SSH client, comes with a key managing agent, supports UTF8, and lets you setup tunnels really easily
  • Photoshop – 15 years later, still my main design tool.

Everything is styled using a dark-theme similar to Monokai.

What I’m Excited About Right Now:

  • Anything-to-anything services like Zapier.com and IFTTT.
  • Preprocessors that improve workflow with browser-languages (SASS, CoffeeScript).
  • The meteoric rise of web domain-specific-languages. Backbone + Zepto + CoffeeScript -> BackzeptoScript?
  • I think the next hot thing might be easy-compiler-compilers! Imagine merging a few libraries into a new elegant language fit just for you and your team, using the conventions and terminology you prefer. I feel like this is where the market is going now, away from general-programming into DSLs!

Personality:

My happiest moments are when someone helps me see a problem in a new light and when I help someone else succeed.

Dharmesh at BoS 2013 @ 29m46s explained something I never put into words before: I’m an “optimistic skeptic.” To borrow from him, this means I analyze a problem by looking at it from various angles, and seek out where and how something may break. And the reason I do this is because I have hope of fixing those issues and ensuring that the solution will ultimately succeed. This is my superpower.

Graphics Programming

Started writing OpenGL when register-combiners were still around and my GPU only had 32MB of vram but came with a full 32-bit z-buffer (Nvidia’s TNT2 Ultra!). Later moved on to XNA and DX9, been writing HLSL for a few years. Graphics-programming gives you a very healthy practice of math, a healthy appreciation for precision, and humility towards statistics.

Familiar Environments

These experiences shaped my views on productivity:

  • One giant shared desk surrounded by robots in a research lab (Academic)
  • Fractal cubicles inside a room with no windows (a Fortune 100)
  • Open space with giant windows and scenery in an incubation lab where holding a door open for 30 seconds cause alarms to go off (a Fortune 50)
  • Interconnected individual see-through glass offices with sliding doors (a different Fortune 50)
  • Distributed telecommuting team working from home in our PJs (~5 people) (Startup)
  • Distributed teams working from 3+ offices ~10 people in ouroffice (digital agency, NY)
  • Exciting bull-pen with only developers and artists ~20 people (digital agency, Detroit)

Entrepreneurship

2003 – Joined a Santa Monica startup as a backend web-developer. Built a CMS and admin tools in PHP/MySQL. Gave away my tournament management software (looking back, should have licensed it out). Helped out on the side by slicing up newsletters from PSDs and getting them into peoples inboxes with my Perl-based transactional email bot.

2010 – Helped launch a game startup within Vectorform after 2 years there. I was lead on 3D. After less than a year the studio shutdown. But it was exciting while it lasted!

2012 – Quit a comfortable job to venture into entrepreneurship. Fell in love with the LEAN methodology (Agile for business), customer-development, branding, positioning, and UX. Started working hard on my business and design skills (wish I took Amy Hoy’s 30×500 class). Caught up with the latest toys (SASS, NoSQL, new JS frameworks). Built myself an awesome work-environment in my living room. Started using GTD and Pomodoro timers to boost productivity and take Yoga breaks. Switched to using a standing-desk full-time – if you have back problems, this can help you tremendously, ask me about it!

And as of 2013, I’m married to my best friend! Life is quite a journey :D