Thanks for checking out my online resume and the progressional background.
At the moment I am focusing on consulting through my company ReinventONE, Inc.. Throught ReinventONE, I am currently helping various companies in the SF Bay Area with technology, scalability, performance, availability, deployment, cloud, and many other issues and topics.
My engagements typically revolve around a few roles:
- (Temp) CTO/VP Eng/Director of Engineering
- (Temp) Director/VP of Operations
- Senior contributor & mentor – ruby/rails
- Senior contributor – cloud automation (Chef, Docker, etc)
- Special interests: hardware development, industrial design, Arduino
Please feel free to schedule a meeting time with me.
Fluent, expert level
- Ruby on Rails
- RSpec, Sinatra, Capistrano, Devise, etc
- Performance tuning code
- Performance tuning PostgreSQL
- Identifying bottlenecks in the system using USE method
- Database schema design (for performance or scale)
- Object oriented design, SOLID design
Open source tools I can fluently use on any project:
- Redis, Nginx, Haproxy, pgBouncer, twemproxy
- Solr, Memcached, RabbitMQ, Chef, Sidekiq, ElasticSearch
- Linux, SmartOS, dTrace, statsd
- NewRelic, Boundary
- git, gitX, github
- RubyMine, vim, Atom, TextMate
A bit dated, possibly incomplete, but can catch up if needed:
- React-based evented design
I am a seasoned technology executive, software architect, entrepreneur, and a former CTO of three VC funded companies. As a technology leader for nearly ten years, I drove the vision, culture, process, and strategy within engineering organizations. I focus on maximizing the business and product value while staying human and looking after my team.
I am comfortable working either within or in close cooperation with the founding or executive team. I get particularly excited when I have a chance to provide feedback into the initial product roadmap, leading "inceptions" meetings where an idea gets broken down into a set of implementable stories, which, in turn, we can estimate. I love helping existing teams with improving efficiency, trust, and the process. I am a big proponent and implementer of modern software engineering practices, which ultimately help make software engineering teams incredibly productive and happy. I invest into and believe in practices such as test-driven development, pair-programming, continuous deployment, and infrastructure transparency.
The concepts of micro-services architectures and DevOps have been my focus for over a decade and across six different engineering teams. Before that, I specialized in designing and deploying highly available, fault tolerant, highly concurrent distributed transactional systems, such as an email delivery platform that was sending about 1% of the entire Internet's email volume in 1999.
I advocate for incremental but continuing investment in making software adaptable, (i.e. easy to change and maintain), highly performant, and possible to scale horizontally across commodity hardware (or a cloud). I love operational transparency in the production, powered by full automation, comprehensive monitoring, and intelligent alerting that uses business metrics to decide if a page is worth sending, thus resulting in just a few alerts a week. This approach enables small teams to manage large cloud deployments across any low-cost horizontally scalable infrastructure.
Recent Professional History
Before I started consulting in 2016, for about four years I worked as a CTO at Wanelo.com. This was my third CTO-role.
There, I had the honor of forming and leading my dream engineering team, infused with the culture of collaboration, optimism, mastery, high quality, and care. Best practices such as pair programming and test-driven development, continuous deployment and complete automation were supportive of that culture, which ultimately cultivated work environment with a phenomenally high productivity, low defect rate, and a happy, self-managing team.
Besides managing the team, I coded the entire time, working on the technology stack all the way from the browser to the "deep backend," where the "deep state" lives (sorry, couldn't help myself! :).
While at Wanelo I wasn't too involved in the development of our iOS or Android apps because we hired brilliant engineers to do that, but I was engaged in nearly everything else.
Our small team of 12-16 engineers (it peaked at about 20 including contractors) was able to cover a broad range of technologies and solutions. From the iOS & Android mobile apps to a large monolithic Ruby on Rails application, and complex data analytics.
Eventually, however, we introduced multiple micro-services, a massive horizontally sharded PostgreSQL backend that stored over four billion product "saves" across eight thousand logical shards, distributed across eight physical PostgreSQL databases hosted on SSDs. I frequently speak at conferences and user groups on how we did this, and the choices we made.
We also built an incredibly adaptable Data Feeds application, which from the beginning was designed to be a standalone solution, and integrated with the primary application via asynchronous queueing and pub/sub using RabbitMQ.
As a CTO, founding engineer, and perhaps the most senior developer on the team I was engaged in solving the hardest problems we faced, such as designing a sharded solution, the data-feeds application, and then subsequently, design of the Wanelo Marketplace, as well as other key initiatives.
In the end, our backend was: * serving nearly 5,000–7,000 requests per second to the Ruby layer, * from only eight app servers nodes, * with some 80ms average latency. * Our # of users to # of engineers ratio by far overtook Facebook's, even in the early days of the Internet giant. * Our uptime was 99.99% averaged over four years. * We had no security breaches. * We did this all without Ops or QA teams, almost never "burning the midnight oil," or working on weekends.
Wanelo team had a lot to be proud of, and I am very excited that the company and the technology continues to strive and grow.
I believe that my strong natural leadership, high intelligence – both rational and emotional, ability to think in abstractions coming from mathematics, diverse set of skills and creativity, and continuous investment into learning allow me to apply "outside the box" thinking to solve hard problems, again and again. It is what makes me a strong player on any engineering team. I can rise above the details, and think, speak using abstractions required to break a hard problem down. Which is often necessary to have it understood and solved. And while doing that, I can mentor most junior developers, helping them learn and be able to repeat such method in the future, and crack a few jokes along the way.
Thanks for taking the time to read all the way down to here!