log.nikhil.io

17 things tagged “tech hell”

Always be leveraging

On tech culture’s obsession with quantifying and optimizing every single moment of one’s existence1:

I hate this framing. It is pressuring, dehumanizing as it contextualizes human endeavor in transactional terms, usually in a market.

I know this goes against the ethos of high-tech, but humans don’t have an imperative to be as productive as possible. They don’t have to make the most use of their time. They don’t have to get as efficient as they could. These are metrics that work fine for our machines, our code. But humans are not machines. Sure, we shepherd the machines, and sure sometimes we are in rivalrous dynamics that increasing efficiency has a payoff, but it is never the goal in itself.

The real “currency” we have, if we are using the term in the sense of denoting essentialness, is our humanness, our mortality, our psyches, our connection with other people and seemingly mundane but meaningful parts of our lives. I mean, look how many of us started baking their breads and enjoying it. It is not a wise use of the “currency of time”, but it is part of life very well spent, as our internal reward mechanisms have been telling us.

@acituan on HackerNews, commenting on this article

  1. With corroboration via sophomoric interpretations of stoicism and objectivism, all aimed at summoning this latent, dispassionate übermensch whose sole purpose is to “leverage” and deliver value. ↩︎

The AppleTV Remote Sucks

Dec 9 It’s so bad a Swiss company made a much saner substitute that sells for ~$20.

The Salt Remove


Nov 16 Looks like you can use the old remote with the new AppleTV.


I’m annoyed every time I have to use the infernal thing.

  • It tries (poorly) to be something other than a damn TV remote1.
  • There’s no way to tell which end is up.
  • There’s no accidental tap detection when you pick it up.
  • It’s way too small.
  • It’s way too slippery.
  • I use Siri to skip forward and backward because the edge clicks are unmemorable and dysfunctional.

I use the iPhone app when I can and, while I can’t stand the terribly implemented inertial scroll, still find it better than the hardware.

Inertial scrolling does in fact exist on the Siri remote, but the effect is muted. The on-screen movement doesn’t accurately reflect your swiping — scrolling is staggered and it often stops abruptly, when you don’t intend to stop. This makes aspects of navigation, like manual search or entering your email address or password, extremely cumbersome.

– Dave Smith, “My biggest problem with the new Apple TV remote

See also: Steve Brykman of ArsTechnica’s thoughts on “the nightmare horrorshow” that’s the remote.

  1. “You’re basically getting a giant iPad game that you have to play with a tiny remote” ↩︎

AppleTV, AppleTV, AppleTV

I absolutely love Dustin Curtis’ splendid explanation of “AppleTV” branding that’s making making the rounds on HN. For posterity, I stole this handy color-coded transcription off Michael Tsai’s blog.

See also: The intractably stupid AppleTV Remote.

Two Levels of Not Giving a Fuck

No Code is the best way to write secure and reliable applications. Write nothing; deploy nowhere.

Start by not writing any code.

Brilliant. I love both the presence and contents of the Dockerfile in that repo. As is always the case with such projects, the issues and pull requests are 💯

And if one is tempted to go against the tenets of No Code, there’s always my beloved fuckitpy, a (strangely well-thought-out) “Python error steamroller”1:

@fuckit
def buggy_function():
    problem_solved

@fuckit
class BuggyClass(object):
    def __init__(self):
        everything_works_now

And:

This module is like violence: if it doesn’t work, you just need more of it.

  1. Inspired by FuckitJS. ↩︎

JavaScript Delenda Est

Back in the second century BC, Cato the Elder ended his speeches with the phrase ‘Carthago delenda est,’ which is to say, ‘Carthage must be destroyed.’ It didn’t matter what the ostensible topic of the speech was: above all, Carthage must be destroyed.

My opinion towards JavaScript is much like Cato’s towards Carthage: it must be rooted out, eliminated and destroyed entirely. I don’t know if I’d go quite so far as to say that the fundamental challenge of mass computing is the final destruction of JavaScript — but I want to say it, even though it’s false.

JavaScript is a pox, a disaster, a shame. It is the most embarrassingly bad thing to become popular in computing since Windows 3.1. Its one virtue (that it’s on every client device) is outshone by its plethora of flaws in much the same way that a matchstick is outshone by the sun, the stars and the primordial energy of the Big Bang added together.

JavaScript is the XML, the Yugo, the Therac-25 of programming languages. The sheer amount of human effort which has been expended working around its fundamental flaws instead of advancing the development of mankind is astounding. The fact that people would take this paragon of wasted opportunity and use it on the server side, where there are so many better alternatives (to a first approximation, every other programming language ever used), is utterly appalling.

JavaScript delenda est.

I don’t know what my newfound affection for it says about me. Via HackerNews.

Gandhi the Annihilator

At least in Civilization:

[. . .] Gandhi tends to be the first to use nuclear weapons, and spares no expense on wiping your civilization off the map. You probably always thought you were crazy — how could a series that prides itself on historical accuracy portray Gandhi so wrong? Well, you’ll be happy to know that both your sanity and Civilization’s historical integrity aren’t at fault. Instead, a bug’s to blame.

In the earlier Civs, leaders are given a set of attributes that dictate their behavior. One such attribute is a number scale associated with aggressiveness. Gandhi was given the lowest number possible, a rating of 1. However, when a civilization adopted democracy, it granted a civilization -2 to opponent aggression levels. This sent Gandhi’s rating of 1 into the negative, which swung it back around to 255 — the highest possible rating available, and thus, the infamous warmonger Gandhi was born.

Geek.com, What caused Gandhi’s insatiable bloodlust in Civilization

And they just left it in there as an homage:

This cyclical aggression scale was fixed in later versions of the game, but Gandhi wasn’t totally cured of his bloodlust. The team fixed Gandhi’s aggression rating, but as an Easter egg paying homage to the earlier aggressive versions of Gandhi, ramped his nuke rating through the roof. So, while it may be difficult to push Gandhi over the edge, he goes from zero to nuclear option once you do.

Via MS.

Alan Kay on OOP

OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I’m not aware of them.

Dr. Alan Kay on the Meaning of “Object-Oriented Programming”

So… Erlang? (RIP Joe Armstrong 🙏) And that was before this

(I’m not against types, but I don’t know of any type systems that aren’t a complete pain, so I still like dynamic typing.)

Indeed, Dr. Kay.

The Inventor: Out for Blood in Silicon Valley (2019) · IMDb · B+

A great complement to the book.

When I think of Theranos, I really think that there were two entirely different worlds. There was the carpeted world and there was the tiled world. In the carpeted world where Elizabeth was a goddess. Everyone, you know, almost worshipped the ground she walked on. She could do no wrong. She was the next Steve Jobs. Theranos was changing the world. And then you go into the tiled side and nothing works. We’re on a sinking ship. Everything is a lie. Reconciling the differences between those two worlds was really hard for me to do.

[…] I would leave the tiled world thinking, ‘Oh man, sinking ship.’ And I would go have one conversation with Elizabeth. And I would be so motivated to go back and work and I felt like I was changing the world again. And I would go back into the tiled world and I would go, ‘Wait, what just happened?’ You want it to be true so badly and even for me, I was working with these devices every single day and she could still kind of convince me. When I think back on those conversations, I just think ‘How did she do that?’

Tyler Schulz

The "Not Invented Here Syndrome"

In programming, it is also common to refer to the “NIH syndrome” as the tendency towards reinventing the wheel (reimplementing something that is already available) based on the belief that in-house developments are inherently better suited, more secure, more controlled, quicker to develop, and incur lower overall cost (including maintenance cost) than using existing implementations. In-house developments are often collaborative with each other. When two in-house developments come together, it is informally known as “computer incest.”

Wikipedia

Found when I was looking for a dependency-free XML-to-JSON parser wherein the author notes the “fine NIH tradition of JavaScript developers everywhere.” Reminded me of this

Via

11th Hour Panic

Shturmovshchina was a common Soviet work practice of frantic and overtime work at the end of a planning period in order to fulfill the planned production target. The practice usually gave rise to products of poor quality at the end of a planning cycle.

It has three very, very familiar stages

  • Spiachka (hibernation) – this is the first third of the planned period. Nobody’s doing anything, mostly because there are no orders to do anything
  • Raskachka (buildup) – at this stage it is more or less known what should be done, but there is too much time ahead, and during that time the requirements may change, as well as the management;
  • Goriachka (fever) – this is the last stage of the planned period; by the end of this stage the product is supposed to be ready, or the management may be reprimanded; everybody works like crazy, with the bright future being so near.

Node Modules

For a single project I made the mistake of working on in my Dropbox folder:

Wonder what the downsides are to hardlinking by default. And, fundamentally, why creating an amazing, Python-like standard library is such an intractable problem in the first place.

[. . .] core-js is also utils library, quite a big one honestly! It has so many functions inside I bet a lot of other packages will be using it!

Not really. Only babel-runtime has it in its deps. Oopsie.
And returning to the starting point, cli uses only 3 (trivial) methods from common-tags — stripIndents, stripIndent, oneLine. Oopsie daisy.

In order to use these 3 methods node_modules needs 1826 files. And that’s just 4 of mentioned 976 installed packages.

– Mateusz Morszczyzna, What’s really wrong with node_modules and why this is your fault

🤦‍♂️ The portion of the article that listed functionally similar packages and is-* packages was particularly dismaying. As he points out, there’s a good reason why jQuery and lodash are as immensely popular as they are1.

  1. Was wondering if we’ll ever get back to the magic of hand-crafted web pages and found this article which led me to this modern Geocities clone 💖 ↩︎

It's what they do at Google

In addition, engineers have commoditized many technical solutions that used to be challenging in the past 15 years. Scaling used to be a tough challenge, not any more for many companies. In fact, part of my daily job is to prevent passionate engineers from reinventing wheels in the name of achieving scalability. It’s not because we don’t need to solve scalability problems, but because the infrastructure is good enough for most of companies. Building and operating so called “big data platform” used to be hard, not that hard any more. Building machine learning pipeline used to be hard, not that hard any more for many companies. Of course, it’s still challenging to build a highly flexible and automated machine learning pipeline with full support of closed feedback loop, but many companies can get by without that level of maturity.

– via Hacker News (emphasis mine)

History of Java

Saw this minor dis by Safari

and then this video on the history of Java. Also by the author: something of a tribute to Flash (RIP.)

Desperation

margin: 0;
padding: 0;
...
margin: 0 !important;
padding: 0 !important;
...
sudo margin: 0 !important;
sudo padding: 0 !important

via @thebarrytone

Telling People Things

What’s going on is that without some kind of direct experience to use as a touchstone, people don’t have the context that gives them a place in their minds to put the things you are telling them. The things you say often don’t stick, and the few things that do stick are often distorted. Also, most people aren’t very good at visualizing hypotheticals, at imagining what something they haven’t experienced might be like, or even what something they have experienced might be like if it were somewhat different.

and

When people ask me about my life’s ambitions, I often joke that my goal is to become independently wealthy so that I can afford to get some work done. Mainly that’s about being able to do things without having to explain them first, so that the finished product can be the explanation. I think this will be a major labor saving improvement.

Chip Morningstar, “You can’t tell people anything

A Week of Frontend Development

Python Environment Management

XKCD on Python Environments

XKCD. Add to the mix

Then there’s Python’s packaging and distribution kerfuffle…