Whenever you go through a big change in your life it’s important to take measure of all the assumptions and biases that influence your behavior. So before jumping into anything new I really wanted to achieve a clarity about what I wanted the long arc of my career to look like, who I hoped to be at all times during that journey and what problems I was deeply moved by. When I left my position running Dropsource, I was not sure exactly what I’d be doing next but I had some ideas spanning multiple disciplines. To narrow things down I traveled a lot, spent significant time around coaches, and explored some new industries.
After Earning many Delta SkyMiles and buying lot of lunches for people, I’ve found what I was looking for.
I really want to build companies that help creative people build things. You can call them tools I guess, but that’s such a bland description for a very beautiful thing. Empowering & enabling smart creatives to build things they never could otherwise is a drug I’m addicted to. Sharing in the highs and lows of bringing ideas to life is the most satisfying feeling I’ve yet encountered on this tiny planet.
With AI getting better and better I think it’s only a matter time before the tools we can deploy to help creatives put Tony Stark’s workshop to shame. I want to make those tools. So my life vision, and the long term vision of all the companies I plan to start over the next few years will be making Picasso’s famous quote “everything you can imagine is real” literally true.
As these tools become the norm, I truly believe our economy will reform itself around creation/customization and away from raw consumerism.
While reflecting on the three years I spent building Dropsource from dorm room to established brand it become clear that non-programmers were the main buyers for our no-code development platform. The shortcomings that kept us from satisfying programmers are consistent with the decades long history of visual tools and came as no surprise. What was interesting however was just how much the programmers liked specific parts of our platform in isolation. Things like automatically mapping their APIs to native code, binding fields to data, and a lot of other boilerplate/repetitive work we automated were really compelling time savers.
What I began to notice this year while doing diligence on other no/low code tools and talking to many of my peers who have built and run dev tool companies is that that there’s a huge huge opportunity to bring useful automation to the developer. The problem to be solved is in the delivery method. Today these low-code/no-code tools require you to go “all the way”. You have to give up your control, your favorite tools, and shelf the knowledge you already have to embrace some new and often unpolished paradigms.
There seemed like there had to be a way to bring very useful automation to developers in their current workflows and searching for ways to do this led us to the following design questions:
What if there were a way to have programmers and computers collaborate on the same codebase without getting in each other’s way? À la carte automation when you want it, normal programming when you don’t…
What if there you could import conventions and best practices the same way you import code?
What if you could ask documentation questions and they could answer by writing the correct code for you?
And what if all of this could be achieved without changing your tools, programming environment or existing code?
Organize the world’s programming knowledge and make it accessible through automation
Programming knowledge is diffused in a variety of places. There are tutorials, that example your co-worker emailed you, videos, wikis, Q&A sites, docs pages and troves of raw source code sitting on Github. The landscape in many ways resembles the internet as a whole before Google. This abundance of resources is great; however, it takes a human to find, interpret and act on this information and human time is scarce and expensive.
We believe that making this knowledge accessible with automation can save millions of hours a year and give developers and teams the confidence they are following the best practices in every situation.
To achieve this mission we have had to develop a toolchain for turning existing documentation into knowledge a machine can use to assist programmers. In addition to that already difficult task, we’ve had to create technologies that allow computers to read/write code alongside a human programmer without mucking up the codebase or overwriting manual changes. All of this work will be open sourced over the next few weeks and we hope that other groups with similar missions benefit from this soon-to-be prior work.
We built the Optic Agent to help programmers automate work, share knowledge and enforce conventions. Once installed, the Agent will monitor your code and function as your personal programming assistant.
We believe you should not have to change all of your tools or abandon your battle hardened workflow to benefit from a little automation. With that in mind, our key design focus while developing the agent was to make it discreet and impartial. As such it can tap into any IDE and be made to work with any programming language.
The Agent can make use of your team’s knowledge or you can import knowledge from individual developers and companies you trust. Once configured, this knowledge can be used by the Agent in several ways:
Perform searches — just start typing questions in your editor and Optic will pull up results from its knowledge-base. Once a result is selected and configured code gets generated into your project. ie “Process Credit Card”, “Send Text Message” or “Issue JWT Token”. We’re working with NLP experts to push the limits on what you can ask Optic to generate. Supporting compound questions like “Create a route that lists all of a user’s friends” is a stretch goal and one we’ll be able to move towards as our ecosystem grows richer.
Make Suggestions — since the Agent knows a lot more about your code and how different pieces may fit together than any other IDE, it can suggest the next things you might want to do based on your context. For instance if you have a Mongoose Model selected, Optic will ask if you want it to generate CRUD routes & queries for that model and help your configure them.
Connect Code — A major headache for programmers is keeping their code synchronized across projects and teams. A simple example would be keeping your models synced between your server and client code. Optic can store implicit connections between different parts of your code (even across repos) and keep everything consistent with whatever you define as the ground truth.
Enforce Conventions — Have a structure you want your team to follow when writing code? You can use Optic to help teams follow conventions and do things the way they should. This can speed up development time, decrease frustration and increase the quality of every line that gets committed.
Unlike other code generators Optic does not break if you change something it generates. We actually encourage you to make changes by hand whenever you need to and have designed the tool to work with them gracefully. Without getting too technical this works because there is no hidden information in an Optic Project; the code itself is always the ground truth. Change it as you see fit. Collaboration with a code generator should not be a one way street.
We’ll be releasing videos over the next few weeks leading up to release showcasing the Agent and how our early users are making use of it. To learn more head over to our landing page and sign up.
The future of programming, whatever it may be, should be open. If you are serious about changing programming, and we are, it has to be done out in the open. So we’re developing Optic’s core technologies out in the open. If you have a use for it and intend to make programming better for million of developers, please fork our work and contribute useful things back. You can read more about what we’re releasing in the coming weeks in a more technical this post.
There’s a readily available business model for Optic that aligns itself well with the incentives of our users. A team of programmers of any size will have a lot of proprietary knowledge. While Optic will always be free and open, there are all kinds of premium tooling we can offer to these teams of developers to store/manage their internal knowledge, enforce standards and automate different parts of their workflows. There’s also a substantial opportunity to add value with professional services to companies that want to codify their standards and deploy Optic throughout their organization or amongst their customers.
Today we’re laser focused on just delivering value to our first hundred users at no cost. We will literally be sitting next to people helping them deploy Optic to automate the parts of their process that need it most. Once we’ve worked out the kinks and our community has created enough knowledge to solve a wide range of problems, there’s no doubt there’s a very substantial business to built in this space.
We will be releasing our open source work incrementally over the next few weeks. During that time the first users will get access to Optic and soon after it will be released publicly.
Once its out we’re going on tour to cities all over the country to give talks, meet users, get hands on experience, and most importantly** solve real problems**.
We’re really excited to get Optic out there! If you want to get early access and/or have a conversation with us about Optic please feel free to reach out directly.
To everyone who’s made it this far, thanks so much for taking the time to learn about Optic. We hope you enjoy the holiday season and the rest of your year. We’ll see you in 2018!
Finally, I want to extend a special thanks to the following people who have been really influential advisors throughout the development of Optic.
First callout goes to David Weiss, an incredible designer who helped me think through what a UX that worked with existing IDEs would look like. More importantly David helped me adopt a more disciplined approach to design which will no doubt influence my work for years.
Then there’s Robbie Allen the founder of Automated Insights who has been an incredible advisor over the last year. Robbie has helped me flex quite a few mental muscles as I’ve designed this product, has held me accountable for consistent progress, and has been a great role model as an entrepreneur and solo founder.
I also want to thank Igor Jablokov, an amazing founder who sold what become Alexa to Amazon and now runs his new venture Pryon. Igor is one of the smartest people I’ve ever known and has supported me in countless ways as I figured out what was next and started building it. In the early days Igor would counsel me 4–5 times a month at his house and a lot of his wisdom from those chats has made it into our strategy.
Another callout has to go to Chipp Walters, an incredible designer who has been following and involved with dev tools for years. Chipp, more than anyone I’ve ever met, can think in terms of design and computer science at the same time and has been an amazing resource.
My friend Sean Maroni who still leaves me awestruck after most of our conversations. Sean spoke with me about this concept for hours during the earliest days and helped me frame the problems in a really productive/actionable way.
Finally longest reigning mentor on Iron Throne of Aidanland — Mr. Bill Spruill. Thank you for helping me transition out, dusting me off, filling my head with good thoughts, and pushing me into the ring for Round 2.