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

FOR ENTERTAINMENT PURPOSES ONLY!!! Back-up your data and always wear white.
URLs I want to remember:
* Atari 2600 programming on your Mac
* joel on software (tip pt)
* resume, mostly for Google, and ruffin's github account * Regular Expression Introduction (copy)
* The hex editor whose name I forget
* JSONLint to pretty-ify JSON
* Using CommonDialog in VB 6 * Free zip utils
* that hardware vendor review site I forget about is here * Javascript 1.5 ref
* 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)
email if ya gotta, RSS if ya wanna RSS
Monday, August 25, 2014

There Is No Shame In (Strategic) Quitting | TODD HENRY:

The key isn’t whether or not you quit an effort, it’s why. Are you quitting because you’re tired and just don’t want to make the effort, or are you quitting because you have learned something that has re-framed the problem you’re trying to solve?

The first issue is one of motivation or clarity of action at the least, and possibly also one of character.

However, the second one is the honorable kind of quitting. It means that you’ve recognized that your efforts – no matter how focused and valiant – will [practically speaking -mfn] never result in success, and could probably be better spent elsewhere. In this situation, the reason people don’t quit is typically due to pride or insecurity, both of which will potentially lead to wasted years and energy.

posted by ruffin at 8/25/2014 10:17:00 PM
Sunday, August 24, 2014

Small teapot tempest over the short film, Humans need not apply:

Horses aren't unemployed now because they got lazy as a species, they're unemployable. There's little work a horse can do that pays for its housing and hay.

Some folk interpret this to say that "non-skilled" people might be out of jobs in a few decades, thanks to the information economy or some other drivel.

It is, however, drivel.  Here's why: Our code will simply get worse.  You know those idiots that apply for developer jobs that can't even spell Java, but have the audacity to pretend that they're experts?  You know how you can't believe that they've actually held the jobs that are on their resumes?

Newsflash: These horrible coders have held those jobs, and, in the future, will continue to get them.  What's worse?  Their code, as horrible as it is, on some level, works.

Code will simply get worse.  Folks who were non-skilled are already getting shunted into college where they might not have as strongly twenty or thirty years ago, precisely because of these (and other, more nefarious) changes in our economy.

It's time to stop thinking they're not ready for college, and realize that what used to require the brightest minds -- thanks to the scarcity of jobs and price for companies to enter a once much more expensive market -- won't any longer.

As Ben Thompson says, we're not horses.  We can learn to adapt by learning new skills.  Unfortunately, some of us can't learn real well.  The difference in 40 years is that those folk won't be digging ditches (which, the PC-ness in me requires I say, is insanely hard work, having done it for our water pipe a few years back), they'll be doing today's equivalent of "data entry" work, and not doing it horribly well.  And that won't matter.

Labels: , ,

posted by ruffin at 8/24/2014 06:54:00 PM
Wednesday, August 13, 2014

Okay, Gruber's right. Orwell's "Politics and the English Language" is, just a few words in, already worth its weight in gold.  (See what I did there?)

Each of these passages has faults of its own, but, quite apart from avoidable ugliness, two qualities are common to all of them. The first is staleness of imagery; the other is lack of precision. The writer either has a meaning and cannot express it, or he inadvertently says something else, or he is almost indifferent as to whether his words mean anything or not.

This mixture of vagueness and sheer incompetence is the most marked characteristic of modern English prose, and especially of any kind of political writing. As soon as certain topics are raised, the concrete melts into the abstract and no one seems able to think of turns of speech that are not hackneyed; prose consists less and less of words chosen for the sake of their meaning, and more and more of phrases tacked together like the sections of a prefabricated hen-house.

A sincere thanks, George.  Even realizing the slight irony, I get the feeling I'm going to turn this into a canned email response, because there's no way I'm going to say this any better by myself.

Labels: , ,

posted by ruffin at 8/13/2014 10:20:00 AM
Wednesday, August 06, 2014

An App Store Experiment:

It was time to go free. Late one night (I am in Australia), while the US was waking up I set it to free and went to bed. Wow did things get interesting!

I think the chart says it all.

I was floored. 216,718 downloads in 3 days, an average of 72,000 per day, up from an average of 28 per day at paid, or over 2500x.

This, my friends, is why we can't have nice things, particularly apps.  At least not apps polished before release, but then pushing out mvp and waiting for your customers[' actions] to guide you if apparently the smartest way to create apps, right?

Insanely interesting story so far.  I'm part way through part 1.  I'm hoping there some data from an IAP  experiment coming soon.  It's interesting to see how users "want", subconsciously or no, to discover value.

EDIT:  Sure enough, IAP is part of part 2.

How does In App Purchase (IAP) stack up against a paid download? For this app it's been an increase of over 3x from around $22 per day to around $65 per day. The IAP converts at approximate 2-3% of the downloads per day.

I'll also take this time to catch myself off-guard with my ability to announce that this is an unbelievable 2500th post I've made to this blog (though I'm assuming a good number are orphaned drafts).  Wow.  You know what they say -- if you write good stuff, you'll eventually be discovered.  I think I'll take this as a clear sign that my stuff is no good.  ;^)  Maybe if I make the blog freemium...

Labels: ,

posted by ruffin at 8/06/2014 12:51:00 PM

I know it doesn't look like much, but there's surprising "proof" that SqlDbSharp runs on Windows Phone 8.  I just merged the master branch back into the Windows Phone 8 branch to catch it back up -- it'd been languishing since February 4th.  And after an hour or so of tweaking, there's a simplest case proof of concept up and running using the SqlDb# sample code in the Windows Phone emulator.

I know there's really no market on Windows Phone 8+, relatively speaking, and even after reading Sinclair's thoughts on making a living as an app maker in general, I've got to say that Windows Phone is pulling me back in, and it's solely about the tools.  Xamarin just went to an optional subscription model, and $25 for a month of Android porting puts that platform back on the table, but I still couldn't get Xamarin.Android up and running in the Android emulator, even using the Android Designer Walkthrough.  Apparently the emulators that Xamarin Studio installed for me by default weren't recent enough to work with the designer, and then when I created a Nexus 5 emulator to nuke that issue, the simplest case app never opened.

Xamarin's neat, but it's still very rough around some edges.  I'll use it on OS X for iOS, but the Android side drives me crazy.

Visual Studio Express 2012 for Windows Phone seems much nicer than Xamarin.Studio on Windows 8.  My biggest pain is that the version of .NET for Windows Phone is a painful subset of .NET for desktop -- or even for other mobile platforms via Xamarin, an irony I've lamented before.  But the emulator and IDE interaction is, so far, top notch.

So I've cleaned up SqlDb# a bit and thankfully fairly painlessly got it at least running on WP8 again.

Ah, the only big "find" for Windows Phone 8 here is the path to the "home folder", so to speak.  Here's the code, straight for MSDN, though it took some Googling to find it.

Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;

String output = String.Format("Installed Location: {0}", installedLocation.Path);

Finally, right?

Labels: ,

posted by ruffin at 8/06/2014 12:23:00 AM
Tuesday, August 05, 2014

Power of g - Vim Tips Wiki:

What we have is an inverse search (:v, same as :g!) for a dot ('.') which means anything except a newline

Labels: ,

posted by ruffin at 8/05/2014 03:10:00 PM
Saturday, August 02, 2014

Okay, fine, that's a clickbaitish title, but I don't think people are comparing apples to oranges.  Jared Sinclair posts A Candid Look at Unread's First Year, and its critics are not, I don't think, understanding his point.  He did everything according to the Go Independent Dream Cookbook, which, in itself, isn't an easy task.
  • He spent eight months building what, as he rightfully says, "is objectively a really nice app."  
  • He's attacking a pretty well-used niche, all things considered.  
    • 200k subscribers for Daring Fireball.  If he gets 5% -- not insane -- that's $50k right there.
  • He's had, "an appropriate amount of press", which, honestly, it one of the things that scares me the most about trying to go indie.
And the take home is that now, after six months of being on the market, with three months for the iPad, he's "only" grossed $42,000.

First, I'd say that's a roaring success.  I know Sinclair is unhappy, and he's probably right that he either didn't charge enough or should have used a different model.  But let's face it, after the initial sunk cost of the six months it took to write the original, he's got a fairly sustainable business.  Three months to write Unread for iPad bagged him $10k of that 42.  Sounds like, if he can keep the ideas coming, he's got nearly $10k of one-time revenue per quarter, plus residuals for each app he can put out.

That's awesome.  I'd take that in a heartbeat.  It's a not even a third of what you could make doing this for someone else to start, but in five years?  He could have a pretty nice business based solely on apps.

What Sinclair has done is this: For those of us making market wages now, we can stop dreaming about making a lateral move to writing apps for ourselves.  Sinclair is raining on our romanticism.  That's an resonate message.

But the criticism he's gotten.  Wow.  The first I read was from Benjamin Mayo, who basically says that Sinclair wrote the wrong sort of app.  Ultimately, that's good, practical advice.  Get a decent idea for something everyone can use, not just 500k RSS users, that takes a few days to write.  Then sell it for 99¢.

Let's face it, you can write a lot of apps in six months if you shoot for apps that'll take you two days (so, say, a week).

But Mayo also commits the sin I see so may critics level against Sinclair -- n = 1, and n was a success for me.  It's a weird translation of the, "Works on my machine," syndrome.  

I made Writing Aid in under a month, on and off. Thankfully, it sold well and produced a fantastic sales to hours ratio.

I mean, Mayo tries to envision go all Marty McFly and try to envision a different past.

Imagine a scenario where it didn’t do that well. I would have essentially wasted a month of work … but that is a hell of a lot better than wasting a year of work. You hedge your bets by moving fast and moving on. [Emph mine]

But it did do well, man, it did.  What if you absolutely strike out six times writing app-a-months?  Glad app-a-month worked for Mayo, though he's only advertising two apps right now.

And that's the problem.  For every Mayo who hits sustainable app gold the first time, how many others flopped three or four times and stopped?

But even that's not Sinclair's point.  Sinclair isn't an idiot.  He was all over the place when Unread came out -- and since.  He did everything right.  Sinclair's not even making six figures.  That's his message.  Not that he failed.  But if you do want to scratch a serious itch and go indie, this is what an awesome first year looks like.  Be prepared.

I was going to write more on this, but my build up to these two quotes is already too long.  Let's just say that these are two more instances of folks completely missing the Unread message.  (Unread, Carol.)

The iOS Indie That Could, on FarukAt.eş:

"Jared Sinclair spoke of pricing strategies, and I think Marco Arment’s latest app, Overcast (a podcast player), is a good example of a general-purpose productivity/entertainment app that does it well: give limited demos of the paid-for functionality but make the app available to try for free, and use IAP to unlock those features, not a separate “Pro” version of the app. But that’s hard to pull off as well, and Marco has a lot of experience."

Ben Thompson, usually absolutely spot on, painfully does the same thing in, "Pleco: Building a business, not an app".  Here, we have an app that's been around, beating the odds, staying viable since the Palm days, used as a counterexample.

Sinclair’s results are not a “solid piece of evidence” of anything. They are an anecdote. And as long as we’re drawing grand conclusions from single data points, I thought it might be useful to look at someone on the other side of the spectrum. So I called up another friend of mine, Mike Love.

Why?  Why?  No, really, why?  Why not call up Mark Cuban and ask him about Dairy Queen?  Seriously, all that's the same is that they both create apps.  Painful, and he knows he's being painful.

(Which is really an inexcusable rhetorical move.  "This kind of anecdotal argument doesn't work, and since I'm admitting that I know it doesn't work, you're going to assume I'm now sheep's clothing the trope of anecdotal argument to argue metaphorically, suggesting that I have real data that I'm basing my argument on.  I mean, I wouldn't argue on the merits of anecdote, so when I use an anecdote, I must be doing something more nuanced.  Right?")

There are some interesting tidbits, like...

What stands out to me about Love’s approach was that from day one his differentiation was not based on design, ease-of-use, or some other attribute we usually glorify in developers. Rather, he focused on decidedly less sexy things like licensing. Sure, licensing is particularly pertinent to a dictionary app, but the broader point is that Love’s sustainable differentiation was not about his own code. Sustainable differentiation never is. [Emph mine]

But ultimately, it's just a random example of a guy who got lucky the first time in a completely different market circumstance who has maintained his advantages and relationships as that market changed.  That doesn't substantially help anyone decide what the economic landscape looks like for going indie -- starting from scratch tomorrow.  Give me an example of app store success from 2013+ where this sustainable differentiation works, and then explain to me how Joe and Jane Programmer have a leg up to do that.  Good coders code well, and Sinclair's Unread is close to what that ceiling looks like.

Sheesh, folks.  Sinclair isn't asking for instant gratification.  He's putting a more realistic ceiling on the potential of the app store.  That's insanely interesting, and it's awfully generous for Sinclair to share it all with us.

Labels: , ,

posted by ruffin at 8/02/2014 03:17:00 PM
Tuesday, July 29, 2014

So a long time ago James Kovacs posted a article about get/load polymorphism with NHibernate, which was cool and all but I always wanted to know how to map it all in Fluent NHibernate.

A nice, deliberate, beginner-level introduction to Fluent NHibernate and discriminators.

Labels: ,

posted by ruffin at 7/29/2014 10:58:00 AM

Support freedom
All posts can be accessed here:

Just the last year o' posts:

Powered by Blogger