MacBook, defective by design banner

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


descrip:

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

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

FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike, always wear white.
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!

Thursday, March 12, 2020

You know how podcasts all seem to have the same sponsors? You know how they’re all those “direct-to-consumer” brands? I’d heard when Casper wanted to go public that at least Casper was in trouble, but it looks like it’s an endemic (?) problem with most DTC brands. 

Why? Venture capital. The investors are demanding huge returns, and that’s moving the companies away from sustainable business models around their original missions and turning them into much more complex - and risky - beasts, with the hope that one of those beasts will be a unicorn. (I’ve railed on venture capital before here.) 

Here’s the most damning quote from an interesting and thorough article on the subject from Medium:

“The economics work better if Casper sent you a mattress for free, stuffed with $300,” jabbed NYU Stern marketing professor and tech doomsayer Scott Galloway

That’s not good. They’re hemorrhaging money. And it’s clear Casper isn’t alone. They’re just the one who had to show us their finances. 

And when the venture capitalist marketing cash dries up, I can think of one medium in particular that’s gonna feel it: podcasts. 

Borrowed time, man. You podcasters are on borrowed time. 


Labels: , ,


posted by Jalindrine at 3/12/2020 08:25:00 AM
Friday, February 28, 2020

From MacRumors:

Leaked proposals from the European Union suggest that smartphone manufacturers in the EU could be forced to make all batteries removable in the future. This would mean that any smartphone brand wanting to sell a handheld in the EU, including Apple, would have to ensure that every device on the market has a user-removable battery (via TechRadar).

Yes, please. Long story short, I have an iPhone 8 now, ordered from Decluttr.* It's in pretty good shape, but the battery is at 81%. "Only" $49 to fix at Apple, but you know what would be great?

The only downsides afaict are...
  1. The phones could be 2mm thicker in every direction.
  2. Batteries might not be waterproof.
Yes, please.

What do you want to make a bet that, like the "universal charger" EU mandate that Apple skirted by offering a USB-C to Lightning adapter, they'll just say the battery cases they sell match the letter of the law. /sigh



* Longer story: Was waiting on SE 2, in large part because of my hatred of FaceID. Someone was promised an iPhone 8, it was ordered, they did not do the things needed to receive said 8, and I suddenly started thinking: You know, this iPhone is half the price of the SE 2 I'd want ($222 vs $450), has TouchID, and is as fast as an iPhone X. That's just two generations behind. Let's keep it and pocket some cash.

Jury's still out. I kinda miss portrait mode, believe it or not, and I wonder how impressive the CPU diff and camera improvements would be. But as in most cases, you don't miss what you haven't seen.

So far, my only regret is this battery.

Unexpected boon: The Speck CandyShell Card case for the 6S (which I still had from a few years ago) fits the 8 if you Dremel the camera hole a little. Doesn't look super great, but it works.


Labels: ,


posted by ruffin at 2/28/2020 10:31:00 AM
Wednesday, February 26, 2020


I have my doubts.

Labels: ,


posted by ruffin at 2/26/2020 10:41:00 AM
Friday, February 14, 2020

9to5 quotes Edison, makers of Edison Mail:

To keep our Edison Mail app free, and to protect your privacy by rejecting an advertising-based business model, our company Edison Software, measures e-commerce through a technology that automatically recognizes commercial emails and extracts anonymous purchase information from them. Our technology is designed to ignore personal and work email, which does not help us measure market trends.

Hahahahahahaha! MUHAHAHAHAHAHA!!!

Yeah, right. Okay. I'd like to hear how that "technology" works. If it whitelists what's sniffed based on known marketing email addresses, okay, sure. If my locally running app is sniffing all my emails for marketing-speak (receipts, whatever), I'm suspicious.

And 9to5 does a good job saying why this is wack. I mean, Google is doing this like mad in Gmail, and probably not nearly as safely as Edison. But Gmail also doesn't do this... (again from 9to5)

And when looking at the big picture, Edison having phrases like “privacy by design” and “privacy first” on its website can feel misleading after learning about how they scrape and sell personal data.

Sell your email client. Charge a subscription. But don't turn on email sniffing by default without telling every customer before they add an account.

That's evil.

Labels: , , , ,


posted by ruffin at 2/14/2020 08:54:00 AM
Thursday, February 13, 2020

I gave away my iPhone to someone who needed it more than me, but also because, admittedly, I hated the XR's Face ID and I'm waiting for the new "SE" with the latest CPU but no Face ID.

In the meanwhile, I've been using an old Android phone -- the first Nokia 6, upgraded to Android 9.

I've also been using my AirPods, which I didn't give away, hooking them up as plain ole Bluetooth headphones to the Nokia.

At first, things were great. But yesterday in the Starbucks while I was trying to drone out the, um, ambient noise, the AirPods weren't giving me any serious volume, and I could barely here ye olde tunes at full blast.

Turns out this is a common problem. The solution is insane, but works.

Cnet has a decent overview, apparently stolen from Reddit. I'll hit the high points.
  • Open Settings.
  • Scroll to the bottom of the page and tap on System.
  • Locate Build Number (may be located under About Phone).
  • Tap on Build Number seven times, after which you will see an alert congratulating you for being a developer. [you'll also see an alert when you're getting close, that you only have X more clicks to become a developer -mfn]
  • Go back to Either the main Settings page or the System page and look for Developer Options and tap on it.
  • Scroll down and find Disable Absolute Volume and turn the switch to the On position.
Now for the step the cnet author misses:
  • Disconnect and reconnect your AirPods from Bluetooth settings (long press the Bluetooth setting icon to access, or however you normally get to settings). 
I don't think I even needed to "forget" them, just dis/re/connect.

Voila. But be careful. They can go pretty loud now.

I wonder why mine started out loud and then went soft. I kinda wonder if using them with my Mac, for instance, set their internal volume low. Without a switch to change volume, maybe the AirPods use the same idea, but do it all in software my Nokia can't access.

But I haven't tried reconnecting them to my MacBook (I use Tooth Fairy, which makes it pretty easy) to see if I can set them high there and then re-pair with the Android phone. I guess I should.

Not nearly as cool as they are with an iPhone, but still by far the easiest headphones to carry with me, and they're with me nearly as often as my keys are at this point, because I hate "ambient" noise almost as much as Face ID.

No, not true. There are few things I hate as much as Face ID. ;^)

Labels: , , , ,


posted by ruffin at 2/13/2020 08:33:00 AM
Wednesday, February 12, 2020

Looks like DuckDuckGo uses Apple Maps now, but not for directions.


I kinda got the feeling they were going all in with Apple from articles like this one from MacWorld...

Today, privacy-minded search engine DuckDuckGo announced that it will use the new MapKit JS tool for all its location-based search results. Previously, the site used OpenStreetMap for its results, with a drop-down box kicking you off to Bing, Google, or Here maps if you asked for directions.

... but I guess that's not exactly the case.

Labels: , ,


posted by ruffin at 2/12/2020 04:24:00 PM
Thursday, February 06, 2020

From The Verge:

Over the years, Apple refused to offer more flexible pricing options to developers. There never has been (and may never be) such a thing as “upgrade pricing” in the App Store, unlike on more open platforms like the Mac. Developers either had to offer major new versions for free, charge current users the same amount as new users, or try to jerry-rig an in-app purchase system.

One, you can't say "jerry-ing". Look it up.

Second, why can't we sell subscriptions to "Vol. 1 of My App"? That is, are subscriptions necessarily time bound?

Luckily, it doesn't matter. It's always seemed to me that there's got to be some slick way of having features unlocked based on your purchase date and which in-app purchases you've purchased later. Why can't you sell "v2 features" as a $10 in-app purchase? The only thing stopping you (and this is a complaint I've seen) is that your app has to support both versions.

That is, if you don't want to change the SKU (TIL: "stock keeping unit" -- add fuel to my earlier The iTunes Warehouse And Dollar Store), you have to have both a version 1 and a version 2 in the same app bundle.

Sorta. If you don't think of it as a weird mutli-headed creature (if no pay, display v1; if yes paid, display v2 <<< bad/dumb), but as your new creature with crucial [new] features behind a paywall, you're done. Who cares if, a few versions in, you save some dev time by allowing the people who paid for v1 get a few v2 features even though they haven't paid for that or your new version 4? They weren't paying, so it's not really a revenue loss.

And that, surprise, exactly what Overcast, Castro, and Fantastical (a few places I've paid and gotten bonus features in new, subscription based versions) have done.

From The Verge's review of the new Fantasical:

If you already own Fantastical 2, though, Flexibits has a pretty cool offer to help mitigate that feeling, in part. If there’s any feature in Fantastical 2 that is now a Fantastical Premium feature, you will still be able to use that feature in the updated app on the platform you own it on, even without a Premium subscription. You won’t need to sign up for a Flexibits account to keep that functionality. And Simmons tells The Verge you’ll still get free bug fix updates as well.

See? Who cares if the people who weren't going to pay the new price get some bug fixes? That's free for them, but it's also essentially free to you -- there's no price to send out that bug fix to more people for app store apps.

And I say this as a Fantasical 2 owner -- for iPhone. I had the iPhone version on my iPads too (no reason to pay twice to get an iPad specific UI, though I considered it), and then, poof!, one day the last week or two it upgraded on my iPad to a full iPad UI! That was a surprise.

At first, I was a little peeved, since I actually liked the old iPhone UI on my iPad, especially my iPad mini (which is old enough I still have to use 2). iPhone UI on iPad was ugly, but tres functional. But now I get the new UI... and liking it after my "free iPad UI exposure" means there's some new advertising too.

Thanks to the "free" upgrade, I know that I could spend more to get a potentially fancier experience. I probably won't, but they've lost almost certainly exactly zero dollars (and lost exactly zero good will; they've probably even built a little) giving me part of v3 in my v2 for free.

Labels: ,


posted by ruffin at 2/06/2020 10:17:00 AM
Tuesday, February 04, 2020

From Michael Tsai's 2016 post, What It’s Like to Take on Venture Capital Investment:
Matt Henderson:
This is fascinating insight into the, I suppose unsurprising, mindset of many venture capital investors. They’re not looking for a profitable business; instead, they’re looking for growth that provides the opportunity for a 100x exit. And their expectation is that you, the founder, will work to achieve that at any cost. And since their investment also brings the expectation of participation and inclusion in the running of the business, any company owner considering taking on investment would be well advised to make sure at the outset that everyone’s on the same page in terms of objectives. [emphasis mine -mfn]
If you don't understand this about venture capital, you're completely missing the boat. It's also why so many startups seem to make really dumb long-term decisions to help tomorrow's bottom line -- they're beholden to people who want to exit and profit personally, not wait around and slowly collect from a profitable company.

If you save and save while you work a 9-5 and open a family restaurant, you hope that investment brings in enough cash that you can live off of that income. You don't want to drain the investment. You want to have it pay for itself and you. That requires profit.

That's not what venture capital does. These investors are looking for a profitable exit, not a long-term investment. They're looking to flip the house so that they can take that capital and flip another, not collect rent for 50 years. They're looking to sell quickly so that they can buy again, not sit and collect dividends.

And that's smart for them. If you can invest $X and get back 10% of that $X at 100x, then you've already got 10x the cash you had before, ready to do it again. That is, if you give someone a dollar, even if they throw 90¢ of it away immediately, and they take that dime and come back to give you $11, you still made $10 in spite of that 90¢ dying a painful death! (Kudos if you see that I mixed numbers there.)

There are very few companies that can appreciate at 10,000% (100x) over seven or so years. And those that do almost certainly can't do it again. Venture capitalists win by finding just one company with mad growth. Then they get the heck out. The bonanza's over.

You don't care about profit. You just care about getting out LOTS more than you put in and keeping the ball rolling. And for companies that aren't going to explode, you want to cut your losses quickly and stop wasting your time "helping" them (and that really is where the venture folk really have their limiting reagent -- time. If you're making 2x on their investment, that's great in the grand scheme, but they'd just as well you failed so that they can take their time and, more importantly, attention elsewhere). That money's gone -- not that venture won't take back 2x, because they will, happily. But if there's no 100x in their future, why keep pushing good money after average? They'll take the 2x now and then go look for 100x somewhere else.

That's how lots of big money's made, folks. You invest, you find the cash cows, you milk 'em, and you get out to do it again. (And it's also why they require obscene percentages of companies for cash before you've proven yourself to be a good conventional investment.)

Labels: ,


posted by ruffin at 2/04/2020 02:56:00 PM

Noticed something called googlesoftwareupdatedaemon eating up my CPU this morning, and was able to google (well, duck) up this from a MacRumors forum:

The good news [if you are having trouble with googlesoftwareupdatedaemon] is, you can go to the LaunchDaemons folder

(in Finder: Menu Bar > Go > Go to Folder…, enter /Library/LaunchDaemons, click the Go button)

and then delete the offending daemon, probably com.google.keystone.daemon.

Empty Trash, Restart. Done.

I'm not quite yet ready to delete it, but it's interesting to learn where this stuff lives.

Labels: , , ,


posted by ruffin at 2/04/2020 11:42:00 AM
Tuesday, January 28, 2020

Here are the important commands to keep around when logging what SQL statements you've thrown at MySQL when debugging, say, some Entity Framework issues...

-- SET GLOBAL log_output = 'TABLE';
-- SET GLOBAL general_log = 'ON';

SELECT * FROM  mysql.general_log  
WHERE command_type ='Query' 
and event_time > '2020-01-03 11:58:20'
ORDER BY event_time DESC
LIMIT 10

-- SET GLOBAL general_log = 'OFF';

Labels: ,


posted by ruffin at 1/28/2020 04:06: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 etree.org Curmudgeon Gamer badge
The postings on this site are [usually] my own and do not necessarily reflect the views of any employer, past or present, or other entity.