HN user

eadmund

4,529 karma
Posts86
Comments1,371
View on HN
www.thetimes.com 10mo ago

Jaguar Land Rover hack 'has cost 30k cars and threatens supply chain'

eadmund
3pts0
andymasley.substack.com 11mo ago

A ton of AI images [he's] made that [he's] liked

eadmund
1pts0
github.com 1y ago

Strict-validate-path-type does not allow period/dot/. in Exact or Prefix path

eadmund
1pts1
datatracker.ietf.org 1y ago

RFC 9804: Simple Public Key Infrastructure (SPKI) S-Expressions

eadmund
2pts4
simonwillison.net 1y ago

The lethal trifecta for AI agents

eadmund
2pts1
www.city-journal.org 1y ago

Whistleblower: Lockheed Martin Awarded Bonuses Based on Race

eadmund
9pts0
www.schneems.com 1y ago

Don't McBlock Me

eadmund
3pts5
insearchofsecrets.com 1y ago

Lisp, Smalltalk, and the Power of Symmetry (2014)

eadmund
8pts1
gist.github.com 1y ago

Greenspun's 10th rule and the sad state of software quality

eadmund
9pts1
recovery.lacounty.gov 1y ago

Los Angeles Post-Wildfire Permitting Process Dashboard

eadmund
2pts1
www2.lib.uchicago.edu 1y ago

Use GNU Emacs: The Plain Text Computing Environment

eadmund
12pts0
www.politico.com 1y ago

'An unlimited piggy bank:' Inside a powerful union's lavish spending

eadmund
4pts0
lars.ingebrigtsen.no 1y ago

HTML, but Not Too HTML

eadmund
5pts0
lmno.lol 1y ago

A Tour of Ready Player Mode

eadmund
2pts0
steve-yegge.medium.com 1y ago

The Death of the Stubborn Developer

eadmund
3pts1
www.core77.com 1y ago

When screens were secondary: Mario Bellini's TCV 250 for Olivetti

eadmund
2pts0
www.smithsonianmag.com 1y ago

A Legendary Exposé of the Brutality of the Soviet Union

eadmund
47pts80
www.youtube.com 1y ago

Sharing Stories of Harassment on the NYC Subway [video]

eadmund
2pts0
danaepp.com 1y ago

Attacking APIs Using JSON Injection

eadmund
1pts1
www.sqlite.org 1y ago

How to Corrupt an SQLite Database File

eadmund
2pts0
funcall.blogspot.com 1y ago

Lisp vs. Go

eadmund
4pts1
www.thefp.com 1y ago

The Debanking of America

eadmund
2pts0
5stardata.info 1y ago

The 5-star Open Data plan

eadmund
2pts0
funcall.blogspot.com 2y ago

State Machines [in CLOS]

eadmund
2pts0
www.theregister.com 2y ago

IBM to scrap 401(k) matching, offer something else instead

eadmund
4pts0
quillette.com 3y ago

McMaster University’s Imaginary Sex Ring

eadmund
1pts0
graboyes.substack.com 3y ago

The Fatal Conceit and Effective Altruism

eadmund
1pts0
gardenandgun.com 3y ago

An Alabama Kidnapping That’s Stranger Than Fiction

eadmund
1pts0
www.thedailybeast.com 3y ago

The Great Gatsby of Gold Took Their Millions – and Vanished

eadmund
2pts0
news.ycombinator.com 3y ago

Ask HN: 2023 Alternative to the Streisand Project

eadmund
2pts0
HTTPS by default 9 months ago

I noticed that Whatsapp is even worse than Chrome, it opens HTT PS even if I share HTTP links.

Firefox does this when I type in a URL and the server is down. I absolutely hate this behaviour, because I run a bunch of services inside my network.

If I tell my browser ‘fetch http://site.example,’ I mean for it to connect to site.example on HTTP on port 80 nothing more. If there is a web server run ning which wants to redirect me to https://site.example, awesome, but my browser should never assume I mean anything I did not say.)

I applaud the author for trying. The underlying viewpoint is valid

Is it valid? I’m not really convinced. I’m not particularly a fan of copyright to begin with, and this looks like yet another abuse of it. I consider myself a creative person, and I fundamentally do not believe it is ethical to try to prevent people from employing tools to manipulate the creative works one gives to them.

I have never once thought Visual Studio needs some way to edit its own source code on the fly... whats [sic] the actual use case?

Writing Visual Studio, for example. Debugging Visual Studio. Extending Visual Studio in more than the ways it has already provided.

It means not being constrained to do only those things someone else had seen fit to permit you to do. It means freedom.

with your logic, you can take the lisp interpreter out of emacs, stick it into say mspaint, and have an equally powerful program.

Yes, that would be pretty awesome. The GIMP tries to be something like that.

I recommend direnv for that: https://direnv.net/

Its intended use case is loading environment variables (you could use this to load your virtualenv), but it works by sourcing a script — and that script can be ‘cat usage.txt.’

Great tool.

If you use Emacs (and you should!), there’s a direnv mode. Emacs also has its own way to set configuration items within a directory (directory-local variables), and is smart enough to support two files, so that there can be one file checked into source control for all members of a project and another ignored for one’s personal config.

Doh, I missed the secondary sort.

Were I trying to optimise this, I would test to see if a hash table of alphabetical characters is better, or just checking (or (and (char>= c #\A) (char<= c #\Z)) (and (char>= c #\a) (char<= c #\z))). The accumulator would probably be better as an adjustable array with a fill pointer allocated once, filled with VECTOR-PUSH-EXTEND and reset each time. It might be better to use DO, initializing C and declaring its type.

Also worth giving it a shot with (optimize (speed 3) (safety 0)) just to see if it makes a difference.

Yes, definitely more verbose. Perl is good at this sort of task!

Magit Is Amazing 9 months ago

He’s also saying that Magit is so good that he doesn’t recognise the complaints which motivate some people to switch from Git to Jujutsu.

FWIW, I agree. Jujutsu seems fine, but Magit is fine too. Maybe Magit is the Blub of version control, and Jujutsu would change my life for the better, but … I seem to be able to run in circles around my Git-CLI–using colleagues as it is.

splitting a line into words is a whole project on its own

Is it[1]? My version below accumulates alphabetical characters until it encounters a non-alphabetical one, then increments the count for the accumulated word and resets the accumulator.

    (let (c accumulator (counts (make-hash-table :test #'equal)))
      (handler-case
          (loop
            (setq c (read-char))
            (if (find c "ABCDEFGHIJKLMNOPQRSTUVWXYZ" :test #'char-equal)
                (push (char-downcase c) accumulator)
                (when accumulator
                  (incf (gethash (coerce (reverse accumulator) 'string) counts 0))
                  (setq accumulator nil))))
        (end-of-file ()
          (when accumulator
            (incf (gethash (coerce (reverse accumulator) 'string) counts 0))
            (setq accumulator nil))
          (maphash #'(lambda (word count)
                       (push (list count word) accumulator))
                   counts)
          (format t "~{~&~{~a ~a~}~%~}" (reverse (last (sort accumulator #'< :key #'car)
                                                       (let ((n (second sb-ext:*posix-argv*)))
                                                         (if n (parse-integer n) 100))))))))

It’s not exactly pretty or idiomatic, but its 19 lines appear to get the job done.

1: Well, technically it is, because there is SPLIT-SEQUENCE: https://github.com/sharplispers/split-sequence

Everybody wants to charge as much as he can. Workers do the same: we all want to charge as much for our labour as possible. Unions do the same thing too.

Everyone also wants to pay as little as he can, too.

Fortunately, as long as there are many buyers and many sellers, the market tends to find efficient prices. When there is a monopoly or a monopsony, though, prices get out of wack.

Life-or-death care almost certainly needs to be a government-run, single-payer system.

If giving another kid their cancer meds means one less gold-leaf-covered item in the presidential ballroom, so be it.

Why do you think a government would choose to cover an additional kid’s cancer medications rather than an additional luxury for government workers? You’re placing a ton of faith in governments.

At least with private companies there is choice (normally). And private companies do not directly wield government power (normally).

An issue with his remote setup is that the remote VPS decrypts packets from the remote laptop, then re-encrypts them for the LAN — this means that the remote VPS can see the plaintext of all those packets. He’ll need to layer TLS or something similar, or run Wireguard over Wireguard.

The Faroes 10 months ago

Were there photos? All I saw was a few paragraphs of text.

mdadm+luks+lvm still do not quite provide the same set of features that ZFS alone does even without encryption. Namely in-line compression, and data checksumming, not to mention free snapshots.

Sure, but LUKS+ZFS provides all that too, and also encrypts everything (ZFS encryption, surprisingly, does not encrypt metadata).

As this article demonstrates, encryption really is an afterthought with ZFS. Just as ZFS rethought from first principles what storage requires and ended up making some great decisions, someone needs to rethink from first principles what secure storage requires.

Of course, adjusted for inflation the dollar has done much, much worse than gold!

Not that one should put all of one’s portfolio into gold. That would be pretty insane. But a certain fixed allocation within a balanced portfolio? I think that makes sense.

Is it possible that a fair amount of government expenditures are just a fancy way of burning money? E.g. cowboy poetry festivals.

your dollar is worth 8x less than what it was worth in 1970.

A dollar in 2025 is not worth -7 (i.e. eight times one less than one) dollars from 1970; it is worth ⅛th of a dollar from 1970.

Yes, I know what you mean. But ‘×’ is multiplication, not division — and phrases like ‘¼ less than’ and ‘3 less than’ have clear meanings inconsistent with using ‘8× less than’ to mean ‘⅛th.’

In 1992, New Jersey Senator and former basketball player Bill Bradley sponsored a Federal law called PASPA, the Professional and Amateur Sports Protection Act. This law banned most states from legalizing sports books: businesses that set odds, accepted wagers, and paid out winnings on sports games.

Federal laws (i.e., laws of the United States rather than the individual states) derive their authority from the Constitution. The Tenth Amendment to the Constitution reads: ‘The powers not delegated to the United States by the Constitution, nor prohibited by it to the States, are reserved to the States respectively, or to the people.’ No part of the Constitution delegates power to the United States to regulate intrastate sport or gambling; no later amendment repeals the Tenth with respect to sports gambling.

So Congress had no constitutional authority to pass the law in the first place.

I detest sports gambling with a passion, but that doesn’t matter: PASPA was never constitutional. The federal government has legitimate power to regulate interstate gambling and the states each have the ability to regulate intrastate gambling. I don’t think that it should be illegal, but I do think that it should be regulated like other addictive and dangerous things.

24, 4, 7, it has the upsetting feeling of a gallon being four quarts each of which is two pints.

A gallon is two pottles; a pottle is two quarts; a quart is two pints; a pint is two cups; a cup is two gills. And a gill is two jacks!

24 and 4 don’t strike me as unusual numbers (two dozen and two doubled), but seven does.

a different media

‘A … medium.’ One medium, two or more media.

And when I visited the page with JavaScript disabled, it displayed all the text but no images.

HTML has the img tag. There’s no need for JavaScript to add images to the DOM!

> If you want to sit together, pay for that privilege

This is evil. There is no cost to the airline to put people who booked together next to another.

Bin-packing is tough (look at Kubernetes!). Economically, giving folks willing to sit in a random seat an extra $10 and charging folks who want to sit together $10 is a wash.

Evil is, you know, torture and genocide, not efficient allocation of limited space.