Now: BetterTogether

Previously: Otelic, Drink, Voomaxer, Dealzon, UCSF, Tech-Review, Plan B BSS


Engineering is the application of mathematics, empirical evidence and scientific, economic, social, and practical knowledge in order to invent, innovate, design, build, maintain, research, and improve structures, machines, tools, systems, components, materials, and processes. - Wikipedia

Let's chew on that definition for a minute. Can we distill it, or abstract it, to something a little easier to digest? Maybe, "Engineering applies tools and techniques to solve problems." The tools and techniques applied depend on the problem domain, but often include the ones listed in the formal definition above.

It sometimes helps to think about somethings opposite, so what's the opposite of engineering? Perhaps "destroying", but that's not what I'm trying to get at. What I'm trying to get at is if you're creating something and what you're doing isn't engineering, then what is it? Maybe it's art. Maybe it's exactly what it says it is. It's when you don't use existing tools and techniques to solve problems.

So how does an engineer's approach to problem solving differ from a non-engineer's? Maybe it is art. Maybe it's relying on intuition rather than data.


Engineering products is easy. Build something people want and build it well. Find a way to generate profit. Great customer service. Scale it. Done.

Most of you will rightly disagree with the previous paragraph. Things just aren't that simple. Look at what Elon Musk is trying to do with Telsa. People want electric cars. Tesla arguably builds them well. They charge money for them. They are scaling their production while reducing costs and introducing a lower cost model. They are no where near done and they've been at it since 2003. Building a new car company to usher in the future is on the more difficult end of the product spectrum, but every product creator will face difficult challenges.

For example, you may be certain that a large percentage of the population would love to have shoes with self-tying laces (or perhaps more accurately self-tightening). Push a button and the shoe tightens around your foot. Push it again and it loosens so you can easily take it off. Sounds like a nice idea, but how do you convince people it's worth the extra cost, weight, and hassle of having to plug your shoes in? This is the challenge with marketing. How do you get enough people to value this feature enough to pay the extra cost?

Self-tightening shoes seem like a very hard sell. The components conflict with what you want in a shoe. They add weight, complexity, repairs, concerns with exposure to water, and may impact comfort. Tying shoe laces is easy. Why the extra complexity?

Then comes along someone who makes a self-tightening system that is so simple, elegant, and inexpensive that it becomes practical. Technology progresses and the timing becomes right.

My approach to product development boils down to my earlier statement above. Build something people want. Sales solves all problems. Get good at selling. Be honest. Don't be an asshole. Talk with customers. Read and learn as much as you can. With all of that comes tools and techniques you can use to do each thing. It's the hardest thing in the world but people do it everyday.

This web site is an example. It's a product. I'm trying to sell myself. I am the product. I want you to read it, like me, and hopefully learn something. I want to be someone people want to work with so I can secure my living and be a productive member of society. I have a set of core beliefs that guide my actions. First and foremost being that I want to be the source of positive events in the lives of others and the world. It's incredibly difficult to hold true to this. I'm not a vegan. I eat meat. Yet the consumption of most meat is not a positive event. I can buy organic, grass fed, humane meat, but I eat at restaurants that certainly do not. I may be creating a positive event for the restaurant owner but not for animals we consume and produce on an industrial scale. I've now digressed into meat consumption when this is supposed to be about product development.

Build something people want. If you're inventing the future, something new, then try and sell it as soon as possible. If you can't sell it, move on. That's what we did with Otelic. I still know to this day that Otelic is something I want and that job seekers want, but not enough companies that we spoke with are ready to dedicate the resources to using it. Which is a shame given the importance of attracting the best talent. I still believe in Otelic but either the timing wasn't right or our sales process didn't reach maturity.


Engineering for the web means engineering that involves computers, networks, and software. I have over 15 years experience building products for the web. I’ve led engineering, design, UX, product management, and people management. I’ve worked in Perl, Python, Java, .NET, Ruby, Javascript, and Elixir. Ruby, Javascript, and Elixir are my current languages. I have experience with the main libraries and frameworks of these languages including Rails, jQuery, Ember.js, React, Relay, and Phoenix.

My current project, BetterTogether, uses Elixir (Phoenix), PostgreSQL, GraphQL and Javascript (React & Relay) hosted on Heroku (keeping it simple). So far I quite enjoy the declarative nature of Relay and the hierarchical nature of React. I'm also the author of the Elixir Relay library.

My previous project, Otelic, uses Ruby (Rails) and Javascript hosted first on Heroku then AWS where we used CloudFormation, OpsWorks, RDS (PostgreSQL), ElastiCache, S3, SNS, CloudFront, IAM, and Route 53. I recommend staying on Heroku (the tooling is very good) until it’s clear you need something more, at which point you’re likely to go either bare metal or cloud depending on your needs.

From a high level the job of an engineer is similar to any job; to solve problems. As an engineer we want to develop solutions that are sound and solve the right problem. As a software engineer we want to develop solutions that are flexible and easy to change. We want solutions to be performant, scalable, and resilient. As a result we have a wide and deep field with much to explore, thus keeping this life long learner busy.

I take what I call a pragmatic craftsman approach that values quality and attempting to know when to apply it and when to sacrifice it in order to achieve business objectives (reduce costs, increase revenues).

I'm looking to work with people on a mission. I love solving problems and being of value. Email me if you'd like to work together. I'm available for part time contract, or short term full time, opportunities.

TODO: empirical evidence, data, badass, customers, details, perfection (I'm tempted to put an "Under Construction" gif in here as a throwback to the early web)

For More See