Announcing Eval: Your AI Codepilot

Concepts for Eval created in Midjourney

I’ve been heads down the past few weeks working on a new coding tool and today I’m ready to tell everybody about it.

Today I’m launching Eval: Your AI Codepilot. Eval is a tool for anybody making things with code. It’s a companion, advisor, and teacher. It’s for professional coders and beginners alike. If you are interested, sign up today.

Our world is rapidly changing with the emergence of AI, Large Language Models (LLMs), and Generative Pretrainded Transformers (GPTs). Many people are just discovering ways in which AI technologies can help them do things they would not have been able to do before. We have seen an explosion in all kinds of AI-generated content from text to images and beyond.

Eval fits right into this idea of AI-assisted content creation, but the content Eval can help you generate is code. The whole point of learning how to code is to empower yourself with the ability to build things with software. But coding is hard, even for people who have dedicated their lives to it. Eval makes creating code much easier, allowing many more people to harness code to build their own software.

With Eval, all you need is a basic understanding of coding fundamentals. Eval is like having a conversation with an experienced programmer and asking them to help guide you through the process. Even if you are an experienced programmer, you likely spend a lot of time looking through documentation and blog posts just so you can understand the problem well enough to write working code. Using Eval can speed up your workflow 2x by being right there with you to answer questions, help debug problems, and even write the code for you!

And in case you were wondering… YES! Eval was created with Eval.

If you are interested in exploring Eval for yourself, sign up at evalplatform.com!

The Theory of Local Maximums

The Theory of Local Maximums is my name for a thought technology that is not often thought about but if considered might allow you to avoid getting trapped by your assumptions, and helps put all kinds of input, from analytics data to advice, into meaningful context. I will explain what the Theory of Local Maximums is, but first let’s consider a common problem.

 

In the technology business we often use analytics tools to gauge customer reaction to product changes. If our conversion goes up, we know we are on the right track but if it goes down, we have done something wrong and should backtrack. Different companies rely on analytics to differing degrees but once a company starts relying on analytics to guide their product direction, the temptation is to double-down. After all why guess about what users want, why not just do an A/B test and get some real data before deciding on a direction? But in relying on analytics too much it becomes a crutch, especially for product managers, who use it to quantify their success.

 

The problem is that even the most data-driven companies sometimes get beat by competitors and even the most analytics-driven product managers sometimes deliver a mediocre product. So what’s missing?

 

If every silicon valley startup is optimizing for growth, and they all use analytics to get there, shouldn’t they all start to look more and more alike as they all optimize for the same goal? Empirically we know the answer is no but the reason why is because each one of those companies are all optimizing for the same goal but they are each on a different local maximum.

                        

 

Imagine you had a grayscale button and your developers built an admin tool with a slider that allowed you to change the color from black to any shade of gray to white. You could test conversion for every value of that slider and plot the result on a graph with x representing the grayscale value and y representing the resulting conversion. You might find one peak but you are just as likely to find two distinct peaks, or three. If you made it a color button and make the sliders R, G and B values, you could plot the result on a 3 dimensional graph and your peaks would look more like dense areas in a volume. Now suppose you had an N dimensional graph that represented every possible change you could make to your product. There would be an infinite number of changes and also an infinite number of peaks, the local maximums. There may be one absolute maximum, one perfect product, but unless you tried and tested every combination of every change, there would be no way to know if you are optimizing for a local maximum or the absolute maximum. And since that’s an impossible task, finding ‘the best’ conversion is an unrealistic goal. But that doesn’t mean we can’t find a ‘pretty good’ conversion.

 

Let’s go back to two dimensions simplicity and picture a graph with three local maximum, left, middle, and right. It just so happens that the rightmost is the absolute maximum but suppose we started at 0 (black) and started our A/B test for the next lightest shade of gray. It would show an increase in conversion, great! We’re on a good path let’s continue with the next lightest shade… We keep doing this until we hit the local maximum and then for the next lightest shade we see a conversion drop and we back off. We declare that we have the best grayscale  buttons in the industry. A competitor comes along and does the same experiment but this time they start from 255 (white) and works their way backwards. They find a completely different winning color and their color out-performs our color! Even though our product manager did everything she was suppose to do, we still ended up losing to our competitor. In the real world, since the choices are not black and white we may not see what really happened and we might call our competitors lucky, but the Theory of Local Maximums says that the only bit of luck they had was to pick a starting point on a curve that had a higher local maximum than ours. If they had picked a starting point that had a lower local maximum, they might have been complaining that we had an unfair advantage as the incumbent.

 

What is the lesson? What we can say is that probably every successful company is operating at or near a local maximum. And not just any local maximum but probably a higher than average local maximum. But we also know that with an infinite number of local maximums out there, so there is bound to be a higher one. But how do we find it?

 

We must let our experience, intuition, and taste guide us to the higher local maximum. And we must not be discouraged if our starting point seems like a step down at first because we know how to iterate up to the peak for a potentially larger gain. Iterating is essential for getting to the peak of our local maximum but we should try to get there fast but there is a more important lesson to be had. If we get to the peak and we are still not good enough, we need to stop iterating immediately and try something different, a new starting point. The starting point has to be different enough that is is sure not to be on the same curve because if it was, we would iterate right back to where we are. The notion of ‘failing fast’ can be encapsulated in this exercise but failing fast implies that you pick a new starting point that is nowhere near your current one i.e. fire all you employees, return your venture funding, and start over with a brand new product idea. But while this is a way to go, it’s not the only way to go. Picking a starting point closer by may mean that you may be able to keep your team and use your experience for the next iterative cycle instead of throwing it all away.

 

If you do find a good local maximum, realize that it’s probably only a matter of time before somebody finds a higher one. The only way to protect against this to make sure you are the one who finds it. And you find it by having your own competing product. It makes perfect sense to try to build two or more teams that compete in the same space to find the best result. It’s like A/B testing on a macro scale. It’s rarely done for many reasons, lack of resources, culture, morale, a CEO who is adamant about their own unique genius, etc. But a mechanism for a company to find a better local maximum is really the only path that does not guarantee failure in the long term.

 

The Theory of Local Maximums applies well to the use of analytics in product development but it can be applied in a broad number of areas. Take advice, for example, both business and personal. Most advice comes from others in your close circle, others who are probably on the same local maximum as you are. Advice is best taken to incrementally improve in the same way that A/B testing is used to improve a product. But always be open to a radical change if you hit a wall.


The power of embracing the Theory of Local Maximums is in giving yourself a reason to make radical changes when necessary and the wisdom to be open to new approaches when you seem stuck. It gives you the context you need to out-maneuver your competition and the courage to follow your own path.

Tech Disruptions

As technologists we are in the business of innovation but no innovation comes without disrupting what was there before. Disruption is exciting, disruption creates opportunity, disruption creates wealth, and odds are that you are working in technology because you are attracted to disruption. But disruption comes at a cost, namely, at some point the disruptors become the disrupted. Often we talk about disruptions at a business level but I’m going to talk how disruptions in tech can affect engineers and some strategies for avoiding the types of disruptions that might leave you out of a job.

 

You may know that I currently work as a mobile engineer but you may not know why. It’s not by chance that I’m working in an area of technology that is currently disrupting a lot of web-based companies including our own. I was worked as a Flash engineer when the iPhone was introduced in 2007. I watched as the success of that one product almost single handedly disrupted many of my colleagues out of jobs. Looking back on it, the decline of Flash was inevitable but at the time I was angry for what seemed to me like a unfair assault against my livelihood.

 

But this was not the first time I had been disrupted out of a job. Before I worked in software I worked as a photojournalist for a newspaper, and everybody is aware how much that industry has been disrupted by the internet. I’ve been disrupted many times and if you are working in tech you will be too. So I’m sharing what I’ve learned in the hope that your next disruption will be a little less stressful and I’ve broken it down into four steps.

 

Step 1: Detect Early

The good news is that if you can spot a disruption early, you should have no problem figuring out what to do about it. The bad news is that you are really bad at seeing disruptions coming. It’s not your fault, our caveman brains are built to recognize patterns and it is telling you that the future will look remarkably similar to the present. It is lying to you. Your disruption will most likely come from somewhere you didn’t expect. The best thing you can do to spot a disruption is to go looking for it. Disruption is almost always dismissed early on because the disruptors usually are going to challenge your core assumptions. When your disruption comes, you are probably going to hate it. So when you find yourself being turned off by a technology or don’t understand why people seem to like it, it’s time to take another look.

 

Step 2: Experiment

We all know that it’s important to keep learning new technology but it’s even more important than you think. And don’t just keep up with technologies you like, your disruption is going to catch you off guard because it appeals to people unlike you – people who aren’t as invested in the current technology as you are. It is important to experiment with technologies that you might not choose for yourself. Personally, I think Snapchat’s success is going to be very short term and the whole premise is a little dumb. But I also know that I could be dead wrong so you better believe that I have it installed it on my phone.

 

Step 3: Don’t Panic

You see an industry change coming. You are in the midst of a disruption. You may have seen it coming in which case you are probably feeling slightly unsettled, but confident you’ll be ok. But if this one caught you by surprise, you can still pull through. The first thing you have to do is get onboard with the changes that are taking place in your industry. You may have been a critic in the past but it’s time to admit you were wrong and don’t let ego get in your way. You don’t have to like the disruption but you at least have to understand why it’s taking place, and why many people think it’s better for them than what they’ve been used to. This is really the hardest part and the sooner you make peace with your disruption, the better.

 

Once you decide to embrace change. Your first task is to train up and start getting real experience with the new technology. If you were experimenting all along, you might already have some solid experience. If not, you have some catch up to do. Depending on how much runway you have with your current position it may be necessary to make some personal sacrifices. You might be willing to take a pay cut to take a junior role in this new technology, or put in some extra hours, whatever it takes. If you are focused, you will learn quickly and be back on top in no time. You may be asked to come back to the old technology temporarily to help with the transition or do a little bit of maintenance, you should decline. This is a time where you need to invest in yourself. Any favors you do are going to come at the cost of your personal development and that cost is too high right now.

 

Step 4: Breathe… And Go To Step 1

Congratulations. The worst is behind you. You were faced with a career-changing technology disruption and you made it through. Your reward is some exciting new challenges and a lot of bragging rights. You are now much wiser and have some stories for the new crop of interns. In all likelihood you bought yourself a little time where you don’t have to worry about you career. But don’t get too comfortable, the next disruption might be just around the corner.

 

I’ve outlined steps to detect a major technology disruption that affects your career. These steps also keep you in touch with the entire landscape of technology and ultimately make you a better engineer.