Photos I've taken recently Instagram

A Camera is Watching You in Your AirBnB RB

Well dearest host, it is not my responsibility to tell you what I was doing. But, to ease your mind, I’ll tell you we were doing one of two things – either we were having a drug and sex party[1] with 100 of our closest friends, or we went to bed at 9:15 exhausted from kids and being on EST. What was I trying to hide on New Year’s Eve… indeed.

Absolutely hilarious little snippet in the middle of all this AirBnB camera drama. Glad they got their money back. I’ve had a few pleasant AirBnB experiences over the years.

Linux systemd Affected by Memory Corruption Vulnerabilities, No Patches Yet RB

Discovered by researchers at Qualys, the flaws are two memory corruption vulnerabilities (stack buffer overflow - CVE-2018-16864, and allocation of memory without limits - CVE-2018-16865) and one out-of-bounds error (CVE-2018-16866).

They were able to obtain local root shell on both x86 and x64 machines by exploiting CVE-2018-16865 and CVE-2018-16866. The exploit worked faster on the x86 platform, achieving its purpose in ten minutes; on x64, though, the exploit took 70 minutes to complete.

Count another “told ya so” for all the systemd haters. Not a religious issue to me personally, but I do see where they are coming from.

You are afraid of dying - and, tell me, is the kind of life you lead really any different than being dead?

Seneca

Shocker: Facebook's "Clear History" Privacy Feature is Vaporware RB

Gruber: I don’t think it was hard, per se, but that the entire announcement was bullshit intended to distract people from the biggest privacy scandal in company history — and Facebook is a company riddled with privacy scandals.

Still not regretting my decision to leave Facebook years ago one bit.

Unikernels are unfit for production RB

So, what’s the problem with unikernels? Let’s get a definition first: a unikernel is an application that runs entirely in the microprocessor’s privileged mode. (The exact nomenclature varies; on x86 this would be running at Ring 0.) That is, in a unikernel there is no application at all in a traditional sense; instead, application functionality has been pulled into the operating system kernel. (The idea that there is “no OS” serves to mislead; it is not that there isn’t an operating system but rather that the application has taken on the hardware-interfacing responsibilities of the operating system — it is “all OS”, if a crude and anemic one.)

So those are the reasons for unikernels: perhaps performance, a little security theater, and a software crash diet. As tepid as they are, these reasons constitute the end of the good news from unikernels. Everything else from here on out is bad news: costs that must be borne to get to those advantages, however flimsy.

Worth a read if you think Unikernels are the new hotness.

Unikernels are entirely undebuggable. There are no processes, so of course there is no ps, no htop, no strace — but there is also no netstat, no tcpdump, no ping! And these are just the crude, decades-old tools. There is certainly nothing modern like DTrace or MDB. From a debugging perspective, to say this is primitive understates it: this isn’t paleolithic — it is precambrian. As one who has spent my career developing production systems and the tooling to debug them, I find the implicit denial of debugging production systems to be galling, and symptomatic of a deeper malaise among unikernel proponents: total lack of operational empathy. Production problems are simply hand-waved away — services are just to be restarted when they misbehave. This attitude — even when merely implied — is infuriating to anyone who has ever been responsible for operating a system.

He mentions a talk he gave at DockerCon 2015 where he received strong applause after emphasizing the need to debug rather than just restart systems. I do see the point, but I also think the industry is kind of pulling the other direction on this as a whole. If your system is generally reliable [enough] and easily distributed, then there is a certain elegance to the notion or just ignoring edge cases completely and just letting them die.

When you had one huge server any small issue with it was worthy of detailed investigation - but when you have 10,000 tiny servers and it only takes 20 seconds to spool up a new one… it becomes a lot harder to justify the debugging and pragmatism starts to kick in. Hard to say whether this will bite us in the long-run.

It probably already is having a negative effect on personal computer software reliability in general. It’s easy to forgive Vivaldi for getting sluggish after a few days since it restarts so smoothly and preserves it’s state so well, but it would certainly be nicer if I never had to restart it.

Apple's China Problem Redux RB

Apple does make great hardware — hardware so good that to some extent it sells itself. But the core of Apple’s platforms are the OS’s — the software, not the hardware. I’d much rather run MacOS on a ThinkPad and iOS on a Pixel phone than run Windows on a MacBook Pro and Android on an iPhone XS.

So true. A ThinkPad running official and supported OS X would be quite something.

If the appeal of iPhone in China is only or even just mostly about the hardware — because the software that matters is WeChat (or anything else that is cross-platform), not iOS and its native exclusive ecosystem — then China is never going to be a consistent market for Apple.

Sad, but I think this might be true. Going to be tougher for Apple in China than other places.

Stop Slacking RB

Reply to Slack messages via email. Stay focused.

What a great idea.

YAGNI to the rescue RB

You spotted an opportunity to optimize, but you were too early. You should avoid generalizing code until it is absolutely obvious that you should.

The more use-cases you have, the easier to know what to generalize. I mean, how can you know which functionality your components share if you don’t even have those components yet?

You can’t.

YAGNI, always good advice.

Mf — Abusing Ruby’s Operator Precedence RB

You may have seen Ruby 2.6’s Proc composition, but did you know there are far more operators you can abuse using Ruby’s proc coercion ( & )? Get ready for another wild ride!

Fun and potentially useful if Ruby is your thing:

json_data.map(&Mf['name'])

Bundles and Packages RB

In this season of giving, let’s stop to consider one of the greatest gifts given to us by modern computer systems: the gift of abstraction.

Consider those billions of people around the world who use computers and mobile devices on a daily basis. They do this without having to know anything about the millions of CPU transistors and SSD sectors and LCD pixels that come together to make that happen. All of this is thanks to abstractions like files and directories and apps and documents.

Indeed, we stand on the shoulders of giants - giant abstractions - or perhaps giant layers of abstractions. Without them we’d all be sweating over the decision between NAND gates and NOR gates for every new project - and that would be no fun at all.

Also seems to be a great article in general if you’d like to learn more about Bundles and Packages.

Why It's Hard to Escape Amazon's Long Reach RB

It’s now the largest provider of cloud computing services and a maker of home security systems. Amazon is a fashion designer, advertising business, television and movie producer, book publisher, and the owner of a sprawling platform for crowdsourced micro-labor tasks. The company now occupies roughly as much space worldwide as 38 Pentagons. It has grown so large that Amazon’s many subsidiaries are difficult to track—so we catalogued them all for you. This is our exhaustive map of the Kingdom of Amazon.

I didn’t disagree with the intro, but I laughed at this whole “Kingdom of Amazon” hyperbole a little until I read the article. Yikes. It’s more than a little scary, seriously. Amazon has been slowly growing more concerning in my mind. A year or so ago I switched my Prime membership back to monthly and perhaps this year I’ll cancel it completely. Right now it’s only Kindle Unlimited that keeps me hanging on. I’ve been leaning a lot more on local libraries this past year though, and that might just be the trick that finally helps me break away.

iPhone's new Fortnite's 60fps mode tested - and it's a tech milestone RB

However, the reality is that running the last-gen A11 Bionic flat-out would overheat the device, leading to lower CPU and GPU clocks, severely impacted performance and highly compromised battery life. Epic’s solution is simple then - lock to 30fps and in the process give the device the thermal headroom to stay cool enough to run at peak frequencies.

It’s a completely different ballgame with the A12 Bionic found in the iPhone XS, XS Max and the cheaper but just as capable iPhone XR (which Epic supplied for Fortnite 60fps testing). Epic says that the extra processing power allows Fortnite to complete a frame in the eight to 10ms range, meaning that there’s still plenty of ‘down time’ for the silicon. Apple’s move to TSMC’s new 7nm process also opens up the thermal headroom required to maintain peak clocks.

Imagine a world where Apple was actually seriously interesting in gaming… what might be possible?

In my experience junior developers write clear and simple code, because it's easy for them to understand; mid-range developers write complicated code, because it proves what a clever developer they are; and senior developers write clear, simple code, so that they won't have to answer questions from junior and mid-range developers about how it works.

Windows RB

On and off over the last year or so I have spent some time in Windows 10. Mostly with the Eve V, but also on my XPS 15. I have found the experience pretty terrible on many occasions. The hostility and lack of respect towards the user shown by Microsoft and some Windows software developers is egregious and angers me every time I encounter it.

I’m aware that the vast majority of computer users manage to use Windows but I’ve concluded it’s not for me. I find it unpleasant to use, slow, full of junk, and offensive to its users.

Scathing critique of Windows, though after looking at his sample screen shots I can’t say I disagree.

Feminism’s Dependency Trap RB

A further concern I have with the message and tone of contemporary feminism is that women have evidently forgotten that we have power over men as a result of the fact that we’re women—men adore us, and almost all their efforts at work or at home or in social settings, are made to win our approval, if not our admiration. In short, I am bewildered by the fact that in a culture in which The Patriarchy has never had less power over women, women seem to want to attribute to it a greater power than men in fact have, thereby confining women to a position of victimhood and powerlessness.

The orthodox line of feminism is that women don’t need men, and that it is men who keep women in a state of dependence. This is the doctrine of women’s liberation: we are trying to liberate ourselves from our dependency on men. Pragmatically speaking, the notion that we don’t need men is largely true. (As a single mother and single woman, I’m certainly poorer than my married counterparts, but I am running a family household successfully, if chaotically.) Paradoxically, however, the rhetoric of orthodox feminism implies the reverse: we need men in order to prove to ourselves that we don’t. I don’t need to sleep with a stuffed animal at night, but were I to insist on mentioning this at every opportunity, it would become abundantly clear that the idea dominated me. At a time when Western women have achieved economic independence, control over their reproductive rights, legal equality, and equal professional opportunities, the continued obsession with the need to win independence from the thing that we are, in every measurable way, already independent from, reveals just how subservient we are to the idea of powerful men. After all, only a child still dependent on the comfort of a stuffed toy needs to insist to herself that she isn’t.

Worth some thought.

California considers a texting tax RB

Cell phone owners in California could soon pay extra for the privilege of sending text messages, thanks to landline-era legislation and changing usage patterns. According to recent public law filings, the state’s Public Utilities Commission (PUC) is considering a plan that would bill users a monthly fee for any text message services they use, and phone service carriers aren’t happy about it.

Feels not so long ago that SMS became a free element of most cellular plans… and now the government wants to start taxing it? Ugh.

And of course, there’s always the risk that applying such a charge will push consumers away from traditional SMS altogether, which would certainly impact the PUC’s estimated $44.5 million figure, and subsequently the people the charge is meant to help in the first place.

A completely valid concern and definitely a possibility - if people even notice the new charges on their bill. I don’t see anything mentioned about how much the tax could be.

A College Student Was Told to Remove a ‘Fuck Nazis’ Sign Because It Wasn’t ‘Inclusive’ RB

Gruber:

Essential reading in today’s world: Popper’s Paradox of Tolerance. In the mid-20th century there wasn’t any debate in the West over whether we should tolerate the intolerant, because they had to fight the Nazis in a bloody war. We don’t want to learn this lesson that way again.

When someone draws a goddamn swastika on a “Happy Hanukkah” sign, “Fuck Nazis” is the appropriate response.

Amen. “Fuck Nazis”, indeed.

What kind of fuck you give me? What kind? American people, eight kind of fuck. Love fuck, hate fuck, sex-only fuck, break-up fuck, make-up fuck, drunk fuck, buddy fuck, pity fuck.

Ngoc Lan Tran in Downsizing

jekyll-feed: You aren't gonna need it

I think I’m going to turn this into a series of posts, about a lot of popular Jekyll plugins - and how you just aren’t gonna need them. We’ll see how far we get. And where better to start than jekyll-feed? The popular feed plug-in that publishes an Atom feed that includes your 10 most recent posts, no more, no less, and no option to configure that number.

This bugs me. I’ve seen Feedly do annoying things with a small number of feeds in the past. I have some feeds I like to read periodically, but not regularly. Very rarely some of these same feeds would start disappearing their old items far too quickly (like within a few weeks, not a month). But I digress, and maybe this didn’t have anything to do with their feeds.

In any case 10 seems like a completely arbitrary number to me and also a bit small for my personal tastes. Thankfully, you don’t need jekyll-feed or it’s limitations. I glanced at Daring Fireball’s atom.xml feed for a little inspiration and just built my own from there. Here’s what it looks like:

atom.xml

{% highlight xml %} {% raw %} — layout: null —

{{ site.title | xml_escape }} {{ site.description | xml_escape }} {{ site.url }}/ Jekyll {{ site.time | date_to_xmlschema }} {{ site.author.name | xml_escape }} {{ site.author.email | xml_escape }} {{ site.author.url | xml_escape }}· Copyright © {{site.time |date: "%Y" }} {{site.author.name}} {% for post in site.posts limit:30 %} <![CDATA[{{ post.title }}]]> {%- if post.link_to %} {%- else %} {%- endif %} {{ site.url }}{{ post.id }} {{ post.date | date_to_xmlschema }} {{ post.last_modified_at | default: post.date | date_to_xmlschema }} <![CDATA[ {{ post.content | markdownify }} ]]> {% endfor %}

{% endraw %} {% endhighlight %}

The post.link_to conditional is just how I do my link/commentary style posts - allowing the default link to point the content itself rather than to my blog post. If your use case is simpler just remover that if/else; and that’s half the point of just using a template rather than a plug-in - so easy to bend to your own use.

Why alternate between CDATA and xml_escape? No reason. I may just as likely go back and change them all to CDATA later. It that’s your style, go for it. My goal here isn’t to say “use my great templates” or to publish another feed plug-in - it’s to point out how easy this all is to do it yourself - the way you want.

But perhaps you’ve head XML is dead or at the very least it sucks.

feed.json

{% highlight json %} {% raw %} — layout: null· — { “version”: “https://jsonfeed.org/version/1”, “title”: “{{site.title}}”, “home_page_url”: “{{site.url}}”, “feed_url”: “{{site.url}}{{site.json_feed}}”, “author” : { “name” : “{{site.author.name}}”, “url” : “{{site.author.url}}” }, “icon” : “”, “favicon” : “”, “items”: [ {%- for post in site.posts limit:30 %} { “title”: {{ post.title | jsonify }}, “date_published” : {{ post.date | date_to_xmlschema | jsonify }}, “date_modified” : {{ post.last_modified_at | default: post.date | date_to_xmlschema | jsonify}}, “id” : “{{ site.url }}{{ post.id }}”, “url” : “{{ site.url }}{{ post.id }}”, {%- if post.link_to %} “external_url” : {{ post.link_to | jsonify }}, {%- endif %} “author” : { “name” : {{site.author.name | jsonify }} }, “content_html” : {{ post.content | markdownify | jsonify }}· }{% if forloop.last == false %},{% endif %}{%- endfor %} ] } {% endraw %} {% endhighlight %}

And of course don’t forget to add your fancy new feeds to the <head> section of your template:

{% highlight html %} {% raw %} {% endraw %} {% endhighlight %}

Transitioning to Subscriptions RB

While other companies may require all their existing paid customers to subscribe in order to get future updates, we instead decided that none of our existing customers should require a subscription! Slowly, we hope to earn each one of your subscriptions by continuing to deliver great updates to the features you have, and by introducing exciting, subscriber-only features that (we hope) will be difficult for you to pass up.

What a great approach. And some funny examples to top it off:

Capo {VERSION_FROM_THE_FUTURE} adds an all-new Virtual Reality Song View that allows you to walk through your favorite songs! Want to isolate an instrument? Take a virtual lawn-mower and trim away the sounds you want to eliminate. Pretty cool, right? Unfortunately, you would not get this for free.