Makes me nostalgic of desktop software. I hate that everything today is a website and requires a ridiculously fast internet connection. And what seems to be in fashion for "desktop software" today is to ship a website together with a whole browser and pretend it's not a website.
I wonder how the licensing works: do people pay for newer versions? Or do people just buy one version but more people get married every year, bringing new customers? I guess it is not a subscription model, right?
>I hate that everything today is a website and requires a ridiculously fast internet connection. And what seems to be in fashion for "desktop software" today is to ship a website together with a whole browser and pretend it's not a website.
Earlier this week I cobbled together a tiny, totally self-contained pocket dictionary between Finnish and English [1]. It's a TUI, but I tested it on Mac and Windows and the program works perfectly fine there -- double clicking on it just pops open a little terminal for tsk to do its thing in.
The first bit of advice I got when posting it online to my usual places was "Why not make it a normal GUI program, or better yet, use React?" While I did briefly consider it, it really seemed like overkill for the very simple problem I was trying to solve here, and it might balloon the ~30 MB exe to >100. To be fair, I have negative interest in monetizing this kind of thing.
I am also ok with one like Jetbrains where you subscribe and after a year you can keep the last version you paid for. They do a lot of updates, so the money is going into the product but one isn't forced to stay in order to use it.
It's not actually that different from the subscription model; the interval is just longer. At some point, you'll upgrade your computer and find the old version of the app no longer works, and you'll be forced to upgrade. Depending on how quickly the app evolves, you might prefer the subscription model so you can follow new how-tos, and it can be more reliable since developers are only supporting a few versions out in the wild.
I'm not saying you need to be on the bleeding edge, but if any part of your personal tech stack is older than ~4 years, it'll start to have problems, and you're going to be left behind.
Microsoft is very good at backward compatibility. So 10+ year old versions of PerfectTablePlan probably work on Windows 11.
Apple is much less good at backward compatibility. It is a bit of a two edged sword. Customers have to upgrade, you also have to keep updating libraries and releasing new versions to keep up.
I believe it is in this interview from 1996 where I saw Bill Gates saying the same thing about Microsoft products, he saw them as subscriptions. It’s a long but interesting interview. https://www.youtube.com/watch?v=VFFlO7yBIBM
I am fully aware how much more performant native desktop applications can be compared to the “let’s ship a browser” popular alternative.
That said, do you, or anyone else who often makes this (fair) complaint, have any experience writing native desktop applications? Have you ever tried to implement drag and drop, animations (like accordions), modals, gradients, and custom elements? Not to mention, GPU acceleration.
I can only speak for Windows and Linux, but the native APIs are atrocious. The frameworks for these native APIs are cumbersome and inflexible. Styling is, without a doubt, the most complex part. It’s all so complex that shipping a browser + an api to talk to the host is easier.
You are right, building a good UI for the desktop has become exceedingly difficult. In my experience new UI toolkits try to mimic the web experience (kivy, QML, Slint, Flutter, etc.) and end up being threadbare with the simplest widgets available. In my opinion, every new UI toolkit since QtWidgets/WinForms/Delphi/WPF/Win32/Gtkmm era has missed the point. The desktop is a power tool and requires powerful widgets. Virtualized lists, data grid with complex interactions, drag and drop, OS integration, modals, background tasks, docking windows, etc. A toolkit that puts a slider, some text and buttons on the screen doesn’t solve the harder problems and the web browser will run circles around that workflow. Easier UX can be built in anything really. Until there’s a desktop app framework that solves the hard problems in desktop UI dev then desktop will languish and hard stuff will continue to be hard.
I'm developer of Slint and I'm glad to see Slint mentioned.
I want to clarify that we're not trying to mimic the web. We have a great vision for the desktop integration, but we unfortunately have limited resources. Our team is fairly small and we are mainly working with paying customers to pay the bills, which are mostly in embedded space at the moment.
I agree with your points, and while there’s still a lot to do, I hope Slint can become a strong option for building powerful complex desktop applications.
If you use Qt, like in TFA, then you don't have those issues. You use a markup language for layout if you want, javascript if you want, C++ if you want.
That's a really good point about the complexity of native desktop development. I've definitely felt that pain trying to wrangle native APIs for even simple UI elements. It took me a while to figure out how to get smooth animations working in one project.
On the other hand, shipping a whole browser feels so wasteful, especially for smaller apps. I've been experimenting with Tauri recently, which uses the system's webview. It's a nice middle ground, and the performance is noticeably better than Electron from what I've seen.
> Makes me nostalgic of desktop software. I hate that everything today is a website and requires a ridiculously fast internet connection. And what seems to be in fashion for "desktop software" today is to ship a website together with a whole browser and pretend it's not a website.
Funny isn't it? These days developers experienced with building typical desktop software are being asked Leetcode hard puzzles to find the most optimal solution on the first attempt.
Yet when they are hired most of them choose what I see as the most inefficient (in both memory, disk space and runtime), suboptimal and very low quality software as the "solution". When I mean "the most" it really is the worst solution possible, which is all these Electron based "desktop apps" which is an entire browser rebranded as a "desktop app".
It is even laughable that those who believe using a faster language when using Electron would make it more performant. This has never been more further from the truth as the worst-case performance still applies as long as you are using Electron.
SWEs not being able to build (native) desktop apps or apps that don't use a browser is a skill issue.
> SWEs not being able to build (native) desktop apps or apps that don't use a browser is a skill issue.
It's a runtime issue. If developing a native app requires an expensive SDK, complex distribution agreement or multiplatform codebase, any rational software engineer will choose to ship once and run anywhere. Anything else is a waste of time and money unless management dictates otherwise.
Electron will be king until shipping native interfaces is as equally accessible as web development.
> Anything else is a waste of time and money unless management dictates otherwise.
Management won't say otherwise because management relies on what software engineers tell them, as it's the job of the engineer to consider quality, reliability and operational efficiency, and advise management on the tradeoffs involved. An engineer can choose to not pick the cheapest possible option.
Your "rational software engineer" instead sounds more like someone that's happy to go with substandard solution that's bad for the user and bad for the entire field of software engineering (the more it's used, the more it's normalized), and then hide behind greedy management and penny-pinching beancounters.
People sometimes wonder if software wouldn't get better (boy technologically and socially) if software engineering was a licensed profession. Well, we don't deserve to be licensed professionals, because we've abandoned respect and loyalty to our field, and became just "professionals" in the cultural sense of doing cheapest stuff the fastest and dumping all externalities on customers (on third parties).
Makes me so happy to see people like this exist. All good software, really all good software, is indie small ones made with love and care whose authors also lived a good life outside of the cubicle mess. (I know about the exaggeration, but really, 95% of what I love is indie software, you don't find that kind of creativity and love in any company)
it's true, you can always tell a product that is loved from a product that grew up without it.
i'd add as a caveat that your users probably will not be able to tell the difference and it will break your heart if you care about these things too much.
> A mock-up of PerfectTablePlan, including icons I did myself, was used without our permission by Sony in their ‘Big day’ TV comedy series. I threated them with legal action. Years later, I am still awaiting a reply.
Author here. Since you asked. This TV comedy included a plot point where some wedding planning software was shown to lose the seating plan. The wedding planning software was clearly a mockup (probably done in Powerpoint), but was clearly based on my software - even including icons I had created. I thought I could get some free publicity from it. I talked to a lawyer friend of my father's and he told me it would cost hundreds of pounds to do the research to even send them a legal letter. It was the early days for PerfectTablePlan and I didn't have that sort of money. So I just wrote my own letter demanding a public apology. I'm still awaiting a reply, nearly 20 years later.
The JD in the signature of that kind of letter usually amounts to more weight than the content, regardless of whether the wording was perfect and the research duly diligent.
Juris Doctor or Doctor of Jurisprudence [0], a kind of law degree
In this case, it refers to the literal letters written in the signature of a letter, which presumably indicate that whoever wrote it studied a bunch to get into school, paid a bunch to go to school, graduated with that degree, and should be respected, because they may have the knowledge, willingness, and resources to take the words in the letter further, if they want to, given that they have already somewhat attached themselves to the cause in the form of the letter.
Funny but kind of sad. If it were the reverse, and The Little Guy used Sony's IP without permission, 20 Sony lawyers would come down on him with the ferocity of a thousand gods and destroy his business. It sucks how much the legal industry serves the rich and is effectively only accessible to the rich.
> I was getting married and I volunteered to do the seating plan for our wedding reception. It sounded like a relatively straightforward optimization problem, as we only had 60 guests and no family feuds to worry about. But it was surprisingly difficult to get right.
Now compare the longevity and sustainability of this software product to VC-funded startups, which are more like blips on the radar before they disappear by going bankrupt or getting acquired.
Having multiple people in a company does not guarantee that it will stick around. People saying "but it's a one-person business, I can't trust it in the long term" are wrong.
> People saying “but it's a one-person business, I can't trust it in the long term" are wrong.
The problem is: people aren’t immortal. That one person could be dead tomorrow. So, you can’t trust any one person business in the long term, by definition.
Depends on what level of trust you need to have. Obviously you can’t even trust a multibillion-dollar public company like Google to keep maintaining a product forever, or even for a couple years.
On the other hand, someone selling a stable piece of desktop software doesn’t even require a tremendous amount of trust. Just the trust not to ship malware or massive security holes. Even if they fully retire and delete the source code, your software will keep working. That’s more than I can say for Google reader, or the Humane AI Pin.
When he dies, if not before, he or his family can sell the business. There's even websites/communities where you can post this kind of business for sale.
It's all just mindgames bullshit to get you to accept worse terms, or ignorance. Your characterization is right. VC boosted products are sometimes like shit crops sewn in bad soil but laden with chemical fertilizer to force growth. They might have no fundamental strength.
side note: after I typed "our incredible j", and then in this very text box, mind you, not even in Google, the full word "journey" popped up as a choice for me to select.
here you go, downvoter dude (we can guess you're from one of the types described below, or aspire to be, meaning the startups that gets acqui-hired, and dumps their users ):
> A well known wedding magazine ran a promotion with a valid licence key clearly visible in a photograph of a PerfectTablePlan CD. I worked through the night to release a new version of PerfectTablePlan that didn’t work with this key.
This is weird to me on several levels.
- Why would it require "working through the night" to blacklist a key? In large enterprise software, sure. But in a one-person project?
- If past versions still work with the leaked license key, what does this solve? If someone wanted to steal your software, they'd find a key anyway, no?
[Edit]: But a very cool project and a nice writeup! I enjoyed! Good luck!
Since I cannot ask you your actual ARR, can you answer if you believe it's feasible to reach high 7 figures/low 8 figures in ARR as a solopreneur over a long period of time? I don't mean 1 year $10M ARR AI trendy apps, but a consistent $10M ARR business year after year >20 years.
I can think of 1 solo bootstrapped founder who says he is doing ~$1 million dollars per year. But he is an outlier.
The more sales you make the more admin/sales/support overhead there is. Eventually you reach a point where your sales plateau or you take on staff to keep growing.
I'm sure its possible, but I'd be very surprised if this particular product (due to being fairly niche, and one-time purchase vs. subscription) was earning > $1M ARR, let alone $10M. But I could be wrong!
90%+ of those IH businesses must be making a profit. They are bootstrapped by frugal people. They aren't likely to blow all their profit on ads once they hit 1M arr.
Excellent read. I was happy for the author while I was reading it, looks like it was and still is an amazing journey.
By the way, some engineers are dream with working at FAANG, others to create a million dollars startup. My dreams was always something like this: work on a niche piece of software that solves a problem for a subset of people. Give them a something that avoids a headache for them, deliver value, and get paid. You aren't going tonbe millionaire, but it's going to be a nice ride.
Thing is, many of those niche companies are single-founder businesses, where founders do not want to hire employees. Many reasons, not necessarily financial: in my case, I just got tired of dealing with people and their issues and decided I want to depend only on myself.
So, jobs of this kind are rather scarce.
Also, in a tiny business, the founder will usually be super-efficient and productive. Most employees are not. There is an impedance mismatch: a hired programmer will talk about the latest and greatest JavaScript framework and the need to rewrite everything in YaddaOfYadda, because that's what the World is doing these days, while the founder will think about the benefit for the users (usually none) and the immense costs (in terms of money, bugs, and time wasted).
Because of all this, it's not very probable that you'll find a job at a niche company like this.
It doesn't have to be as tiny as in the article, but more just a small, bootstrapped company with a good niche to serve. These sorts of company should be very common and jobs at them should be plentiful (due to number of shops, even though each would be small), yet they are nearly impossible to find. I bet they have an equally poor time of finding people. Seems like an under served market.
Some niches can be very big, too! It's perfect when it's small enough to not be interesting for BigTech, but big enough to pay a few up to a few hundred employees!
Indeed. Software is mostly written by young white men for other young white men. Consequently there are loads of under exploited niches, while all the 'sexy' niches are incredibly competitive.
I don't understand the downvotes... I think it is true that there are under exploited niches, probably in fields that most developers aren't familiar with.
Pick an interest that young white men have. You'll probably find loads of software that caters to it. Pick an interest that an equal number of retired women have. You will almost certainly find a lot less software that caters to it. It is simply because people write software for markets they understand. Most programmers (in my experience) are young white men. A lot less retired women have the skills or motivation to write software.
It sounds like the view of some person with zero experience in the real world of professional software engineering. My experience is the opposite. The USA has a very diverse software workforce.
Kudos to you. The only piece of software I wrote was open source and could never find a way to monetize it beyond consulting and VC funding. A sustainable long term business selling a piece of software that just works is all we could ever hope for as developers.
I'm glad you're still doing well. I envy your position; I've always wanted to work on a single piece of software of my own.
I built a few things while working for startups but nothing stuck. Now I build lots of software in a nice secure corporate environment. I mostly get to do what I want and how I want it but ultimately it's not mine.
It is exactly that reasonable mix -- it's why I've stayed for as long as I have. Previously I was a contractor and so ran my own business I remember the negatives of that sort of thing.
Some of the things I've built could be entire businesses on their own and it feels like a lot of missed opportunities.
> web. But I couldn’t face rewriting PerfectTablePlan from scratch for the web.
Someone will develop for the web. But perhaps you don't want to make it easier to clone.
Building a business to sell for your retirement funds would need much more work and would get more money if SaaS for Planners? Unless you sell your engine to a wedding planner software specialist.
The browser as a platform is daunting (touch support, small screen support, CSS, HTML, DOM, connections, browser versions, frameworks).
> Javascript. Ugh.
I personally never found JavaScript to be the problem - I think a single developer can good engineering workarounds. Avoid the bad parts.
I developed for the browser using JavaScript: without using frameworks because my engineering was better than what was available. I personally would still avoid a frameworks unless I needed accessibility (which is crazy hard to support).
> Also PerfectTablePlan is quite compute intensive, using a genetic algorithm to generate an automated seating plan and I felt it was better running this on the customer’s local computers than my server. And some of my customers consider their seating plans to be confidential
Sounds like a price point: standalone should be more expensive. However likely difficult to hit that enterprise sale point (re patio11?)? Ideally you want to charge expensive wedding planners much more. Low end planners could still use your web version.
I assume you've had competitors that have sunk because you are best value for money?
Loved the writeup.
I'm guessing I've written a bunch of ignorant stuff - I'm just practicing my thinking by writing... Most important, I presume you're looking forward to finishing up and not doing more work. I was.
Ok that Perfect table plan software looks amazing. I so wish I could work on something like this. A standalone desktop app that solves a need and that people keep coming back to year after year, that people love, that people will buy.
This is awesome and I love stories like this. I miss installable software.
"It has seated royalty, celebrities and heads of state"
Reminded me that there really are more potential attack vectors in software than one would think. Not immediately sure what a bad actor could do with manipulating or stealing seating charts but I'm sure thre's something.
I started selling software licenses this year, and I would be very happy if I were able to write a post like this about the same software 20 years from now!
Loved this post! It's my dream too to come up with an idea for software that doesn't exist, that I can build, and that people are willing to pay me for ;)
Does it still use a genetic algorithm and is this necessary? I'd guess there is some kind of MIP or IP solver solution that you can just call out to, but that could be extremely wrong for all I know.
Yes, it still uses a genetic algorithm which is capable of producing decent solutions for thousands of seats in the time you can drink a coffee. Also it is highly specialized for the nuances of seating plans (do you want your partner sitting to the left of right, which tables are near each other, do you want to alternate genders).
After 15+ year building stuff for others I would totally like to have one app that earns money and I don’t get requirements from bunch of business people.
At least someone who knows the system and cares about it with ability to say no instead of promising BS to any stupid idea to inflate quarterly results and then leave to a different job.
What's not mentioned is marketing. I tried a couple of queries into Google, and this software didn't come up. I wonder what a couple k of marketing and ad spend a
would do for revenue. There's clearly a need for this kind of software, and little bit of marketing could help others find it when they need it.
The problem is we as engin-nerds don't want to pay for something nebulous like marketing, with no proof that it pays off. And back before the Internet, that was the world of advertising. How do you track if that crazy expensive billboard in Times Square was seen by people and resulted in an uptick in sales? But thanks to tracking, it's easier to quantifiy results.
Time is money so I'd suggest finding somewhere/someone and giving them the money for their expertise, but it doesn't takes much time, you could do it yourself. Create a Google AdWords account and buy AdWords for "wedding planning seating chart" or other combination, and see how many hits you get for that, and judge for yourself if it's worth it. A competitor (zola.com) already has the first result for that, but that should be enough to for you started. My email's in my bio if you want to chat more.
PPC used to be very lucrative, but the bid prices have inflated to the point that it is increasingly borderline. I'm currently turning PPC on and off alternate weeks to try and see if the ROI is positive. This is an off week.
PSA: CDs are not, in fact, edible, nor are DVDs or Blu-ray media. Sure, if you click through, you'll see that the CD was not actually damaged and that it was only the printed license key that got mauled, but still: CDs are mostly polycarbonates, and not, in any way shape or form, part of a healthy diet, no matter what your local party liaison tells you.
For the non-native English readers here, "edible" means "can be eaten", vs the obvious typo "editable", ie "can be edited". (OP: Sorry if I killed the humor, it was at least grin-worthy.)
Makes me nostalgic of desktop software. I hate that everything today is a website and requires a ridiculously fast internet connection. And what seems to be in fashion for "desktop software" today is to ship a website together with a whole browser and pretend it's not a website.
I wonder how the licensing works: do people pay for newer versions? Or do people just buy one version but more people get married every year, bringing new customers? I guess it is not a subscription model, right?
>I hate that everything today is a website and requires a ridiculously fast internet connection. And what seems to be in fashion for "desktop software" today is to ship a website together with a whole browser and pretend it's not a website.
Earlier this week I cobbled together a tiny, totally self-contained pocket dictionary between Finnish and English [1]. It's a TUI, but I tested it on Mac and Windows and the program works perfectly fine there -- double clicking on it just pops open a little terminal for tsk to do its thing in.
The first bit of advice I got when posting it online to my usual places was "Why not make it a normal GUI program, or better yet, use React?" While I did briefly consider it, it really seemed like overkill for the very simple problem I was trying to solve here, and it might balloon the ~30 MB exe to >100. To be fair, I have negative interest in monetizing this kind of thing.
[1]: https://github.com/hiAndrewQuinn/tsk
> it really seemed like overkill for the very simple problem I was trying to solve here
Usually people throw heavy frameworks at simple problems just because it's easier, not because it's needed.
I like a lightweight TUI a lot better than a huge ElectronJS app.
You buy a perpetual licence for version N. You can then optionally upgrade to version N+1 later at a 60% discount.
Do you have a lot of people buying upgrades? Still wondering if this market is not full of people who buy it one time for their wedding :-).
The best business model.
I am also ok with one like Jetbrains where you subscribe and after a year you can keep the last version you paid for. They do a lot of updates, so the money is going into the product but one isn't forced to stay in order to use it.
It's not actually that different from the subscription model; the interval is just longer. At some point, you'll upgrade your computer and find the old version of the app no longer works, and you'll be forced to upgrade. Depending on how quickly the app evolves, you might prefer the subscription model so you can follow new how-tos, and it can be more reliable since developers are only supporting a few versions out in the wild.
I'm not saying you need to be on the bleeding edge, but if any part of your personal tech stack is older than ~4 years, it'll start to have problems, and you're going to be left behind.
Microsoft is very good at backward compatibility. So 10+ year old versions of PerfectTablePlan probably work on Windows 11.
Apple is much less good at backward compatibility. It is a bit of a two edged sword. Customers have to upgrade, you also have to keep updating libraries and releasing new versions to keep up.
I believe it is in this interview from 1996 where I saw Bill Gates saying the same thing about Microsoft products, he saw them as subscriptions. It’s a long but interesting interview. https://www.youtube.com/watch?v=VFFlO7yBIBM
Really? I'm still using sublime 2 from 10 years ago and it still works great across Mac and windows.
I especially like this if the 60% multiplier becomes 60%² at N+2, 60%³ at N+3, and so on. Feels like you're getting rewarded for hopping on early.
Too complicated. I charge the same for v5 -> v7 and v6 -> v7.
You mentioned you have been developing Indie products since 2005 in your about section. Can I read about this somewhere?
Pretty much the entire https://www.successfulsoftware.net blog is about that. Maybe start with:
https://successfulsoftware.net/starting-a-microisv/
Well, I like it anyway.
I am fully aware how much more performant native desktop applications can be compared to the “let’s ship a browser” popular alternative.
That said, do you, or anyone else who often makes this (fair) complaint, have any experience writing native desktop applications? Have you ever tried to implement drag and drop, animations (like accordions), modals, gradients, and custom elements? Not to mention, GPU acceleration.
I can only speak for Windows and Linux, but the native APIs are atrocious. The frameworks for these native APIs are cumbersome and inflexible. Styling is, without a doubt, the most complex part. It’s all so complex that shipping a browser + an api to talk to the host is easier.
(and all of this is even easier in swiftui especially animation and styling [3])
[1] https://developer.apple.com/documentation/AppKit/drag-and-dr...
[2] https://developer.apple.com/library/archive/documentation/Co...
[3] https://swiftui-lab.com/custom-styling/
You are right, building a good UI for the desktop has become exceedingly difficult. In my experience new UI toolkits try to mimic the web experience (kivy, QML, Slint, Flutter, etc.) and end up being threadbare with the simplest widgets available. In my opinion, every new UI toolkit since QtWidgets/WinForms/Delphi/WPF/Win32/Gtkmm era has missed the point. The desktop is a power tool and requires powerful widgets. Virtualized lists, data grid with complex interactions, drag and drop, OS integration, modals, background tasks, docking windows, etc. A toolkit that puts a slider, some text and buttons on the screen doesn’t solve the harder problems and the web browser will run circles around that workflow. Easier UX can be built in anything really. Until there’s a desktop app framework that solves the hard problems in desktop UI dev then desktop will languish and hard stuff will continue to be hard.
I'm developer of Slint and I'm glad to see Slint mentioned. I want to clarify that we're not trying to mimic the web. We have a great vision for the desktop integration, but we unfortunately have limited resources. Our team is fairly small and we are mainly working with paying customers to pay the bills, which are mostly in embedded space at the moment. I agree with your points, and while there’s still a lot to do, I hope Slint can become a strong option for building powerful complex desktop applications.
You found the reason why Qt is popular.
If you use Qt, like in TFA, then you don't have those issues. You use a markup language for layout if you want, javascript if you want, C++ if you want.
Call me a boomer, but I preferred old apps that had a consistent interface instead of all the random wheel inventing.
Don't style it, please. I chose my system theme for a reason.
That's a really good point about the complexity of native desktop development. I've definitely felt that pain trying to wrangle native APIs for even simple UI elements. It took me a while to figure out how to get smooth animations working in one project.
On the other hand, shipping a whole browser feels so wasteful, especially for smaller apps. I've been experimenting with Tauri recently, which uses the system's webview. It's a nice middle ground, and the performance is noticeably better than Electron from what I've seen.
> Makes me nostalgic of desktop software. I hate that everything today is a website and requires a ridiculously fast internet connection. And what seems to be in fashion for "desktop software" today is to ship a website together with a whole browser and pretend it's not a website.
Funny isn't it? These days developers experienced with building typical desktop software are being asked Leetcode hard puzzles to find the most optimal solution on the first attempt.
Yet when they are hired most of them choose what I see as the most inefficient (in both memory, disk space and runtime), suboptimal and very low quality software as the "solution". When I mean "the most" it really is the worst solution possible, which is all these Electron based "desktop apps" which is an entire browser rebranded as a "desktop app".
It is even laughable that those who believe using a faster language when using Electron would make it more performant. This has never been more further from the truth as the worst-case performance still applies as long as you are using Electron.
SWEs not being able to build (native) desktop apps or apps that don't use a browser is a skill issue.
> SWEs not being able to build (native) desktop apps or apps that don't use a browser is a skill issue.
It's a runtime issue. If developing a native app requires an expensive SDK, complex distribution agreement or multiplatform codebase, any rational software engineer will choose to ship once and run anywhere. Anything else is a waste of time and money unless management dictates otherwise.
Electron will be king until shipping native interfaces is as equally accessible as web development.
> Anything else is a waste of time and money unless management dictates otherwise.
Management won't say otherwise because management relies on what software engineers tell them, as it's the job of the engineer to consider quality, reliability and operational efficiency, and advise management on the tradeoffs involved. An engineer can choose to not pick the cheapest possible option.
Your "rational software engineer" instead sounds more like someone that's happy to go with substandard solution that's bad for the user and bad for the entire field of software engineering (the more it's used, the more it's normalized), and then hide behind greedy management and penny-pinching beancounters.
People sometimes wonder if software wouldn't get better (boy technologically and socially) if software engineering was a licensed profession. Well, we don't deserve to be licensed professionals, because we've abandoned respect and loyalty to our field, and became just "professionals" in the cultural sense of doing cheapest stuff the fastest and dumping all externalities on customers (on third parties).
This. And I live in hope that WASM runtimes can address some or all of this one day.
So then we can ship a binary on top of JavaScript in a browser engine on top of the native platform! ;)
Yeah!!!
Time for Greenspun's eleventh rule: ;)
https://en.m.wikipedia.org/wiki/Greenspun%27s_tenth_rule
>And what seems to be in fashion for "desktop software" today is to ship a website together with a whole browser and pretend it's not a website.
yeah! shipsters
/s
ugh
Makes me so happy to see people like this exist. All good software, really all good software, is indie small ones made with love and care whose authors also lived a good life outside of the cubicle mess. (I know about the exaggeration, but really, 95% of what I love is indie software, you don't find that kind of creativity and love in any company)
it's true, you can always tell a product that is loved from a product that grew up without it.
i'd add as a caveat that your users probably will not be able to tell the difference and it will break your heart if you care about these things too much.
Spacemonger is this to a tee.
yeah - I'm sure Everything by voidtools is precisely that
Great read. This was particularly funny.
> A mock-up of PerfectTablePlan, including icons I did myself, was used without our permission by Sony in their ‘Big day’ TV comedy series. I threated them with legal action. Years later, I am still awaiting a reply.
Also worth noting that a more detailed write up of the business elements would likely go down very well here!
Author here. Since you asked. This TV comedy included a plot point where some wedding planning software was shown to lose the seating plan. The wedding planning software was clearly a mockup (probably done in Powerpoint), but was clearly based on my software - even including icons I had created. I thought I could get some free publicity from it. I talked to a lawyer friend of my father's and he told me it would cost hundreds of pounds to do the research to even send them a legal letter. It was the early days for PerfectTablePlan and I didn't have that sort of money. So I just wrote my own letter demanding a public apology. I'm still awaiting a reply, nearly 20 years later.
The JD in the signature of that kind of letter usually amounts to more weight than the content, regardless of whether the wording was perfect and the research duly diligent.
What is JD?
Juris Doctor or Doctor of Jurisprudence [0], a kind of law degree
In this case, it refers to the literal letters written in the signature of a letter, which presumably indicate that whoever wrote it studied a bunch to get into school, paid a bunch to go to school, graduated with that degree, and should be respected, because they may have the knowledge, willingness, and resources to take the words in the letter further, if they want to, given that they have already somewhat attached themselves to the cause in the form of the letter.
[0] https://law.stanford.edu/office-of-student-affairs/the-docto...
Damn. I am familiar with that term but hit a cache miss.
Juris Doctor, aka a lawyer
Juris Doctor. A lawyer.
Funny but kind of sad. If it were the reverse, and The Little Guy used Sony's IP without permission, 20 Sony lawyers would come down on him with the ferocity of a thousand gods and destroy his business. It sucks how much the legal industry serves the rich and is effectively only accessible to the rich.
Only 20?
Yeah, I'm really curious how the author was able to get the kind of sales needed to support a family.
https://successfulsoftware.net/category/marketing/
The first post is a rant about SPAM, not "how the author was able to get the kind of sales needed to support a family"
There are 147 articles tagged 'marketing'. Some of them might be the sort of thing you are looking for. Some might not.
If you are looking for articles about starting a software business, see: https://successfulsoftware.net/starting-a-microisv/
So they called his bluff.
> I was getting married and I volunteered to do the seating plan for our wedding reception. It sounded like a relatively straightforward optimization problem, as we only had 60 guests and no family feuds to worry about. But it was surprisingly difficult to get right.
Man, this sounds way too familiar!
Now compare the longevity and sustainability of this software product to VC-funded startups, which are more like blips on the radar before they disappear by going bankrupt or getting acquired.
Having multiple people in a company does not guarantee that it will stick around. People saying "but it's a one-person business, I can't trust it in the long term" are wrong.
> People saying “but it's a one-person business, I can't trust it in the long term" are wrong.
The problem is: people aren’t immortal. That one person could be dead tomorrow. So, you can’t trust any one person business in the long term, by definition.
Depends on what level of trust you need to have. Obviously you can’t even trust a multibillion-dollar public company like Google to keep maintaining a product forever, or even for a couple years.
On the other hand, someone selling a stable piece of desktop software doesn’t even require a tremendous amount of trust. Just the trust not to ship malware or massive security holes. Even if they fully retire and delete the source code, your software will keep working. That’s more than I can say for Google reader, or the Humane AI Pin.
When he dies, if not before, he or his family can sell the business. There's even websites/communities where you can post this kind of business for sale.
The software will still work for years even if his who family is wiped out in a plane crash.
A saas product will die when the credit card bounces a couple of months later.
>even if his who[le] family is wiped out in a plane crash.
Thanks for that cheery thought.
It's all just mindgames bullshit to get you to accept worse terms, or ignorance. Your characterization is right. VC boosted products are sometimes like shit crops sewn in bad soil but laden with chemical fertilizer to force growth. They might have no fundamental strength.
y
see: our incredible journey
side note: after I typed "our incredible j", and then in this very text box, mind you, not even in Google, the full word "journey" popped up as a choice for me to select.
shows ...
here you go, downvoter dude (we can guess you're from one of the types described below, or aspire to be, meaning the startups that gets acqui-hired, and dumps their users ):
https://www.gyford.com/phil/writing/2013/02/27/our-incredibl...
https://ourincrediblejourney.tumblr.com/post/89180616013/wha...
https://ourincrediblejourney.tumblr.com/about/
> A well known wedding magazine ran a promotion with a valid licence key clearly visible in a photograph of a PerfectTablePlan CD. I worked through the night to release a new version of PerfectTablePlan that didn’t work with this key.
This is weird to me on several levels.
- Why would it require "working through the night" to blacklist a key? In large enterprise software, sure. But in a one-person project?
- If past versions still work with the leaked license key, what does this solve? If someone wanted to steal your software, they'd find a key anyway, no?
[Edit]: But a very cool project and a nice writeup! I enjoyed! Good luck!
Living legend! Lifestyle biz bootstrappers ftw.
Since I cannot ask you your actual ARR, can you answer if you believe it's feasible to reach high 7 figures/low 8 figures in ARR as a solopreneur over a long period of time? I don't mean 1 year $10M ARR AI trendy apps, but a consistent $10M ARR business year after year >20 years.
I can think of 1 solo bootstrapped founder who says he is doing ~$1 million dollars per year. But he is an outlier.
The more sales you make the more admin/sales/support overhead there is. Eventually you reach a point where your sales plateau or you take on staff to keep growing.
>$300k ARR is definitely doable with a B2B product and it lets you live comfortably in most places in the world without worrying about money.
I think >$1M ARR is hard, you need an exceptional niche (high margin, low support load, easy marketing) and luck.
I can't see a >$10M ARR happening for a solo-founder business. At least not for my business niche.
Bear in mind that growing a SaaS takes time and it's a multi-year project.
I'm sure its possible, but I'd be very surprised if this particular product (due to being fairly niche, and one-time purchase vs. subscription) was earning > $1M ARR, let alone $10M. But I could be wrong!
Yes. Not me, but check out indiehackers as they show stripe-verified revenues.
But not their expenses? Revenue != Profit.
Most of these businesses are software as a service so it is mostly profit. There will be some hosting and marketing costs sure.
Unlike startups they are solo operated and usually won't hire people unless they can really afford it an need it.
Advertising can be very expensive.
90%+ of those IH businesses must be making a profit. They are bootstrapped by frugal people. They aren't likely to blow all their profit on ads once they hit 1M arr.
I’ve used (and paid for) BBEdit, for more than 30 years.
https://www.barebones.com/products/bbedit/
Excellent read. I was happy for the author while I was reading it, looks like it was and still is an amazing journey.
By the way, some engineers are dream with working at FAANG, others to create a million dollars startup. My dreams was always something like this: work on a niche piece of software that solves a problem for a subset of people. Give them a something that avoids a headache for them, deliver value, and get paid. You aren't going tonbe millionaire, but it's going to be a nice ride.
I wish there was a job site for people like us. I'd love to be able to find a job at a small, niche company like this.
Thing is, many of those niche companies are single-founder businesses, where founders do not want to hire employees. Many reasons, not necessarily financial: in my case, I just got tired of dealing with people and their issues and decided I want to depend only on myself.
So, jobs of this kind are rather scarce.
Also, in a tiny business, the founder will usually be super-efficient and productive. Most employees are not. There is an impedance mismatch: a hired programmer will talk about the latest and greatest JavaScript framework and the need to rewrite everything in YaddaOfYadda, because that's what the World is doing these days, while the founder will think about the benefit for the users (usually none) and the immense costs (in terms of money, bugs, and time wasted).
Because of all this, it's not very probable that you'll find a job at a niche company like this.
It doesn't have to be as tiny as in the article, but more just a small, bootstrapped company with a good niche to serve. These sorts of company should be very common and jobs at them should be plentiful (due to number of shops, even though each would be small), yet they are nearly impossible to find. I bet they have an equally poor time of finding people. Seems like an under served market.
Some niches can be very big, too! It's perfect when it's small enough to not be interesting for BigTech, but big enough to pay a few up to a few hundred employees!
Indeed. Software is mostly written by young white men for other young white men. Consequently there are loads of under exploited niches, while all the 'sexy' niches are incredibly competitive.
I don't understand the downvotes... I think it is true that there are under exploited niches, probably in fields that most developers aren't familiar with.
I don't understand where gender, age, and ethnicity come into play in this.
Not trying to make a poltical point.
Pick an interest that young white men have. You'll probably find loads of software that caters to it. Pick an interest that an equal number of retired women have. You will almost certainly find a lot less software that caters to it. It is simply because people write software for markets they understand. Most programmers (in my experience) are young white men. A lot less retired women have the skills or motivation to write software.
Sounds like an underserved market waiting to be tapped. How do we address it?
Talk to your older relatives and female friends.
The market isn't there since the petticoat 5 covered all bases
LOL. I hadn't seen that before.
https://www.reddit.com/r/vintagecomputing/comments/8nzz23/pe...
It sounds like the view of some person with zero experience in the real world of professional software engineering. My experience is the opposite. The USA has a very diverse software workforce.
Emphasis on ride.
El camino es mejor que la posada.
+1 this is the dream career!
Kudos to you. The only piece of software I wrote was open source and could never find a way to monetize it beyond consulting and VC funding. A sustainable long term business selling a piece of software that just works is all we could ever hope for as developers.
This post makes me nostalgic for the old Joel on Software forums.
I miss Joel's writing. Erik Sink as well.
I'm glad you're still doing well. I envy your position; I've always wanted to work on a single piece of software of my own.
I built a few things while working for startups but nothing stuck. Now I build lots of software in a nice secure corporate environment. I mostly get to do what I want and how I want it but ultimately it's not mine.
Sounds like you have a reasonable mix of job security and freedom. The grass is always greener on the other side!
It is exactly that reasonable mix -- it's why I've stayed for as long as I have. Previously I was a contractor and so ran my own business I remember the negatives of that sort of thing.
Some of the things I've built could be entire businesses on their own and it feels like a lot of missed opportunities.
Nice one! I would expect more versions of PerfectTablePlan all these years, going from v1 to v7 is roughly 3 years per major release ;-)
I find it wonderful. As the author mentions in the original post, his code does not have a lot of bugs and is mostly feature complete as well.
I think most people never get to work with such software as we need to launch $NEXT_PROJECT
> web. But I couldn’t face rewriting PerfectTablePlan from scratch for the web.
Someone will develop for the web. But perhaps you don't want to make it easier to clone.
Building a business to sell for your retirement funds would need much more work and would get more money if SaaS for Planners? Unless you sell your engine to a wedding planner software specialist.
The browser as a platform is daunting (touch support, small screen support, CSS, HTML, DOM, connections, browser versions, frameworks).
> Javascript. Ugh.
I personally never found JavaScript to be the problem - I think a single developer can good engineering workarounds. Avoid the bad parts.
I developed for the browser using JavaScript: without using frameworks because my engineering was better than what was available. I personally would still avoid a frameworks unless I needed accessibility (which is crazy hard to support).
> Also PerfectTablePlan is quite compute intensive, using a genetic algorithm to generate an automated seating plan and I felt it was better running this on the customer’s local computers than my server. And some of my customers consider their seating plans to be confidential
Sounds like a price point: standalone should be more expensive. However likely difficult to hit that enterprise sale point (re patio11?)? Ideally you want to charge expensive wedding planners much more. Low end planners could still use your web version.
I assume you've had competitors that have sunk because you are best value for money?
Loved the writeup.
I'm guessing I've written a bunch of ignorant stuff - I'm just practicing my thinking by writing... Most important, I presume you're looking forward to finishing up and not doing more work. I was.
>Someone will develop for the web.
A number of web based alternatives to PerfectTablePlan have appeared over the years.
Ok that Perfect table plan software looks amazing. I so wish I could work on something like this. A standalone desktop app that solves a need and that people keep coming back to year after year, that people love, that people will buy.
You are living the dream!
> The lowest point was the pandemic, when sales pretty much dropped to zero.
Don't know why there wasn't a perfect table plan 6-foot edition.
I remember going to an event where someone took out one of those segmented collapsing ruler things to put people a minimum distance apart.
There is a social distancing option, added due to the pandemic. ;0)
This cracks me up. Sounds like a good selling point though.
This is awesome and I love stories like this. I miss installable software.
"It has seated royalty, celebrities and heads of state"
Reminded me that there really are more potential attack vectors in software than one would think. Not immediately sure what a bad actor could do with manipulating or stealing seating charts but I'm sure thre's something.
Google "supply chain attack". It is a worry.
Reading this gave me a lot of hope.
I started selling software licenses this year, and I would be very happy if I were able to write a post like this about the same software 20 years from now!
Loved this post! It's my dream too to come up with an idea for software that doesn't exist, that I can build, and that people are willing to pay me for ;)
Does it still use a genetic algorithm and is this necessary? I'd guess there is some kind of MIP or IP solver solution that you can just call out to, but that could be extremely wrong for all I know.
Yes, it still uses a genetic algorithm which is capable of producing decent solutions for thousands of seats in the time you can drink a coffee. Also it is highly specialized for the nuances of seating plans (do you want your partner sitting to the left of right, which tables are near each other, do you want to alternate genders).
After 15+ year building stuff for others I would totally like to have one app that earns money and I don’t get requirements from bunch of business people.
you'd end up getting requirements from users yourself, instead of business people
At least someone who knows the system and cares about it with ability to say no instead of promising BS to any stupid idea to inflate quarterly results and then leave to a different job.
Yeah, but I'd hope that I can understand my users.
You're living the dream, great work.
Looks like an impressive bit of software and not some flash in the plan disruption nonsense.
> It is about 145,000 lines of C++.
Huge respect for maintaining such a large codebase.
Love it. Keep on keepin' on.
What's not mentioned is marketing. I tried a couple of queries into Google, and this software didn't come up. I wonder what a couple k of marketing and ad spend a would do for revenue. There's clearly a need for this kind of software, and little bit of marketing could help others find it when they need it.
If there was a way to spend $X and get $2X back and it didn't require a lot of my time, I would be on it.
The problem is we as engin-nerds don't want to pay for something nebulous like marketing, with no proof that it pays off. And back before the Internet, that was the world of advertising. How do you track if that crazy expensive billboard in Times Square was seen by people and resulted in an uptick in sales? But thanks to tracking, it's easier to quantifiy results.
Time is money so I'd suggest finding somewhere/someone and giving them the money for their expertise, but it doesn't takes much time, you could do it yourself. Create a Google AdWords account and buy AdWords for "wedding planning seating chart" or other combination, and see how many hits you get for that, and judge for yourself if it's worth it. A competitor (zola.com) already has the first result for that, but that should be enough to for you started. My email's in my bio if you want to chat more.
I've been doing PPC for PerfectTablePlan since the days before it was even called Google Adwords.
https://successfulsoftware.net/category/adwords/
PPC used to be very lucrative, but the bid prices have inflated to the point that it is increasingly borderline. I'm currently turning PPC on and off alternate weeks to try and see if the ROI is positive. This is an off week.
oh wow thank you for blogging about it too! sorry for assuming you hadn't
Very cool! Yet:
PSA: CDs are not, in fact, edible, nor are DVDs or Blu-ray media. Sure, if you click through, you'll see that the CD was not actually damaged and that it was only the printed license key that got mauled, but still: CDs are mostly polycarbonates, and not, in any way shape or form, part of a healthy diet, no matter what your local party liaison tells you.Wrong advice. My Uncle did eat few of them. Some thought it was some trick but later the doctor in charge of autopsy did confirm he ate them.
Edible doesn't mean eatable lol
You're clearly not preparing them correctly. You have to ground them down to a fine micro-plastics powder.
I prefer the softer, warmer flavors of ground-down vinyl.
A spoonful of microplastic in your brain [0]? That's rookie numbers.
[0] https://www.smithsonianmag.com/smart-news/the-human-brain-ma...
A quick and easy way to do this is with an angle grinder. Replace cutting disc with compact disc and fire ’er up!
Disclaimer: don’t
Or just live normal life. You get free microplastics.
For the non-native English readers here, "edible" means "can be eaten", vs the obvious typo "editable", ie "can be edited". (OP: Sorry if I killed the humor, it was at least grin-worthy.)
Follow the link - the CD was chewed by a dog
It's cool to see a product that apparently uses evolutionary algorithms do so well.