<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Greater Dan Or Equal To]]></title><description><![CDATA[i got some opinions, don't i]]></description><link>https://greaterdanorequalto.com/</link><image><url>https://greaterdanorequalto.com/favicon.png</url><title>Greater Dan Or Equal To</title><link>https://greaterdanorequalto.com/</link></image><generator>Ghost 5.88</generator><lastBuildDate>Thu, 09 Apr 2026 06:58:55 GMT</lastBuildDate><atom:link href="https://greaterdanorequalto.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[AI code generation as an agent of tech debt creation]]></title><description><![CDATA[I've disabled all LLM-based AI Assistants/Copilots/whatever-you-call-'ems in my IDE.]]></description><link>https://greaterdanorequalto.com/ai-code-generation-as-an-agent-of-tech-debt-creation/</link><guid isPermaLink="false">66ef1bc68c7a670001e07919</guid><category><![CDATA[Potentially Bad Advice]]></category><category><![CDATA[Programming]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Sat, 21 Sep 2024 20:01:24 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2024/09/old-fashioned.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2024/09/old-fashioned.jpg" alt="AI code generation as an agent of tech debt creation"><p>I&apos;ve disabled all LLM-based AI Assistants/Copilots/whatever-you-call-&apos;ems in my IDE.</p><p>Take a moment to let the shock, horror, and betrayal to pass through you (or, potentially, the giddy &quot;OMG I&apos;m not alone!&quot; squeal burbling up from deep inside), because I&apos;d like to expound for a bit about <em>why</em> I&apos;ve done this, and I know the title is a bit of a giveaway, but no, it&apos;s not because I&apos;m some cranky old man who can&apos;t stand that new-fangled ding-dang technology. Well, I mean I <em>am</em> old and cranky, but what I mean is I work at a company that heavily uses AI to augment real, serious professionals&apos; capabilities. I&apos;m not an anti-AI absolutist or anything.</p><p>I just think that it&apos;s a disaster waiting to happen for the software development industry, is all.</p><p>Here&apos;s my core thesis:</p><p>LLMs will never be as capable as we have been told they will be. All of ginned-up demos that we&apos;ve been shown around LLM-based tools being given a three-sentence description of a feature and building it and writing the tests and reviewing itself and deploying it, all automatically? They don&apos;t work now, and they never will. LLMs can never &quot;know&quot; or &quot;understand&quot; anything. They <em>seem to</em> have interesting emergent properties, but every new announcement about those capabilities quickly falls to pieces in the Hacker News comments, as curious devs give it a try and find that it actually doesn&apos;t work quite that well, at least not under all circumstances, and critically, not to achieve the overblown promises we&apos;re being sold around feature-scale AI code generation. Hell, this <em>just happened again</em> with the release of OpenAI&apos;s <code>o1</code> series of models, models that we are told &quot;think&quot; but in actuality do nothing of the sort. They mostly just go &quot;hmm&quot; and &quot;ah!&quot; a lot, and then over-charge you via a new secret token mechanism to return dangerously close but not-quite-right code <em>just</em> frequently enough to cause serious problems down the line.</p><p>It would appear that we&apos;re hitting the upper limits of practical model sizes, too. Larger models have been the source of new and interesting improvements of these models, the &quot;secret sauce&quot; of the AI boom, as it were. And larger models <em>can</em> be trained, but the cost to train them (and retrain them when necessary), plus the cost of then running them looks to be prohibitive. We can see this in the latest ChatGPT models, the <code>4o</code> series, which are smaller and less expensive than the original ChatGPT4. Even <code>o1</code> doesn&apos;t appear to be a significantly larger model, it&apos;s likely just a pretty solid implementation of &quot;chain of thought&quot; prompting with existing models. ChatGPT5 it ain&apos;t, but maybe, when and if we get ChatGPT5, it&apos;ll will be another significant jump, like 2 to 3 was, or at least 3 to 4. But the basic architecture will almost certainly still be the same, the LLM architecture. We were in an &quot;AI winter&quot; before someone discovered that <strong>Big LLM Make AI Go Brr</strong>, and we&apos;ll be right back in another one once we hit the practical maximum sizes of LLMs, <em>if we haven&apos;t already.</em></p><p>Again, I&apos;m not saying that LLMs are fake and that there&apos;s a man behind the curtain (<a href="https://www.theinformation.com/articles/shaky-tech-and-cash-burning-giveaways-ai-shopping-startup-shows-excesses-of-funding-boom">except when there absolutely is</a>, although that&apos;s not the topic of this essay), or that there&apos;s no use for LLMs. There are a variety of uses that make very reasonable sense, even in the field of coding! But using them to generate code is Not It. Absolutely no large-scale feature-generation tool has survived contact with the general public just trying to use the service as described, and I think even the small-scale code generation tools are dangerous in ways we&apos;re not really talking about yet. These are not tools that reward time invested into learning them, because they do not turn out the same quality of work. Hell, its arguable that they don&apos;t even turn out work of <em>acceptable</em> quality (and that is the side I would, in fact, argue). LLM-generated code of any real-world size and complexity -- you know, not just used to create toy examples to demo the product to credulous CTOs and slavering CFOs -- this code is almost invariably of just <em>miserable</em> quality, lacking any refinement or robustness that comes from a proper understanding of the problem area and the surrounding system, for exactly one critical reason: <em>LLMs do not understand.</em></p><p>There are people who will debate me on this, and they tend to do so with arguments that point to what seem like surprising emergent properties, but these people are like audience members in a magician&apos;s act who point at the wriggling feet of the woman who was sawn in half and deny what their logical mind knows to be true -- this is all a trick. The fundamental method that is used to create an LLM -- that is, predictive text based on input weights -- <a href="https://arxiv.org/abs/2409.05746">this is not something that can generate an understanding, it is only something that can <em>seem</em> to understand, in certain limited circumstances, for a little while</a>. Every new generation of LLM release has gone through the same cycle of marks crying &quot;Look, finally it understands!&quot; only for actual users to <em>immediately</em> run up against the limits of this supposed &quot;understanding.&quot; Definitely, these new models are more impressive, and there are more and more cases where their careful, considered use is looking more reasonable, but none have (or ever will) spontaneously developed the ability to &quot;understand&quot;, much like how an apple has never spontaneously developed the ability to harmonize, despite them being able to make your tastebuds sing.</p><p>But it&apos;s worse than that.</p><p>It&apos;s not just that people are putting time and effort into learning a tool that won&apos;t pay off in the manner the hype-cycle has promised, this is a tool <em>unlike other tools that have come before and promised improved productivity,</em> because in actuality, it makes you <em>less</em> effective over time. You may get better at &quot;prompt engineering&quot; (UGH), but you are sacrificing your knowledge and understanding of the system and tooling that you&apos;re working with, like trading a worthwhile, solid cow for magic goddamn beans, except that outside of fairy tales, <em>beans are only ever beans.</em></p><p>Think about a custom furniture maker who takes down the project details, then takes that information to Ikea, asks the salesperson for something similar, bangs it together in an afternoon, and delivers that instead. Some people are going to be thrilled that they have their furniture that very same day, sure. They may not even notice that the furniture is painted particle board and not a decent slab of hardwood, because they didn&apos;t think to specify that in the details. But they for sure will notice that the third or fourth time they have to move it, that it starts coming apart and needs more and more-intense repairs to keep it in one piece. And when this furniture maker <em>does</em> finally get a project that specifies aged mahogany, mitred dovetail joints, and hand-carved engravings, they just <em>do not have the skills</em> to build it. This is the future we&apos;re headed towards.</p><p>There&apos;s two important ways to evaluate these reduced capacities: in the near term, i.e. what it means to projects we are working on currently, and in the long term, i.e. what this means to the greater industry.</p><p>The near term is bad enough. The obvious and immediate drawback is to code quality, as AI-generated slop starts sneaking into codebases. Tight timelines and aggressive deadlines (which are more and more frequent <em>everywhere,</em> have you noticed?) means that we&apos;ve had to rely more and more on trust that our co-workers are doing the good job they say they are. I love when I get some time to do some truly focused review on submitted PRs, but all too frequently, it&apos;s hard to justify more than a merely &quot;decent&quot; evaluation, plus maybe a closer look at a few key areas before you have to stamp it with the ol&apos; <code>LGTM</code> and get back to trying to hit the deadlines on your own tasks. (This is a problem in its own right, but again, not the subject of this essay.) This process of leaning on trust makes it <em>incredibly</em> easy for bad LLM code to slip in, because the number one thing that LLMs are good at is generating text that <em>looks</em> like it belongs. Again, they don&apos;t <em>understand,</em> so they can&apos;t be relied on to write <em>correct</em> code, but they <em>can</em> be relied on to write code that <em>looks</em> correct, so these time-restricted, trust-reliant, scan-based reviews are <em>tremendously</em> vulnerable.  And even when you <em>do</em> have time to do a more-thorough review, you&apos;re not perfect and will never be.  In security, this is why you rely on &quot;defence in depth,&quot; which in coding <em>really ought to start with</em> &quot;the coder submitting the PR believes they thoroughly understand and stand behind the code they are submitting!&quot;</p><p>I&apos;m struggling at this point not to write &quot;but it&apos;s worse than that&quot; over and over and over again, but, well, it&apos;s worse than that. Not only is this extra source of bad code increasingly finding its way into our systems, but the developers who should be writing and reviewing and revising this code are just not learning the skills required to do so. Moreover, they&apos;re not learning about the intricacies and pain points of the system. They just won&apos;t know about the parts of the system that are hard to reason about, that are more likely to introduce bugs when worked on, that can be expanded on safely and quickly or that require a refactor before any serious work can be done with it -- they just won&apos;t get the experience to develop a low-level understanding of the system that helps them reliably and quickly continue to build with it. They&apos;re farming that work out to co-workers who <em>do</em> have that understanding, who leave ever-more-frustrated comments on reviews asking them to <em>please</em> consider the broader context of the work they&apos;re doing, and then they pipe that into their prompt, asking their LLM to &quot;Please revise this PR taking Maria&apos;s comments into account then commit then push.&quot; And poor Maria has to repeat this cycle of indirectly prompting an LLM until between the three of them, they get lucky and the problem is finally solved, all while trying to get her own work done as well.</p><p>Beyond just the systems being worked on at any one company, though, there&apos;s the effects on the wider industry - junior developers who become dependant on LLMs can likely seem like incredibly fast learners and can likely present as intermediate developers instead.  This doesn&apos;t truly reflect their skills - they may <em>seem</em> faster than junior/intermediates who are learning for and by themselves, but beyond that, I highly doubt an LLM-dependant developer can even <em>exist</em> at the senior level, and especially not any higher.</p><p>Note: I&apos;m not saying you can&apos;t <em>use</em> LLMs and be considered a senior developer, I&apos;m talking about <em>dependance.</em> i.e. Do you yourself know how to program, do you have an intuitive grasp of how various common algorithms and data structures work, can you personally make logical leaps when debugging thorny issues? Or are you relying solely on LLMs for this competency? If the latter, I would absolutely not call you a senior developer, and I wouldn&apos;t let you within rock-throwin&apos; distance of a keyboard that could even conceivably commit to any repositories I cared about.</p><p>Obviously there&apos;s a limit to how much of this bathwater I&apos;m going to throw out - there&apos;s a baby in there somewhere! For instance, given how terrible Google&apos;s search has become recently, asking an LLM to provide you with a decent introduction to a hard-to-research topic is not a bad place to start gaining familiarity! (Provided, of course, you fact-check what it tells you.) As developers, we use all kinds of tools and technology to make our life easier and to make writing code less onerous. Intellisense is a godsend for people like myself with memory issues (I can remember the &quot;vibe&quot; of a function, but I hate wasting time remembering if a function is named <code>search_user_text()</code> or <code>search_text_user()</code>, or what the parameter order is, etc.), and while <a href="https://github.com/SnorreSelmer/stationeers_ic10/blob/main/mips-programming-101.md">writing MIPS can be a lot of fun</a>, I wouldn&apos;t want to write assembly code for my day job -- I&apos;m thankful every day for high-level languages.</p><p>But the difference is that those tools tend to work to <em>enhance</em> our understanding of the problem domain, while encapsulating things that are <em>outside</em> of that domain. You don&apos;t need to know Linux C source code like the back of your hand to get your job done (unless your job is working on the Linux kernel, I suppose), but tools that make it easier to represent and understand your business domain <em>are</em> critical to a modern developer. LLMs are the opposite of that - they tend to generate code that looks like their sample data, not necessarily your codebase, and they remove the need for you to understand your tools or domain at all! ...at least for a surface-level approximation of work.</p><p>That famous Steve Jobs saying, &quot;A players hire A players, B players hire C players?&quot; Well, it may have been heartless, but there&apos;s a logic to it. That said, I think it needs updating for the modern era: &quot;A players hire A players, B players hire C players who hire AI chatbots and pretty soon nobody knows how the fuck anything works anymore.&quot;</p><p>Photo by <a href="https://unsplash.com/@arobj?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Adam Jaime</a> on <a href="https://unsplash.com/photos/liquor-pouring-on-clear-shot-glass-dmkmrNptMpw?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p>]]></content:encoded></item><item><title><![CDATA[Maybe don't call someone an asshole?]]></title><description><![CDATA[Arguments that feel good to make generally aren't very persuasive.]]></description><link>https://greaterdanorequalto.com/maybe-dont-call-someone-an-asshole/</link><guid isPermaLink="false">6599ac6e5f82e80001a14672</guid><category><![CDATA[Potentially Bad Advice]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Mon, 06 Nov 2023 07:05:36 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2024/01/sarah-kilian-vf0lyNg41lk-unsplash.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2024/01/sarah-kilian-vf0lyNg41lk-unsplash.jpg" alt="Maybe don&apos;t call someone an asshole?"><p>I was scrolling through my Mastodon feed and saw a catchy and punchy post pop up:</p><figure class="kg-card kg-embed-card"><iframe src="https://cybre.space/@noizpride/106251886348134279/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400" allowfullscreen="allowfullscreen"></iframe><script src="https://cybre.space/embed.js" async="async"></script></figure><p>Fuck yeah, right? I&apos;m really sick of watching homeless encampments get rumbled, the people living in those camps losing their shelters, their belongings, their tenuous grip on survival, and told to move on <em>without being given any clue where to move on to.</em>  So they move on to the next place they can set up a camp for a while, and the whole cycle repeats itself.</p><p>And these camps aren&apos;t broken up as a matter of policy, they&apos;re broken up because locals complain. &quot;Property values&quot; decrease, people get worried for their safety, for the safety of their stuff, and instead of trying anything to help, tens (in some cases hundreds) of thousands of dollars are spent on police operations to clear them out.</p><p>But posters like this will not fix the problem.  In fact, they&apos;re likely to make it worse.</p><p>I get it.  I feel the frustration too.  I wish I could shame people into giving a shit, or dunk on them <em>so hard</em> that they become a better person, but in practice, that&apos;s not how it works out.  Instead, people tend to get angry, and worse, they tend to get entrenched.  Then, instead of a chance at persuading them, you&apos;ve got a fight on your hands, against someone who is <em>more dedicated</em> to their cause.</p><p>This poster, while well-intentioned, is actually very likely accomplishing the opposite of what it&apos;s setting out to do.  Here, let me give you an example. Let me rewrite that previous paragraph in the tone of the poster:</p><blockquote>Posters like this are fucking garbage. They don&apos;t make their intended audience change their minds, they just make them angry and <strong>less</strong> likely to help.  Sure they make <strong><em>you</em><em> feel good, but  you&apos;re already on your way back from your bougie-ass hipster cafe with a overpriced coffee &#x2013; you&apos;re taken care of!  Shouldn&apos;t the point be to help the fucking homeless, not yourself?</em></strong></blockquote><blockquote>What the fuck is wrong with you?</blockquote><p>See, doesn&apos;t that <em>suck</em> to read, when you&apos;re the target? I don&apos;t want to agree with that guy, regardless of the merits of his points, I want to <em>fight</em> him!</p><p>I like to joke that my <a href="https://en.wikipedia.org/wiki/Alignment_(Dungeons_%26_Dragons)">alignment</a> has progressed over the years from &quot;Lawful Good&quot; to &quot;Awful Good,&quot; because I <em>really</em> love hot takes like the one on the poster, but I&apos;ve also grown to realize that despite how good it feels to indulge in righteous anger, it doesn&apos;t actually <em>do</em> any good for your cause.</p><p>What works better, and what is <em>much, much</em> harder, is to try to step back, find some common ground, and write from that shared perspective.  Nobody&apos;s ever going to think &quot;You know what, maybe I <em>am</em> an asshole!  I guess I&apos;ll change!  Thank you random poster!&quot;  But you might get a few to think &quot;You know what, maybe I, a caring and decent human being, could show that decency in a few ways I hadn&apos;t yet considered!  Thank you, random poster!&quot;</p><p>I&apos;ll leave a rewrite of the poster as an exercise for the reader, but again consider the target audience.  How do they see themselves?  How can you rewrite the issue of tents as something they could align with?  What are they afraid of or mad about? How can you show them addressing that fear or anger as a virtue?</p><p>Maybe just don&apos;t call them an asshole, though.</p><p>Photo by <a href="https://unsplash.com/@rojekilian?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Sarah Kilian</a> on <a href="https://unsplash.com/photos/two-white-birds-vf0lyNg41lk?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p>]]></content:encoded></item><item><title><![CDATA[I've soured on Open Source]]></title><description><![CDATA[Look, I get the noble intentions that originally spawned the movement, but y'all, capitalism is winning, and Open Source isn't changing that fact by an appreciable margin.]]></description><link>https://greaterdanorequalto.com/ive-soured-on-open-source/</link><guid isPermaLink="false">6599ac6e5f82e80001a14671</guid><category><![CDATA[Programming]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Sat, 25 Mar 2023 01:11:19 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2023/03/engin-akyurt-b6CCEsofl90-unsplash-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2023/03/engin-akyurt-b6CCEsofl90-unsplash-1.jpg" alt="I&apos;ve soured on Open Source"><p>Look, I get the noble intentions that originally spawned the movement, but y&apos;all, capitalism is winning, and Open Source isn&apos;t changing that fact by an appreciable margin.  What it <em>is</em> doing, however, is convincing a whole lot of talented people to <em>donate</em> critical hours of their life to working on tools and libraries that profitable corporations are making <em>bank</em> off of.</p><p>There are two miserable fates that await an Open Source developer at either end of the spectrum, one far worse than the other:</p><ol><li>Nobody ever uses your code.  This is kinda depressing, but you move on with life.</li><li><em>Everybody</em> uses your code.  This is amazing!  Until it&apos;s not.  Until people start finding bugs and writing issues and requesting features and submitting PRs and demanding to know why you haven&apos;t released in six months and talking about how this &quot;dead repo&quot; is now a security risk and how the developer is a deadbeat and should be ashamed, and nobody should use this library for a professional product.  Congratulations, you now have A Responsibility.</li></ol><p>This sucks. You&apos;re just trying to write and share some useful code, and if that code becomes <em>too useful,</em> you have somehow fucked up because you now have a second job.  A second job that <em>doesn&apos;t pay,</em> but allows other people to make money from your labour, I should add.</p><p>Donations and sponsorships are an option, but they&apos;re not a great option.  You have to rely on people to donate out of the goodness of their hearts or at least the viability of the marketing message it sends for them to be seen donating to prolific Open Source authors.  And good luck if you&apos;re not prolific.  If you&apos;re just quietly toiling away on a package that sees a few thousand downloads a week, you&apos;re almost definitely moving the needle for someone who&apos;s making money off your work, but you&apos;re unlikely to be visible enough for it to be &quot;sexy enough&quot; to be seen sponsoring you.</p><p>Open core is an option, but only for certain types of Open Source.  A great many libraries are basically <em>just</em> the core, and don&apos;t really have any sort of &quot;high-end business features&quot; that can be spun off into a paid product that would interest businesses.  Also, you are basically now in the business of selling a normal software product with a free loss-leader, which may not really be what attracted you to Open Source in the first place.</p><p>Charging a subscription for managed deployments is also an option, but also, again, only for certain types of Open Source.  If you write a popular library, there&apos;s not much to host.  You have to have a full Open Source product for this to be even something you can consider, and then there&apos;s nothing stopping a huge cloud company from offering their own integrated version of your service.  And for most people it just doesn&apos;t make sense to spin up your flavour of BloopusServer when they can spin one up as an AWS component in their CloudFormation stack.</p><p>I don&apos;t know what the answer is, I just know that I&apos;ve stopped feeling good about people sinking so much of their time, energy, and good vibes into this work, only for their good intentions to be taken advantage of.  As power and money shifts ever more away from the people who work towards the people who own things, it feels weird and wrong to see people give away the fruits of their labour <em>for free</em> to the people who are getting more and more of it, cheaper and cheaper, everyday.</p><p>Photo by <a href="https://unsplash.com/es/@enginakyurt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">engin akyurt</a> on <a href="https://unsplash.com/photos/b6CCEsofl90?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>]]></content:encoded></item><item><title><![CDATA[Don't do your own research, check other people's work.]]></title><description><![CDATA[Like a lot of things, the phrase "do your own research" started off life with good intentions.]]></description><link>https://greaterdanorequalto.com/dont-do-your-own-research-check-other-peoples-work/</link><guid isPermaLink="false">6599ac6e5f82e80001a14670</guid><category><![CDATA[Potentially Bad Advice]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Thu, 02 Feb 2023 07:12:47 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2023/02/janko-ferlic-sfL_QOnmy00-unsplash.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2023/02/janko-ferlic-sfL_QOnmy00-unsplash.jpg" alt="Don&apos;t do your own research, check other people&apos;s work."><p>Like a lot of things, the phrase &quot;do your own research&quot; started off life with good intentions, and then got co-opted by a certain kind of person to enable behaviour antithetical to the original coiner&apos;s intent. &#xA0;Nowadays, if someone says they &quot;did their own research,&quot; you are far less likely to cock your head and listen intently than you are to wince involuntarily, and then seek to exit the conversation at speed.</p><p>Here&apos;s the thing &#x2013; you are <em>stunningly</em> ill-equipped to do your own research. Unless you happen to already be a professional in the field you are researching, you do not have the education, you do not have the resources, and most importantly, you are not aware of the various tripmines and tar pits that exist in that field to trap the unwary, i.e. you. &#xA0;Yes, occasionally an outsider will come in with a fresh pair of eyes and see that which eluded the ossified orbs of the pros, but what happens in the overwhelmingly vast majority of times is the opposite - instead they will end up showing off their whole ass because their ignorance of some foundational shit will cause them to make a rookie mistake that those with experience would not. &#xA0;Then those with experience will swoop in and eviscerate the newbie and feed them to their young. &#xA0;The law of the jungle is harsh but fair.</p><p>When someone presents an interesting topic or viewpoint, your next step shouldn&apos;t be to jump to doing your own research on that topic, it should instead be to <em>check that person&apos;s work.</em> &#xA0;This is a subtle, but important distinction. &#xA0;If someone tells you that they&apos;ve found out that a steady diet of honeycomb wax wards away cancer, you shouldn&apos;t immediately go and search <code>honeycomb wax cure cancer</code>, because they got their theory from <em>somewhere</em> and there&apos;s almost definitely a couple hundred blogs with titles like &quot;medical-info-trust.com&quot; with plausible-sounding AI-generated posts about the topic already. &#xA0;You could easily spend the next four full hours finding article after article linking study after study detailing the benefits of honeycomb wax &#x2013; not only for cancer, but also blood pressure, hair loss, and as a natural pesticide! &#xA0;Is any of it real? &#xA0;Who knows? &#xA0;Not you, certainly. &#xA0;You likely can&apos;t read a study to save your life, or at least not properly evaluate it, not like a trained professional with years of experience. &#xA0;And if you go into this research blithely, you&apos;ll likely find convincing-sounding information everywhere you look.</p><p>So should you instead become a curmudgeon, dismissing all interesting new factoids as flights of fancy and humbuggery? &#xA0;Well, it&apos;s certainly an option, and frankly one that grows more appealing every year, if I&apos;m being honest. &#xA0;But more useful is instead to instead <em>look for dissenting opinions.</em> &#xA0;Instead, search for <code>honeycomb wax cancer hoax</code> or use <a href="https://www.snopes.com/">Snopes</a> to see if anyone&apos;s already disproven it. &#xA0;And <em>then</em> look for arguments against the dissent! &#xA0;Be honest with yourself &#x2013; if you&apos;re not capable of reasonably evaluating the arguments <em>for</em> something, can you expect to be able to reasonably evaluate the arguments <em>against?</em> &#xA0;Try to find people arguing specifically against the dissenting opinions you&apos;ve read, not just new interpretations of the original media. &#xA0;Look up unfamiliar terms or practices they mention. &#xA0;Try to become familiar with the <em>basis</em> of why they&apos;re dissenting, which is usually a lot more accessible than the facts they&apos;re dissenting with. &#xA0;(A highly-useful example is knowledge of correlation vs causation, which is bound to trip you up <em>everywhere</em> if you don&apos;t know about it, but can improve your ability to evaluate <em>many</em> things if you do.)</p><p>Try to spend an amount of time on this process commensurate with how important this topic is to you, or is likely to become. &#xA0;Are you evaluating a major dietary change or about to adopt a whole new identity based on a radical new &quot;truth&quot; you just learned? &#xA0;Maybe first make <em>good and sure</em> that you know and understand the arguments against your potential new truth, and that those arguments don&apos;t dissuade you.</p><p>Ultimately, you&apos;re not just learning more about the topic in question, you&apos;re learning <em>how to do the research. &#xA0;</em>You&apos;re learning about the tripmines and tarpits that others have stumbled into. &#xA0;You are learning how to be objective and how to recognize traps that could compromise that objectivity. &#xA0;With time and practice, you&apos;ll find it easier and easier to see through bad-faith arguments with ill-supported facts, and the arguments you <em>do</em> agree with will be more well-supported and far less likely to cause you or others grievous personal harm. Scammers and hucksters will find no purchase in you, and fake online &quot;medical journals&quot; will receive no more of your advertising dollars. &#xA0;(That said, a good adblocker will help there too.)</p><p>Doing your own research may feel like an exciting game at times, but checking people&apos;s work is where the real value is. &#xA0;Though life may be a little less exciting with fewer wild and crazy discoveries finding purchase in your mind, it will also be less disappointing and/or terrifying if and when you are eventually proven wrong.</p>]]></content:encoded></item><item><title><![CDATA[Twitter is dead (it just doesn't know it yet)]]></title><description><![CDATA[<p>On October 27, 2022, Elon Musk completed his purchase of Twitter. &#xA0;One week later, on November 4, 2022, he laid off approximately 50% of employees, killing the company. &#xA0;You can still log into <a href="https://twitter.com">twitter.com,</a> your apps still work, your integrations still work, but make no mistake: this</p>]]></description><link>https://greaterdanorequalto.com/twitter-is-dead-it-just-doesnt-know-it-yet/</link><guid isPermaLink="false">6599ac6e5f82e80001a1466f</guid><category><![CDATA[Current Events]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Sat, 12 Nov 2022 05:18:06 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2022/11/fail_whale_twitter.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2022/11/fail_whale_twitter.jpg" alt="Twitter is dead (it just doesn&apos;t know it yet)"><p>On October 27, 2022, Elon Musk completed his purchase of Twitter. &#xA0;One week later, on November 4, 2022, he laid off approximately 50% of employees, killing the company. &#xA0;You can still log into <a href="https://twitter.com">twitter.com,</a> your apps still work, your integrations still work, but make no mistake: this company is <em>dead</em>. &#xA0;It is a shambling undead corpse, with its critical central nervous systems shattered, the limbs still animating on instinct and half-firing neurons.</p><p>Everything since then, the price hike of Twitter Blue to $20/month, the discount to $8/month before it even launched, the fiasco of granting blue checkmarks to every Twitter Blue subscriber, the rampant impersonation, the attempt to fix it by changing the rules around impersonation and demanding a decimated staff keep the world in check, the introduction, then removal, then re-introduction, then re-removal, then re-re-introduction <em>maybe</em> of the grey &quot;official&quot; checkmark, the confusing and sometimes terrifying amount of new directions and product decisions Musk has been hurling around in a frenzy, his brazen dismissal of the FTC&apos;s dire warnings, his blas&#xE9; attitude towards developers over the news that they might personally be held responsible by the FTC for his decisions that they implement, all of that? &#xA0;Harmless, ultimately.</p><p>You cannot harm that which is already dead.</p><p>And Twitter died on November 4, 2022.</p><p>If you&apos;ve never worked at a large technology company that grew large through a period of rapid expansion, you probably over-estimate how, well, <em>okay</em> things are, on a day to day basis. &#xA0;You figure, they&apos;re this big, things must be okay, like in general, right? &#xA0;Well, things are <em>not</em> okay at a quick-expanding large technology company, and things are <em>not</em> okay at Twitter. &#xA0;The initial prototype for something like Twitter is usually something entirely unrelated, and from this point the team rapidly pivots between (sometimes) related product ideas until they hit on the thing that actually takes off. &#xA0;From there, it&apos;s a mad scramble to just keep the thing held together while <em>far</em> more people start using your product than you ever expected or planned for. &#xA0;The mantra at this point is something like &quot;just keep it together any way you can, we&apos;ll deal with any technical debt you incur later, <em>when we have time.</em>&quot;</p><p>Reader, there is never time.</p><p>So at large company like Twitter, the technology bears these battle-scars, these overgrown jungles, these spots in the code clearly labelled &quot;Here There Be Dragons&quot; where wise developers fear to tread (and where unwise developers are eaten), and the only thing keeping the whole damn thing running despite all of this... are the people. &#xA0;There are landmines and tripwires and countdown bombs all over that tech stack, and Elon Musk permanently sent home 50% of the people who know where any of it is or how to deal with it.</p><p>Except it&apos;s not even quite <em>that</em> not-okay, it&apos;s <em>worse.</em> &#xA0;Obviously, the cuts weren&apos;t spread evenly through the company. &#xA0;Many of the 50% who were fired weren&apos;t even engineers. &#xA0;They came from &quot;unimportant&quot; teams like Trust &amp; Safety, Accessibility, Communications, you know, silly things like that. &#xA0;But even among the remainder of those fired, engineering was hit <em>hard.</em> &#xA0;<a href="https://twitter.com/jmhodges/status/1591174456705421312">A lot of teams that support critical parts of the infrastructure are down to a skeleton crew.</a> &#xA0;<em>Even if</em> everyone who&apos;s left knows how to run those systems perfectly (and they don&apos;t, we&apos;ve already heard stories about people unable to quickly make changes or fixes to systems because there&apos;s nobody left who knows how they work), they&apos;re going to be over-worked and burnt out and either leave or become so completely ineffective it won&apos;t matter that they&apos;re still around.</p><p>Now, it may be something else that finally stops the corpse from moving. Honestly, my money&apos;s on the fact that the advertisers are so fearful of Twitter advertising harming their brand due to rampant impersonation and a lack of assurances that Twitter will be effectively moderated that they go away and never come back. &#xA0;But for one reason or another, there will finally be a point where everyone involved realizes that there&apos;s no point in keeping it running. &#xA0;Either the technological burden of keeping it running will be too great for the remaining engineering staff, or the money available to pay to keep it running will dry up. &#xA0;And Twitter will go away.</p><p>Even from this point, it may die a long death. &#xA0;Finding a buyer for an obvious lemon like this may take a while, and to try to keep it as appealing as possible to potential buyers, they may keep it online as best they can. &#xA0;But any buyer who buys this turkey won&apos;t be buying it to keep running Twitter, they&apos;ll be buying it for scrap.</p><p>Twitter still has the problem that they lost 50% of their staff, and no longer have the institutional knowledge to keep it running correctly. &#xA0;This is not a problem that goes away with a sale. &#xA0;To fix this problem, you need to spend more money and hire more engineers (since many of the ones laid off will have found other work and will be <em>understandably</em> reticent about coming back) who will have to learn these systems effectively from scratch. &#xA0;That will be <em>expensive,</em> and Twitter is already too expensive to run with its already-ineffective skeleton crew.</p><p>There won&apos;t be much resale value to the tech -- Twitter is a very purpose-built system, designed to run a world-class social networking system, and beyond that purpose, the tech involved won&apos;t likely have much other use. &#xA0;I sincerely doubt anyone will buy Twitter as an aqui-hire, they&apos;re way too big for that to make sense. &#xA0;So what one thing will be left to spend any money on at all? &#xA0;Simple.</p><p>Your data.</p><p>Twitter has a <em>treasure trove</em> of data about you -- more than just your tweets and social graph, too, even though that in and of itself is enough to make certain ethically-challenged billionaires (but I repeat myself) salivate. &#xA0;While Twitter is still around for you to make these choices, <a href="https://twitter.com/pinkgiantjay/status/1589778828272226304">follow the advice of this tweet</a>, and go disable <em>everything</em> under &quot;Data sharing and personalization&quot; in your settings.</p><p>Also, while you&apos;re thinking about the future, start thinking about what you&apos;re going to do <em>after</em> Twitter. &#xA0;You might want to follow the herd over to <a href="https://mastodon.social/explore">Mastodon</a>; they seem pretty popular these days. &#xA0;Or maybe you missed the idealism (and design) of the web in the 90&apos;s &#x2013; you might want to try out <a href="https://cohost.org/">cohost!</a> &#xA0;Or maybe both? &#xA0;Or maybe neither.</p><p>For me, I&apos;m going to try to claw back a bit of my online identity into things <em>I</em> control. &#xA0;Sure, I&apos;ll give Mastodon and cohost a try, but I&apos;m also going to be writing more on my <a href="https://greaterdanorequalto.com/">blog</a>, and putting more time into personal projects of mine, like revamping my <a href="http://danhulton.com/">homepage/portfolio</a>. &#xA0;I&apos;ll still talk with people I know in groups on Discord and Slack, too. &#xA0;Honestly, I wonder if going back to smaller, more-targeted, niche communities that don&apos;t and can&apos;t include the whole world would be just, kinda, <em>healthier</em> overall.</p><p>I guess we&apos;ll find out.</p>]]></content:encoded></item><item><title><![CDATA[Catastrophic Wealth]]></title><description><![CDATA[Sometimes I worry about becoming rich.]]></description><link>https://greaterdanorequalto.com/catastrophic-wealth/</link><guid isPermaLink="false">6599ac6e5f82e80001a1466b</guid><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Sat, 20 Nov 2021 02:07:25 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2021/11/money.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2021/11/money.jpg" alt="Catastrophic Wealth"><p>Sometimes I worry about becoming rich.</p><p>Not seriously, obviously. &#xA0;You don&apos;t just &quot;become rich&quot; on accident, so as long as I don&apos;t, say, start buying lottery tickets or writing Young Adult novels that capture the zeitgeist of an upcoming cultural wave, I should be pretty safe.</p><p>But I do get that startup itch from time to time (most recently <a href="https://nodewood.com/">Nodewood</a>), and with enough work and time and luck, I could potentially parlay that into some serious money. &#xA0;Maybe not Rockefeller serious, but serious enough to change my economic status permanently.</p><p>And that&apos;s when I start worrying. &#xA0;There seems to be a pretty clear path of how a lot of people&apos;s ethics evolve along the path from rags to riches. &#xA0;Some of the nicest people I&apos;ve ever met were among the poorest, but when you hear about some billionaire doing something good, it is usually quickly drowned out by a chorus of &quot;but check out all the exploitation necessary for them to earn those billions in the first place.&quot; &#xA0;Which, you know, fair cop.</p><p>You could say that it takes an asshole to amass a billion dollars in the first place, and it&apos;s not that money changes them, but that the money amplifies the already-nasty tendencies. To a certain degree, I&apos;m sure that&apos;s true. &#xA0;But I&apos;ve also watched it play out on a smaller scale with friends, peers, and public individuals in the startup space, and you can see priorities start to shift once they hit a really transformative MRR.</p><p>There&apos;s a saying that makes less sense these days, supposedly attributed to Winston Churchill, but actually much older: &quot;Anyone who is not a liberal at 20 years of age has no heart, while anyone who is still a liberal at 40 has no head.&quot; &#xA0;This, I believe, made a lot more sense in an age where you amassed wealth fairly reliably as you aged. &#xA0;But the boomers were the last generation that were able to observe this trend. &#xA0;Gen X, Millenials, Zoomers, we&apos;ve all been watching that economic inequality index just <em>rise</em> and <em>rise</em> for a while now.</p><p>The further up you are on that index, it seems like the worse are the stories that seem to come out about you. &#xA0;Trump, Epstein, Musk, Thiel - there&apos;s skeletons in all those closets, and for many of them, the closet door is wide open and we&apos;ve been staring at those skeletons for a long while. &#xA0;Pick any large corporation, and you&apos;ll likely find them funding the most vile political campaigns out there - not because their corporation especially stands for that politician or their ideals, but because there&apos;s a material advantage to having supported the winning candidate, and ideals are worth less (to them) than money.</p><p>Even the act of being a billionaire is just an incredibly evil act. &#xA0;Amassing that wealth in the first place is morally wrong. &#xA0;I don&apos;t think anyone needs to be shamed just for making or saving money, or providing for their family, or setting themselves up for a safe &amp; comfortable retirement, or even just enjoying some luxuries. &#xA0;Not all of life should be about barely scraping by, or what&apos;s the point of striving, of living? &#xA0;But at a certain point, you have to look at your wealth and realize that it is <em>excess.</em> &#xA0;And that excess could be doing good in the world. &#xA0;It could be literally saving lives, by investing in food security programs, housing programs, treatment programs, etc. &#xA0;Choosing instead to hoard that excess wealth means you are effectively depriving people of food, of shelter, of health, of life.</p><p>I play the lottery from time to time, largely as an excuse to daydream about how I would spend the money. &#xA0;In my daydreams, I travel the world, I relax on white-sand beaches, I buy my friends and family houses, I throw parties, all kinds of wild luxury. &#xA0;But my actual plan, were I to actually get the winning numbers, is to donate the <em>vast majority</em> of the money immediately to registered charities and social programs. &#xA0;The jury&apos;s out as to whether winning the lottery makes you happier or not, but I couldn&apos;t in good conscience hold on to all that <em>excess wealth</em> knowing people were starving, homeless, and sick.</p><p>Or could I? A lottery&apos;s a lot easier to theorize about, because it&apos;s clear and obvious. I wouldn&apos;t have had the money for a long time before the choice to give it away came up, so it wouldn&apos;t have had a lot of time to work its way against me. &#xA0;I like to think I have a fair shot of making those donations.</p><p>But a startup is different - it takes work and time and luck to have a business pay off. &#xA0;Your wealth tends to build slowly. &#xA0;Overnight successes are typically ten years in the making. &#xA0;Along the way, that ever-building wealth changes your concerns. &#xA0;At what point does that change become catastrophic to your morals? &#xA0;How can you even tell?</p>]]></content:encoded></item><item><title><![CDATA[Evaluating Modest SaaS Business Ideas]]></title><description><![CDATA[I'm evaluating new SaaS business ideas, and I wanted to share a little bit about exactly how I'm evaluating them.]]></description><link>https://greaterdanorequalto.com/evaluating-modest-saas-business-ideas/</link><guid isPermaLink="false">6599ac6e5f82e80001a1466d</guid><category><![CDATA[SAAS Business]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Sat, 10 Apr 2021 17:11:11 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2021/04/checklist.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2021/04/checklist.jpg" alt="Evaluating Modest SaaS Business Ideas"><p>There&apos;s no &quot;One Right Way&quot; to evaluate a business idea; it&apos;s a very personal process. Everyone has different requirements and priorities that they have to balance, and what might be an amazing idea for one person sounds like a terrible idea for another.</p><p>I co-host a podcast called <a href="https://modprodpod.com/">The Modest Product Podcast</a> where <a href="https://stevenabadie.com/">Steven Abadie</a> and I talk about our experiences trying to build, launch, and run modest products. &#xA0;I&apos;ve spent a couple years working on <a href="https://nodewood.com/">Nodewood</a>, a JavaScript SaaS starter kit and while it&apos;s in a pretty good place, I&apos;m looking for my next project - one I can use Nodewood to build, and in doing so, improve it. &#xA0;I don&apos;t want it to just be a &quot;toy&quot; project either, I want it to be legitimate business idea that fits my ideals and could really help people. &#xA0;Why waste my time and others?</p><p>So I&apos;m evaluating each idea I&apos;m considering carefully, and I wanted to share a little bit about exactly <em>how</em> I&apos;m evaluating them. &#xA0;This might be helpful for other people looking for modest or &quot;bootstrappy&quot; business ideas, but it will also help me formalize some of my thoughts on the subject.</p><p>Obviously, some of these considerations are more important than the others, but this isn&apos;t a ranked list or anything where you can do math to come up with the quantifiably-best idea. It&apos;s more of a series of lenses I use when evaluating an idea, to make sure I&apos;m taking as many important weaknesses and strengths into account before I&apos;m more seriously invested.</p><p>Oh, and credit where credit is due! &#xA0;A lot of these ideas come from a conversation hosted by <a href="https://justinjackson.ca/">Justin Jackson</a>. &#xA0;He <a href="https://docs.google.com/document/d/1MhhmXOJiEdR11fN910h-WZ7B88Py1YIa6iONkn3mb0w/edit#">started collecting ideas in a Google Doc,</a> and I decided I wanted to expand on it for my own benefit. &#xA0;Then I figured I may as well share what I&apos;d come up with, in the same spirit the original list was shared.</p><hr><h2 id="is-this-an-exciting-product">Is this an exciting product?</h2><p>You may have heard that there&apos;s two kinds of products: &quot;vitamins&quot; and &quot;painkillers&quot;. &#xA0;It&apos;s a very simple idea and doesn&apos;t fully or cleanly divide all products, but it&apos;s a useful way of understanding how people will potentially view your product.</p><p>&quot;Vitamins&quot; are nice-to-have products that make your life easier or better in some way, that you know you probably <em>should</em> use, but are easy to put off until later when you&apos;re &quot;ready.&quot;</p><p>&quot;Painkillers&quot; solve a clear and present need that is not yet met. &#xA0;Painkillers are <em>exciting, </em>because they enable you to significantly improve your business or yourself in a way you may not have thought previously possible.</p><p>This isn&apos;t a clear dichotomy, because products that used to be considered vitamins can transform into painkillers as technology and culture advances (sending email invoices for physical services, for example), and vitamins in one niche may be critically needed painkillers in another. &#xA0;But when you consider the product and what it enables for your target market, you should be able to understand at least, is it <em>exciting?</em></p><p>Exciting products are easier to market, more prone to being spread by word-of-mouth, and generally require a lot less customer education, which limits the amount of &quot;extra work&quot; you have to do with a constrained amount of free time.</p><hr><h2 id="does-this-solve-a-significant-enough-problem-that-people-will-pay-for-it">Does this solve a significant enough problem that people will pay for it?</h2><p>Constraining your solution to a too-small problem space will definitely make it easier to build, but it can leave you with a product that&apos;s not really worth buying. Collecting and storing people&apos;s receipts online (for an example that may or may not come from my own experience) may be useful as a backup for people, but without some sort of time-saving scanning/OCR and tax preparation calculations, it doesn&apos;t really solve a significant enough problem that the alternative (store them all in a shoebox and deal with it at tax time) doesn&apos;t solve just as well.</p><hr><h2 id="will-customers-regularly-use-and-see-value-from-this-product">Will customers regularly use and see value from this product?</h2><p>A product that people regularly interact with is a lot easier of a sell than one you use infrequently, even if the value obtained is the same. &#xA0;If a user logs in every day or week, then when the monthly invoice comes up, they remember you and the value you delivery. &#xA0;If they log in once a month or less, there&apos;s a better chance that they&apos;ll forget or be ambivalent to the value you deliver, and cancel.</p><hr><h2 id="does-this-product-provide-value-to-companies-at-broad-stages-of-their-life-cycle">Does this product provide value to companies at broad stages of their life cycle?</h2><p>One of the problems with <a href="https://nodewood.com/">Nodewood</a> was that it was only really valuable to companies that hadn&apos;t started working on their product. &#xA0;Since it&apos;s a starter kit, if you&apos;ve already started, you don&apos;t really care about it. &#xA0;This means that the marketing for Nodewood has to start very early, building up brand awareness with people who <em>may eventually</em> start a SaaS business, and will hopefully still remember you fondly at that point.</p><p>It&apos;s much easier to market a product that applies to a company at broader stages of their growth. Not to mention, they&apos;re much more likely to have money to spend in later life cycle stages.</p><hr><h2 id="does-this-product-align-with-your-values">Does this product align with your values?</h2><p>I mean, pretty obvious here. &#xA0;If you can&apos;t stand Bitcoin, don&apos;t start a Bitcoin app.</p><p>That said, you probably want to take a minute to think about second-order effects here. &#xA0;<a href="https://www.theatlantic.com/ideas/archive/2021/04/nfts-werent-supposed-end-like/618488/">The original inventor of NFTs had lofty goals, but didn&apos;t think about the scam whirlwind they&apos;d eventually unleash.</a></p><hr><h2 id="do-you-like-your-potential-customers">Do you like your potential customers?</h2><p>If you&apos;ve never gotten along with teachers, for example, it might make it difficult to properly empathize with educators as potential customers. &#xA0;This can make it harder to identify the real issues they&apos;re facing, and, at best, delay finding product/market fit. &#xA0;It can also crater your motivation, since you&apos;ll be working with these customers regularly, and if you don&apos;t value those interactions, it can wear on you.</p><hr><h2 id="will-you-be-able-to-stay-motivated-to-work-on-this-product">Will you be able to stay motivated to work on this product?</h2><p>This is as much a personal question as a product question, but products naturally have different &quot;cool curves&quot;, where motivation to keep going ebbs and flows. &#xA0;If your product requires a lot of motivation up-front to power through some boring bedrock, and you&apos;re currently feeling burnt-out, you may never get off the ground.</p><p>Conversely, if your product is fun to build but challenging to you to sell and maintain, you&apos;re going to have a great time writing code, but running the whole business may end up being a chore.</p><p>This is one of many areas where considering a co-founder could help shore up any potential weaknesses. &#xA0;In addition to them being able to take on tasks that would wear you out, you can share tasks that <em>neither </em>of you want to do, as well. &#xA0;That way there&apos;s half as many of them, and you have a shoulder to cry on afterwards.</p><hr><h2 id="can-you-build-this-product-in-a-reasonable-amount-of-time">Can you build this product in a reasonable amount of time?</h2><p>If it&apos;s going to take you two years to just build the MVP, you&apos;re going to want to consider the problems that come with that. &#xA0;Motivation, as we just discussed, will be hard to keep up for a long period of time. &#xA0;The market opportunity you identified may dry up or be filled by a competitor. &#xA0;There is likely significant technical risk in such a long project, and it may take <em>longer </em>than the projected two years. &#xA0;Additionally, iterating rapidly on such a complex prototype is likely to be difficult as well, which means you could have a harder time achieving product-market fit.</p><p>On the other hand, if it only takes you a couple weeks to build out the majority of your product, you&apos;re going to be vulnerable to fast-following competitors. &#xA0;Established players in the market could duplicate your offering with their superior resources, or, even if the niche you&apos;ve identified is too small for them to care, other bootstrappers could likely replicate your work just as quickly as you did. &#xA0;Quicker, too, since they&apos;ll have your work as a blueprint.</p><p>Every product has a moat you build as you build it. &#xA0;Too much moat and you may never get across yourself. &#xA0;Too little, and the barbarian hordes will just flow right across.</p><hr><h2 id="what-is-your-moat">What is your moat?</h2><p>To expand that last thought a bit, it&apos;s helpful to ask yourself: What <em>will</em> the moat for this product be? &#xA0;What hard work or specialized knowledge or access will you need to develop, and are you okay with that?</p><p>And if you can&apos;t identify a moat, again, beware of fast-followers.</p><hr><h2 id="is-this-product-easy-to-distribute">Is this product easy to distribute?</h2><p>One of the early ways that Google tried to monetize search was by selling <a href="https://en.wikipedia.org/wiki/Google_Search_Appliance">Google Search Appliances</a> - you&apos;d purchase a physical Google rack-mounted server, connect it inside your data center, and let it index internal documents for you. &#xA0;A really neat capability for businesses to be able to have at the time!</p><p>They obviously no longer sell this hardware, and one large reason is that it was a <em>royal</em> pain in the butt to distribute and maintain. &#xA0;Since it required actual physical delivery and setup, there were all kinds of technical and legal hurdles to move past before a sale could even be agreed on, and then scaling that business became a chore.</p><p>You likely aren&apos;t looking at building physical computing appliances for people to install in their data centers, but the modern equivalent is on-premises software. &#xA0;Far less frustrating to install, but still <em>very</em> frustrating, when compared to a simple SaaS.</p><p>And even if distribution is fairly simple, if your product requires a fair amount of work for your customer to set up on their end before they see even a shred of value (snippet installations, workflow building, time to evaluate data), this will also slow down your sales cyle and add to your per-customer costs. &#xA0;One way to defray this is to offer &quot;concierge setup&quot; for an additional fee. &#xA0;This protects your time while allowing for you to still help customers that need it. &#xA0;It also provides you with a marketing lever, as you can waive the fee for critical clients, or at high tiers of your service (your &quot;Gold&quot; plan or for annual payments, for example).</p><hr><h2 id="is-downtime-a-life-or-death-emergency">Is downtime a life-or-death emergency?</h2><p>Obviously, all downtime is a bad time, but some are worse than others. If you run a meme-generating service, being down is frustrating to people and disrupting to you, but nobody&apos;s really being hurt by it. &#xA0;Alternatively, if you run an Internet Of Things company that locks and unlocks doors over an API, if that API goes down, people could be locked out of their houses during emergencies!</p><p>People aren&apos;t always willing to pay more for critical services, especially if it&apos;s not a service they regularly think of as critical. &#xA0;How many times have we all heard the story of someone losing their life&apos;s work because they didn&apos;t have decent backups? &#xA0;You would think that by now <em>everyone</em> would have a proper backup strategy in place for important data, but unless you think about these things seriously and regularly, you may be ignorant of the necessity of paying reasonable prices or simply not willing to pay at all.</p><hr><h2 id="will-you-spend-a-lot-of-time-doing-customer-support">Will you spend a lot of time doing customer support?</h2><p>A product that requires a lot of customer interaction can seriously limit your ability to build and grow that product and business. &#xA0;Some products are just very complex and require a lot of personalized work that a certain percentage of your customers will just require help with. &#xA0;These products may not be a great fit for a solo (or duo) bootstrapper &#x2013; even though a solid customer support experience usually solidifies that revenue &#x2013; because it&apos;s preventing you from locking in additional revenue.</p><p>This can potentially be offset by having very good documentation, videos, walkthroughs, etc. &#xA0;You have to keep in mind the amount of time it takes to create these resources, obviously, but even they&apos;re not a wash, since they can be a valuable source of SEO-based traffic, if built properly.</p><hr><h2 id="will-this-product-be-all-consuming">Will this product be all-consuming?</h2><p>This is kind of broad, but does this feel like the kind of product that will take over your life? Consistant customer support, regular feature requests, constant marketing, price &amp; legal negotiations... It&apos;s important to look at the total &quot;burden&quot; of this product on your life and make sure it matches up with how much you&apos;re willing to give, whether that&apos;s a lot or a little.</p><hr><h2 id="does-the-person-who-gets-the-most-value-out-of-your-product-control-the-credit-card-that-will-be-used-to-pay-for-it">Does the person who gets the most value out of your product control the credit card that will be used to pay for it?</h2><p>If not, you don&apos;t have to just convince the primary user of the value of your software, but also have them convince their boss. &#xA0;At best, this will lengthen sales cycles. &#xA0;At worst, it&apos;ll trashcan sales.</p><hr><h2 id="do-your-potential-customers-regularly-pay-for-products-ideally-for-this-kind-of-product">Do your potential customers regularly pay for products, ideally for this kind of product?</h2><p>Some customer categories love trying new things, but not so much paying for them. &#xA0;Developers are a great category for trying new tools, but Linux developers aren&apos;t especially fond of paid software. &#xA0;Teachers are generally happy to find anything that can save time and help them teach, but don&apos;t typically have a big budget at their disposal. &#xA0;Finding a customer category that regularly spends money on the kind of software you&apos;re intending to build can make it signficantly easier to actually sell them software.</p><hr><h2 id="is-your-market-a-large-one-with-a-lot-of-upmarket-competition">Is your market a large one with a lot of upmarket competition?</h2><p>It&apos;s a lot easier to get a small piece of a large market than it is to get a large piece of a small market. &#xA0;There&apos;s more momentum and, as they say, a rising tide floats all boats. &#xA0;Upmarket competition shows that there&apos;s a wide variety of customer demands, which means it can be a lot easier to laser-focus onto an underserved niche and use that to jumpstart your business.</p><hr><h2 id="is-there-demonstrated-demand-for-a-downmarket-competitor">Is there demonstrated demand for a downmarket competitor?</h2><p>Sometimes, the upmarket competitors just suck up all the air in the room, or it could be a product category that prohibits downmarket competitors from actually competing, due to a large minimum feature set, regulatory capture, etc.</p><p>For example, the &quot;general-case word processor&quot; market has a fair number of upmarket competitors, (Microsoft Word, Apple Pages, Google Docs, Open Office Writer, etc), but word processors require a very large feature set to be competitive. &#xA0;Sure, maybe nobody uses more than 20% of the features of Word, but it&apos;s a different 20% for everybody.</p><p>This can be a useful opportunity to niche down, however, as while there may not be a great opportunity to compete in the general-case word processor market, there are a lot of special-case word processors, targeting fiction authors, blog authors (with built-in SEO tooling), etc.</p><hr><h2 id="is-the-market-still-growing">Is the market still growing?</h2><p>A growing market will support more niches than a contracting one, as well as give you more opportunities to identify and adapt your product to find product/market fit.</p><hr><h2 id="is-it-easy-to-reach-your-audience">Is it easy to reach your audience?</h2><p>This is <em>super</em> important. &#xA0;You have to know where your audience hangs out. &#xA0;What sites do they frequent? &#xA0;What industry trades do they subscribe to? &#xA0;What conventions or conferences do they attend? &#xA0;Where do they find answers to tricky questions? &#xA0;And most importantly, how do you make yourself a part of these spaces?</p><p>Some audiences are naturally prickly to any sort of advertising. &#xA0;(Try posting about your startup in programming subreddits, for example.) &#xA0;This is <em>fine </em>and actually makes a lot of sense &#x2013; communities that are too friendly to advertising frequently find themselves overrun with it. &#xA0;Instead, you can get ahead by genuinely becoming part of the community, giving back, and becoming known. &#xA0;Then, let word-of-mouth work for you.</p><p>An audience that remains terribly difficult to reach will complicate your marketing efforts. &#xA0;This can be beneficial if you have a co-founder who specializes in reaching this audience (it can be your moat), but for a solo founder, it can make life especially hard.</p><hr><h2 id="is-there-a-powerful-distribution-channel-available-to-reach-this-market">Is there a powerful distribution channel available to reach this market?</h2><p>Sure, you can fire up a website and just serve anyone who follows your SEO trail of crumbs to your sign-up form. &#xA0;But some of founders have been finding success by exploring alternative distribution channels. &#xA0;For example, Heroku provides a directory of add-ons that you can search through and install with a few simple clicks. &#xA0;Many Heroku developers will search there to solve their problems before they even go to Google. &#xA0;If you&apos;re providing API services for developers, having your service in Heroku&apos;s add-on directory can funnel traffic to you with minimal work on your part.</p><p>There are all kinds of similar distribution channels to consider, many of them growing at a tremendous rate. &#xA0;Shopify has an app store, Word Press has a whole plug-in ecosystem, Salesforce apps are well-known to support entire teams of developers. &#xA0;There are definitely risks you assume when relying on distribution channels like this for your business&apos;s growth (what happens if you get kicked out from the store, or a powerful competitor shows up, or they change their API significantly when you don&apos;t have time to adapt, etc), but the boost in discoverability and distribution can be a really killer advantage.</p><hr><p>This is obviously not a comprehensive list of things to consider, but it can hopefully help identify factors you may not have otherwise considered and make a more-informed decision. &#xA0;If you&apos;d like to find out what I end up working on next, after having wrung a few dozen ideas through this particular wringer, please <a href="https://greaterdanorequalto.com/#subscribe">consider subscribing</a>!</p>]]></content:encoded></item><item><title><![CDATA[The Least Dangerous Game: How (And Why) To Hunt Miners In Eve Echoes]]></title><description><![CDATA[<p>Eve Echoes is the mobile version of the MMORPG Eve Online. &#xA0;In it, you play as a Capsuleer, a cloned human that can pilot space ships all around a giant galaxy, mining, hunting pirates, or being a pirate yourself. &#xA0;If you get blown up, you lose your ship,</p>]]></description><link>https://greaterdanorequalto.com/the-least-dangerous-game/</link><guid isPermaLink="false">6599ac6e5f82e80001a1466c</guid><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Fri, 25 Sep 2020 03:24:34 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2020/09/space-chicken.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2020/09/space-chicken.jpg" alt="The Least Dangerous Game: How (And Why) To Hunt Miners In Eve Echoes"><p>Eve Echoes is the mobile version of the MMORPG Eve Online. &#xA0;In it, you play as a Capsuleer, a cloned human that can pilot space ships all around a giant galaxy, mining, hunting pirates, or being a pirate yourself. &#xA0;If you get blown up, you lose your ship, but not your life, and you can start again in the station you clone from. &#xA0;But it still <em>feels</em> mighty bad to lose an expensive ship. &#xA0;Nearly every ship in the game is crafted from base minerals and components, and can take a <em>lot</em> of time and money to build. &#xA0;Getting a cool ship is an important milestone for many players, and losing that ship can be devastating.</p><p>The base of this supply chain is minerals - all ships are made from these. &#xA0;And to get minerals, you have to take a mining ship out into the galaxy and mine. &#xA0;This can be dangerous! &#xA0;Eve Echoes is split into three zones of space: &quot;High Security&quot;: where you are safe from all attack, &quot;Low Security&quot;: where you can be attacked, but stations and system gates have guns that you can run to for protection, and &quot;Null&quot;, where there is no protection at all. &#xA0;And all the good minerals are out in Low or Null, so if you want to build the big ships, you need miners out in Low or Null, out where the danger is greatest.</p><p>This is a guide for those wishing to hunt miners (or be the miner) out where it&apos;s dangerous.</p><h2 id="but-why">But... why?</h2><p>Before we address <em>how</em> to hunt miners, we should probably talk a bit about <em>why</em> you&apos;d want to hunt miners. &#xA0;If they&apos;re the ones who get the minerals for all the cool ships, why wouldn&apos;t you want them to do that as efficiently as possible?</p><p>The simplest motive is profit. &#xA0;Some miners carry expensive modules that you can resell to make millions, but at the very least, all miners will carry some mining lasers that tend to go for decent money. &#xA0;Plus, you can fill the rest of your hold with the minerals they were mining, and sell them yourself.</p><p>Another good reason is that it also makes for a good low-stakes environment to learn fleet PvP. &#xA0;Miners are slippery and can require the resources of more than one player to take down. &#xA0;Miner hunting is a situation where your quarry won&apos;t generally be shooting back, but they <em>can</em> get away, and if they have friends to call in, you need to be ready for how to respond. &#xA0;If you haven&apos;t done fleet PvP yet with your corporation, miner-hunting fleets can be a useful stepping stone towards hunting larger prey.</p><p>Finally, a great reason to hunt miners is if you yourself want to mine in that system. &#xA0;Eve is a game with a memory, and if people learn that you and your corporation hunt miners in a certain system, they&apos;ll tend to clear out, and there will be less competition for the few really good asteroids in each belt. &#xA0;Then, without juicy miners to hunt, other hunters will spend less time there, making it safer for you and yours to mine uninterrupted.</p><h2 id="how-to-hunt-miners">How To Hunt Miners</h2><p>The most-important part of hunting a miner is getting a warp disruptor lock. &#xA0;Miners come with between +1 and +2 built-in warp stability, so if you&apos;re only rocking a single disruptor with -1 on it, you&apos;re not going to trap anything, and they&apos;re going to escape. &#xA0;Ideally you want to fit as many -2 disruptors as you can get.</p><p>Second-most important will be an afterburner or microwarpdrive. &#xA0;A web goes in a mid slot, so you can&apos;t use that to keep them from getting away, so you need to be able to go <em>fast.</em> &#xA0;If they can survive long enough to out-range your disruptor, they get away.</p><p>Lastly, choice of weapon is left up to the reader. &#xA0;The most-powerful weapon you can reasonably get your hands on is preferred, but this is a miner we&apos;re talking about here. &#xA0;There&apos;s not going to be anything approaching a DPS race.</p><p>With the basics out of the way, let&apos;s look at three strategies for hunting miners, from worst to awesomest:</p><h3 id="solo-grab-anything-put-points-on-it">Solo: Grab Anything, Put Points On It</h3><p>For real, grab something with two or more mid slots, put as many -2 disruptors on it as it&apos;ll fit, slap a MWD on there, jam in whatever weapons you have lying around, and head out. &#xA0;An Aura Warp Stabilizer grants +2 stability cold and +4 hot, so a miner can relatively cheaply have +6 stability. &#xA0;That beats any solo with fewer than 3 full slots, which, guess what, is probably you, bud.</p><p>Be ready for disappointment. &#xA0;And even when you win, you&apos;re not going to win anything really great. &#xA0;Maybe a Mk.5 Stabilizer and some mining lasers, <em>if</em> they drop.</p><p>This strategy is really just if you&apos;re feeling bored and grumpy, or if you want to scare miners out of a system and can&apos;t find any friends to help. &#xA0;Even then, they may not leave, because hey, <em>you really don&apos;t pose much of a threat.</em></p><p>Rating: 1/5 stars.</p><h3 id="silent-but-deadly-the-stealth-bomber">Silent But Deadly: The Stealth Bomber</h3><p>One problem in getting a whole fleet to hunt miners is that while scouting belts, you&apos;ll frequently scare off the miners before your friends can get there. &#xA0;Or even if you&apos;re warping in a group, you could still warp in too far away from the miner to lock them before they flee.</p><p>An easy -- though expensive -- solution to this is for everyone involved to pick up a Stealth Bomber like a Nemesis, Hound, Purifier, or Manticore. &#xA0;At time of writing, that&apos;ll cost you about 25 million ISK, plus another 30 million for the Covert Ops Cloak. &#xA0;Not cheap, but bear with me.</p><p>With a Stealth Bomber, everyone involved can scout belts by themselves while remaining cloaked. This ensures that no potential targets are spooked, getting the scouting portion of the hunt done in record time. &#xA0;From there, everyone can warp to the target without needing to worry about formation. &#xA0;Then, it&apos;s a simple call-out once everyone is in disruptor range. &#xA0;Uncloak, click &quot;focus fire,&quot; click on all your disruptors while you&apos;re acquiring lock, and wait for the miner to die.</p><p>One important aspect of rocking a Stealth Bomber - they are made of wet cardboard. &#xA0;A little stiffer than paper, but it still won&apos;t stand up in a real fight against a real warship. &#xA0;You should <em>only</em> ever be uncloaked if you are currently fighting a miner or looting. &#xA0;At <em>all</em> other times, you should be cloaked for safety, and also in case an unsuspecting miner warps into your belt.</p><p>Rating: 5/5 stars.</p><h3 id="battle-venture-battle-venture">BATTLE VENTURE: BATTLE VENTURE</h3><p>BATTLE VENTURE.</p><p>Who says the Venture has to be a mining ship always and forever! &#xA0;Tell them to suck eggs! &#xA0;Put some goddamn lasers on your Venture, put some drones in that echoing drone bay, slap some points in the mids, and go hunting!</p><p>This works best in a fleet, because solo you&apos;re going to be limited to a max of 4 points of warp disruption. You&apos;ll likely only be able to catch other Ventures that are basically AFK, but if you can&apos;t afford a Stealth Bomber, a Battle Venture is basically a cheapie cloak. &#xA0;Miners tend to trust other miners, and will let you sidle on up to within disruptor range no problem. &#xA0;For bonus points, start attacking when your buddies uncloak and just wait for the hate mail.</p><p>Rating: BATTLE VENTURE/5 stars.</p><h2 id="how-not-to-be-hunted">How Not To Be Hunted</h2><p>If you&apos;re a dedicated miner, you might be starting to get depressed about now. &#xA0;Maybe it all seems a bit one-sided. &#xA0;But there are <em>absolutely</em> things you can do to come out on-top, and I&apos;d argue that things are generally weighted in your favour. &#xA0;So cheer up, and read on.</p><h3 id="pay-the-hell-attention">PAY THE HELL ATTENTION</h3><p>This is literally the most-important advice anyone will ever give you about Eve: Pay attention to the game. &#xA0;If you&apos;re not watching the screen, you&apos;re giving people a free pass to blow you up, whether you&apos;re mining, ratting, or even floating at a gate you think is <em>probably</em> safe, I mean it&apos;s a gate right? &#xA0;Nuh-uh, our CEO just blew up some poor shmuck sitting on a gate in 0.4 <em>this afternoon.</em> &#xA0;And he did it <em>solo.</em> &#xA0;And lived to tell about it.</p><p>So pay the hell attention.</p><h3 id="mine-aligned">Mine aligned</h3><p>Once you&apos;re in range of all the asteroids you care about, click on a station or gate or planet or whatever, and click &quot;Approach&quot;. &#xA0;This will align your ship towards that target. &#xA0;Once you&apos;re aligned, you can click the little &quot;100%&quot; button next to your health, and it will stop your ship.</p><p>In order to go to warp, you need two things: 1) to be pointing at your target (aligned), 2) to be going 75% of your max speed. &#xA0;If you are already aligned, you save precious seconds.</p><p>Also, if you&apos;re rocking a Retriever or other large mining ship, you can put a &quot;Higgs Anchor&quot; rig on your ship, which reduces your top speed significantly. &#xA0;This means you can start at one end of the belt, align to something on the other end of the belt, and just <em>slowly chug along</em> at your newly-lowered top speed. &#xA0;If anything scary shows up, you can warp out as fast as you can hit that button. &#xA0;Nearly perfectly safe. &#xA0;Provided, of course, you are PAYING THE HELL ATTENTION.</p><h3 id="fit-stabs">Fit stabs</h3><p>Sometimes you&apos;re not going to be able to warp out before you get locked. &#xA0;Battle Ventures acquire lock <em>exceptionally quickly,</em> so they might getcha before you can get. &#xA0;Stabilizers will save you here.</p><p>You have two options: Cheap stabs that only give +1/+1, or Aura stabs that give +2/+2. &#xA0;If you&apos;re building a cheap Venture you can afford to lose (see &quot;Play The Long Game&quot;, below), get the cheap stabs. &#xA0;They&apos;ll still protect you against solo hunters for the most part. &#xA0;But if you have Very Good Mining Lasers, get a couple Aura stabs. &#xA0;You&apos;ll have +10 stability running hot, and it will take a <em>very</em> dedicated hunting group (with more than 150 million worth of disruptor hardware) to lock you down, and those don&apos;t tend to come by too frequently.</p><h3 id="mine-with-friends">Mine With Friends</h3><p>Eve is a Massively <em>Multiplayer</em> Online Game. &#xA0;So get some other players! &#xA0;If there are other miners out there with you, you stand less of a chance of getting got. &#xA0;You don&apos;t have to outrun all the attacking ships, just your slow friend.</p><p>Just kidding, of course. &#xA0;(Or am I?!?) &#xA0;But a safer option is to get a <em>whole bunch</em> of friends out mining, and have a couple run guard duty in cheap destroyers. &#xA0;Nothing fancy, just something just scary enough that any hunting party has to pay attention to them or risk getting hurt. This will generally deter any hunting party that isn&apos;t trying to actively claim territory. &#xA0;They&apos;re there for easy fights with decent profit, not hard fights (Stealth Bombers are made of wet cardboard, remember?) that can only win them cheap modules.</p><p>Plus, hanging out with people is fun. &#xA0;Try it sometime.</p><p>And the best part? &#xA0;When you&apos;re hanging out and chatting with people, it tends to keep you focused on the screen so you can PAY THE HELL ATTENTION.</p><h3 id="play-the-long-game">Play The Long Game</h3><p>This is a miner&apos;s strongest tactic, and it&apos;s one most people forget about. &#xA0;The game doesn&apos;t end when a fight ends, and you can&apos;t just look at a single lost ship and give up. &#xA0;You have to compare your profits/losses in low/null to what you&apos;d expect to get out of high. &#xA0;Sure, in high sec, your losses will be zero, but your profits will be drastically reduced as well. &#xA0;A smart miner who is PAYING THE HELL ATTENTION in low/null will make <em>far more</em> than a bored one in high sec, even counting the occasional ship loss.</p><p>Eve is not a game you win or lose in a day. &#xA0;It is a long game, so <em>play</em> the long game.</p><h2 id="isn-t-this-all-just-a-bit-mean">Isn&apos;t This All Just A Bit Mean?</h2><p>Nah.</p><p>No, I&apos;m not just being dismissive! &#xA0;I mean, <em>yes,</em> I&apos;m being dismissive, but I&apos;m not <em>just</em> being dismissive. &#xA0;I have reasons.</p><p>See, when you go into low or null security systems, the game <em>warns</em> you that you can be attacked, so it&apos;s not a surprise. &#xA0;You have to actually, physically consent to this possibility. &#xA0;If you don&apos;t consent, you don&apos;t go out there. &#xA0;You may prefer <em>not</em> to be attacked, but I prefer not to be sniped in Counter-Strike and it <em>keeps happening.</em></p><p>And it&apos;s <em>supposed</em> to happen, too. &#xA0;The game is built around stuff blowing up. &#xA0;Without ships of all sorts blowing up on the regular, everything would be too cheap and everyone would have the very best of all things, and it would become very boring, very quickly. &#xA0;The AI in this game just does not sustain a PvE-only, long-term investment of interest. &#xA0;It&apos;s other players that make this game fun, yes, even other players trying to blow you up.</p><p>Finally, you have to consider that if you try to start drawing lines, the water gets <em>very</em> murky <em>very</em> quickly. &#xA0;Essentially every PvP fight or action in this game is entered into because the aggressor believes the odds are in their favour. &#xA0;If you went around starting fights you didn&apos;t think you could win on the regular, you&apos;d end up very poor very quickly. &#xA0;(Or maybe your YouTube channel filled with highlights of &quot;OMG LOOK WHAT I KILLED IN A T3 DESSIE&quot; would blow up and you&apos;d get hella rich, I don&apos;t know.)</p><p>But the point remains that there basically <em>are no fair fights in this game.</em> &#xA0;At least not usually intentionally, and definitely not frequently. &#xA0;Even when hunting other players with weapons in anomalies, they&apos;re fitted for PvE, which requires a drastically different module set than PvP, and you have them at a distinct disadvantage.</p><p>Whether fighting other warships, stealing planetary materials, or, yes, hunting miners, you go into every fight in this game with as much of an advantage as you can secure, and expect everyone else will be as well. &#xA0;Sometimes you&apos;ll win, sometimes they&apos;ll get away, but the risk makes the reward more fun, for all parties concerned.</p><p>So go out there, hunt and be hunted, have fun and PAY THE HELL ATTENTION.</p>]]></content:encoded></item><item><title><![CDATA[Code That Writes Code]]></title><description><![CDATA[Microsoft trained an Open AI Model to write Python code from comments.  It's pretty impressive.]]></description><link>https://greaterdanorequalto.com/code-that-writes-code/</link><guid isPermaLink="false">6599ac6e5f82e80001a1466a</guid><category><![CDATA[Programming]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Thu, 21 May 2020 15:32:06 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2020/05/code.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2020/05/code.jpg" alt="Code That Writes Code"><p>Microsoft trained an Open AI Model to write Python code from comments. &#xA0;It&apos;s pretty impressive:</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/fZSFNUT6iY8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>Now, I found this in the <a href="https://www.reddit.com/r/programming/comments/gnrjay/microsoft_demos_language_model_that_writes_code/"><a href="https://www.reddit.com/r/programming/comments/gnrjay/microsoft_demos_language_model_that_writes_code/">r</a>/programming subreddit</a>, and there&apos;s a lot of skepticism and/or anger kicking around, but I think a lot of commenters are fundamentally missing the explicitly stated usefulness of this. &#xA0;(Though to be fair, it&apos;s stated in the final couple seconds of the video, in what sounds like standard outro stuff.) &#xA0;This isn&apos;t intended to try to replace programmers, but to remove the necessity of having programmers do menial tasks.</p><p>We stopped manually managing memory because it was error-prone and a poor use of programmer time, and programming jobs are still around. &#xA0;We use common libraries instead of writing every line ourselves, and programming jobs are still around. &#xA0;This model doesn&apos;t remove the need for programmers, it just removes a lot of menial tasks from the programmer&apos;s list of to-dos.</p><p>You still need to know how to code, as evidenced by the situations in the video where the model wasn&apos;t <em>quite</em> correct. &#xA0;And you still need to be able to reason logically about requirements and how those become code.</p><p>As another tool in the toolbox, this could absolutely be an incredible time-saver. But it won&apos;t replace the whole toolbox.</p>]]></content:encoded></item><item><title><![CDATA[Heya!]]></title><description><![CDATA[If you know of or use Honeybadger to track your bugs, you'll appreciate this.  The fine folks at Honeybadger Industries just blew up the campaign emailing industry.]]></description><link>https://greaterdanorequalto.com/heya/</link><guid isPermaLink="false">6599ac6e5f82e80001a14669</guid><category><![CDATA[SAAS Business]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Tue, 28 Apr 2020 17:37:04 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2020/04/mail.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2020/04/mail.jpg" alt="Heya!"><p>Actually, I think it&apos;s &quot;<a href="https://www.heya.email/">Heya &#x1F44B;</a>&quot;, emoji included.</p><p>If you know of or use <a href="https://www.honeybadger.io/">Honeybadger</a> to track your bugs, you&apos;ll appreciate this. &#xA0;The fine folks at Honeybadger Industries just blew up the campaign emailing industry.</p><p>Instead of sending all your user data to Segment, and from there on to your email marketing solution &#x2013; and spending the crazy money required for that &#x2013; you can install the Heya gem, define your campaigns as Rails classes (that&apos;s right, email campaigns as code!), and you&apos;re good to go. &#xA0;Set up segments directly as properties of your user models, no need to share that info with umpteen-dozen third parties (and their third parties, and <em>their</em> third parties) just to send an email.</p><p>It&apos;s free for open source or if you have fewer than 1k users, and only $99/year afterwards, which is <em>wildly</em> affordable, especially compared to literally any other competitors.</p><p>I follow their podcast (<a href="https://www.founderquestpodcast.com/">FounderQuest</a>), and I&apos;m eagerly awaiting updates on this. It&apos;s such a great idea, and a great way to attack the problem of campaign emailing.</p>]]></content:encoded></item><item><title><![CDATA[Kicking the "For Loop" Habit]]></title><description><![CDATA["Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."]]></description><link>https://greaterdanorequalto.com/kicking-the-for-loop-habit/</link><guid isPermaLink="false">6599ac6e5f82e80001a14668</guid><category><![CDATA[Programming]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Tue, 07 Apr 2020 14:00:00 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2020/04/loop.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2020/04/loop.jpg" alt="Kicking the &quot;For Loop&quot; Habit"><p>For most people reading this article, the <a href="https://en.wikipedia.org/wiki/Imperative_programming">imperative programming style</a> comes naturally, as it&apos;s the one we were taught. &#xA0;It also very closely matches the simplest view of how a computer works: you give it a list of instructions and let it progress through that list in order until complete. &#xA0;But just because it seems simplest at first blush, doesn&apos;t mean it&apos;s as simple as it can be.</p><h2 id="be-kind-to-future-you">Be kind to future you</h2><p>When writing code, you will often have different priorities. &#xA0;Sometimes you will write code that must perform quickly; sometimes you will write code that must constrain itself to a limited memory space. &#xA0;Most frequently, you should be writing code that will be easy to read and maintain later, so clear and simple code should take priority over clever or obtuse code. <a href="https://en.wikiquote.org/wiki/Brian_Kernighan">Brian Kernighan</a> puts it best: &quot;Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.&quot;</p><p>Thankfully, by learning a little bit of <a href="https://en.wikipedia.org/wiki/Declarative_programming">declarative programming</a> (specifically, some <a href="https://en.wikipedia.org/wiki/Functional_programming">functional programming</a>), we can clean up some too-clever or too-obtuse code and make it a lot easier to read and maintain later.</p><h2 id="a-note-about-language">A note about language</h2><p>For the examples, I&apos;ll be using Javascript, since it&apos;s fantastically popular, and a language where I frequently see a lot of examples of the kind of code I&apos;ll be providing alternatives to. &#xA0;It has a lot of wonderful functional programming capabilities, but it has traditionally been taught as an imperative language, since its syntax is so close to C/C++. &#xA0;Don&apos;t let that stop you from applying these principles to other languages! &#xA0;The constructs we&apos;ll be examining exist all over.</p><h2 id="example-1-how-not-to-run-a-newsletter">Example #1: How not to run a newsletter</h2><p>Let&apos;s start off easy. &#xA0;Assume that you need to put together some HTML for a newsletter you&apos;re planning on sending out. You want a series of paragraphs with a horizontal rule between them. &#xA0;There should not be a horizontal rule before the first paragraph, or after the last. &#xA0;A traditional, imperative, for-loop-based approach might look like:</p><figure class="kg-card kg-code-card"><pre><code class="language-Javascript">const paragraphs = [
  &apos;Welcome to my newsletter!&apos;,
  &apos;Gosh, I hope somebody reads this someday.&apos;,
  &apos;Hahah, this sure is unprofessional, maybe they shouldnt!&apos;,
];

let first = true;
let html = &apos;&apos;;

for (let paragraph of paragraphs) {
  html += first ? &apos;&apos; : &apos;&lt;hr&gt;&apos;;
  html += `&lt;p&gt;${paragraph}&lt;/p&gt;`;

  first = false;
}

console.log(html);</code></pre><figcaption>A good iterative first try.</figcaption></figure><p>We&apos;re iterating over all the paragraphs we want to display and adding a horizontal rule before it, but only if it&apos;s not the first paragraph being added. &#xA0;This prevents us from having a horizontal rule before the first paragraph at the expense of tracking another variable. &#xA0;Alternatively, we could have used a for loop that iterated over the array&apos;s indexes (<code>for (let pIdx = 0; pIdx &lt; paragraphs.length; pIdx++)</code>) and checked if the index was <code>0</code>, but that doesn&apos;t reduce complexity either - we still have the extra variable, and now we have to access the array by index.</p><p>Instead, we can take advantage of a functional array method available in Javascript: <code>join()</code>:</p><figure class="kg-card kg-code-card"><pre><code class="language-Javascript">const paragraphs = [
  &apos;Welcome to my PAID newsletter!&apos;,
  &apos;By reading this newsletter, you agree to send me $5.&apos;,
  &apos;Next issue: How to charge up-front for something.&apos;,
];

const html = paragraphs.join(&apos;&lt;hr&gt;&apos;);

console.log(html);
</code></pre><figcaption>So simple! And yet...</figcaption></figure><p>Much cleaner! &#xA0;<code>join()</code> simply sticks together the array values by the provided value, giving us the same number of horizontal rules in the same place as our array example. &#xA0;But the eagle-eyed among you will likely notice a bug - the output isn&apos;t the same here. &#xA0;We haven&apos;t surrounded our paragraphs with <code>&lt;p&gt;</code> tags. &#xA0;Thankfully, there&apos;s another functional array method that we can take advantage of - <code>map()</code>:</p><figure class="kg-card kg-code-card"><pre><code class="language-Javascript">const paragraphs = [
  &apos;Welcome to my final newsletter.&apos;,
  &apos;We sure learned a lot on this journey, didnt we?&apos;,
  &apos;Remember, you still owe me $5.&apos;,
];

const html = paragraphs
  .map((paragraph) =&gt; `&lt;p&gt;${paragraph}&lt;/p&gt;`)
  .join(&apos;&lt;hr&gt;&apos;);
    
console.log(html);</code></pre><figcaption>That&apos;s better.</figcaption></figure><p>All <code>map</code> does is it iterates over the array, applying the function we provide it to every member, and returns the new array. &#xA0;Essentially, once <code>map</code> is complete, we have an array of our paragraphs - surrounded by <code>&lt;p&gt;</code> tags - that we then feed into the <code>join</code> method from before. &#xA0;You&apos;ll want to be reasonably familiar with <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Javascript&apos;s arrow-function syntax</a>, but there&apos;s nothing tricky going on here.</p><p>Once you know how <code>map</code> and <code>join</code> work, this example is <em>far</em> easier to read than the first one. &#xA0;There are fewer variables to keep track of, no looping logic to mentally evaluate, and fewer conditionals to parse. &#xA0;In fact, it reads fairly closely to English: &quot;Start with our list of paragraphs, wrap them in <code>&lt;p&gt;</code> tags, and join them with <code>&lt;hr&gt;</code> tags. &#xA0;Got it.&quot; &#xA0;This code will be immensely simpler to maintain in the future, should you need to modify how paragraphs are displayed or broken up.</p><h2 id="example-2-departments-before-departing">Example #2: Departments before departing</h2><p>Pretend it&apos;s Monday. &#xA0;You&apos;ve just gotten back from the break room, cup of coffee in hand, ready to start the day. &#xA0;Suddenly, your boss shows up out of nowhere. &#xA0;&quot;Debra!&quot; he cries. &#xA0;(Pretend your name is Debra.) &#xA0;&quot;Debra, I need to know how much the Garden department sold over the weekend and I only trust <strong>you</strong> to figure it out!&quot;</p><p>So. &#xA0;Typical Monday.</p><p>Thinking iteratively at first, you come up with the following solution:</p><figure class="kg-card kg-code-card"><pre><code class="language-Javascript">const sales = [
  { department: &apos;Garden&apos;, price: 19.99 },
  { department: &apos;Automotive&apos;, price: 6.49 },
  { department: &apos;Garden&apos;, price: 55.55 },
  { department: &apos;Beach&apos;, price: 1.95 },
];

let total = 0;

for (let sale of sales) {
  if (sale.department === &apos;Garden&apos;) {
    total += sale.price;
  }
}

console.log(total);</code></pre><figcaption>Additive and iterative.</figcaption></figure><p>Not bad! &#xA0;Gets the right number, and it&apos;s not that complicated. &#xA0;However, you know your boss, and you know that he&apos;s going to want some modifications as soon as he sees it, so it&apos;d be good to have something simple and easy to modify when he does. &#xA0;Taking a quick swing at it, you come up with:</p><figure class="kg-card kg-code-card"><pre><code class="language-Javascript">const sales = [
  { department: &apos;Garden&apos;, price: 19.99 },
  { department: &apos;Automotive&apos;, price: 6.49 },
  { department: &apos;Garden&apos;, price: 55.55 },
  { department: &apos;Beach&apos;, price: 1.95 },
];

const functionalTotal = sales
  .filter((sale) =&gt; sale.department === &apos;Garden&apos;)
  .reduce((total, sale) =&gt; total + sale.price, 0);

console.log(functionalTotal);</code></pre><figcaption>A little improved.</figcaption></figure><p>Nice! &#xA0;That&apos;s a bit simpler, and it takes advantage of some neat functional Javascript. &#xA0;<code>filter</code> is an array method that takes a function as an argument and will return an array composed only of the entries of the original array that return <code>true</code> when passed to the function. &#xA0;In our case, we&apos;re just checking the make sure that the department of the sale is <code>Garden</code>. &#xA0;Then, we use <code>reduce</code>, an array method that is a <em>little</em> trickier, but basically just takes a function and a starting value, and the function has the current total and the array entry as parameters. &#xA0;This lets us add the price of all entries to the total and return it as the result.</p><p>However, it&apos;s not the clearest, is it? &#xA0;You have to do a fair bit of reading to figure out what each line does. &#xA0;We could add some comments to make things clearer, but since we&apos;re passing functions to <code>filter</code> and <code>reduce</code>, and function names are self-documenting, we have a slightly more elegant solution to hand:</p><figure class="kg-card kg-code-card"><pre><code class="language-Javascript">const sales = [
  { department: &apos;Garden&apos;, price: 19.99 },
  { department: &apos;Automotive&apos;, price: 6.49 },
  { department: &apos;Garden&apos;, price: 55.55 },
  { department: &apos;Beach&apos;, price: 1.95 },
];

const isGarden = (sale) =&gt; sale.department === &apos;Garden&apos;;
const addPrice = (total, sale) =&gt; total + sale.price;

const total = sales.filter(isGarden).reduce(addPrice, 0);

console.log(total);</code></pre><figcaption>Much easier to read.</figcaption></figure><p>Just as you put the finishing semicolon on there, your boss rushes past your desk, hurriedly shouting &quot;Actually-I-need-all-the-outdoor-departments-summed-together-thanks-Debra!&quot; before he shuts himself into a conference room with what looks like federal auditors? &#xA0;Oh well, above your pay grade, you figure, and get back to your program. &#xA0;After only a little tweaking, you settle on:</p><figure class="kg-card kg-code-card"><pre><code class="language-Javascript">const sales = [
  { department: &apos;Garden&apos;, price: 19.99 },
  { department: &apos;Automotive&apos;, price: 6.49 },
  { department: &apos;Garden&apos;, price: 55.55 },
  { department: &apos;Beach&apos;, price: 1.95 },
];

const isGarden = (sale) =&gt; sale.department === &apos;Garden&apos;;
const isBeach = (sale) =&gt; sale.department === &apos;Beach&apos;;
const isOutdoor = (sale) =&gt; isGarden(sale) || isBeach(sale);
const addPrice = (total, sale) =&gt; total + sale.price;

const total = sales.filter(isOutdoor).reduce(addPrice, 0);

console.log(total);</code></pre><figcaption>Easy to modify!</figcaption></figure><p>That conditional in your original iterative attempt would have started looking a little care-worn now, and would have started fraying intensely with any more departments added in, but this pattern remains pretty clear with as many departments as you want to add. &#xA0;Plus, all those <code>isDepartment</code> methods are pretty similar and could be moved to and exported from a module to keep this file clean.</p><p>After running it a couple times in succession to see if you can catch some stray cosmic rays hitting your processor and causing it to give out an incorrect calculation, your boss slouches out of the conference room. &#xA0;&quot;Hey Debra, nevermind that calculation. &#xA0;Actually, you may as well head home for the day. &#xA0;Just... make sure to take anything with you that you want to keep.&quot;</p><p>Sweet! &#xA0;A day off!</p><h2 id="the-right-tool">The right tool</h2><p>Now, it&apos;s not that you can&apos;t make clean and maintainable iterative code. &#xA0;It&apos;s just that functional code leads very naturally to clean and maintainable code. &#xA0;It forces you to break down your problems into smaller, discrete chunks, which are easier to reason about than one big loop. &#xA0;To use a ridiculous analogy, you could use a sports car to transport building materials, but you&apos;re going to have to make a lot more trips than with a truck. &#xA0;And to use an even more ridiculous analogy, you could use a truck to set a landspeed record, but you&apos;re going to have to strap a <em>lot</em> of propellant on there, and it&apos;ll get real dangerous, real quick.</p><p>The point is, using the right tool can make your job significantly easier. &#xA0;When your job is writing code, you will most frequently be prioritizing writing clean, maintainable code. &#xA0;Using a coding paradigm that lends itself naturally to that priority will benefit you in the long run.</p><p>So the next time you find yourself reaching for a for loop, consider a functional alternative, and do future you a favour.</p><hr><p>Hey! &#xA0;Are you a SaaS founder or a founder-to-be and wish you could skip all the boilerplate that comes from starting a new SaaS app? &#xA0;Well I&apos;m working on a <a href="https://nodewood.com/">SaaS starter kit called Nodewood</a> that might interest you! &#xA0;Save weeks or months of time and start writing business logic now!</p>]]></content:encoded></item><item><title><![CDATA[What Happens When You Don't Pick Your Users]]></title><description><![CDATA[<p>On the most-recent episode of <a href="https://artofproductpodcast.com/episode-91">The Art Of Product Podcast</a>, Derrick Reimer and Ben Orenstein chat with Rahul Vohra, co-founder and CEO of <a href="https://superhuman.com/">Superhuman</a> - the fastest email experience ever made. They talk about a great many things &#x2013; and you should definitely go and listen to catch them all</p>]]></description><link>https://greaterdanorequalto.com/what-happens-when-you-dont-pick-your-users/</link><guid isPermaLink="false">6599ac6e5f82e80001a14667</guid><category><![CDATA[Getting Started]]></category><category><![CDATA[SAAS Business]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Mon, 17 Jun 2019 01:36:32 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2019/06/picking-fruit.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2019/06/picking-fruit.jpg" alt="What Happens When You Don&apos;t Pick Your Users"><p>On the most-recent episode of <a href="https://artofproductpodcast.com/episode-91">The Art Of Product Podcast</a>, Derrick Reimer and Ben Orenstein chat with Rahul Vohra, co-founder and CEO of <a href="https://superhuman.com/">Superhuman</a> - the fastest email experience ever made. They talk about a great many things &#x2013; and you should definitely go and listen to catch them all &#x2013; but I want to focus in on one important point that they spend a bit of time talking about near the start of the podcast - the importance of picking your users.</p><p>If you want to go start trialing Superhuman right now, you can&apos;t. &#xA0;They&apos;re invite-only, and may continue being invite-only for a long time. &#xA0;They deliberately chose that go-to-market strategy, and consider it a strong competitive advantage:</p><blockquote>&quot;Most companies, especially productivity companies, make the cardinal sin of making a thing and then just throwing it over the wall and seeing what happens. And the thing is, if you do that, you get two very fundamental problems. &#xA0;Number one, you don&#x2019;t get to pick your users, and that has its own consequences, and number two, you can&#x2019;t responsibly work on their feedback.&quot;</blockquote><p>One of the major problems with not being able to pick your users is how it can drastically slow your growth, which he expands on:</p><blockquote>&quot;The ... consequence of not picking &#xA0;your users is that it dampens your virality and your NPS. &#xA0;Let&#x2019;s say that of 10k people who join in a traditional launch, only 500 of them are the type of person that you really wanted, your upper bound for your net promoters is 500/10,000, which is really really tiny.</blockquote><p>In addition to slowing your userbase growth, it slows your learning and product development growth:</p><blockquote>&quot;Now the other side of this equation, and in a sense, this is almost actually even worse, is that you cannot responsibly work on their feedback. And this is a thing that hits productivity companies particularly hard, because the surface area of what we have to build is just so huge, I mean you guys could imagine what we&#x2019;ve gone through in building an email experience that&#x2019;s not only as good as Gmail, but in fact better, such that people not only use it, but they love it, it&#x2019;s many many many years of effort. &#x2026;If you just launched a thing, threw it over the wall, and people would try it, you don&#x2019;t get to fix their bugs in time. In the end, you get a reputation for being slow and not listening to users, and ultimately they end up churning out.</blockquote><p>Imagine those 9500 people out of the 10,000 in the example above who aren&apos;t really your target market, but that you&apos;ve allowed in to trial your app anyway. They&apos;re none of them likely to pay you money for any significant amount of time, but they&apos;ll all have opinions about the quality of your service. &#xA0;They&apos;ll have been left wanting, and that&apos;s the story they&apos;ll tell, and they&apos;ll drown out the 500 people that really, passionately love it. &#xA0;Rahul puts it really well:</p><blockquote>&quot;So by doing it the way we&#x2019;ve done it, you both get to pick your users, and you get time to work on their feedback. And by picking your users, you get more relevant feedback, you learn faster, you increase NPS, you get more authentic genuine virality with the community that matters most to you, and by working on the feedback really fast, you get a reputation for listening really closely and also maximizing retention, and most importantly, that creates a sustainable word-of-mouth growth engine. &#xA0;And if you look at the heart of any successful growth story, the core driver is always word-of-mouth.</blockquote><p>Superhuman has done absolutely no active marketing &#x2013; their total marketing spend is $0 &#x2013; and yet their growth has been phenomenal. Their primary driver has been word-of-mouth: 70% or more of their new weekly customers come from word of mouth from the previous <em>week</em>. Picking their users has enabled them to create a word-of-mouth engine that is driving hordes of passionate traffic into their waiting arms.</p><p>This isn&apos;t the only reason to choose your users (and if you&apos;re looking for more, you can always read about why <a href="https://greaterdanorequalto.com/you-probably-have-too-many-free-trials/">You Probably Have Too Many Free Trials</a>), but it is the most-compelling way I&apos;ve heard it expressed so far. &#xA0;And this is just about eight minutes of the full episode! &#xA0;Ben and Derrick put some killer questions to Rahul, who has some really well thought-out answers about engineering &quot;delight&quot; into your app from first principles, really important metrics that they&apos;re tracking (and what those numbers are, for those statistics junkies out there), pricing research and philosophy, and how to decide what to work on, among others.</p><p>If you&apos;re not already listening to <a href="https://artofproductpodcast.com/">The Art of Product</a>, this is a great episode to jump in on. It&apos;s not their standard fare &#x2013; they don&apos;t usually do interviews, and instead detail their journeys while building and launching software companies &#x2013; but they always have keen insights and interesting things to learn, and this episode is no exception in that regard. </p>]]></content:encoded></item><item><title><![CDATA[You Probably Have Too Many Free Trials]]></title><description><![CDATA[You've run the numbers.  Plenty of people are hitting your marketing site, plenty of people are signing up for free trials.  The problem is conversion - maybe 3% of your trial users convert to paying user.  Maybe less.

You probably have too many free trials.]]></description><link>https://greaterdanorequalto.com/you-probably-have-too-many-free-trials/</link><guid isPermaLink="false">6599ac6e5f82e80001a14666</guid><category><![CDATA[Trial to Paid Conversion]]></category><category><![CDATA[SAAS Business]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Mon, 27 May 2019 03:39:00 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2019/05/too-much.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2019/05/too-much.jpg" alt="You Probably Have Too Many Free Trials"><p>You&apos;ve run the numbers. &#xA0;Plenty of people are hitting your marketing site, plenty of people are signing up for free trials. &#xA0;The problem is conversion - maybe 3% of your trial users convert to paying user. &#xA0;Maybe less.</p><p>You tried playing around with the payment form. &#xA0;That didn&apos;t work. &#xA0;You tried adding an onboarding tutorial. &#xA0;<a href="https://greaterdanorequalto.com/dont-waste-time-on-onboarding/">That didn&apos;t work.</a> &#xA0;You even tried adding a phone number to your help section. &#xA0;That moved the needle a bit, but not nearly enough! &#xA0;Clearly you&apos;re missing something, something that will make a real dent in this conversion rate. &#xA0;But what it is?</p><p>You probably have too many free trials.</p><h1 id="set-expectations">Set Expectations</h1><p>It might seem counter-intuitive, the idea of reducing your number of trials. &#xA0;You worked so hard to get that traffic and get those trials. &#xA0;Why throw all that work away? Well, let&apos;s <a href="https://en.wikipedia.org/wiki/Reductio_ad_absurdum">examine an extreme case</a>, to help prove the point.</p><p>Pretend you&apos;ve written some invoicing software, designed to allow your users to send invoices and receive payment. &#xA0;Thing is, you can only send invoices by email, and you can only accept payment through PayPal after a 30-day anti-fraud confirmation period. &#xA0;Oh, and you can only send invoices to people in New Zealand. &#xA0;It&apos;s a tax thing, don&apos;t ask.</p><p>Now, in this example, your website doesn&apos;t mention any one of these facts because you&apos;re scared about chasing off potential trial users. &#xA0;Since you&apos;re optimizing for trials, that&apos;s what you get. &#xA0;Just hundreds and hundred of trials pouring into your system every month. &#xA0;This would be great, except that your Trial-to-Paid Conversion rate is hovering around 1%. &#xA0;Considering you&apos;re spending a bundle of money on an affiliate program to get a good chunk of those trials, that&apos;s not sustainable.</p><p>So what do you do? &#xA0;You could try all kinds of things to try to raise that percentage, but those efforts will be unfocused and misleading. &#xA0;Your real problem isn&apos;t your Trial-to-Paid Conversion rate, your real problem is that <em>you don&apos;t know what your real problem is.</em></p><p>In order to even have a chance of knowing what you need to do to improve your conversion rate, <a href="https://greaterdanorequalto.com/if-you-dont-respect-your-users-you-dont-deserve-their-respect/">you need to know your trial users and the problems they&apos;re encountering</a>. With so many trial users with so many different intents and expectations, it&apos;s really difficult &#x2013; if not impossible &#x2013; to properly identify the core problems that need fixing. &#xA0;In fact, it&apos;s arguable that your Trial-to-Paid Conversion rate isn&apos;t even 1%, because the trials you&apos;re accepting haven&apos;t been properly qualified &#x2013; they&apos;re almost no better than random people off the street.</p><p>If you play poker, think of it like Texas Hold &apos;Em. &#xA0;If you played every hand set in front of you, you&apos;d lose a lot of money on the bad hands. &#xA0;That&apos;s why pros only play hands with a good percentage of winning, to conserve resources for the best opportunities to make money. &#xA0;(If you don&apos;t play poker, please skip the preceding paragraph.)</p><p>But maybe it still seems a bit academic to you. &#xA0;Who cares if some made-up number is higher or lower? If 10 people sign up, who cares if they came from 100 trials or 1,000? &#xA0;What if you just don&apos;t give a good gosh-dang what that number on your spreadsheet says? &#xA0;Well, it turns out that there are:</p><h2 id="all-kinds-of-great-reasons-to-pre-qualify-your-trials">All kinds of great reasons to pre-qualify your trials</h2><p>Surprise! &#xA0;Turns out we&apos;re doing this for a reason. Actually a whole bunch of reasons. &#xA0;Let&apos;s check &apos;em out.</p><h3 id="building-trust">Building trust</h3><p>When a visitor first hits your site, they likely have a minimum amount of trust in you. &#xA0;It&apos;s possible they found out about you because they&apos;re ardent listeners of <a href="https://artofproductpodcast.com/">your startup podcast</a>, but it&apos;s more likely that they found you off Google or from an article on your blog. Given that they don&apos;t know a whole lot about you, they likely don&apos;t trust you all that much, either. &#xA0;Gaining that trust is essential in order to get them to sign up for your service, especially if you require a credit card up-front.</p><p>Setting expectations about what&apos;s involved in using your service is a great way to earn that trust. &#xA0;Sure, you might lose out on a few potential trials from users who don&apos;t meet those qualifications (more about what to do about that later), but you might actually <strong>increase</strong> the number of trials you get from users who <strong>do</strong> meet those qualifications. &#xA0;Since those users are way more likely to convert, it&apos;s a big win.</p><h3 id="quicker-conversions">Quicker conversions</h3><p>Properly pre-qualified trials have had a great many of their objections addressed before even starting their trial, and so don&apos;t need to spend precious trial time trying to find answers to those questions. &#xA0;This means they tend to convert quicker, which means you have to spend less time performing high-touch sales or customer support, and you begin earning your recurring revenue sooner.</p><h3 id="easier-to-predict">Easier to predict</h3><p>When trying to run metrics and make predictions, you&apos;ll find that it is <strong>much</strong> easier to predict the Trial-to-Paid Conversion rate of carefully qualified trials, whereas unqualified trials will have a much broader range. &#xA0;When trying to calculate things like monthly run rate, customer lifetime value, or if you can afford to keep acquiring customers at your current spend rate, knowing this number more accurately can be invaluable.</p><h3 id="avoiding-being-spread-too-thin">Avoiding being spread too thin</h3><p>Having a lot of trials means having less time for each. &#xA0;This significantly reduces the amount of care and conversion efforts you can put into helping each trial, <em>especially</em> if you offer concierge onboarding or if your application requires a lot of hands-on sales or customer service during your trial period.</p><p>This can be mitigated by automating some of your conversion activities (like setting up automated lifecycle emails, something we&apos;ll talk about in a later article) and creating a clear, accurate, and up-to-date knowledge base for you to refer customers to when they have questions. &#xA0;Additionally, you can set up community tools like a forum or Slack/Discord server where your users can help each other (though those have an ongoing cost of their own).</p><p>That said, all of these activities are investments, requiring up-front work before they&apos;ll pay off, and if you already have too many trials to spend sufficient time on each already, you may find it difficult to find the time to spend building these tools.</p><h3 id="selling-or-taking-investment">Selling or taking investment</h3><p>Aside from just having inspiring metrics to post on <a href="https://www.indiehackers.com/">Indie Hackers</a>, you&apos;re going to want to have a solid conversion rate if you ever want to sell your company or take investment. &#xA0;A good rule of thumb for conversion rates is <a href="https://www.startupsfortherestofus.com/episodes/episode-434-saas-kpis-you-should-focus-on-from-day-1">between 5-15% if you don&apos;t require a credit card up front, and between 40-60% if you <strong>do</strong> require one</a>. &#xA0;Your New Zealand-centric, 30-day delay, Paypal-only, email-only invoice company will never hit those numbers so long as you&apos;re not properly qualifying your trials. Investors will notice, and while not every investor will be a stickler for the rules, anything hinky could cause them to back off or reduce their offer.</p><p>Okay, so if you <em>are</em> in a situation where you&apos;re letting in a lot of unqualified trials (which you now know why is a bad thing), what exactly can you do? &#xA0;Thankfully, there are a variety of options that can be explored, with a range of time investment and bravery required.</p><p>Bravery? &#xA0;That&apos;s right. You&apos;re going to see trial numbers <em>go down,</em> and important metrics going down can be scary! &#xA0;But you have to hang on and evaluate what happens to your trial conversions, your customer LTV, your churn, and all the follow-on numbers before you balk. &#xA0;With some careful effort and a little luck (which is required for nearly every serious endeavour), you can lower the number of poorly-qualified trials you accept while seriously improving the health of your business.</p><h2 id="how-to-pre-qualify-customers">How to pre-qualify customers</h2><h3 id="be-clear-about-your-service">Be clear about your service</h3><p>Let your customers know about your service, warts and all! I mean, obviously don&apos;t tell them about the weird bubble-gum and duct-tape behind-the-scenes scripts you have that run statistics calculations every night. Every service of some note has technical debt they&apos;d love to get around to but haven&apos;t found time yet, but that&apos;s not anything that customers need to know about. &#xA0;You mainly need to let them know about the features you have as well as the ones you don&apos;t have.</p><p>There are good ways to do this, and there are bad ways to do this. &#xA0;A bad way would be to list on your front page, above the fold, all the countries you <strong>don&apos;t</strong> offer service to. &#xA0;Another bad way would be to make the information available, but buried deep in the fine print of a hard-to-find knowledge base article. &#xA0;But a good way would be to turn a weakness into a strength.</p><p>For the example above of the invoicing software that only works in New Zealand, well, that&apos;s a differentiator you can market on. &#xA0;The Big Guys offer service internationally and focus on the USA or EU. &#xA0;New Zealand won&apos;t ever be a priority to them, but it is your <strong>top</strong> and <strong>only</strong> priority. &#xA0;Let people know that!</p><p>That&apos;s a little harder to do with your other limitations, but still possible. &#xA0;Instead of explaining sheepishly over customer service emails that users will have to wait 30 days to accept payments to ensure nobody is scamming anybody, you can boast about your commitments to fighting fraud on the sign-up form. &#xA0;That said, this is more of a product limitation you would be better-served by working on fixing than marketing. &#xA0;You have to be able to tell the difference.</p><p>Don&apos;t starve your users for information, either. &#xA0;Offer screenshots and video explaining your most-valuable offerings, and PDF whitepapers about successful customer cases if you have them. &#xA0;You don&apos;t want to clutter your home page, but that&apos;s what links are for. &#xA0;Make sure the information is available for interested researchers. &#xA0;Frequently, the people browsing your site won&apos;t be actual purchasers, but people looking to convince their bosses to purchase. &#xA0;Make sure to give those people ammunition.</p><h3 id="be-up-front-about-your-requirements">Be up-front about your requirements</h3><p>If you bought a video game and got it home and installed, only to discover that it requires a video card released <em>literally yesterday </em>in order to play at a decent framerate, you&apos;d be upset, right? Well, the same goes for users of your service. If you can only accept payments through PayPal, don&apos;t hide that fact. Again, you don&apos;t have to advertise it front and centre, but it shouldn&apos;t be obscured until after your customer is five days into their trial and trying to accept payment on an invoice.</p><h3 id="be-up-front-about-customer-investment">Be up-front about customer investment</h3><p>If it takes your customers a solid forty minutes to fully set up their trial account, don&apos;t go around promising them &quot;setup in a snap&quot; or similar lies. By being honest (or at least reasonably honest, you don&apos;t have to list the exact average number of minutes required), you allow your customers to plan their investment in your trials. Someone expecting a ten-minute trial might kick things off just before a meeting or getting back from lunch. &#xA0;Going beyond that might mean they wander off, <a href="https://i.imgur.com/DXKUA.gif">never to return</a>.</p><p>If you have a service that has an API that people integrate with, you can save them a lot of time by letting them know what&apos;s involved in that integration. &#xA0;Make your developer docs publicly available instead of behind a paywall or on a frequently-outdated PDF that you email to customers that remember to ask. &#xA0;This can allow people to schedule their trial when they have time to perform the integration, as well as increasing trust, along with the likelihood that they&apos;ll begin a trial at all.</p><p>Be up-front about your prices! Sure, for Enterprise levels where you need to hammer out custom service agreements and do custom paperwork, you can require a phone call/email/videoconference/carrier pigeon. &#xA0;But for &quot;regular business&quot; levels, make sure that your prices are available and the differences between tiers are clear and easily understandable. I&apos;ll be writing more on creating clear &amp; effective pricing tiers at a later date, but at a minimum, make sure your prices are available and sensible.</p><h3 id="build-a-knowledge-base">Build a knowledge base</h3><p>Whether this takes the form of a simple FAQ page or an in-depth, tagged, searchable, illustrated, accessibility-oriented, mail-orderable knowledge base system, you should make the answers to common questions and objections available publicly. Not only will this help you qualify customers who might have limitations that they&apos;d otherwise have to take a chance on, but it will help build trust with customers who <strong>do</strong> qualify.</p><p>Actually, it helps build trust with customers who don&apos;t qualify as well. &#xA0;There are all kinds of examples I can personally think of where a service wasn&apos;t available in Canada, and I was able to come back and check on them (or sign up for a mailing list or follow them on Twitter - more on that later!) until they did finally launch.</p><p>A well-written knowledge base also helps reduce your customer service load as well. Many customers will choose to self-help, and if they can search and find their answer already written for them on your site, that saves both of you potentially lots of time and effort. Even for customers that don&apos;t choose to self-help, you can email them a link to the appropriate KB article, which is way quicker than writing out the same answer over and over. &#xA0;Plus, you can update the article with new information as it becomes available, improving its value over time.</p><h3 id="consider-a-chat-widget">Consider a chat widget</h3><p>Some people love &apos;em, some hate &apos;em, but they can be very effective if you have the time to tend to them. Getting real-time feedback on questions or objectives you may have is very convincing to a lot of people, but if you don&apos;t have the free time to reply (or are in a different time-zone than your target market), the fact that there is a chat widget <em>right there</em> and that it doesn&apos;t seem to <em>do anything</em> can be more frustrating that fulfilling.</p><p>Many chat widgets now integrate into Slack, letting you know with <code>@channel</code> announcements when someone has a question. &#xA0;If you have a remote team already using Slack, spread out over a few different time zones, this can be an ideal way to make sure that the chat widget is always attended.</p><h3 id="consider-requiring-a-credit-card">Consider requiring a credit card</h3><p>Okay, this is the big scary one. While requiring a credit card can seriously reduce your Visit-to-Trial Conversion rates (<a href="https://www.startupsfortherestofus.com/episodes/episode-434-saas-kpis-you-should-focus-on-from-day-1">from 10-20% down to 0.5-2%</a>), it definitely signifies serious intent, and if you don&apos;t have a strong trial conversion process in place, you may not be converting too many customers that didn&apos;t have serious intent in the first place.</p><p>While those numbers may be spooky, this is also the biggest &quot;win&quot; in terms of qualifying your trials. &#xA0;If someone enters a credit card, it indicates that you are not only dealing with someone who is seriously considering purchasing your service, you&apos;re also dealing with someone who is <strong>capable</strong> of it. &#xA0;Very frequently, it can be difficult to ensure that you are in contact with someone who is not just interested in your software, but has the authority to spend money on it. If they already have or have secured access to a credit card, you can be almost guaranteed that they are authorized to pull the trigger if you convince them.</p><p>One thing you&apos;ll need to be certain of before going down this route is that you have sufficient information on your sales site for potential customers to make that that commitment. You need to make the value of your service clear before asking for a credit card, or people will bounce off you into low-earth orbit, never to be seen again. If you&apos;ve already implemented the stuff in the rest of this article then you&apos;re off to a good start, but there&apos;s always room to improve.</p><p>It&apos;s also important to keep in mind that this suggestion isn&apos;t always strictly necessary! &#xA0;(In point of fact, none are <em>strictly necessary</em>, but many of them can be good to evaluate, at least.) Not every audience or service will need action this drastic, and there&apos;s research showing that having credit card-less trials results in higher overall conversion. But if you&apos;ve gotten yourself into a situation where you have incredibly poorly-qualified trials, it may call for drastic action. Growing your trial numbers doesn&apos;t really help if those trials aren&apos;t likely to convert. &#xA0;Get your trial quality under control, then go back to trying to grow those numbers.</p><h2 id="don-t-throw-those-bad-fit-trials-away">Don&apos;t throw those &quot;bad fit&quot; trials away</h2><p>Just because some of your users may not be ready to start a trial (at least not one they&apos;re likely to convert from), doesn&apos;t mean you should throw them away. While some visitors will bounce off your site because they&apos;ve determined that they&apos;re a bad fit for you, a great many of them just aren&apos;t ready for you <strong>yet.</strong> They may be anticipating an upcoming business need, or waiting for you to hit that particular combination of features they require, or simply be in the process of getting educated about your industry, and don&apos;t yet recognize that they need you.</p><p>Offer alternative conversion avenues for visitors like this. &#xA0;Set up a mailing list, Twitter, Facebook, Slack, Discord, YouTube channel, or heck, even Twitch stream, and point your less-engaged visitors that way. Make sure they have the ability to continue to engage with you as you grow, and when they&apos;re ready to have a go, they&apos;ll remember where you are and what you do.</p><p>You want to try to direct your visitors to the most-appropriate location, based on their level of interest and likelihood of converting. &#xA0;If they&apos;re ready to rock and roll, send them to the signup page. &#xA0;If they need more information, make sure you have the required information easily-available on-site and in supplemental locations (YouTube channels, Medium posts, etc). If they require more hands-on interaction, consider offering demos or running webinars. And if they&apos;re just kicking the tires, make sure to &quot;give them your card&quot; so they can come back when they&apos;re more serious.</p><h2 id="improving-from-here">Improving from here</h2><p>After a significant round of improvements, KiwiCharge, as you&apos;ve now re-christened your New Zealand-centric invoice sending service, has some much healthier numbers. Instead of hundreds of trials every month, you pull in around a hundred. &#xA0;You&apos;ve significantly lowered the affiliate payout for trials, but increased the payout for converted trials, and the quality of the visitors they&apos;ve sent your way has improved substantially. You&apos;re still not requiring credit cards, but your Trial-to-Paid Conversion rate is hovering around 9%. Better than that, your absolute number of conversions is actually higher than before! Combine this with a lower cost per trial and a lower churn rate from users encountering frustrating limits months after they&apos;ve signed up, and your financials have never looked better.</p><p>You can be confident now that a sudden spike in visitors from a press release or popular article will properly segment the traffic into trials, newsletters, and your very popular Twitch stream, and won&apos;t lower your Trial-to-Paid Conversion rate for that cohort of users significantly. Even better, you&apos;re starting to get coherent feedback from the users who don&apos;t convert: Only being able to accept payments from PayPal is a real pain point, so you&apos;ve prioritized your other gateway integrations, and should be launching <a href="https://stripe.com/">Stripe</a>, <a href="https://www.chargebee.com/">Chargebee</a>, and <a href="https://www.authorize.net/">Authorize.net</a> within a month.</p>]]></content:encoded></item><item><title><![CDATA[The Slippery Slope of In-Product Messaging]]></title><description><![CDATA[Matthew Ström, design lead at Bit.ly, is also picking up the torch and warning about in-product messaging (aka what a lot of people think about when they thing about user onboarding).]]></description><link>https://greaterdanorequalto.com/the-slippery-slope-of-in-product-messaging/</link><guid isPermaLink="false">6599ac6e5f82e80001a14665</guid><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Mon, 13 May 2019 00:49:51 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2019/05/slippery-slope.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2019/05/slippery-slope.jpg" alt="The Slippery Slope of In-Product Messaging"><p><a href="https://matthewstrom.com/">Matthew Str&#xF6;m</a>, design lead at <a href="https://bitly.com/">Bit.ly</a>, is also <a href="https://matthewstrom.com/writing/wayfinding/">picking up the torch and warning about in-product messaging</a> (aka what a lot of people think about when they think about user onboarding). &#xA0;He correctly calls out the potential opportunity cost of getting locked-in to a bad design when using in-product messaging to fix things, but takes a different tack about it than I did. &#xA0;His point is less about calcifying a bad design with hard-to-change tooltips, and more about obscuring the fact that it&apos;s a bad design decision in the first place.</p><p>Frequently, these tools are used by marketing departments to pursue marketing goals. &#xA0;When one of those goals is &quot;conversion&quot; and your product/development team is not also given that same goal, your marketing team can use these tools to shore up problems without the development team ever getting involved. &#xA0;This <em>seems </em>great, except for the fact that it&apos;s a band-aid fix. &#xA0;Your product team is now unaware of the problem in the first place, and can&apos;t resolve it. &#xA0;Because they never fix it, the tool-tip bandaids become a permanent fixture and further features now have to have them to not stand out. &#xA0;Your product is permanently more complex and the underlying usability issues remain and are perpetuated forward.</p><p>I heartily recommend reading the article for yourself. &#xA0;He goes into some wonderful real-world examples of where this kind of thinking leads to, some that I&apos;ve experienced and continue to be frustrated about, others that are new to me.</p>]]></content:encoded></item><item><title><![CDATA[If You Don't Respect Your Users, You Don't Deserve Their Respect]]></title><description><![CDATA[It's easy to get lost in metrics.  You've got A/B tests, time series tests, keyword tests, every kind of test you can think of.  You're measuring engagement, clickthrough, funnel progress, time-on-site, everything.  But do you really know who your customers actually are? Do you really care?]]></description><link>https://greaterdanorequalto.com/if-you-dont-respect-your-users-you-dont-deserve-their-respect/</link><guid isPermaLink="false">6599ac6e5f82e80001a14664</guid><category><![CDATA[SAAS Business]]></category><dc:creator><![CDATA[Dan Hulton]]></dc:creator><pubDate>Sat, 11 May 2019 20:02:59 GMT</pubDate><media:content url="https://greaterdanorequalto.com/content/images/2019/05/respect.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://greaterdanorequalto.com/content/images/2019/05/respect.jpg" alt="If You Don&apos;t Respect Your Users, You Don&apos;t Deserve Their Respect"><p>It&apos;s easy to get lost in metrics. &#xA0;You&apos;ve got A/B tests, time series tests, keyword tests, every kind of test you can think of. &#xA0;You&apos;re measuring engagement, clickthrough, funnel progress, time-on-site, <strong>everything</strong>. &#xA0;You know every number related to your customer by heart, backwards, and blindfolded. &#xA0;But do you really know who your customers <strong>actually</strong> are? &#xA0;Do you really care?</p><p>It&apos;s very easy to argue for things that increase profits. &#xA0;Everybody loves profits. &#xA0;But it can often be short-sighted. &#xA0;For instance, it became par for the course to for a customer support call to go to a call centre in a country that offered competitive pricing. &#xA0;The agents you spoke with were rarely actually part of the company you were calling and instead were handling support for multiple companies at once, a stack of binders with each company&apos;s scripts and regulations at their side. &#xA0;They were almost never knowledgable or empowered enough to solve anything other than the most rudimentary problems, and required multiple levels of escalation to even have a hope of getting anything accomplished.</p><p><a href="https://www.forbes.com/sites/thomasdichter/2019/03/30/call-centers-return-to-the-u-s-more-companies-get-the-link-between-customer-service-and-profit/#360fbae814ff">But those call centres, and those jobs, are moving back</a>. &#xA0;Never mind that it&apos;s much more expensive to run a customer support center in the USA - there&apos;s more to it than just simple cost. &#xA0;Customers that are well taken care of are more loyal, stay longer, tend to pay more, and recommend you to their friends and family more frequently. &#xA0;These things can be more difficult to track than a simple cost-saving calculation, but nonetheless are incredibly powerful. &#xA0;Maybe you&apos;re spending more on customer service than you were when it was outsourced, but the business is growing again, and people aren&apos;t spending time and energy <a href="http://danhulton.com/2012/11/fine-ebay-heres-your-two-dollars-i-hope-you-choke-on-it/">writing hit pieces against you</a>.</p><h2 id="i-guess-we-just-throw-out-all-these-numbers-huh">I guess we just throw out all these numbers, huh?</h2><p>There&apos;s no need to be so dramatic. You put good time and effort into setting up that data-collection empire, and it would be a shame for it to go to waste. &#xA0;But it would also be a shame to let your customers go to waste. &#xA0;The key, as in all things, is balance.</p><p>In the past, I have argued for shorter trials, or even removing your paid trial entirely, and moving to a money-back guarantee. &#xA0;I still stand by these as potentially good ideas, depending on what stage you&apos;re at and what goals you have for growth. <a href="https://news.ycombinator.com/item?id=19809830">Then I was reminded that you can be too aggressive with this.</a> &#xA0;Every customer you turn away because you have a paid trial instead of a free one, or because you require a credit card, or because your trial period is shorter than they&apos;re comfortable with, is a customer that you can&apos;t interact with, and ultimately, can&apos;t sell to.</p><p>If you&apos;re not interacting with customers and potential customers because that&apos;s &quot;not scaleable&quot;, you&apos;re missing out on potentially critical feedback about your service, and potentially huge amounts of sales. &#xA0;Don&apos;t automate yourself away from customers completely.</p><h2 id="so-should-i-be-doing-big-up-front-sales">So should I be doing big up-front sales?</h2><p>If you mean steaks and scotches, &quot;business trips&quot; to Vegas, that kind of thing, probably not. &#xA0;Not unless you&apos;re selling to massive enterprises and you&apos;ve got an expense account as deep as the Mariana Trench. &#xA0;But if you mean early-pipeline contact, phone calls, video calls, and emails, maybe!</p><p><a href="https://nathanbarry.com/sales/">Nathan Barry has an excellent piece on how direct sales are critical to the growth of a SaaS business</a>, and given that he&apos;s running the fantastically-successful <a href="https://convertkit.com/">ConvertKit</a>, he&apos;s probably right! But you have to be careful to make sure you show value early. &#xA0;A big up-front sales process is <strong>a lot</strong> to ask of a potential customer. &#xA0;They&apos;ve got a business of their own to run, and here you come asking them to invest their time evaluating your service, which may or may not solve a problem they&apos;re having. &#xA0;It&apos;s a gamble for them, and you have to recognize and show empathy about that.</p><p>Which brings us back to respect.</p><h2 id="this-has-been-a-lot-of-contradictory-advice-">This has been a lot of contradictory advice.</h2><p>Right! Because there&apos;s no one-size-fits-all piece of advice when it comes to your customers and your business. &#xA0;There&apos;s no magical set of settings you can tune your service to that will guarantee success and fame. &#xA0;You have to get to know your market and get to know your customers, then evaluate and decide on your course of action from there.</p><p>It&apos;s important to track the data around your customers and their use and evaluation of your service, but it&apos;s also important to remember that these are real people, not just a faceless set of data. &#xA0;They have goals they want to accomplish, and they&apos;re hoping your service will be the one that helps them do so. &#xA0;Don&apos;t know what their goals are? &#xA0;Ask! &#xA0;Then follow up, to make sure they&apos;re still achieving success as time goes on.</p><p>Look, Google is gradually entering every possible service space (<a href="https://gcemetery.co/">and then leaving</a>, just as quickly, it seems). &#xA0;If people wanted to get ignored and treated like just another wallet, they could go to Google, or Amazon, or Salesforce, or whatever massive company that doesn&apos;t spend enough time on their customers that you love to hate on the most. &#xA0;You have a chance to be different and to stand out from the massive corporations, to show that you really care.</p><p>I get it, there&apos;s a lot to do when running your own business. &#xA0;It seems you&apos;re always splitting your time between thirty different top-priority things. &#xA0;But if you don&apos;t make time for your users, to really show them the respect they deserve, you&apos;re missing out. &#xA0;They could churn out, not convert at all, never even try your service, or even turn into an anti-fan, telling everyone they know about how poorly they were treated by you.</p><p>You don&apos;t have to ignore the metrics, but you <strong>can&apos;t</strong> ignore your users. &#xA0;Keep them in mind when making critical decisions. &#xA0;Respect them, and be worthy of their respect. Then instead of hit pieces, maybe they&apos;ll write some glowing praise.</p>]]></content:encoded></item></channel></rss>