MacBook, defective by design banner

Put the knife down and take a green herb, dude.


One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for

Using 89% of the same design the blog had in 2001.

Back-up your data and, when you bike, always wear white.

As an Amazon Associate, I earn from qualifying purchases. Affiliate links in green.


MarkUpDown is the best Markdown editor for professionals on Windows 10.

It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support.

Features you won't find anywhere else include...

You've wasted more than $15 of your time looking for a great Markdown editor.

Stop looking. MarkUpDown is the app you're looking for.

Learn more or head over to the 'Store now!

Monday, January 25, 2021

Can you tell I'm cleaning out open windows on my laptop this morning?

Here's a line of PowerShell that uses Select-String to replicate grep piping just the found lines (no file name prefix on the results, case-insensitive matching) to a file:

select-string -path .\bank.controller.js -pattern "questionbuilderstate" | Select -ExpandProperty Line > c:\temp\qbs.txt

PowerShell returns objects, and you have to pull out just the result to write to the file. Otherwise you have tons of cruft in your results like this...

bank.controller.js:352: vm.questionBuilderState.selectQuestion(question);

That stinks.

The above command removes the file name and line number.

Labels: , ,

posted by ruffin at 1/25/2021 10:19:00 AM

It's kinda hard to see in the giant MDN Assertions Browser Compatibility Table, so here's why, if you still support IE or Safari at all, you don't get to use lookbehinds yet.

I'm not working with a transpiler right now [sic], but wonder if they're smart enough to parse regexes as part of the transpilation process. My guess would be no, but they should at least throw an error if you've got something your target doesn't support if they don't. Not going to check now, but I should. (note to self)


Chrome Edge Firefox Internet Explorer Opera Safari
lookbehind assertions ((?<= ) and (?<! ))

Labels: , , ,

posted by ruffin at 1/25/2021 10:08:00 AM

I've always been a fan of convergent evolution. This example isn't quite as cool as tarsiers on Madagascar converging with owls (who aren't found on Madagascar) as there is a clear and recent shared ancestor who obviously was ready to become a spitter, but it's cool nevertheless.


While snakes use venom primarily for predation, and venom composition often reflects diet specificity, three lineages of cobras have independently evolved the ability to spit venom at adversaries. Using gene, protein, and functional analyses, we show that the three spitting lineages possess venoms characterized by an up-regulation of phospholipase A2 (PLA2) toxins, which potentiate the action of preexisting venom cytotoxins to activate mammalian sensory neurons and cause enhanced pain. These repeated independent changes provide a fascinating example of convergent evolution across multiple phenotypic levels driven by selection for defense. [emph mine -mfn]

Labels: ,

posted by ruffin at 1/25/2021 09:09:00 AM
Sunday, December 27, 2020

Remember when there was at least a tacit understanding that iOS App Store screen shots showed the app itself? 

Then it was okay if you skirted that a little and showed a composite image of your app that spanned two demo slots, maybe with some “Now 88% more cooler!!1!” lain over top?

Now we’re not even pretending there’s decorum. Do whatever.

Labels: , ,

posted by Jalindrine at 12/27/2020 10:52:00 AM
Tuesday, December 15, 2020

Well, this is the first time I've been disappointed by my Series 2.
I use the watch for three things:
  1. Notifications
  2. Setting the volume on my AirPods (the watch is the missing volume knob, if you didn't already know. Guess the AirPods Max made this super clear.)
  3. Running without a phone*
The Series 2 has GPS, which is nice. I hear people say that the Series 3 is when the watch really hit stride. Maybe. But the 2 is when 1st party fitness became usable. (And only first party. I've tried Nike+ and Runkeeper, and neither do as well with maps and reliability as using Apple's apps on the 2.)
Unfortunately that feeling of the Series 2 supporting first party fitness doesn't, ironically, carry over for Fitness+. Fitness+ requires at least a Series 3.
That's fine and reasonably fair, I guess, but I keep seeing descriptions of Fitness+ that say you just "need an Apple watch". Not true! You need a Series 3 or higher.
That admission was hard to find, literally buried in the small print of Apple's Fitness+ page.
That was less than impressive. I really thought I had a chance to play along. No dice.
I don't think it's worth the extra $150 (Series 3s have gone that low during the buying season, and are, what, $170 now? Used on Swappa are $100, though I'd be worried about battery health) to try Fitness+ out when there are so many other options that don't require it. Would've liked to try some spin classes though.

*Okay, nearing in on a fourth use for my watch: Using it as a heart monitor with Zwift. I'm just a few days into my free week, and it is fun. Right now I've just laid out $20 for a speed sensor that I was able to finagle onto my stationary bike (that I got to rehab after a sports injury surgery, so no extra cost there).
I'm trying not to talk myself into an $800 smart trainer that increases resistance on hills, etc. So far successful, but though I've won some battles, I'm afraid I'm going to lose the war.

Labels: , , ,

posted by Jalindrine at 12/15/2020 11:51:00 AM
Tuesday, December 08, 2020

They're not for me. But that doesn't mean they're a mistake. Far from it.

Five hundred and forty-nine simoleons sounds like a lot, and it is. Doesn't matter. This is a playground for building the best headphones at scale.

And what Apple is really interested in doing is layering Apple-driven sound on top of your day to day experience. That's precisely what its engineers get to play with with the Max.

I bet it sounds great. I bet it's wonderful with whatever Apple TV isn't out yet. I bet, if you're in a tax bracket that's a bit above mine, it's a no-brainer. That's just enough of a market for Apple to float these sorts of top of the line earphones to ensure its Sonically Augmented Realty works well.

It also makes AirPods Pro look lots cheaper now, doesn't it? Marketing devils.

(I also like the use of Max instead of Pro to mean "bestest". Though I guess now Max means "bestest big" and Pro means "bestest but potentially still small". Idk. I give up on the naming making sense.)

Labels: , ,

posted by ruffin at 12/08/2020 09:40:00 AM
Saturday, November 21, 2020

I’ve been meaning to find time to write this up really well, but haven’t, so let’s not let the perfect get in the way of the wholly inadequate. I have not finished writing, much less editing, this one. Not that you’ll be able to tell comparing to my other posts. ;^)

Nearsightedness and presbyopia:

Presbyopia stinks. You get old, you stop being able to focus on things that are close to you. You need reading glasses to read. Or, if you’re already nearsighted, you need to get “multifocial” lens, meaning, at its simpliest, you need two different corrections: 
  1. a lens to correct nearsightedness to allow you to see far away, and 
  2. a lens to correct the correction, because your “far” vision now goes TOO FAR!!1!!, that allows you to see near again, but farther than the 6-8” your nearsightedness allows. 
If you’re nearsighted and wear contacts, you see this just like any normal sighted person. You can see far away with the contacts but, slowly, reading things becomes blurry. You get readers to put over your contacts and the problem is solved. Sorta.
If you are nearsighted and wear glasses, one key symptom that tells you you’re descending into presbyopia (well, for me) is that you start moving things under your glasses’ lens. That’s because your nearsightedness still works. Your presbyopia isn’t bad, and there’s really only a very small range of tiny stuff that’s blurry, and you can probably get around this by simply bypassing your glasses. Maybe if your nearsightedness isn’t too bad you can get away with reading with your glasses off.
These are signs! Multifocals are near!

Types of multifocal lens:

Let’s cover the types (and I need to add a few more here later) of multifocal lenses. 
Keep in mind all of these multifocal lens types exist because of nearsighted people with presbyopia. One lens is enough to fix your nearsightedness when you’re young. Then you get prebyopia on top of it and we need to correct twice. Then your presbyopia gets so bad you can’t focus on books and computer monitors with the same lens, and you need three — distance, reading, and monitor/intermediate length fixes.
But you can always take your glasses off and see six inches in front of your nose again. Well, most of us.
image from Quora
progressive lens images (with added label) from Zenni Optical
  • Bifocals:
    • You have one prescription for far vision and another for close/reading vision.
    • I like bifocals b/c there’s one clear line of demarcation where things change and zero lens-induced blurriness, unlike progressives.
    • Types:
      • D-shaped or moon shaped
        • This seems to be common now.
        • The advantage for me is that side peripheral vision is all distant, making walking easier.
        • The advantage for people making the lenses is that they just stick ("ADD") a lens on top of the conventional one to change the prescription. Simple.
      • Executive/straight/Franklin:
        • One line cuts all the way across the lens.
        • The original bifocal.
        • Actually pretty rare now, afaict.
        • Takes a true optician, I think. You don't just paste a lens on top. You're putting to lenses together.
      • Golfer bifocal
        • Glasses mess up my peripheral vision badly enough I can’t golf with them at all, but...
        • Some people have the same issue with bifocals messing up their swing as the change in vision between lenses is jarring.
        • These fix that by giving all distance vision except a small bifocal in the outside bottom of your dominant hand side's lens.
        • Now you can see your scorecard in that window (and only through one lens), but your peripheral vision towards the hole is completely clear.
  • Progressives
    • These are the slick lenses that cost a lot more and don’t have any lines.
    • You look young again! (Ha ha ha. No you don't. Sorry. But your glasses do!)
    • Everything you ever wanted to know about how they work
    • Here’s the key: Progressives expect you to move your head in the direction of what you want to view, not your eyes. They completely discount peripheral vision.
    • Types:
      • Normal three-distance lens
        • Note that the “distance” portion in the pictures above and below is pretty phat.
        • Intermediate or PC distance is super tiny
        • The close up/reading is better, but note all the area without a label. That’s where the progressive trick leaves useless glass. You can’t see out of this part of the lens
        • Advantage over bifocals: You can ostensibly see your computer montior with the third range, intermediate.
        • Advantage over trifocals: There are no lines, so you look OH SO YOUNG.
      • Near-range progressives
        • Sort of two distances, close (reading) and intermediate (computer monitor)
        • Emphasis on the reading.
        • Advantage over bifocals? Reading area is larger than your typical D-shape overlay.
      • “Office" or “computer” progressives
        • Same as near-range, with two distances supported.
        • Emphasis is on intermediate distance. PCs.
        • Advantage over bifocals? You don’t have to tilt your head to see your computer monitor.
          • Trick question: If I had bifocals with intermediate vision in the “main”/top lens, aren’t I doing just as well?
          • Better yet, if I had bifocals with a higher segment line, distance on top, PC distance for the bottom (but now over half of my field), aren’t I doing better?
Progressives stink for computer work. No, seriously. Check out the “blurry area” and the area for “PC” in normal progressives. This is useless.
Here’s a decent but long explanation of why the lens has blurry spots — the “optical swamp” as this guy puts its. I’ve got it cued to showing a trifocal equivalent of a standard progressive where he’s showing how close the three lenses are in the middle of the compound lens, which gives you an idea of where the “sight corridor” (the part down the middle where you can see in a progressive) comes from.
How bad are progressives and their crappy “optical swamps”? Bad enough that Nikon has a range of lens that run over $450 to get just the tiniest improvement to that vision corridor.
Um… wow?
You know what doesn’t have the swamp? Bifocals and trifocals. Bifocals and trifocals don’t have a swap, and can have 100% coverage for intermediate vision.

Nearsighted Superpowers:

But here’s the deal: You don’t necessarily have to get multifocals when this starts. Because it’s not that you can’t see close any more. It’s that your eye doesn’t allow you to focus on as large a range of corrective distances any more.
And here also is your nearsighted superpower: Before presbyopia set in, you could see things that were INSANELY CLOSE!!! 

I remember getting a hair cut and having a small hair fall into my (skip to the next paragraph if you’re squeamish) tear duct in my eye. When I went to the eye doctor to be sure, he thought I was just guessing when I said that was what happened. But I really could see it in the mirror when I got up close. He needed some serious magnification before he said, “Hey, you’re right!” 

If you’re nearsighted and probiscus-endowed enough, you might be able to focus on the end of your nose with this super power. Or do watchwork without a magnifiying lens. It is a superpower.
But though your range comes in lots closer than an average human’s, it also stops well short of theirs too. So you get glasses, give up your superpower (at least while your glasses are on. Who does this sound like?) and go on your merry way.

As you get presbyopia, you lose a little of this superpower. Your range decreases. You can still see clearly 6-8" (or whatever for you) away from your face, but not the end of your nose any more. Still superpowered, don't get me wrong, but the range has diminished.

The $7 trick to put off multifocals:

With what comes next, please recall that I’m not a doctor, just a middle-aged myopic. Please consult your eye specialists for what’s right for you.
And therein is the trick: Your optometrist or opthalmologist corrects based on getting things perfect at 20/20 or beyond. They want crystal clear distance vision. 

They moved your vision's range from SUPERPOWER CLOSE to eight inches to a normal range of about five inches to INFINITY AND BEYOND. 
What if, and stick with me here, i wanted to trade crystal clear mountains in the distance for skipping the multifocals? What if I ordered slightly less powerful single focal lenses that allowed me to see my computer monitor perfectly at the expense of seeing the clouds in HD?

That is, what if I wanted my corrected range to move from (5" to INFINITY) to (18" to REASONABLY FAR AWAY SO I CAN STILL DRIVE)?
Again, presbyopia does not mean that a nearsighted person can’t see close up. Of course you can! Not quite as super-power style close as you once could, but still much closer than the general public. 
Presbyopic myopics have lost some range in what they can see with single focal corrective lens. You can’t focus as close, which means the range you can focus on with your single focal glasses is constrained. You could probably see to the ends of the earth with good glasses when you were young. Now you might have to trade that for seeing a half-mile out with extreme precision so that you can focus on a computer monitor easily.
And that’s exactly what the bottom half of bifocals do. The give you a weaker prescription by whatever your ADD value is. You take your negative value for your prescription, -4 or -5.75 or whatever, and you add a value to it — though note that that’s not where ADD comes from. Your bifocal lens is simply a less powerful prescription for nearsightedness.
If you had your bifocal bottom lens' prescription in a single focal lens, you could see a lot more of whatever’s close in your visual field in focus clearly. But far away would be a pain. But because you probably don’t need super-close vision, you can get what I’ve seen advertised as “computer glasses” that focus on somewhere between reading (bifocal bottom half) and distance (bifocal top) to bring intermediate sight perfectly into focus.
Note that I'm not talking about are not “office progressives” — those are multifocal lens like those on the right side of the Zenni image showing three progressive options, above. These “computer glasses” are single focal lenses that are less powerful than your distance prescription by about half your ADD. Zenni Optical describes these sorts of glasses here

When you’re just getting presbyopia, the concession between your full distance prescription and half your ADD is very small. Back up .25 or .50 on your nearsighted prescription (from 5.00 diopters to 4.50, for example) and see how that works for you. You can probably wear them all the time (like I did for a few years — remembering that you might want full correctives or multi-focals for driving) when you’re just starting to lose your range of sight.

A place to try this out for cheap:

I’ve gotten glasses on the cheap from Zenni Opitcal for years. Zenni has a frame I really like — doesn’t look horrendous, is pretty resilient (some of their plastic frames are crap) — that’s $6.95 with lenses. No kidding. With $5 flat shipping per order, there’s really no reason not to play around a little. And since I took the “computer glasses” idea from their website, so they’re game to play with your prescription a bit. I've ordered several prescriptions at once in different frames so I could try a range of different intermediate distance values.
So give the “computer glasses,” but maybe with personally tuned partial ADD values, cheat a try. Even though I’m slowly getting past the point that I can use a single precscription for everything I need to see, it postponed getting multifocals for a few years. I also still use them when I’m on the computer, allowing me to see everything up to about two feet clearly, which is perfect for getting work done.

It sure beats the heck out of tilting my head up (bifocals -- though admittedly now I'd like to custom order lenses that simply move the line up on bifocals and have distance vision start just over the top of my monitor) or moving that small dot for intermediate vision directly at the spot I want to view (progressives). And when they were good enough for driving too, well, it wasn't bad at all.

Labels: ,

posted by Jalindrine at 11/21/2020 01:44:00 PM
Wednesday, November 18, 2020

I got a new MacBook Air. The tools [that depend on npm, so, um, in a modern environment, everything] are not ready for you.

You're not going to find prebuilt binaries.

node-pre-gyp WARN Tried to download(404): 

node-pre-gyp WARN Pre-built binaries not found for fsevents@1.2.4 and node@15.2.1 (node-v88 ABI, unknown) (falling back to source compile with node-gyp) 

And you're not going to be able to build from source.

In file included from ../

../src/ error: no matching member function for call to 'Set'

  object->Set(Nan::New<v8::String>("kFSEventStreamEventFlagEventIdsWrapped").ToLocalChecked(), Nan::New<v8::Integer>(kFSEventStreamEventFlagEventIdsWrapped));


/Users/SomeDev/Library/Caches/node-gyp/15.2.1/include/node/v8.h:3716:37: note: candidate function not viable: requires 3 arguments, but 2 were provided

  V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,


/Users/SomeDev/Library/Caches/node-gyp/15.2.1/include/node/v8.h:3719:37: note: candidate function not viable: requires 3 arguments, but 2 were provided

  V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,


fatal error: too many errors emitted, stopping now [-ferror-limit=]

2 warnings and 20 errors generated.

The issues with nvm (you can only install the latest version of node) should have been a good heads up. This is not going to be pretty.


So hack away at iOS, but don't expect to do your normal macOS web work any time soon.

Labels: , , ,

posted by Jalindrine at 11/18/2020 01:51:00 PM
Thursday, November 12, 2020


The M1 chip, which belongs to a ‌MacBook Air‌ with 8GB RAM, features a single-core score of 1687 and a multi-core score of 7433.


In comparison to Macs, the single-core performance is better than any other available Mac, and the multi-core performance beats out all of the 2019 16-inch MacBook Pro models, including the 10th-generation high-end 2.4GHz Intel Core i9 model. That high-end 16-inch MacBook Pro earned a single-core score of 1096 and a multi-core score of 6870.


The performance numbers of the A14 on this chart is relatively mind-boggling. If I were to release this data with the label of the A14 hidden, one would guess that the data-points came from some other x86 SKU from either AMD or Intel. The fact that the A14 currently competes with the very best top-performance designs that the x86 vendors have on the market today is just an astonishing feat.

Looking into the detailed scores, what again amazes me is the fact that the A14 not only keeps up, but actually beats both these competitors in memory-latency sensitive workloads such as 429.mcf and 471.omnetpp, even though they either have the same memory (i7-1185G7 with LPDDR4X-4266), or desktop-grade memory (5950X with DDR-3200). [emphasis mine]

The most important thing to remember when you read these benchmarks is that, with the exception of one GPU core, every new Mac has exactly the same CPU. It's just clothed in three different skins.

  • One is inexpensive.
  • One has much better cooling and a bigger battery.
  • The last is a desktop.

You really don't get the sort of performance step up you'd normally expect going from one tier to another. They've removed the reason you had to use a different class of processor in the Air -- reducing the wattage required -- by moving everything to the same low-powered chip. You no longer "unlock" a better class of processor when you go Pro. You "just" keep it cooler.

This is why I bagged a new Air.

The only reason I need macOS now is for Xamarin and iOS development. I bought a MacBook Air two years ago, and though it's nice with the upgraded SSD [sic], the processor is really getting long in the tooth. Insanely slow.

The M1's performance jump combined with the Air's price (and, admittedly, combined with the end of the butterfly keyboard) finally makes it make sense to buy a Mac again. And now that I've slowly added USB-C docks and monitors (including a nice Lenovo monitor that sends power with the video) around the house, two USB ports is plenty.

I'm looking forward to seeing how important the fan in the Pro is if you're compiling a decent amount. I may have made a mistake, and saving $300 over the Pro was penny wise & pound foolish, but I doubt it. If I could get by at all on the old Air (though it was getting close to unusable), this is going to be wonderful.

I'm also concerned about Rosetta 2 performance. So far, it appears things are running reasonably fast. If Visual Studio is happy, I'm happy. If World of Warcraft runs... well, without a fan, I bet it doesn't impress, but that'd be a nice bonus. I'm not too concerned about the rest of my app suite...

  1. Visual Studio/Xamarin and the iPhone Simulator
  2. Thunderbird (some concern; it's a bloated app)
  3. Chrome (it's gotta work or Apple failed. That doesn't mean I'm putting money on it working)
  4. Sublime
  5. VS Code (already insanely fast)
  6. ReadKit (though I can finally run NetNewsWire in Big Sur)
  7. iStat (not hugely important)
  8. Amazon Music?
  9. MacVim

That's about it. Aside from maybe Thunderbird, I don't see an issue even if they don't go native soon. (I have played with Panic's Nova a little. It'll be native, so no issues there either.)

I'm looking forward to benchmarking some next weekend.

There are certainly other use cases that might steer you away from an Air. If you wanted to do video, maybe you skip the 7 GPU Air for the 8 core GPU upgraded Air or MacBook Pro.

If you need a brighter screen, the Pro is [100 nits iirc] brighter.

If you're Joe Cieplinski, and it's all about the battery, maybe you get a Pro.

  • My battery life [with the M1 Pro] is likely to be close to double what I’m currently getting.

That said, USB-C has made it easy to pop a power bank in your bag and keep plugging away... and, as I've joked, I'm a Hodgman when it comes to battery power myself.

If you love the Touch Bar, which is actually pretty neat, maybe you grab a Pro.

If you never leave your desk or you're running a computer lab, maybe you grab the mini?

But I usually figure out what the floor for entry is for a platform and see if and when it's worth entering, and the bottom line is that using macOS seems like it's going to be worth it again with new M1-powered Macs.

Labels: , , ,

posted by ruffin at 11/12/2020 09:28:00 PM
Saturday, November 07, 2020

Our favorite _DavidSmith has declared app support bankruptcy. With the success of WidgetSmith, I get it. He's got MUCH bigger fish to fry.

But I emailed a decently written bug request on September 24th, well before WidgetSmith blew up, and I just received this reply (to be clear, it's the first reply. Not even an autoresponse before, afaict), a short month and a half later.

No offense, and I think he'd admit it: That's email support bankruptcy.

Why good indie apps often have incredible support... initially

Again, as a developer with a small app store side business, I get it. It's tough to find the time to reply to every request, and the time it takes to reply is never a good trade off on its face. If I answer an email carefully once with a $15 app, I've probably lost money, and if I get into an email chain, it's, on some level, a time and resource sink I'll never climb out of.

But note: It makes sense to go overboard on support when you start, as you're looking for word of mouth at that point. If you can get your first 500 customers, then maybe you have a snowball big enough to lead to a sustainable business. And so lots of indie devs give amazing support (I'm looking at you, Daniel Jalkut) in ways that are simply unsustainable at scale.

The danger of success

I'm not sure when David made it to "sustainable snowball" stage, but I'm confident he's well past it and into avalanche stage with WidgetSmith now.

And I think this is a weakness of indie development. As much as David wasn't "in it to hit big", he's not against it. He's been writing apps for a decade (plus?) and taking a shotgun approach with good individual success. Now he's extremely successful*. What happened to that awesome support? (Disclaimer: I've never gotten awesome support from his apps, but at least with the hired help, I've gotten a reply or two.) 

As a sort of app experience comp, I'll also admit Marco's complete lack of support for Overcast, the podcast player, leaves a bad taste in my mouth. Always has. I've emailed and posted a few bugs to Twitter, and nothing. Not even a "like". 

That's fine, and it's not a dumb decision (see above on time), but it's not a decision I really appreciate as a customer. 

Hire a contractor to go through and reply, "That's interesting. Does anyone else have the same issue?" to every Twitter post. If the contractor finds enough of the same thing, have them tell Marco and get an update from him to post on the issue. What does that cost? $50 once every week or two? Overcast gets 150+ new subscribers a week on a bad week. That's $1000 a week new income. With 50% churn each year, that's still... carry the one... enough to hire someone.

And that's really the issue. Marco already had a single app whose business was bigger than the snowball but smaller than the avalanche on some level. He hasn't had to keep pushing out apps to find success. He's easily making $200k a year on Overcast, which I'd call success. He doesn't have to find another app (though, given his history, I'm sort of surprised he hasn't). 

This is the danger for users of indie apps: Indie apps with enough success find that word of mouth for good support is no longer particularly important. 

Leaving the toy store

I'm reminded of this post from Brent Simmons:

People in the village love toys, but they also like to get to know the village toy-maker.

Brent was talking about having a blog, but I'd extend that to all communication from the dev to the user. When the toymaker discovers their Rubik Cube and goes to the big city, you don't get to really know the village toymaker any more. What's more, you'll find they've stopped making your favorite toys.

So though it makes sense in David's case to declare support bankruptcy and to put his limited resources on the cash cow, it's an off-putting move. I don't want to check out "his apps here". Which of those are being supported now? Why not just point me to WidgetSmith? Isn't that effectively the message behind the message? "For at least the near-term, until the fire burns itself out, we're a WidgetSmith-only shop." Nothing inherently wrong with that. At least it's honest.

Here's the important point for David: Realize, at least for the time being, that you're no longer the village toymaker.


Here are some more suggestions to improve the email. As someone whose even taught business writing a few times, I don't feel it's out of turn to offer them.

  • It's been over a month at this point. Again, on some level, why engage at all? You've already sent the "I don't quite have time" message loud and clear.
  • But if you do communicate -- 
    • Is there a FAQ of common errors/issues? Can you identify if my issue is on that?
    • Is there a forum where the community might help? (Could you [hire someone to] stand one up?)
    • Maybe try this: Ask me if I've found a solution in the last 45 days.
      • (Spoiler: I have.)
    • Give users a realistic timeframe before they can expect "real" help.
In any event, you probably shouldn't send out a, "I'm orphaning all of my children, you know, for now, at least," email if you're still adopting them

That is, he's still selling the app. If you don't have time to support it, drop it. Or make it free. Or use your newfound resources to support these other apps with non-technical staff (other news flash: my issue's solution was not app specific). Or hire a developer for these orphaned apps. Or...

The take home is that the #1 rule of business writing is to offer a win-win. You can give bad news if you can legitimately offer value to your users as you do it. If not, you're making the wrong decisions.

There is value in honesty. Perhaps just as important to keep in mind: There is value in being honest with yourself.

* He's really successful in the sense that WidgetSmith is/was really popular. But I am genuinely worried about his inability to pursue profit effectively -- he's only selling subscriptions to add weather and tides? 

There is nothing wrong with selling an exclusive color or layout in the app or to make stuff like that part of a subscription.

There is something very wrong with not coming up with more reasons to get a subscription at this point. Active support is a good bonus. Access to new widgets as they're developed, even just early access by a month or two, is a no-brainer.

If I had millions of users, you'd better believe I'd be selling more than just tides and forecasts, even if it's just a tip jar like on Pedometer++. People love the app. Give them reasons and ways to support your writing it.

Labels: , , , ,

posted by ruffin at 11/07/2020 01:57:00 PM

Support freedom
All posts can be accessed here:

Just the last year o' posts:

URLs I want to remember:
* Atari 2600 programming on your Mac
* joel on software (tip pt)
* Professional links: resume, github, paltry StackOverflow * Regular Expression Introduction (copy)
* The hex editor whose name I forget
* JSONLint to pretty-ify JSON
* Using CommonDialog in VB 6 * Free zip utils
* git repo mapped drive setup * Regex Tester
* Read the bits about the zone * Find column in sql server db by name
* Giant ASCII Textifier in Stick Figures (in Ivrit) * Quick intro to Javascript
* Don't [over-]sweat "micro-optimization" * Parsing str's in VB6
* .ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); (src) * Break on a Lenovo T430: Fn+Alt+B
email if ya gotta, RSS if ya wanna RSS, (?_?), ¢, & ? if you're keypadless

Powered by Blogger Curmudgeon Gamer badge
The postings on this site are [usually] my own and do not necessarily reflect the views of any employer, past or present, or other entity.