My name is Sean Omlor. I am a web developer creeping up on twenty years of professional experience.
I first started programming BASIC1 in the mid-80s when I was around 9 years old on our family Texas Instrument TI-99.
Within a few years, I upgraded us to an 80286 PC that I built from parts. It had one 5.25", one 3.5" floppy drive, a 20 megabyte IDE hard drive2, a 2400 baud modem that changed my life and of course a turbo button.
I continued building Frankenstein PCs from parts I saved up for or convinced my parents to buy me. To their chagrin, I'm not sure I ever closed a computer case in the 90s.3
In secondary school, I formally studied BASIC and Pascal on a terminal connected to a monstrous DEC VAX in the closet with an entire 256k of RAM for the classroom to share.
I wrote software for the school Apple IIe to help me study Spanish and which was later adopted by my Spanish teacher for use with other students. I wrote code for my TI-81 to help work through math problems and which also ended up widely circulated among my peers and used by at least one of my math teachers.
After high school, I majored in computer science as the obvious thing. These were pre-Java days, and my classes were all in C. Programming in C bummed me out.
In retrospect, I realize that my interest in programming did not include manual memory management.4 I just wanted to create useful software.
My young mind concluded, "well if I'm not a scientist, I must be an artist." I switched schools and to an art major with a focus on 3D computer modeling and animation.5
So I learned web development in art school.
After graduating, I got a job doing 3D modeling at an industrial design firm in Germany.6 It was fun, and I loved Germany, but I couldn't hack German winters, so I moved to San Francisco after one year.
In early 2002, in Oakland, California, I got my first job as a "web designer," the popular term then. I've been doing web development ever since.
In the beginning, there was HTML.
In the beginning, there was also
I strung together Perl7 for backends and shelled out an infinity of Bash. The Internet was duct taped together with shell scripts.8
In 2007 I went freelance and lightly dipped into the digital nomad thing.9 I curated a roster of mostly small business clients needing steady web development work. I was an early adopter of WordPress and accidentally became a Wordpress guru. The stack is looking a bit more modern now: HTML, CSS, jQuery, and the oft-maligned PHP.
A few years into my freelancing run, I began studying Ruby10. I started building custom sites for clients with Ruby, Sinatra, and Ruby on Rails. This web development thing was becoming more and more fun.
In 2012, on a whim, I applied to App Academy of San Francisco. The concept of free tuition until being placed in a full-time dev role seemed attractive. I got accepted and moved back to San Francisco again.
There's some controversy around the boot camp thing. For me, App Academy was an incredibly valuable experience. I feel like I got the crash-course in foundational Computer Science I wanted when I first chose it as a major.
After App Academy, I did a Ruby on Rails tour of duty at several startups11, eventually earning my "Senior Rails Developer" merit badge.
As I gained more experience with production Rails systems, my few, specific frustrations12 began corroding to gloom with each untenable wreckage I wrestled, ultimately crumbling into a broader disillusionment with object-oriented programming itself.
In early 2015 I began my journey into functional programming, studying Clojure, Elixir13, and Haskell.
Just one year later, I took a full-time role leading the development of a complex backend in Elixir for an AI startup.
I've been shipping Elixir to production ever since, over three years now. I continue to feel impressed and grateful for this fantastic language, ecosystem and community.
What does the future hold?
- Dig deeper into GraphQL and Elasticsearch
- Broaden my understanding of network engineering
- Find my sea legs with Rust
- Continue climbing the Haskell mountain
- Keep poking at category theory and dependent types
This was my jam right here. ↩︎
I remember wondering how in the world I would ever use this much disk space. ↩︎
Something like this. ↩︎
Fast-forward, I am enjoying Rust's approach to manual memory management. ↩︎
Using mainly 3DS Max and Maya. ↩︎
Hanover, Germany, which many Germans assure me is a boring city, but as a know-nothing American, I found it charming. ↩︎
And maybe still. See Kubernetes with nearly 50,000 lines of shell. ↩︎
Playa Zancudo, Costa Rica, where I lived for one year. ↩︎
My first of many Ruby books. ↩︎
See work experience for more details. ↩︎
For example, the lack of primitives for safe concurrency leading to convoluted solutions for async tasks. ↩︎
My first of many Elixir books. ↩︎
Also Erlang! ↩︎
Also ClojureScript, TypeScript and Reason! ↩︎