What's New

My Spreadsheet Cannot Fail, It Can Only BE Failed

One of Resolution’s biggest marketing failures has been Reddit. When I was first preparing for the initial Kickstarter, and then general availability last year, I dove in and tried to do exactly what you’re supposed to do. Listen, be patient, don’t make your stupid product the answer to every question, provide value, all of it. We literally built the shared model functionality of Resolution so that we could help people with specific answers without making them sign up for anything.

Well, I suck at Reddit. I got banned from r/Startups, first for violating the promotion rule and then perma-banned for arguing about the rule. Reddit… it’s just like baseball! r/SaaS was full of grifters, r/Spreadsheets was full of people who write VB Scripts, etc., etc., and so forth. On top of it, then Reddit went through the whole crazy API/moderator revolt thing and just generally started feeling a lot more like the Twitter/X dumpster fire, and I just got tired of basically annoying everyone.

Still, I did have some mildly interesting conversations, and I did learn a fair amount about some different potential user mindsets. Surprisingly, this happened outside of my areas of expertise in places like r/Accounting and r/Consulting, in conversations like this one.

The poor original poster hangs in there and engages with a bunch of pushback, including my favorite kind, that it’s his/her fault.

Nobody is wrong here, unfortunately. But as I’ve discussed many times, spreadsheets fundamentally give you enough rope to hang yourself. That’s how they work! Sure, you can password protect things and prevent changes. But then… it’s not really a spreadsheet anymore, is it?

There’s a sort of underlying sadness in the thread, where it seems like the Excel experts know people aren’t really getting value from the hard work they do, or the thoughtful modeling decisions they make, because the people don’t get it, and frankly don’t want to learn how to get it. Not on those terms, anyways.

And that’s what gets me. All these smart people know this will never work. They’ve spent their careers dealing with that fact, and the consequences of it being the case. But still… no, those people should do better. The near-realization of the problem is almost an exact 1:1 of the famous Principle Skinner meme.

This veers outside of the core mission & purpose of Resolution, but… it really is crazy how immutable and permanent the Microsoft Office-style framing of work is in professional settings. Culturally, math is Excel — the person who understands and builds spreadsheets better than someone else is seen as the person who understands math better. Someone who is good using PowerPoint is someone who understands good presentations.

This is nuts! But I get it; we develop competencies in tools in order to solve problems, and as we get good at it, and we can solve more and more complex problems with our preferred tool, it seems crazier and crazier that other people are so bad doing it themselves. But that doesn’t mean those people are stupid, or even that they are wrong for seeing it as not worth the effort to master something that is potentially incredibly broad and complicated.

That’s not a spreadsheet problem. And it’s not even a spreadsheet builder/creator problem — it’s that we are trying to solve a surprisingly common scenario with the wrong tool for that specific job. Obviously, I have my answer, but we’re never going to get there if we don’t push the envelope more on how this stuff works, and who it’s for.

Say Hello to the Microsoft Excel Solver

No, “Iterative Calculations” is not the name of my new band

Product Marketing 101 (a class I am imagining, but definitely did not actually take) says “don’t sell the feature, sell the value”. Here at Resolution, we’ve taken this to heart, drowning you with examples, use cases, and solutions to an almost comically large collection of real-life problems.

However, people still often ask me what Resolution does. This is not a question that’s easy to answer with “value” unless you are really annoying and sales-y, and kind of dodge the specifics and re-direct towards some slimy discovery question like “wHaT aRe YoUr oRgAnIzAtIoNaL gOaLs?” So I won’t answer it that way. I’ll actually answer it!

Resolution is in most ways, a pretty limited version of a spreadsheet that does one completely insane thing spreadsheets cannot do — it allows you to treat any “cell” (their language, not mine) as a specific, user-set value and a formula-calculated value at the same time, all the time.

This isn’t the only thing that’s different about Resolution (it doesn’t use actual formulas at all, for instance, it automatically uses Units for things, etc.), but it’s definitely the thing that, once you get it, makes you realize that there are entirely types of work and problem solving you can do with it that you will literally never be able to do with Excel or Sheets or the like despite those applications having been around for decades and having seemingly infinite capabilities.

When I first started trying to do these things in my spreadsheets, to a person, basically every intermediate-type Excel person told me the thing I wanted to do was impossible, and that I just needed to bite the bullet and make a second spreadsheet.

(Side note: In fact, every intermediate Excel user always advised me to use a pivot table, and would excitedly offer to show me how to make one. It didn’t matter if a pivot table would solve my problem or not, or if my problem even had anything to do with what a pivot table does. Find someone who loves you as much as intermediate Excel users love pivot tables.)

Before really diving into building Resolution, I looked into it things a bit further. As it turns out, the answer is a little more complicated. It’s still basically “no, go make a second spreadsheet”, but in some ways, not for lack of trying. Believe it or not, spreadsheets really have tried to solve this problem.

… sort of.

Iterative Calculations and the Bizarre Power of Brute Force

One thing I’ve often mentioned about spreadsheets is that they haven’t really changed, fundamentally, in my lifetime, even though they’ve become relevant to more and more people in more and more roles. Things like Solver and Goal Seek in Excel (and their dopplegangers in the Google Sheets extension libraries that work in almost the exact same way) are great examples of this. These add-ons are fascinating to me because, rather than restructure how a spreadsheet thinks about data and relationships to allow it to answer certain kinds of questions, they basically just use a spreadsheet the way a person does. They literally test out different values — using the existing spreadsheet — and compare the results until they land on what they think is the best answer, which they then autopopulate for you. The only real thing they do is keep the results of a WHOLE bunch of scenarios, and then compare them for you.

This is… fine? You can answer a lot of questions with brute force like this, especially if you have a program to do it for you. But it’s not really a “feature” of Excel or Sheets, as much as an especially complex little macro that can use Excel or Sheets for you in a specific (read: insane) way. Solver is a more complex version of the same thing; you can allow auto-Excel here to test multiple variables in its hundreds, thousands, or millions of calculations, and it’ll give you the best solution it can find, using a method you prefer. You’ll even notice some Resolution-y elements in here, like being able to solve with certain values having a minimum or maximum to them.

From a pure problem solving perspective, I think this is actually pretty cool. It’s probably very helpful in some very specific power user scenarios, and it definitely fits into Excel-culture of “wait, no, technically we can do what we want if we just do something that seems insane but is not actually impossible”.

But there are a couple of enormous reasons why I’d never, in a million years, use this instead of Resolution in my everyday workflows.

1) It’s Slow

Spreadsheets aren’t built for this kind of brute force, and it shows. Even a basic “how do I get A5 to equal 10 by changing B5” goal seek function can get you a status bar and a spinning ball cursor. I don’t want to know how long it takes to handle multiple variables with cascading consequences. Part of the problem is that Goal Seek and Solver are both looking for specific, “correct” answers for you, and generating that through brute force just requires a ton of individual cell calculations. It’s fine if you are getting the ultimate answer to the question “what is the meaning of life” (p.s., it’s 42) with a single, sluggish Goal Seek calculation. But this by no means puts formula-derived cells on equal footing with manually entered value cells. You’ll know when you are using this process, because it’s really slow and…

2) It’s Annoying

“Technically, you actually can…” is always the beginning of a terrible, useless answer, and for 99% of my scenarios, that’s exactly what Solver and Goal Seek are. If you want to poke at a bunch of values and see an entire system flex and change when you do it, this is not what you want. If you want outputs and inputs to work the same way so you can define an input or work backwards from a desired output, this is absolutely not what you want. This is a cool workaround to “is it possible to…”, not a solution to the problems that come from it not being how spreadsheets are designed to work. You have to make a very deliberate choice to derive a value this way; your spreadsheet is not going to just do it because it makes sense in the context you’re working in.

3) It’s Basically a Hack

Hacks are cool. Hacks often come from clever people. Hacks make the world go ’round! But hacks are also exhausting, and cause chaos and unpredictability, and that’s exactly how Goal Seek and Solver work. These things aren’t even on by default! In Sheets, you have to find them in the Extensions store (Goal Seek is from Google, Solver is from some company) and turn them on, and then they run as little sidebar apps. The Excel scenario is even weirder; Solver is built into Excel but it’s not on by default either, and you have to go through this byzantine set of preferences to even make it available. Why? I have no idea, but maybe it’s because the UI that appears looks like this:

Look, we have many UI/UX things to improve in Resolution, no doubt. But this isn’t even an attempt to make this make sense. This is a Visual Basic script built for people who enjoy building Visual Basic scripts. And keep in mind, this all sits on top of Excel. It’s just basically using Excel for you, albeit in a pretty clever (and very persistent) manner. But that means your spreadsheet itself has no idea what you actually want here — it never does — and as a result some things are going to work in very weird ways. Undo, for instance, got all kinds of messed up in Google Sheets when I used Goal Seek. I haven’t played enough with the Excel implementation so maybe it’s smoother, but generally companies don’t build amazing intuitive data exploration features, leave them off by default, and not tell you about them unless they are a little rough around the edges.

4) It’s Opaque

This is both the most trivial and forgivable sin of iterative calculations, and somehow the one that bothers me the most and seems the most at odds with the ethos of Resolution. But the biggest challenge I always had with spreadsheets wasn’t necessarily getting specific answers to things. That was annoying, but just like Goal Seek and Solver show, it was also literally possible as long as you changed a value twenty billion times, or made a second spreadsheet, etc. and so forth. Iterative calculations give you value by somewhat clumsily automating that annoying work, and doing it at massive, beyond-human scale. So yeah, answers can be derived if you have the stomach for it.

The problem I really had with spreadsheets is that they were terrible at conveying any actual grasp of the numbers and situation at hand. I could give you my Marketing Leads spreadsheet, and you’d learn some stuff, but you’d also waste a lot of time trying to figure out where lots of numbers come from, whether certain things are calculated correctly, and whether some factors mattered a lot or a little. Or, more likely, you’d give up and either trust me or not trust me based on whether you thought I was intelligent, or my suit fit properly (it never did). For real understanding of the universe my spreadsheet was representing, you’d need to try things and work backwards and see all of the pushing and pulling I mentioned earlier.

You simply do not get that experience — at all — with any of these features, or with iterative calculation tech in general.

So… what?

After really digging into these iterative calculation features for a couple days, I have a few conclusions.

  • The mechanic that Resolution doesn’t just do, but is actually built around — enough people want to do it that BIG SPREADSHEET has made an attempt
  • They are doing it for a very different reason; it’s to spit out a correct answer, not to explore relationships between things
  • It’s a pretty lame attempt, honestly, and feels like a macro that might break at any moment (and in Google’s case, apparently does, according to the reviews)
  • There is just zero appetite from BIG SPREADSHEET to fundamentally expand how spreadsheets work or what they can handle… they aren’t coming for this corner anytime soon

All of that makes sense. Until I can get people to realize how awesome it is to learn through spreadsheet-like numerical relationships without the brittleness and technicality of actual spreadsheets, and do that in large numbers, why would they waste their time trying to solve this?

Onward we march, then, towards a glorious new day of easily manipulatable mathematical logic models.

Very Quickly Sketching Out User Acquisition Costs

I’ve spent a lot of time trying to get Resolution to represent the most complicated scenarios it possibly can. Compared to the average user, I’m (unsurprisingly) pretty good at doing this, even if some of the results are kind of ridiculous.

However, in doing so, I’ve learned that some of the biggest “aha!” moments in the application aren’t with complex models. They are with really, really simple ones, like the one I built today.

Considering User Types

Here’s the situation. I’m helping someone figure out yet another go-to-market plan (hopefully better than Resolution’s), and one of the things we’re budgeting for (unlike Resolution) is some money to acquire users. At first, I just threw all these different people in a big “user” bucket, and assigned a single set of costs and benefits to that big bucket.

However, this turns out to be more than a bit too simple. We have powerful, important, advocate-like users with much higher acquisition costs and network effects than normal users, or especially casual users (like students). I really need to consider what the user breakdown by type is going to be — not just to anticipate my costs, but to understand my downstream network effects. Unfortunately, I’m working in a spreadsheet, so there are a lot of annoying things about trying to take this stuff into consideration.

Brittle Formulas

Again, I’m in a spreadsheet. For every additional factor I want to consider, I either need to manually code it into my formulas (and have to update it umpteen times if it changes), or find a place I can stash it, and then reference that value. Either way, if I suddenly change the way I’m doing this (by, say, referencing one of several potential values in each place instead of using the same one all the time), I have a lot of refactoring to do, which usually leads to me making mistakes.

Unclear Inputs

The driver of my user acquisition numbers is my user acquisition budget. But of course, we’re not totally set on what that should be yet. In fact, as is often the case, the answer is really “as low as possible”, but we don’t know what that is yet. So I can’t just say “the budget is $20k”, nor can I say “the budget is whatever it takes to get 100 power users and 400 casuals”. I have to give and take on both sides of that to come up with something that makes sense.

Rates Up For Grabs

This is one of those classic Resolution-y scenarios where no answer is ridiculous until you see it, at which point it’s obviously ridiculous and you want to make sure you never see it again. What’s a reasonable acquisition cost for a power user? A hundred dollars? “That’s nothing!” A thousand dollars? “THAT’S INSANE!!!” Okay, okay. I need to be able to take these different costs on and off the table, and probably put some floors and ceilings on them.

What a Flex

Basically, I have what seems like a really simple math problem, except I want a whole bunch of different things to be able to flex — and of course, I want to be able to go “backwards”, where I can use money to determine user outputs, OR I can request certain amounts of certain types of users at certain costs and see that affect the required “input”.

Aaaaaand…. here it is.

To be honest, this was even simpler when I started. I simply had my pile of money, my three user groups, and my three costs. All I really wanted to do was figure out what reasonable acquisition costs would be for the goals we have, but once I had that established I immediately wanted to plug in some of the downstream effects, so I just… added them.

Where the model really shines, though, is when the questions come (and they always do):

  • Can you make this work with 15k? How does that affect the total user base?
  • What if we spent a lot more money on influencers and a lot less on the rank and file users?
  • What if referrals are actually stronger from senior staff than from influencers?
  • What’s the cheapest way to get me to 500 users?
  • Follow-up: “Okay, not that way, what else can you do?”

I built this model in 5 minutes. It’s not complicated. But I poked at it and tried different scenarios for the next 20, and I’ve come back to it several times since. Scenarios! Flexibility! It’s all there, baby!

Managing Hours & Possibilities

As mentioned earlier this summer, our CTO Brian Cunningham has decided to reassign all non-essential personnel towards “short-term revenue generation”, which means I have to go back to work to fund this incredible enterprise.

Since I need flexibility to also run this high-tech side-hustle and occasionally hug my children, I’m going the contracting/consulting route.

Building a Proposal

I’ve done consulting before, but I’m not much of a business development person, and I have a hard time turning what I can do for people into blocks of hours and amounts of money. For one project, I was asked if I could deliver a whole host of different things, when in reality I have (at best) a couple hours each week available to dedicate.

What should I work on? How much work should I put into each thing? How long would the chosen pile of things take if I worked on this for 6 hours a week, or 8?

Hilariously, I started building a spreadsheet to figure this out, but I quickly ran into the quintessential Resolution-brain problem — I wanted to be able to change both sides of my model, so I could see what how many hours (and thus, weeks) I’d need with different project expectations, OR, crucially, what would happen to my project outputs if I had more or less hours to work with. No spreadsheet could support both of those things in a single model, because that’s not how spreadsheets work.

The Resolution Alternative

Once I realized that I was really just allocating hours and turning them into different things (task-allocated hours, or maybe project outputs on one end, and weeks on the other), using Resolution made way more sense. I used the Units of Hours & Weeks for most of the model, and a few project outputs like Assets & Orgs, so I could play with different rates. Those rates measure things like “how many hours to make a one-pager”, or “how long does it take to fully assess one competitor”. When I couldn’t specify project outputs, I just… didn’t do it. Instead, I let the hours speak for themselves. Setting up a CRM will take a while, but it’s not based on number of contacts or whatever.

I found this whole exercise to be incredibly helpful. In classic Resolution fashion, I felt much better confidently stating that this work would take months, because I had the receipts, and when you look at the individual pieces, they make sense.

Here’s the model. Seriously, check it out! You could do this with just about any form of time management.

Back to work. Resolution will be humming along like this for the next few months, so keep on building and drop me/us a line if you have any questions or issues. But we won’t be putting out new features for a bit while we save up our developmental ammo. Trust me, no one is more eager to take this thing to the next level — not just because I invented it, but because I use it for stuff like this!

5 Resolution Things You Should Do Right Now

(Post title inspired by 2013-style listicle clickbait. You’re welcome.)

Resolution is still a very new piece of software, but it’s still the case that I’ve been working on it and thinking about it for a while. There’s a lot of stuff I want to add (and some things I want to change completely!), and if I’m being honest, I spend most of my time thinking about that.

One of the problems with that, though, is that I often take for granted what exists in Resolution right now, until someone excitedly explains it to me and I sort of blankly say “yeah, I know”. (Again, I’m working on this.)

Anyways, here are five of those really cool, simple things that you should go try out right now. No forward-looking or “coming soon” features required.


Sneak Peak: Resolution Refactor

We like to stay ahead of the curve here at Resolution. So when I heard people were writing actual web applications with large language model chatbots, I spent $20 on the GPT4 version of OpenAI’s ChatGPT and got right to work.

Here’s a little window into today’s working session:

Is this easier than working with skilled, experienced professionals? In a way… absolutely! This thing does exactly what I tell it, works incredibly fast, and is happy to allow me to change my mind whenever I want, as many times as I want. I feel absolutely no guilt at all doing things like pivoting completely and dumping an entire code base that would cause normal, human software developers to push me into traffic or at least passive-aggressively respond to my meeting invites with “MAYBE”. (BTW, I invented that move, so… respect.)

However, there are downsides. For instance… well, here’s where we stand as of today, product wise.

Pretty bad! I think the math works, but it’s hard to tell because this entire thing is totally illegible, despite the cheery confirmation of my robot engineering department that the problem had been addressed. (UPDATE: The math definitely does not work, at all.) It’s hard to say that I can’t make this any better, because I probably can! I’ll keep yelling at this thing every couple of hours and it will keep making changes without even a scintilla of human empathy or understanding and send them to me in chunks of truncated Python that I copy and paste in a text editor with a hopeful, utterly clueless look on my face.

The future is here! Somehow, though, I don’t think the AI Edition of Resolution is going to surpass the slow-cooked, human-architected production version anytime soon. Sorry, Brian.