|
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! |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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... initiallyAgain, 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 successI'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 storeI'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. SuggestionsHere 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.
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: business, communication, indie, ios, support posted by ruffin at 11/07/2020 01:57:00 PM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Friday, February 02, 2018 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
There's something in "massively multiplayer online games" called theorycrafting. It's when you take a game and play it with an eye to figure out the numbers beneath it. You've probably seen Dungeons & Dragons played in a movie or television show, where dice are rolled to see if a player, say, escapes from a monster's grasp. When you're playing with dice, you can see the numbers. "To escape, you need to roll greater than a fifteen on a twenty-sided die," your referee might tell you. When you play a game online, like World of Warcraft, the "dice" are hidden, the server is the referee, and some software is coming up with all of the percentages and values. But "theorycrafters" want to see the dice. They'll play in ways where they can take known situations and outcomes, change a single variable, and then see how the known values change. They'll record things in spreadsheets, or even use programs written specifically to watch and record values as they play. What theorycrafters are trying to do is, in effect, exactly like counting cards in blackjack. If you know what the system is doing... that there are, say, six decks in a shoe, and 13 kings have been played... your odds of winning, and what the odds are for winning what you want, go waaaaay up. With online games, it's sort of like playing blackjack without knowing which cards were removed from the deck. The servers could be running whatever numbers they want. Now, if you ask me, theorycrafting isn't fun. When I play, I want Blizzard (Warcraft's developers) to take my dice, please, and let me forget what I'm doing isn't much different from playing blackjack or slots. Unfortunately, this attitude keeps me from participating fully in the game. In "raids", where 30-40 people cooperatively1 fight the most powerful creatures in the game, everyone is supposed to be familiar with all sorts of theorcrafted knowledge...
If you're not well-versed, and your character is wearing or doing the wrong things, especially in the toughest parts of the game, you're liable to get kicked out of the raid.2 And those links I've included, above, were for just one "specialization" of the thirty-six in the game! Phew. You get the picture. It's insane the amount of studying that needs to go on to simply know the results of theorycrafting, much less to do the theorycrafting yourself. And it kills some of the fun. Ultimately, there are other games I could be playing. Which brings us to the lesson I'm trying to push here: Theorycrafters might be playing the same game as me, but being a theorycrafter is work, hard work. Targeted advertisements are like theorycrafting. Discuss.How does this connect with being an indie app developer? Well, MarkUpDown, my Markdown editor for Windows 10, is getting reasonably mature, and over the last year or so, I've had my ears open to other indie developers that talk about advertising. There's a decent amount of advice about how to market, but I noticed that I bristled when I heard about one kind of marketing in particular. It took me a while to figure out why: It's because there's a particular type of marketing that reminds me of theorycrafting, and I'm not convinced the juice is worth the squeeze. I'm going to lump the advertising methods I've heard discussed into two categories: Broadcast and microcast. (Dare you to figure out which one I like more.) Broadcast advertisementsYou're used to broadcast advertisements. Television, radio, and newspapers are the conventional examples. In a figurative since, there's always a lot of "bycatch" in broadcast. You're casting the net out broadly, knowing a good percentage of the people who are exposed to your ad aren't in your market. (Source: Wikimedia commons) You certainly want to cast the nets where you think you'll maximize the market you're after, but you're not being that careful. Fill it up! Here's one example of a "new media" broadcast from John Saddington's blog, where he's talking about spending $9000 to advertise his Desk app on Daring Fireball:
News flash: It did.
That's expensive, and risky, but fun. An aside on advertising dollarsI can hear folks saying to themselves, "Nine grand?!! Are you OUT OF YOUR MIND?!!!" One thing I feel I should point out: If you've written a detailed app, you've already invested lots more than nine grand in your endeavor. I don't want to think about it too much, but I probably have $30-40k of time in MarkUpDown. That's insane. It's a great Markdown editor -- the best on Windows, I don't mind believing -- and that's probably about what it'd cost to get someone with my experience to write it. But that's a ton of cash -- or, to be kinder, a huge investment. If you won't drop $10k to get the word out on something that ran you $35k to write, well, your don't value your time enough. I know, I know. As an indie, getting to write what you want is a huge part of the gig, and by "part", I mean "reward". And I know the feeling of wishing you could give some cash back to your employer to work on what you wanted to, even if it was constrainted to something in their app! I often feel that way about tech debt. Gosh, I'd work for half-price now to make my future work so much easier. Regardless, the advice here is don't be penny wise with advertising and pound foolish with your time. $5-10k is not a lot to spend on effective advertising. The question I keep asking myself is, "What advertising is going to be effective?" And with that, we're back to our consideration of... "Microcast" advertisementsFacebook and Twitter, even Google AdWords to a degree, offer a different sort of advertisement than traditional broadcast. Targeted advertisements allow you to cast your net more precisely, reducing the bycatch significantly. Now, instead of broadcasting to everyone at a website (can you imagine if Google search had static banner ads?), you get to wait until the user has performed some action that hugely improves the chances they're interested in what you're selling.
These are increasingly specific demographics. You're no longer broadcasting to a group that you hope largely overlaps with your market. You're lasering in on people you already know are your market, and hoping your net works. Of course, this service is going to cost you more per impression too. Theorycraft and MicrocastsThe thing that bugs me is how theorycrafty app developers sound when they're working on their targeted microcasts. Like theorycrafting a game, finding the right target for your advertisements is hard work. I understand the appeal that if you get everything dialed in perfectly, you could theoretically take your hands off of that perfect combination, step away, ramp up your advertising budget, and hit Phase 3. Profit. But it always sounds like there are too many dials. Here's a quick introduction to how it feels to use Facebook ads from Charles Perry and Joe Ciplinski on the Release Notes podcast, episode Sorta Cool, Sorta Creepy, from back in December 2015 (link is cued up to 8:33 - transcriptions and any errors therein are mine!):
And from the same episode a few minutes later on...
Man, that's a lot of dials. And each one could be the barrier to hitting your target market. Who is more likely to use Bombing Brain's Setlists app? What if it's, strangely, drummers, even though there's a huge emphasis on chords in the app? You might never think to add them to a targeted ad, though a broadcast ad on The Garage Band podcast (made up name) would've hit them all. That is to say, microcasts seem to operate as opt-in operations. Or here's Curtis Herbert's blog post, That Dirty M[arketing] Word:
That sounds like theorycrafting. Or on the Under the Radar podcast, episode #49, App Store Search Ads:
Theorycraft or carpet bomb?Look at the emphasis on cost per acquisition in the last two microcast quotes. That's the right metric, but I'd suggest "per user" is the wrong unit. Maybe it's just mentality, but I think it's also largely medium. There are places your potential users live. If you can blanket one of those places that overlaps with your potential users closely enough, it seems worth it to me to broadcast there. Now I figure part of the lure of microcast is microspending. You can spend $20 (or less) a month on these media if you want. If you target too broadly, your cash will be spent quickly, and you'll hit folks who weren't in your market. But if you start with the pico instead of the micro, you can work your way up, minimizing the cash you've wasted on bycatch. But I also worry the time it takes to "pico-theorycraft"3 an advertisement... oh, the time. What features did you not add because of the time you spent theorycrafting advertisements? I think Curtis is happy with his results, but every time I have a process that complicated (including writing blog posts), I look up at the clock and say, "Where did today's time go?!" And if the ads don't scale, even if our theorycrafted dials were working great, what time we've wasted! If I had to tune all those knobs over days or weeks, then cranked my spending from $20 to $2000, and didn't get 100x results, well, man. What a waste. If you have a broad enough market, and the market congregates in a few specific places that are marketable, I think the lesson is that you go advertise on those media first. The broadest exposure is the best exposure, and has the best follow-on benefits. I also wonder how much of, say, Daring Fireball readers also would be the ones hit by a well-theorycrafted advertisement. If I had a marketing department with people who really knew how to do this, I would expect them to make these experiments. When it's just me, well, easier is better. Time is money and all that.
But for a niche app like MarkUpDown, even though there was, a few years ago, at least one decent Markdown editor on Windows making enough money it got rewritten, I have to consider just how big my total potential market is. If I could reach everyone who would spend $23 on not just a Markdown editor, but my Markdown editor, how many would that be? If I could find Desk App's Daring Fireball equivalent, could I pull down 550 purchases? Or should I just consider this app a labor of love? If the market is thousands, and I can find the right source, broadcast makes sense. If I want to maximize the return on a labor of love, then I should keep up the hobbyist mentality and microcast. (And then I think there's probably a middle-ground, where big companies carpet bomb with "targeted ads", but the ads really aren't all that targeted at all, since the markets are so large. "People who watch the NFL," doesn't really require theorycraft-level consideration, and if you're already advertising on TV during games, why not Twitter and Facebook too? Honestly, that's probably the best answer. If Saddington didn't market on Daring Fireball and then to Daring Fireball readers on Facebook and Twitter, he missed a great opportunity. If you buy into the whole saturation thing.) In any event, there are my current thoughts on advertising, as I try to determine where to sink my hard-earned dollars so that they'll best make friends and bring more dollars home. 1 No joke! From [wikia.com](http://wowwiki.wikia.com/wiki/Raid): Raid groups are a way to have parties of more than 5 and up to 30 (40 for some old raids) people, divided into up to 8 groups of up to 5 players. 2 Interestingly, as I've argued before, this means the game developers expect and effectively require you to play outside of the game to fully experience it. I'd argue that, additionally, Blizzard's level of financial success demands and depends on theorycrafters as well. 3 I realize I'm misusing "theorycraft" here. There are no hard numbers behind the scenes when you're talking about people. Oh sure, we can play amateur economist, or pretend our experiments in Facebook targeted ads are representative, or apply sampling statistics until we're blue, but we could be wrong too. See the major new networks from our last presidential election. That said, the methods between targeted ads and theorycrafters are similar, and the results could be too. Let's pretend the comparison works.
Labels: advertising, app dev, business, indie, markupdown posted by ruffin at 2/02/2018 02:20:00 PM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tuesday, February 07, 2017 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sometimes, it's easy to tell yourself that you shouldn't need to advertise, and that if you wait long enough, discovery will happen, and your work will produce results simply by being obviously better than existing alternatives [in some unique way, at least].
(The worst part is that this dream of "if you build it, they will come" is even true for the lucky, whether that "lucky involves hard work" means knowing people who appreciate your work and can kickstart it (a blogger, a podcaster, etc) or that you have a mailing list from another, or some other means of celebrity or visibility.) On his Release Notes podcast, Joe Cieplinski tries to twist your conception of advertising backwards. From about 8:40 into episode #195...
He's talking about cold-emailing someone to tell them about your product or service, in this case, Joe's specifically talking about drumming up contract work. There, cold-contacting someone is essentially a requirement. But don't let that talk you out of it applying to your situation as an indie developer, if that's what you do. Cold contact reviewers, podcasts where you could sponsor, visible people who could benefit from your app and who essentially serve to represent a market... those visible people that the lucky already know. Get to know them, and bother them. Because, done right, you're probably not bothering them. It's okay to advertise. It doesn't [inherently] cheapen your work. Just because you primed the pump doesn't mean the water's bad. Labels: advertising, business, indie posted by ruffin at 2/07/2017 09:41:00 AM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Friday, December 30, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
So here's a tough question: When you're creating your marketing, what do you do about competition? I'll admit, I'm not in a position where it really matters yet. Other than dabbling in AdWords, I haven't really marketed. I'm probably going to start contacting review sites and folks that have written Markdown editor comparisons soon, but telling people why my widget is better than all the other widgets of the world isn't what's holding me back from internet fame. Though part of me does wonder if that isn't part of your press kit. But at some point, isn't it a good thing to tell folks why you're better than your competition? We see that on TV all the freakin' time. (The irony of the above image? Both Gain and Tide are Procter and Gamble products. /sigh Still, it's a clever project someone performed in their dorm -- "If you leave two free containers of detergent, which do folks pick?" This is what happens when you search for "product comparison" images "with reuse", I suppose.) Finding vs. exposing market fitOne of the things you need to do before you start making an application is to gauge product-market fit. I'll admit my fit measurement was a little spotty. I use Windows quite a bit, and was upset that the Markdown editor that I'd traditionally used hadn't been updated in months to maybe over a year when I started, and its live preview window was broken (as in no display at all) in Windows 10. But that same app had apparently sold enough units that its developer had rewritten the whole schmear at one point, hoping for even better future sales. If I could get somewhere close to what that app interpreted as "enough cash that I should rewrite what I'm already doing to make real cash", I'd be pretty happy, even if that second level cash they'd hoped for wasn't there. That is, if I could create an asset that's good enough to bring in several thousand dollars a year -- plus is easily reusable for any number of apps and extensions -- that'd worth a few months' of time, right? I did survey the state of Markdown editors before starting. It's actually, as far as I can tell, a much more crowded field on macOS. I'm not really sure why. I could guess it's because Markdown's inventor, John Gruber, runs an insanely popular Mac new blog, and there's spill-over. Or maybe having an elegant shorthand for HTML appeals to the same aesthetic as macOS. But at the same time, GitHub and StackOverflow's web interfaces both support Markdown entry, and there's nothing especially Mac-specific about either of those, even if you pretend that a disproportion number of programmers still use Macs (do they?). And every time I turned around, people publishing to the web, from readmes to blogs, were praising Markdown, releasing tutorials, and writing "Intro to Markdown" posts. If you could get anything close to a Mac-sized following for Markdown on Windows (so even a much lower percentage of total users, just with a similar total number of users) and sell to the folks that actually depend on a decent editor to get their work done, I figured you'd be doing fairly well. The state of Markdown editors on Windows is pretty sad. The one I used, as I mentioned, seems abandoned. The Windows Store is full of Markdown editors, but they're usually freeware and, honestly, bad. I've found a few crossplatform apps that are okay-ish, but don't feel like something I'd use if my publishing life depended on them. Then I found an editor that has a pretty neat website and boasts a ton of features, from tables to fully customized themes to automatic outlining. And I tried its demo. Ugly, difficult to use, poor UI, and so buggy that I felt it was unusable. Cheeky comparisonsBut how do you get the fact that your competition stinks (in many ways) across to people looking for an app? Simply be good and let people find you? That's classy, but also almost certainly doesn't maximize profit. Yet isn't it too cheeky to make a flowchart detailing what's broken?
With names, that seems like it'd be in really bad taste. But part of my selling point is that you're wasting your time just trying out these other apps. If it takes 15-30 minutes to read through a marketing site, download, install, and test out an app just to find out it's crud, that's offensive. Our most valuable asset is usually time. I'd like to think MarkUpDown is worth the money already just in the time it'll save you from searching up a competent editor. Setting a classy exampleAt the same time, look how friendly Daniel Jalkut was to John Saddington when Desk came out for macOS. From On the Shoulders of Giants โ John Saddington:
I can also say that when I met John Saddington at the Release Notes conference, it became clear that post wasn't simply posturing. I asked him about the bugs I was seeing in Desk MD when posting to blogger, as I was looking to a write a similar app myself. That is, I was looking for anything -- why did he decide to ship with those bugs, what sort of reaction did he expect from users (and what was the "right" thing for me to do as a user in that situation), etc. Saddington not only took the time to explain why he had some bugs, what he felt was fair for customers like me to say ("When you're hitting that much trouble, and I know you are, ask for a refund!"), what his priority list was then in general and for Desk, but also told me, "Hey, if you do write your own, let me know. I'll totally recommend it for Blogger. Supporting Blogger drives me crazy," or something similarly as impressively helpful (I'm pretty sure John's a Wordpress user). If I'd written MarkUpDown for Mac with Blogger extensions and had started by, as he says, So I'm a little loathe to lambast anyone, if only because of the example these folks have set before me. Argh. Perhaps I should just reasonably fairly review what's out there. (I say "reasonably" just because I know I'll be a little biased towards MarkUpDown. If there's something I don't like about it, I change it. And I grossly undervalue things that don't matter to me [like most reviewers, I'd assume], like, eg, dark themes.) Then at least I can honestly say what's not working and at least rationally argue for why MarkUpDown is better. /shrug Anyhow, marketing is fun. In other news, here's an interesting list of dev podcasts in the running for some sort of award. There are a number of JavaScript 'casts. Guess I should check out more of them. Worth looking around at the others too. Labels: indie, market, marketing, markupdown posted by ruffin at 12/30/2016 06:15:00 PM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Saturday, December 24, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
That text about Russia VAT changes I talked about yesterday is from an email I viewed in Win10 Mail. I cut and paste the content, and figured it was HTML format. It was, and MarkUpDown handled it... interestingly. Here's the raw HTML:
The problem comes when we put that into Markdown block format.
Bonus for anyone who can figure out the issue. See how that leaves us with an HTML tag that's split over multiple lines?
The Markdown parser handles that quite well, but the So four hours later, I have a fix checked in that seems to be working integrated with MarkUpDown's code (please don't get me started about indie devs' attitudes about (against?) Test Driven Development -- I get that Marco would argue he understands what TDD is, but my guess is he's never actually tried it. That said, I'm not doing it here). Sure, I also ate and interviewed a programmer in that time, but still... that's a rabbit hole of almost certainly over two hours for a problem only I was likely experiencing. That's the benefit and danger of being an independent developer. Nobody's going to tell you not to scratch your itch. You're less itchy personally, but that's not always the "best win" for your users. Labels: app dev, indie, priorities posted by ruffin at 12/24/2016 02:20:00 PM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Friday, December 23, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
From a Windows Developer email:
You know, when you give an app store (iOS, macOS, Windows) 30% of your take, you actually tend to get a lot.
That's not bad. The question's not even, "Is that worth 30% of my revenue?" for many (most?) developers. The question is, "Is 30% too much to give up to release my app before I could have all of this other stuff ready?" If you could release at Day 0 instead of Day 250, and 70% of the lost sales from 0-250 would make up more than 30% of all sales, then you're an idiot not to release with in an app store as quickly as you can. What the store buys you is a reduction in time to market. Use that. What it also buys you is more markets. There's no way I could keep track of VATs and taxes for every country, especially when these countries don't make up much of my user base. Microsoft is big enough that it's worth it to them, as part of the 30% they take from us, to make changes like this VAT charge. Course it stinks. I'm now getting 70% * 82% = 57.4% of my list price in Russia. Ouch. I could make the price higher to cover the VAT, but for the sales I have there, I probably won't bother. As Joel says, it's all about barriers to entry. Such a protective tariff should make foreign software more expensive in Russia. I wonder to what extent it does. Labels: app dev, app store, app store econ, indie, taxes, windows store posted by ruffin at 12/23/2016 02:14:00 PM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tuesday, December 13, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
At some point I'm going to write up all the crap I've done to host node.js on Linode easily. It's really kind of a pain if you're coming into it fairly cold. I mean, I've been using *NIX since the 90s, but when you really are the only schmoe responsible for everything, it's a new experience. There are three main things I needed to learn to code and release node:
I'm going to hit number two right now, just for fun. Use foreverHere's a good resource, but let's hit the high points:
See how the ... and one not on the list...
Success. Why is that useful? Two reasons. First, I have a testing service set up that mirrors the "real" site so that I can stage changes both to my website and to the But I might want that staging server to be up indefinitely. I probably don't really need it to stay up if the VM blows up, but I want it to stay even when I move from tower to laptop and back. Forever does this nicely. Secondly, to "really" keep things running, you want to create something for Fastest intro to
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Monday, December 05, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
From allenpike.com:
Had a "duh" moment reading this one. I've been lucky that most of my clients pay on time. I'm probably also lucky that I don't act like I'm only around to pluck every living dollar out of what one might act like is their tightly clenched hand. I bet it helps you to get paid in some-to-many situations if you don't act like getting paid is the only reason you're interested in them. Clients are not ATMs; they're [usually, ultimately] people. If you're interested in helping them succeed -- and can competently help them do it -- they'll be happy to bring you along. But the "duh" moment -- to be clear, a moment when I'm slapping myself in the head -- is to withhold IP. You might do yourself one better and include in your contact that you will also assume rights to any design elements and other IP that you've been made privy to while working. I realize you could get into a mess if the client has licensed stuff that they shouldn't or can't officially allow you to use, and some folks would balk at their current clients or test data, but you get my point. Clients don't always respond to "time out"The problem with "ramping down... development" and "charging interest" is that they don't guarantee you'll get anything. Those are really only useful if the companies want to work with you again, or if you're owed so much it's really worth suing. That is, those two remedies usually require the client to participate in their punishment for them to be effective. (If you're currently still working for a client that agreed to and is not now paying, we need to have a talk.) It's like being a parent -- if your only punishment requires the punished's cooperation, you're often left with a battle of wills. This includes stuff as simple as, "That's your third strike. Go to time-out." If they don't go to time out, what do you do? Pick 'em up and put them there? Stand over them and forcibly keep them in time-out? (Um, I don't recommend that, btw.) These aren't great situations, are they? [... is a rhetorical question most any parent has likely already confronted.] But tell someone you now own their ideas and legally become their competitor? Now that's punitive and enforceable. Litmus testingI really can't see anyone pitching too big of a fit for that being in your contract either, if it's well written and sounds fair and even, not like you're dying to stick it to your client. Anybody who tells you they're not willing for you to own their stuff if they don't pay might not be who you want as a client, right? If they're worried about slow times or unexpected issues, I'd feel okay negotiating the, "Pay or I can play" clause as far as they want, until they're comfortable. I'd also probably need to add some soothing language that you wouldn't use their brand itself, and would perform what you felt were minimal distinctive changes to address possible user confusion...
But at some point, a reasonable entity would have to recognize that, if they're not paying their own contractor what they contracted, that's unfair. I should probably also add now that I don't typically fix-price something past the first contract. I don't mind taking a little bath to try and show someone I'm worth keeping around, but later, I try to make it clear that you're paying for hours of work, whatever they produce. This tends to keep clients on track if they're exceptionally cost-conscious, and also from them asking for the moon -- and from moving the moon biweekly because of some incredible insight!!1!121! they had over breakfast. Two lessons here:
Google fails in search for blogHeadline, headline; read all about it! One quick aside: When I was searching for Allen Pike's post, above, using a very specific string of words from the post, Bing found it, no problems (though its third hit was, um, strange).
Go figure. As I've said before, Programming is Hard, (c) 1842. Labels: bing, business, contracting, Google, google fail, hats of money, indie posted by ruffin at 12/05/2016 11:25:00 AM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Thursday, November 10, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Whew boy, too many irons in the fire today.
That's all for now, I think. /sigh Ever overcommitted? This time, I've got nobody to blame but myself. The problem, of course, is that I've got all of these well started, which means I probably could've finished the top two or three in the same amount of time as the nothing-finished state they're in now. And that's the real lesson: You have to finish what you start before starting something new if you want to get things done as efficiently as possible. Why is finishing something now more efficient than working in parallel and finishing it all at the same future time Y? Well, take the CamStudio work: I wanted to finish the MarkUpDown video before I really started advertising. Let's face it -- a Window 10 app, even though it seems fairly cutting edge-ish now, has a limited shelf life. Assuming there's much money to make, I'm losing money by not advertising now. Sales today should compound sales tomorrow. I'm wasting my asset. Finishing Task A at time X rather than end time Y means you get from X to Y as extra time to benefit from Task A's work. Clear? So enough blogging. Back to the fire I go. ;^) Labels: indie, management, time posted by ruffin at 11/10/2016 10:15:00 AM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Thursday, October 27, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
I've spoken before that whatever it is that you chose to work on, you're going to be married to it in a way you can't possibly fully understand until you're knee-deep in some edge case a week or more past whatever internal deadline you've set for yourself. For instance, I thought I'd write a quick app to manage creating podcast feeds. And owning your feed really is one of the most important things to do when you start a podcast. Writing a quick utility like that shouldn't take long, right? It's just XML with some madlib spots, essentially a long From rufwork.com (for heaven's sake, don't download these ancient VB6 apps):
Child's play, right? Sheesh, no. Once you start programming for others (which even the wack apps really aren't), you've got loads of overhead you'd never expected. Here's an example. For podcasts, you need to add a duration. Instead of asking users to slap in durations in a specific format, I split hour, minute, and second into separate textboxes.
Simple, right? Well, sorta. What's wrong with this code?
Well, duh. What happens when any of the textboxes aren't filled in? How about if one is? What if they aren't numbers? And I thought I was saving myself validation work... This is a very simple thing to fix (first cut is below), but the point is that small decisions like this add up.
I mean, how about this one, where I insert a subtitle for your new episodes based on the date, just as a default:
Great if you keep the current time, not so great if you edit that time to something different. Then my attempt at giving you a "shortcut" doesn't work at all. In the above screenshot, we have a publication date of the 30th, but the subtitle still says the 27th. So what to do? Do you look for dates in that format and automatically update them if the pub date is changed? Yes, you do, but what a pain... I don't want to have settings in an application this simplistic, but that also means you have to make sure all the "features" aren't ever annoyingly in the way. See? You can't just skip stuff and expect users to figure out what actions bring down the app and what don't, like some unpatched, extremely rushed Playstation game. You have to mind the p's and q's and actually finish your work. And that means you'll be doing whatever app work you decide to do for a heck of a lot longer than you ever expected. It also means, luckily, that you'll be a lot prouder of what you've made once it's finally out of the door... This is the life of an indie. Labels: app, business, indie, overhead, planning, podcasters' feed generator posted by ruffin at 10/27/2016 12:26:00 PM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wednesday, September 14, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Note to self: Never create images for documentation until you're done with your release. No, no no. ALL the way done with your release. I thought I could "get started" on my docs a little early, so I did. Not the worst idea ever, but I recently added a new toolbar button or two. I got lucky, I think, and can use my old images, like this one:
... since it's so tiny you can barely see what's in the toolbars. But if it'd shown one extra in the bottom or all of the top, I'd be remaking them now. See that header button way over on the right? That's new. And then for some strange reason I put the "Find" button on the bottom. Argh. That was close. I won't say anything about that tab close "X" in the first image next to the "New 0" file tab. Except that if you'd been reading, you'd know I just added that. That may or may have been retroactively added to the original image. Ms. Paint, indeed. Labels: fail, images, indie, markupdown, paint posted by ruffin at 9/14/2016 10:03:00 AM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Thursday, September 01, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Ah, the power of MSPaint.exe. (Just realized there's a Ms. Paint pun in there somewhere. How many years have I been using this?) I'm writing a Markdown editor. Its super-original name is MarkUpDown. (I'd originally thought I'd name it MarkUpMarkDown, but emailed John Gruber to see if that was kosher, since that really is too close to Markdown, and he objected to CommonMark's original name, "Standard Markdown". No response, though I could see how "Standard" seems presumptuous in a way I trust a bad pun like MarkUpDown is not.) I used Fiverr to get some icon artwork made, and it was pretty good. Just one problem that didn't occur to me until a few weeks later.
It's not MarkDownUp, it's MarkUpDown. /sigh I have the psd, so I, in theory, could make my own lossless changes (I spent a little more than Fiverr's $5 to get that, but not much more), but when I tried, the export from the Gimp was super pixelated. I really like the Gimp, I do. I used it to create the animated gifs on my MarkUpDown home page. But sometimes it takes a lot longer to figure out than it's worth to get something simple done. (I'm suspicious I should pay $1500 for a good Gimp training course and watch that pay back insane dividends over the rest of my career, but I also don't want to get to be known as "the image hack guy" either.) Anyhow, I put together a request for my Fiverr guy, and included an image I'd hacked in Ms. Paint (and then Skitch) to show what I needed changed. Took me a little longer than I would've thought, but showed what needed to get done.
And then it hit me: That image on the right didn't look half bad. If I didn't hear back (and I didn't. He at least temporarily closed shop shortly after I left the request), I figured I had another option. If I took a little more care to line the arrows up where they were initially, I'd have something. Not too shabby for a few hours' work (I actually did this and three other images, two of which were wider than tall and required some more serious editing), right?
Looking at it again, it looks like the down arrow needs to go a little further towards the edge to match the original, but I think I'm okay with it. I'll blog about figuring out badges and icons and naming conventions for Visual Studio later, perhaps. Right now, I'm going to relax in my reasonable success with crazy mspaint.exe. (You might wonder if the Fiverr design copied the "Markdown icon" too closely. I don't think that's a problem -- it was designed, and copylefted (actually put into the public domain), by Dustin Curtis.) posted by ruffin at 9/01/2016 05:32:00 PM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tuesday, August 23, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
From Vesper's own release notes:
From Brent Simmon's blog here:
... and here...
... and from the same post as above, describing what comes next for Simmons...
What happened?
These quotes aren't helpful.
This might be useful. Sounds like the app wasn't making much money. If it's a client-side only app, that's no big deal. It costs you very little (your Apple developer account cost) to keep something on the app store. There are two problems with Vesper, however.
The first means it's costing them money today (EDIT: Gruber adds that they were also paying licensing fees for the font. He's removed that portion from his post, but it was originally there). The second means it's going to cost them a disproportionate amount of time to improve the app tomorrow. If today and tomorrow are overly expensive, it might be foldin' time. Post Mortem Results?Here's my guess at what happened.
It's amazing to think that folks with the name recognition, at least in Apple circles, of Wiskus, Simmons, and Gruber could fail, but they did. To Gruber's credit, he didn't pimp Vesper much at all on The Talk Show or, iirc, Daring Fireball a few months after release. But he didn't do the app any favors with that restraint either. Wear your own shirt. I heard that Gruber was using Vesper on his Mac in the iOS emulator. I think that tells you something pretty important right there. I think you can also piece together from Simmons' final statements that he wasn't interested in writing a notes app for the Mac, and I'd guess that this provides the three a good escape narrative. "If we'd only made a Mac app..." I'd counter with, "If that's a good market, why not do it now?" And if the syncing code works well, it's done, man. You're 50% of the way to a notes app already (sync and much of your design is done)! Again, I don't think Simmons is interested in writing a notes app for the Mac. But I think the real answer is that a great Mac notes app wouldn't have saved them, even if the coding time was zero. Good, but not greatVesper was good, but not great. It was, unfortunately, buggy. There were a number of times that I couldn't see and/or add images in one screen orientation. Sometimes cursors would jump around. Sometimes I couldn't enter text. It's a notes app. That's bad. The idea -- the design -- of Vesper was great. It wasn't a great app. Mediocre apps, regardless of design, tend to fail if they're not maintained and improved. Vesper's had how many updates since 2013? Revisiting The Marco EffectI think the most important take home here is that The Marco Effect is greatly overestimated. That is, if Marco's apps were no good, he probably wouldn't stay in business. Heck, if Marco's stuff was decent, even solid, it might not be worth making. If Marco had the same reach as The Talk Show and Daring Fireball, picked the wrong app, and that app was only "okay", they wouldn't be worth his time. Vesper shows me we don't give Marco enough credit. It also tells me app dev is a very tough gig. A cynic might say that Wiskus-Gruber-Simmons simply didn't want to "stick it out" (certainly they could cover even server-side losses for a while), or that 33% of the cash from decent is much less than 100%, or that Overcast is a labor of love & doesn't make tons of cash either (actually, Overcast does quite well), but I still see Marco being undervalued here. His apps do better because of both (business speak alert!) product-market fit and quality. Nice of them to let us dump our stuff before it disappears, natch. ;^) Edit: Tell me what you really thinkOuch. The reviews have turned pretty nasty.
Edit #2: Gruber weighs in, a littleMust've missed it yesterday, or it came in later than I catch up on RSS, but Gruber says he's going to do his own postmortem in a bit:
Will be interesting to see how candid he is. I'd like Jared Sinclair, Marco Arment-level candidness, but I'll guess we'll take what we get. Labels: app dev, app store econ, business, indie, ios, vesper posted by ruffin at 8/23/2016 11:18:00 AM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Monday, August 22, 2016 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Tell you what, being an independent shop has its drawbacks. One is that it's hard to be good at design and zeroes and ones. There are certainly people great at both, but it's much fewer than those who are really good at just one or the other. That's nearly a truism. That means it's taken me days to get my website looking presentable over and above my cheaping out and using a template for the site. One of the biggest issues for me was trying to get a grid of application features to look good in both desktop and mobile modes. I've got a pretty common set of three features and an image for each. On the desktop, the bootstrap grid arrangement is simple enough:
But when I go to mobile, I want the order to change fairly drastically.
Probably makes more sense with numbers...
Changes into...
That's kind of an extreme change. First attempted solutionI wasted a lot of time trying bootstrap push and pull. Look at this answer, for instance.
Look at the first Wrong. After fiddling around a while, pushes seem to simply push off to the right of the viewable row. And this question pretty much confirms it. Second solutionSince that question suggests that we can't push and pull, I figured I'd take one of these more complicated options. They boil down to...
The first makes more sense I think, though you end up having to duplicate code. I ended up with code like what's below. What's important to note is that the first row is It does get the effect I want, even if it's not DRY.
I don't like it, though I don't even know that it isn't what a bootstrap master would do to get the same effect. I do know that any idealistic setup seems to go completely out of the window once your use case gets complicated enough, whether with conventional code or with CSS. ChartigeHere's a chart of the different "down" and "up" classes to hide your stuff, though it's from the version 4 alpha...
posted by ruffin at 8/22/2016 11:37:00 AM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
All posts can be accessed here: Just the last year o' posts: |
|||||||||||||||||||||
|
||||||||||||||||||||||
|
|
|
|