MacBook, defective by design banner

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


descrip:

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 www.myfreakinfirst-andlast-name.com

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

FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike, always wear white.

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

x

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!

Friday, November 04, 2022

I'm going to tell a story I really liked telling when I taught Public Speaking or Business Writing, though I probably snuck it eventually in any time I taught.

It's about knowing your audience and identifying when you're an expert speaking to others largely because they're not. It's about what my business writing textbook's author called "You-Attitude". Someone who taught from that book at Radford said the following are a few "you-attitude principles":

  • Look at situations from the readerโ€™s perspective
  • Emphasize what the reader wants to know
  • Respect the readerโ€™s intelligence
  • Protect the readerโ€™s ego

You can learn to do this, but it comes much more naturally to some than it does to others.

Anyhow, it's story time.


One day, for lunch, I walked into a Hardee's, a hamburger joint, and had the mis/fortune to overhear this conversation going on in the line in front of me.

  • Hardee's employee: What would you like?
  • Customer: A cheeseburger with lettuce, tomato, ketchup, and mayo.
  • Employee, after looking down at the register: But what don't you want on it?
  • Customer: I don't know. Everything that's not lettuce, tomato, ketchup, and mayo?
  • Employee: I understand what you want. But what don't you want?

Ad infinitum. (It really went on like this for a while.)

:facepalm:

I mean, obviously the employee's register must have had some way to take toppings away from an order, but not a way to express the opposite: Exclusive toppings to put on.

Look, ultimately, this is a common thing at restaurants, and if you've been a few times & paid attention, you might, as a customer, be able to handle just such a conversation. Maybe you've ordered at Jersey Mike's, which has some toppings preselected for your sandwich so you can get it "Mike's Way".

If you're ordering in person, you might say, "I want it Mike's Way, minus onions, vinegar, & oil, plus mayo."

But if you have no idea what Mike's Way is, are you stuck? No! Even though it's usually posted on the ordering board in front of you, most sandwich makers (are they called "artists" now? Oops, that's Subway) can still figure out how to do "lettuce, tomato, oregano, salt, and mayo" if that's what you order.

And that's the problem we had here. The Hardee's employee couldn't translate the customer's order to what the register needed to accept the order. No matter how long we stood there asking, "Right, but what dontcha want?" the customer would never know what compromised the default "Hardee's Way". And it appeared the employee either didn't know or couldn't articulate that either.

That's the epitome of "Me-Attitude": The inability to frame a situation from a point of view other than your own. You need to be able to reframe the discussion around how it affects your audience -- the "you". When in doubt, assume they don't know what you know until they tell you otherwise. And when they've removed all doubt that they don't know something you assumed they did, back up and catch them up.

I run into this inability to describe something from another's point of view at the office with some frequency. Once, we had someone put up code to review in an area where I'd never worked before, changing code I'd never seen, fixing a bug I'd never read.

  • Me: Okay, catch me up. Describe what you're doing. What problem were you solving? What other ideas did you consider and not use? How did you fix it and why?
  • Them: It's all in the bug report [plot twist: it was not]. We couldn't use jQuery because we're catching bubble events at the document level.
  • Me: Great, but why are we listening to mousedown events at the document level? What problem did that solve?
  • Them: That fixes the bug.
  • Me: Cool, cool.
    • Also me: This is probably going to take me a while to review.

Look, I kind of get it. "Them" was saying, "If you had my context, you'd understand what's happening." But I didn't have the context.

Them's answers were wholly unsatisfying in the "guess the Hardee's Way" way. I'm ultimately asking, "Can you give me the context so that I can intelligently review this without doing a forensic study of the code first?" The answer in this case was, unfortunately, no.

I didn't have any more luck convincing "Them" to explain what came on the burger by default than the person in front of me did.

What the audience needed to know wasn't emphasized. These are all "Me-Attitude" conversations, not "You-Attitude" ones. And that makes for clunky communication and inefficient work.

Moral of the story: Be able to tell your audience what's on your burger.

Labels: , , , ,


posted by ruffin at 11/04/2022 01:30: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.


Suggestions

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
Wednesday, February 19, 2014

Messaging: Mobile's Killer App | stratฤ“chery by Ben Thompson:


Conversations are never ending, and friends come and go at a pace dictated not by physicality, but rather by attention.


Great line from Ben Thompson on the importance of instant messaging.

He's one of the few pundits that's good enough that when I find myself disagreeing with him, I stop and take the time to figure out how (most likely) 1.) I'm plain wrong or (occasionally, if I'm thoughtful enough) 2.) we're not really disagreeing, but taking different tacks at thinking the same thing.

But absolutely regardless of my petty self-interjection, that's a well-written line that deserves some credit.

Labels:


posted by ruffin at 2/19/2014 02:21:00 PM
Thursday, September 06, 2012

douglascrockford/JSLint:
The place to express yourself in programming is in the quality of your ideas, and the efficiency of execution. The role of style is the same as in literature. A great writer doesn't express himself by putting the spaces before his commas instead of after, or by putting extra spaces inside his parentheses. A great writer will slavishly conform to some rules of style, and that in no way constrains his power to express himself creatively. See for example William Strunk's The Elements of Style [http://www.crockford.com/wrrrld/style.html].
 

E. E. Cummings might disagree.


Look, I've written about JSLint's Crockford before.  He's a little off his rocker.  It's perhaps a productive neurosis, but it's something of a [non-clinical, popular connotation only] neurosis nonetheless.

The important thing here is that there are not persistent rules of grammar, in writing or coding.  Strunk & White didn't decide what was a best practice when they wrote of grammar and style.  They tried to capture current convention.  Language doesn't sit, sessile.  It's morphs.  Nobody says, "Verbing weirds language," until they do.

Maybe he's against illegal opcodes too?  Well, that'd be stupid.  Why not do what the machine lets you, if there's an advantage?  Let your peers decide if what you've written is better, and the circle of peers is lots larger than just Crockford. We don't all evolve lockstep with someone's plan. That's the whole point of a passive selective system.

The worst part is the take it or leave it mentality JSLint has.  Found an error?  Sometimes, apparently, it just stops.  I'm sure there's a setting somewhere, but a coworker has experienced it stopping on (var i; i < intLimit; i++). Stopping. No additional information. Change where the i is declared or I'm taking my toys and going home. If you don't fix each error, I'm not letting you know where all of them are, regardless of if the code works or not.

That's wack, man. Bring back the poetry. Or at least the chance for all us primates slapping at keyboards to accidentally make some.

EDIT: This, from the Criticism section of Elements of Style's entry on Wikipedia, has some interesting info...

In criticizing The Elements of Style, Geoffrey Pullum, professor of linguistics at Edinburgh University, and co-author of The Cambridge Grammar of the English Language (2002), said that:

The book's toxic mix of purism, atavism, and personal eccentricity is not underpinned by a proper grounding in English grammar. It is often so misguided that the authors appear not to notice their own egregious flouting of its own rules . . . It's sad. Several generations of college students learned their grammar from the uninformed bossiness of Strunk and White, and the result is a nation of educated people who know they feel vaguely anxious and insecure whenever they write however or than me or was or which, but can't tell you why.[10]


Yeah, see, that's not the paradigm we're looking for. [sic]

Labels: , , ,


posted by ruffin at 9/06/2012 09:15:00 AM
Tuesday, May 01, 2012

Hilarious "exchange", though that's being kind, on github regarding JSLint. I could copy and paste, but it's required reading in the original. I'll highlight two bits with images for you "TL:DR or click"-ers.



So kittteh sayz "Can I politely ask for cheezeburger".

... I get an additional error stating Unexpected space before '['.

The only way to get rid of this error is to format the script like this, which I think make it more unreadable:

var showOrHide = 'show';
jQuery('.selector')
 .removeAttr('style')[showOrHide]();

So my question is would it be possible to make the second example not produce an error?

Thanks :)


Mr. Crockford responds: NO WAY KITTEH!!!


When this happens to me, I get a little flush. What thah...? I mean, engage the asker, right? Why the draconian SLAM? He's not asking if it's, in your royal opinion, The Right Thing to do. He's asking, nicely, if you wouldn't mind him doing This Wrong Thing briefly.

When someone is asking respectfully, likely represent a problem experienced by more users than themselves, what's the right move? Well, wrong is, "NO KITTEH, THAT'S MY POT PIE!" I mean, it's fair game to say, "I get your meaning, but, at least subjectively, I'd like to encourage different behavior." Macro it. It's nicer.

Thank you to Cartmans around the world for your pleasant conversation, even when you're right. ;^)

Labels: , ,


posted by ruffin at 5/01/2012 10:56:00 AM

<< Older | Newer >>


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 etree.org 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.