HNHacker News
TopNewBestAskShowJobs

jeffmcmahan

388 karma · joined August 1, 2016

[ my public key: https://keybase.io/jeffmcmahan; my proof: https://keybase.io/jeffmcmahan/sigs/LkRxkjFGiURCcGAZhebTYaCjrrZ6HbydIvnH9FJA2HE ]
submissionscomments
jeffmcmahan··on Using secondary school maths to demystify AI
This. People do not understand the implications of the most basic facts of modern science. Gravitation is instantaneous action at a distance via an "occult" force (to quote Newton's contemporaries).
jeffmcmahan··on Dependency management fatigue, or why I ditched React for Go+HTMX+Templ
It maps state to a set of reasonably efficient DOM updates that you generally don't have to manage or think about.

Go play around with Angular 1, or BackboneJS, or try building a working SPA with jQuery, and you'll get a sense of the breakthrough that react represented in 2013.

jeffmcmahan··on Dependency management fatigue, or why I forever ditched React for Go+Htmx+Templ
This. Lean on less. I use react and a SQL driver. I have many massive react projects in production.
jeffmcmahan··on Dependency management fatigue, or why I ditched React for Go+HTMX+Templ
React is not responsible for the stack of poorly maintained third party packages one chooses to use alongside it. You don't actually need a router, or redux, or other "state management" nonsense. Your application code can/should handle that stuff, and it won't break, and it won't change unless you change it.
jeffmcmahan··on Switch off bad TV settings
As a former high end audio/video salesperson, I just want to state for accuracy that local dimming, as a feature, is not dynamic contrast. Dynamic contrast is terrible. By having an LED backlight array dim spots that are darker in the source material, the display achieves better absolute contrast. It is not adjusting the exposure to fake it. It is instead getting closer to the contrast given by the source material. It created some halo issues, but it was a step in the right direction.

This is not new tech at all - I was selling Samsung LED TVs with this feature in 2007 or so. Samsung, Sharp, and Sony has little choice but to improve contrast, because their LED sets were right next to Pioneer KURO plasmas that were just absolutely amazing - OLEDs are only catching up their PQ now, 15 years later. First on the scene was the Samsung LN-T5781 - https://www.cnet.com/reviews/samsung-ln-t5781f-review/

jeffmcmahan··on I went to 50 different dentists: almost all gave a different diagnosis (1997)
Took my 7 year old daughter to a dentist. 8 cavities. Gotta get em right away! Went to another one. All good - zero cavities.

Many dentists are criminals willing to drill holes in children's teeth in order fraudulently take your money.

She's now 15. Never had a cavity ever.

jeffmcmahan··on “Web Environment Integrity” is an attack on the free Internet
Except that Google and MS search dominate and they can disprefer those not using WEI to "protect" users.
jeffmcmahan··on Crows are capable of recursion, scientists claim
Yes, as usual, our pop science writer with a dim understanding of the issue quotes critics of the Chomskyan paradigm (the study aims to falsify Chomsky’s suspicion that a symbolic operation called “merge” gives humans a unique capacity for deep recursion) and for balance quotes other critics of the Chomskyan paradigm - and never do we hear from the syntacticians (who study recursive grammatical structure as a career).
jeffmcmahan··on Why modern software is slow
Forgive me for having chosen pseudo js for the example - and npm. That conflates the issue. I meant to convey an attitude - let some random package do the work, who cares whether it is deep and complex and handling cases I won't ever need, offering API surface that will go unused, and perhaps doing simple things inefficiently. The language doesn't much matter if "ship ship ship rn" is the ethic that drives decision making.
jeffmcmahan··on Why modern software is slow
No no you're so right. Let's have 500 packages installed to do multiplication. Zero performance impact, I'm sure.
jeffmcmahan··on Why modern software is slow
Why is modern software slow? Because Joe developer's solution to a given problem is to Google up a package that solves the problem, check the license, and then run:

   > { packageMgr } install { randomPkg }
Developer Andy, author of { randomPkg }, does the same thing. And so on, ad infinitum. You want to sum two numbers?

   > npm install node-plus
And the source code will be:

   import { readFile } from 'node:fs/promise'
   import { dirname, join } from 'node:path'
   import additionChecker from 'add-check'

   // redundant useless comments

   return function(n1, n2) {
       // redundant useless comments
       n1 + n2
   }
jeffmcmahan··on Ask HN: Why is the printer industry so scammy?
I lol'd at this. :D
jeffmcmahan··on Machine Learning (1997)
In 2008 or so, Steve Abney (Michigan, linguistics) suggested this book to me while we were discussing a meaning-is-use theory of semantic content. I went straight to the library to get it but their copy was out. Never did get it. Happy to have it now.
jeffmcmahan··on Tell HN: You can't hire because you don't post salary ranges
I agree with OP 100%. I once went through multiple rounds, got an offer only to discover they wanted to pay me tens of thousands less than I was already making. I'll never engage another company about a job without knowing the salary info ahead of time.
jeffmcmahan··on Map shows how fertilizer is choking the Great Lakes
It's weird to say 'her' once and then switch pronouns. But I hear you. You're picturing me with a peg leg. :)
jeffmcmahan··on Closing web browser windows doesn't close connections
That was my immediate impression as to what was going on. This guy doesn't know about service workers...
jeffmcmahan··on Map shows how fertilizer is choking the Great Lakes
Uh, is that intended as a shot at Michigan? Maybe that's not what you meant. I don't know. When I sit on my break wall with friends, sipping scotch and enjoying a half decent cigar, I get to feeling like certain parts of Michigan are pretty hard to improve upon.
jeffmcmahan··on Map shows how fertilizer is choking the Great Lakes
I'm a Michigander - across the water from Amherstburg and a tick south.
jeffmcmahan··on Map shows how fertilizer is choking the Great Lakes
I'm deeply blessed to live on and own ~100ft of Lake Erie's shoreline. I can hear her waves now. Like all the Great Lakes, she is an inland ocean, enormous, inviting the misapprehension that she will dilute an infinite amount of anything you could drain into her. Alas, around here we know the history: not that long ago the surface of Lake Erie caught on fire and no one could figure out how to put it out. So let's remember that we're doing better than we once did. My backyard is daily frequented by bald eagles chasing one another. The place is in many ways healthy.

At the same time, it's quite clear that it's still not good enough - particularly the algae blooms centering on the mouth of the Maumee river (near Toledo) which turn miles of the lake into something looking and feeling like bright green paint every so often. It doesn't come near my place, but you can imagine how I feel when I picture a hundred square miles of toxic green sludge, juxtaposed with Michigan and Ohio Republican politicians proposing "self-regulation" as the solution...

jeffmcmahan··on Framing 101
How did this make it to the top of HN?
jeffmcmahan··on 'Hovering ship' photographed off Cornish coast by walker
I live on Lake Erie, and I've seen this effect before. There will be a point between the shore and the horizon at which the water takes on exactly the hue and luminance of the sky, and makes lakers, sailboats, buoys, even a nearby lighthouse, appear to hover. If the point of transition in the color of the water is pretty straight and is parallel with the actual horizon, the effect is convincing.
jeffmcmahan··on The future of web software is HTML over WebSockets
Suppose I want to expand/contract a row view - toggle to see the details. The data is on the client and the HTML is already printed to the page; it just needs to be shown/hidden. You gunna hit the server to get back an HTML fragment that says <div class="show">? If yes, you're certifiably insane. If no, then you need client-side JS, and you're therefore going to strike a compromise between all-on-the-server and all-on-the-client, which will probably differ depending on the project.

HTML over the wire is often a useful approach; it doesn't follow that "the future" is there.

jeffmcmahan··on A Modern JavaScript Tutorial
It has an alert at the top that says, "Irony Detected".
jeffmcmahan··on Orthodox Privilege
> but the post contradicts itself in presenting it as a product of our time.

No. It doesn't. Nope. It presents the phenomenon as something that's always true - recall the discussion of time traveling and meeting the same dynamic with different particulars in each time and place.

Moreover, "the point of this post" is abundantly clear: the more closely your views adhere to the mainstream, the more blind you'll be to the costs of holding opinions outside the mainstream because you don't encounter those costs. It's a good point and not hard to understand.

jeffmcmahan··on Dates and Times in JavaScript – A New API for Dates from TC39
This is one of those glaring problems that somehow was passed over the last 10 times people got together to decide to improve JS. Remarkable that it has taken so long.
jeffmcmahan··on Against Testing
Everything in this article is correct except the conclusion that it's better not to write tests. Testing is an artform all its own. I find two tricks indispensable.

First I declare a "foo.src.js" file to hold a module's logic, and then a test file as "foo.js" and have the test file import the logic and then export whatever is to be public. Client code imports the test file and not the source file, so the tests sit in between the logic and the client code, as it were. No more balancing testability against encapsulation.

The second is indirection. I create a mockability decorator. Then have a function (I call it 'mock') which can be used to temporarily redefine any function declared mockable, and then switch back to the real thing when the current test is through. So I get:

    const readFile = mockable(fs.promises.readFile)

    ...

    mock(readFile)(async () => 'mock file contents')

Combining these approaches doesn't so much prevent rework on tests when code changes as it makes it much less trouble to implement tests for 98% of cases.
jeffmcmahan··on A look at the Gemini protocol: a brutally simple alternative to the web
I see a lot of comments expressing that all we need is markdown plus this or that little bit. I think that's unreasonable. It might suit Joe developer just fine for reading blogs and news, but the world benefits enormously from the ability to build complex software applications at low cost. Imagine the alternative: Welcome to Mario's Pizza - you can order right from your own computer after we mail a disc* to your house (*requires Windows 8 or newer)!

Also, some of the CSS and JS hatred is piffle. Publishers absolutely abuse these languages and it gets pretty bad on news websites especially. But I do not find that most or even many of the sites I visit perform badly on my hardware (2016 iPhone SE and a 2017 MBP). They work fine. Moreover, I appreciate nicely designed and competently implemented experiences on the modern web.

I have no interest in trading the modern web - warts and all - for some spartan plaintext utopia.

jeffmcmahan··on You might as well be a great copy editor
Just wanted to add a book recommendation for copy editing: "Revising Prose" by Lanham. It was recommended by a respected philosopher when I was in undergrad. Excellent.
jeffmcmahan··on When you type realty.com into Safari it takes you to realtor.com
Replicated on iOS 12.3.1 iPhone SE
jeffmcmahan··on You download the app and it doesn’t work
I'd say the term 'sharecrop' clearly carries a strongly negative connotation...
Page 1 of 4Next →