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.

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, February 19, 2018

If your architect hasn't written a tutorial -- not a cursory howto, but a tutorial -- you don't have an architect.

What does a tutorial look like? The canonical example for C# web apps, though now a bit long in the tooth, is NerdDinner:

NerdDinner Tutorial

The best way to learn a new framework is to build something with it. This tutorial walks through how to build a small, but complete, application using ASP.NET MVC, and introduces some of the core concepts behind it.

The application we are going to build is called "NerdDinner". NerdDinner provides an easy way for people to find and organize dinners online...

There's not only a nicely written walkthrough, but documented code and a live, running example.

If your architect hasn't taken the time to articulate their vision thoroughly, in plain, if expert-specific, [language of your locale], there's not much hope for your coders. Your codebase will necessarily be an unmaintainable cyborg (a topic I'm [not] surprised to find I've been ranting about since 2002).

The best job security is none. You've set your stage so well any competent programmer could come in and take over, getting up to speed incredibly quickly.

Those coders who work to ensure they're the most easily replaced are absolutely irreplaceable.

Labels: , , ,

posted by ruffin at 2/19/2018 10:02:00 AM
Wednesday, February 14, 2018

I've been setting up a new greenfield project, and wanted to use not exactly a new stack, per se, so much as an "all-star" stack that'd capture the lessons I've learned coding recently. For me, that means it needs to be pretty straightforward, minimal dependencies, and minimal compilation. The fewer libraries and snowflake server requirements, the better.

On first take, after bypassing Node, which really is the winner,1 my guess was that my all-star stack would be...

  1. ASP.NET Core
    • C# with no OS limits.
    • Deploy inexpensively to Linode, eg, if you want.
  2. Web API on ASP.NET
    • No Razor templates (not that I hate Razor; just one less tech to maintain)
    • No direct interaction between server and views/html/client.
    • Keeps concerns separated perfectly, exchanging only JSON between tiers.
  3. Statically served html (with JavaScript packages, natch)
  4. jQuery 3.x slim
    • Slim means no ajax; it's more efficient to roll your own.
    • Every time I've used $.ajax, we've wrapped that with our own error handling, etc, anyhow.
    • Learn to spell XmlHttpRequest. ;^)
  5. Bootstrap
    • The cheapest mobile client is a responsive web client.
    • I realize native is better. But responsive is, give or take, free.
    • Also gives a decent basic theme.
  6. VueJS
    • This was probably the most difficult to decide on ahead of time
    • Will discuss more below.
  7. PostgreSQL or MySQL

VueJS was difficult to pick. I've used React, and almost solely React, for the last year. I like it. But I believe it contributes to monolithic source that's not necessarily factored well. The more interdependencies your code has, the more maintenance is an issue. And doing good React essentially requires, at this point, using Babel, and as soon as you're transpiling, well, the surrounding tooling and library dependencies skyrocket. Not to mention that debugging transpiled code either means you're wading into transpiler-generated muck, or you've got to maintain yet more tooling to step through things in something that's not the browser.

I was originally going to use Handlebars, which I've liked for years for its exceptional thinness & the way it encourages minimal business logic on the client, but caught Shawn Wildermuth on Jesse Liberty's Yet Another Podcast, and heard him talk about VueJS. VueJS is essentially Handlebars with, afaict, a few more recent lessons baked in. The syntax is actually very similar to Handlebars in many ways.

Here's what eventually won me over:

Unlike other monolithic frameworks, Vue is designed from the ground up to be incrementally adoptable. The core library is focused on the view layer only, and is easy to pick up and integrate with other libraries or existing projects. On the other hand, Vue is also perfectly capable of powering sophisticated Single-Page Applications when used in combination with modern tooling and supporting libraries.

It looks like we've got good room to grow using VueJS' conventions if we want to do a full SPA in the future.

I also debated not using Bootstrap, but I don't think it's worth the time to roll your own responsiveness when Bootstrap does it so well. It's over 200 KB total, but if you have it cached, that's a one-time hit that's smaller than most images. You're fine.

jQuery was also debatable, since you can handle DOM manipulation fairly well by wrapping vanilla JS with some convenience wrappers to check for DOM existence, but at 69 KB? Come on. It's well known, rock solid, and has good industry support. Use jQuery.

This looked nice. Simple, API-only and REST convention compliant server. No licensing fees. No JavaScript transpilation required, which will pay for itself in spades when you're debugging. Thin client. Clean separation of concerns.

I was going to go through my headaches setting everything up here, but I'll split that into a new post later. The quick version? Because of a wack nuget configuration I didn't realize was an issue (command line nugget didn't pick the "right" nugget server; I had a local one set up in VS2017 as well), I'm using SQL Server for now, though I will probably give PostgreSQL another look before I settle on a dbms.

1 If you want the cleanest stack, there's nothing more advantageous than using the same language on the server and the client. Node lets you do that. There's some overhead (learning & setup tedium) standing up a web server -- do you just use Express everywhere, or serve from Nginx? -- but nodejs is The Right Answer, imo. But I'm a C# guy "professionally", and there still seem to be more opening for C# devs than node, so I think there's an argument that a C# server-side should be easier for a customer to have maintained going forward.

Labels: , , , ,

posted by ruffin at 2/14/2018 11:10:00 AM
Thursday, February 08, 2018


YouTube was recently caught displaying ads that covertly leach off visitors' CPUs and electricity to generate digital currency on behalf of anonymous attackers, it was widely reported.

Word of the abusive ads started no later than Tuesday, as people took to social media sites to complain their antivirus programs were detecting cryptocurrency mining code when they visited YouTube. The warnings came even when people changed the browser they were using, and the warnings seemed to be limited to times when users were on YouTube.

That's clever.

And I do mean to resonate with Darwinism there.

Labels: , ,

posted by ruffin at 2/08/2018 11:56:00 AM
Monday, February 05, 2018

Have you ever opened frozen concentrated juice and had it look less juicy and more syrupy? I have.

Refrozen juice

After looking at it strangely for a few minutes, and remembering that it'd been in the fridge for months on months, though still well within its due date, did you remember that someone'd left the freezer door open overnight not that long ago? Boy, I did.

And that's probably what happened, confirmed by New York State's Department of Agriculture:

Can Thawed Food Be Refrozen?

Guide to Safely Refreezing Thawed Food

Frozen Uncooked Foods
Thawed - but Cold
45 Degrees or Lower
Thawed - Warm
(Above 45 Degrees)
Fruit Yes Probably safe - but may have fermented
Fruit Juice Concentrate Yes - but flavor may be poor and reconstituted juice [may] separate No - may have fermented
[emph mine -mfn]

Thanks, yankees!

(Ok, yes, I'm mixing it in a growler. Unlike the Yankees, I couldn't find any pitchers.)

Labels: ,

posted by ruffin at 2/05/2018 09:54:00 AM
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...

  • The best gear (armor, weapons, wraps, etc)
  • Enhancements for that gear (armor kits, spells to make weapons stronger, etc)
  • Character talents
  • "Rotation" (which spells to cast in a fight and in what order)
  • (No, believe me, we're just getting started, but that's enough for now... )

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 advertisements

You'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.

Shrimp bycatch
That's supposed to be a net catching shrimp. That's a lot of bycatch!
(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:

So I began the paper-napkin math and figured that if I spent $9,000 on DF it would ultimately have to convert approximately 300 copies of my app to at least break-even. So I asked myself this simple question:

Do I really believe that Daring Fireball can create explicit value in converting 300 new customers?

News flash: It did.

The sponsorship went live on November 17th and I held my breath…

There we go...!

The short answer is this: Yes, DaringFireball worked for me.

Over the course of that first week’s campaign and sponsorship I had net (profit) proceeds of nearly $16,000, which means that my investment of the $9,000 was made back within the first week of sponsorship!

For those interested, the previous 7 days of sales were just north of $2,100, so assuming that I was on pace to do that again I was clearly in the black based on Gruber’s sponsorship.

But there were three more significant things that happened as a result of the sponsorship, the first is that I began to rank at the very top of the Mac App Store in not only the Productivity category but globally...

This means, at least in the dominant US-market, Desk App was the #11th most-grossing app in the entire Mac App Store marketplace. 

That's expensive, and risky, but fun.

An aside on advertising dollars

I 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" advertisements

Facebook 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.

  • Someone searches for "Windows Markdown editor" on Google.
  • Someone on Twitter follows John Gruber and Paul Thurrott.
  • Someone on Facebook is a software engineer and hosts projects on GitHub.
    • (You're not writing your READMEs with a Markdown editor? Ouch! There's an easier way! ;^D)

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 Microcasts

The 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.

USS Bowfin - Dials, Valves and Knobs
I also considered a soundboard.

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!):

Charles: You know… I wasn’t really familiar with Facebook ads before I started looking into this, and looking for options. And in fact I didn’t even have a Facebook account. But they know an incredible amount about the people who are using Facebook. It is just mind-boggling. They give a lot of that information… I was going to say that they give a lot of the information to their advertisers, but they don’t. But they do allow advertisers to target based on that information.

You can target based off of geography or travel inclinations or whether they have a friend who just gave birth. It’s all kinds of crazy things that you can do -- you really can [target people with friends who just gave birth]. It’s really odd to have that much insight into… the people that you’re advertising to. It’s great, but it’s sorta unique in that you don’t get that much insight into who is viewing your ads in any other platform that I’m aware of, at least.

And from the same episode a few minutes later on...

Joe: So you can target pretty much anything you want, and I know it’s pretty crazy. We did a very brief experiment with Setlists a while back, which I want to repeat, because I don’t think we did it right. We were able to say just give us people who have iPads… Just give me musicians. We could even just say give me singers versus guitar players versus… It’s pretty wild how specific you can get in that detail, and that’s why Facebook’s always asking you all those questions like where you went to high school or where you live… but they also glean quite a bit from your timeline and from what people post about you and what you post in return.

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:

One of the (many) things I tried was Facebook app install ads...

Over a one-month period I tried all kinds of permutations, re-visiting my ads every day or two to turn off the clear losers to save money, and try new ones. Looking back at the ad manager for that time period my worst permutation was going to cost me $20 a user, and I had a lot in the $2 - $5 range, but by Jan 2016 I knew how to dial some of the knobs get users for < $1.

That sounds like theorycrafting.

Or on the Under the Radar podcast, episode #49, App Store Search Ads:

Marco: Another thing to think about is what percentage of your new users come through clicking ads? If you're thinking that you make 25 cents per user, but 10% of you users come from clicking ads and the rest come from other ways, then you actually might be able to bid a lot more than what that is to get those users...

... I think [cost per acquisition] will make people think about their business models a little bit more and maybe charge more money and charge higher prices for apps that really, that can earn it, that deserve the higher prices. I think this actually might help raise App Store prices as people figure out, "You know, it'd be really a lot better if I could bid on these keywords and be a little more competitive on the ad side, but in order to do that I have to charge a real price for my app or I have to have some kind of recurring revenue scheme or something like that. Ultimately I think this might actually help ad pricing substantially.

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.

Time is money, money is power, power is pizza, and pizza is knowledge

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 [](

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. on each candidate's "chances of winning" the 2016 presidential election

Labels: , , , ,

posted by ruffin at 2/02/2018 02:20:00 PM
Friday, January 26, 2018

I realize I'm old, but I still haven't swapped from buying music to streaming all of it.

Seems like folks like me are being underserved. It's not that we don't like to buy music. In many cases, it's the opposite. I buy more albums & tracks each year than I'd like to count.

Why don't any of these music cloud services provide good, ad-free recommendation services for music buyers, not renters, like me? They're sitting on millions of people's listening habits. Why not convince me to buy more with spot-on suggestions?

For Apple, Spotify paid, and Amazon Unlimited, I've yet to find that I need to pay $10 a month or so to listen to everything. That's about ten new albums a year plus a few guerilla tracks, which seems enough, so far.

These are closed ecosystems. I can't easily get just the recommendations. I hear Spotify has great recommendation playlists, but ads are too annoying to listen to when I use my music (and I do, mostly to give myself a little more energy when coding). I'm not going to pay for recommendations if I don't know they'll be pretty good, and I'm not excited about listening to music with ads. I'd rather buy the good stuff. Nor do I want to pay so much for recommendations that I can't afford to own anything new. I'm not a fan of subscriptions in general... Enjoying music shouldn't be a capital addiction, just an emotional one.

And why don't I trust recommendations? I used & enjoyed Pandora for a while, and it was initially great for giving me suggestions for new music, but once good suggestions ran dry (and they did dry up -- at first the suggestions were great, but then they became repetitive and/or reaches that didn't quite fit), the honeymoon, as they say, was over.

Ads plus the same rotation of songs, plus a few new misses when I sign back in every few months? No thanks. If they were as good as they once were, I'd consider $5 a month for "personalized radio with no ads". But I'm afraid that because they're doing this with "curation" (human and algorithmic) rather than actual listeners' habits, the recommendations simply aren't as good as they should be.

Here's an easy example: For the most part, I like hard rock with female front'men. Why do they give me so many whiny dudes? NO WHINY DUDES, PANDORA, KK? THX. Apparently the music genome has no concept of XX.

Three services I actually use

Amazon Prime hits a sweet spot. In one app, I can listen to all of my own music that I've uploaded, and its catalog is just big enough and its recommendations are just good enough for me to occasionally discover new artists without ads when my ear starts wanting to wander. This is sort of how the radio used to work, but adless.

(It's worth mentioning that I listened to a lot of cassettes when I started driving. I don't like ads. And that means I've known a few albums -- Knowledge is Power, Pump, Aftermath -- really well for decades.)

Occasionally, I hear of something new that's not on Prime or an artist that I've "discovered" on Prime doesn't have their entire discography there, and that's where Spotify's free tier pops in.

Yesterday, I bumped into Samantha Fish on Prime (a follow-on from listening to Halestorm, I think), but the most recent record, Chills and Fever, that was on Prime, wasn't nearly as good as Black Wind Howlin' from a few years back, at least not for a Halestorm fan.

A little sleuthing later determined that she has two albums from last year, and that the Chills & Fever one was a little experimental. Belle of the West is a little more like her earlier stuff.

Spotify lets me take a quick listen with minimal ads to see if this I'm buying a track or two or the whole CD.

And where did I do this research? The last of the three services I use: YouTube. I really thought this one was "just for the kids", but, newsflash, it's MTV. This is not new, no matter what the internets are telling you.

I hate the ads (hello Grammarly and Wix. I code native javascript, dangit, and host my own servers! Stop advertising to me!), but I really enjoy the videos. I realize this dates me again, but I could deal with an adless YouTube streaming related music videos in the background while I worked, but I'd need a third or fourth monitor (depending on the office) to host it. ;^)

And YouTube's related videos list is a pretty good place for discovery too.

What can Apple learn?

As a stockholder, this pains me a little. Probably the coolest picture of Steve Jobs is the one when he's sitting, cross-legged on the floor, at home, with his albums, hifi on the floor behind him, fancy-pants light over his head, drinking tea. Minimalist. Relaxed. Big honkin' speakers. Good sound. Good albums.

Steve Jobs with his stereo

(image from

You know what's most important to folks listening to music? Good music. Knowing which albums to buy. Why do I use Amazon streaming? Because it's all of my music plus more, and that more is curated for me in a way that's not annoying to access.

But, like Jobs, at least in 2007, said, [some] folks prefer to own music.

Why can't folks who are stuck in 2007 get good recommendations from Apple Music? Why can't I play even the stuff I've purchased from Apple on the Android Apple Music app? Why doesn't Apple try to sell and sell me good music? Why does Apple Music feel like a closed system, and the iTunes Music Store feel a little like Tower a month or two before they started discounting for clearance?

Good recommendations are out there. Apple has them. Why can't I hear the recommendations without ads or a monthly access charge?

And if you hooked me on enough recommendations, enough that it'd far exceed my album budget to keep up? I wonder what I might finally do...

That's all.

Aside: Why do gal blues guitarists feel the need to dress so, um, not relaxed? It's not everyone, but let's just say B.B. King didn't wear an analogous wardrobe. It's a little embarrassing when I'm recommendation-rabbit-holing and pop up some of these NSFH[ome] album covers.

The worst part for me is that it's not even clear self-aware [and therefore often self-]exploitation like, say, Maria Brink in In This Moment, which is easier to ignore, because you know she's in on the game: This is not her. This is simply and obviously a brand. (That said, they made their best album before the brand went, well, over the edge with "branding".)

I was going to include some samples, but if I pixelate them at the same time, it kinda kills the point. Maybe folks are more comfortable making images with less on, which is fine, natch, but, eg, Ana Popovic doesn't seem to want to wear anything while she poses for covers. I know, I know, it's anti-feminist and Puritanical to suggest someone should put clothes on, but here's one vote to please wear whatever makes you most comfortable when you jam, and slap that on the cover -- if you want yourself on the cover.

I'm buying the music, not your picture. Like, literally, if streaming has done nothing else, it's given us the ability to hear everything we're considering buying. I'm just buying the music.

Painfully, I've ironically spoken too soon.

Labels: , , , , , ,

posted by ruffin at 1/26/2018 11:38:00 AM
Friday, January 12, 2018


The director took multiple precautions to keep the screenplay out of eager fans of the movie series, advising of the use of a MacBook Air in the Wall Street Journal's My Tech Essentials column. According to [Rian] Johnson [writer and director of Star Wars: the Last Jedi], the MacBook Air was the only device used for the initial production of the script, with considerable efforts made to keep it a secret.

For security it was 'air-gapped,' never connected to the Internet, said Johnson. In security circles, air-gapping a device prevents any software updates or other unwanted items from being installed onto the computer, effectively blocking any data from leaving the device, as well as stopping the installation of any software or malware that could force open a connection and allowing any data to leak out to third parties.

It's really that easy, folks. Hey, Equifax, Office of Personnel Management, and, um, any freaking hospital --

You know how you keep private information private? You take it off of the internet.

Firewalls don't count. OFF of the internet. If you have sensitive, proprietary data, "air gap" that portion of your company's network.

If you have to shoeleather data you don't mind getting out from one network to another, you essentially completely eliminate the possibility of a non-geographically confined attack against the data you want to keep safe. That is to say, people in Russia can't steal your data unless your network extends to Russia. Pro tip: The internet extends to Russia.

There's this bad joke in the preamble to the Dead Milkmen's song, Bitchin' Camaro (lyrics here, but they're not safe for polite consumption) that goes something like this...

  • Oh, how you gettin' down to the shore?
  • Funny you should ask; I've got a car now.
  • Ah wow, how'd ya get a car?
  • Oh, my folks drove it up here from the Bahamas.
  • You're kidding!
  • I must be, the Bahamas are islands.

YOU CAN'T STEAL A CAR FROM THE BAHAMAS AND DRIVE IT TO THE US. Get my drift? You want a car to be reasonably safe from US car thieves, put it in the Bahamas. Geography still matters. You want to keep your data safe from data thieves? Don't put it on a network that extends to their apartment.

More to the point, why is my personal credit data on the same network as Playboy? Doesn't that strike anyone else as a little odd?

It drives me absolutely mad how much we pay every year in breaches for the convenience of not having to separate networks. I can wait 48 hours to know if I qualify for a car loan, okay? Or, crazy thought, how about have the dealership call in the request?

Now all that said, please heavens tell me this dude knew to make periodic backups onto at least two jump drives. Or to at least print it out every so often.


Labels: , , ,

posted by ruffin at 1/12/2018 02:22: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.