HN user

matthberg

3,553 karma
Posts298
Comments258
View on HN
dkryaklin.com 6d ago

Making colordx fast: V8 lessons from a color library

matthberg
3pts0
aresluna.org 27d ago

Show your hands honor for the power they bring you

matthberg
3pts0
text.makeup 1mo ago

Text Makeup

matthberg
1pts0
www.wikidata.org 3mo ago

Wikidata for Developers

matthberg
10pts0
mapterhorn.com 3mo ago

Mapterhorn

matthberg
4pts0
www.saulala.com 4mo ago

Saulala

matthberg
2pts0
cloudinary.com 6mo ago

Compressing Cellular Automata Images (2017)

matthberg
2pts0
www.apolloresearch.ai 1y ago

Scheming Reasoning Evaluations

matthberg
2pts0
suricrasia.online 1y ago

Basilisk Collection (2021)

matthberg
2pts0
www.youtube.com 1y ago

Finding Threat Actor Infrastructure with SSL Certificates [video]

matthberg
2pts0
propjockey.github.io 1y ago

CSS-Sweeper – MineSweeper implemented in pure CSS+HTML (2020)

matthberg
2pts0
trojansource.codes 1y ago

Trojan Source Attacks (2023)

matthberg
2pts0
www.youtube.com 1y ago

Forward Mode Automatic Differentiation [video]

matthberg
2pts1
support.apple.com 1y ago

Recognize Sounds Using iPhone

matthberg
2pts1
www.gamefontlibrary.com 1y ago

GameFontLibrary – videogame fonts and typography database

matthberg
2pts0
github.com 1y ago

Stegcloak: Hide secrets with invisible Unicode characters with passwords

matthberg
4pts0
github.com 1y ago

Git-vanity-hash: CLI tool for creating commit hashes with a specific prefix

matthberg
2pts0
trailsofwind.figures.cc 1y ago

Trails of Wind (2019)

matthberg
11pts2
foundation.mozilla.org 1y ago

Privacy Not Included – Mozilla Foundation

matthberg
8pts0
github.com 1y ago

Stegcloak

matthberg
1pts0
www.rdrop.com 1y ago

Patterns for Personal Web Sites (2003)

matthberg
120pts17
blog.maximeheckel.com 1y ago

The Art of Dithering and Retro Shading for the Web (2024)

matthberg
155pts20
lineageos.org 1y ago

Working with SELinux on Android (2021)

matthberg
1pts0
suricrasia.online 1y ago

Basilisk Collection

matthberg
3pts0
schema.org 1y ago

Schema.org

matthberg
1pts0
medium.com 1y ago

I Peeked into My Node_Modules Directory (2016)

matthberg
3pts1
jackschaedler.github.io 1y ago

Seeing Circles Sines and Signals

matthberg
2pts0
ethereal.email 1y ago

Ethereal Email

matthberg
2pts1
plane.dev 1y ago

Plane runs WebSocket back ends at scale

matthberg
1pts0
alphagov.github.io 1y ago

Web Content Accessibility Guidelines (WCAG) 2.1 Primer

matthberg
1pts0

Quick summary for those confused:

In 1970 a massive project crowdsourced thousands of photographs of everywhere in Paris (nearly every single grid square on each letter sized page, a rare few have no photos).

To see the photos, click on a map section to go to the subgrid page. Then find the square grid number that corresponds to where you want to see and click the corresponding numbered link from the list at the top.

Some cool example locations:

By the Eiffel Tower: https://paris1970.jeantho.eu/carres/718.html

The Arc de Triomphe: https://paris1970.jeantho.eu/carres/427.html

Gare du Nord (urban area train station, less touristy): https://paris1970.jeantho.eu/carres/268.html

Random southern Paris neighborhood (many photos of streets, people, more suburban): https://paris1970.jeantho.eu/carres/1296.html

Random central Paris neighborhood (lots of photos, mainly of the urban architecture): https://paris1970.jeantho.eu/carres/507.html

He's also the person behind Practical Typography [0], a great reference/guide for essential typography and layout concepts and terms. It has opinionated recommendations covering nearly everything you'll need to make beautiful documents like this one.

Particularly helpful is the practical advice: how to get the desired results in Word, Pages, or with HTML/CSS; not just high-level abstract guidelines. There's everything from keyboard shortcuts for inserting different dashes (to accompany the explanation on when to use each type) [1] to guidance on page margins in print and on the web [2].

0: https://practicaltypography.com/

1: https://practicaltypography.com/hyphens-and-dashes.html

2: https://practicaltypography.com/page-margins.html

Note that this letter's requests DO NOT include voting against the reconciliation bill, just modifying it to add a carve-out to fix Section 174. While I agree that Section 174 desperately needs reform and is harmful to the tech industry, the bill as a whole must be opposed, not tweaked.

There are many, many things wrong with the "Big Beautiful Bill", too many to fix through piecemeal efforts like this. It must be resolutely opposed, not endorsed with minor changes.

I agree, yet at least you can kind of see where they're coming from.

I guess a better example would be the automatic hardware detection Lenovo Support offers [0] by pinging a local app (with some clear confirmation dialogs first). Asus seems to do the same thing.

uBlock Origin has a fair few explicit exceptions made [1] for cases like those (and other reasons) in their filter list to avoid breakages (notably Intel domains, the official Judiciary of Germany [2] (???), `figma.com`, `foldingathome.org`, etc).

0: https://pcsupport.lenovo.com/

1: https://github.com/uBlockOrigin/uAssets/blob/master/filters/...

2: https://github.com/uBlockOrigin/uAssets/issues/23388 and https://www.bundesjustizamt.de/EN/Home/Home_node.html (they're trying to talk to a local identity verification app seems like, yet I find it quite funny)

Yep! Unfortunately its main method (as far as I remember from when I first read the proposal at least, it may do more) is adding preflight requests and headers to opt-in, which works for most cases yet doesn't block behind-the-lines collaborating apps like mentioned in the main article. If there's a listening app (like Meta was caught doing) that's expecting the requests, this doesn't do much to protect you.

EDIT: Looks like it does mention integrating into the permissions system [0], I guess I missed that. Glad they covered that consideration, then!

0: https://wicg.github.io/private-network-access/#integration-p...

If I recall correctly Figma uses it to connect to the locally installed app, and Discord definitely uses it to check if its desktop app is installed by scanning ports (6463-6472).

I'm aware of two blockers for LAN intrusions from public internet domains, uBlock Origin has a filter list called "Block Outsider Intrusion into LAN" [0] under the "Privacy" filters, and there's a cool Firefox extension called Port Authority [1][2] that does pretty much the same thing yet more specifically targeted and without the exclusions allowed by the uBlock filterlist (stuff like Figma's use is allowed through, as you can see in [0]). I've contributed some to Port Authority, too :)

0: https://github.com/uBlockOrigin/uAssets/blob/master/filters/...

1: https://addons.mozilla.org/firefox/addon/port-authority

2: https://github.com/ACK-J/Port_Authority

A comment I wrote in another HN thread [0] covering this issue:

Web apps talking to LAN resources is an attack vector which is surprisingly still left wide open by browsers these days. uBlock Origin has a filter list that prevents this called "Block Outsider Intrusion into LAN" under the "Privacy" filters [1], but it isn't enabled on a fresh install, it has to be opted into explicitly. It also has some built-in exemptions (visible in [1]) for domains like `figma.com` or `pcsupport.lenovo.com`.

There are some semi-legitimate uses, like Discord using it to check if the app is installed by scanning some high-number ports (6463-6472), but mainly it's used for fingerprinting by malicious actors like shown in the article.

Ebay for example uses port-scanning via a LexisNexis script for fingerprinting (they did in 2020 at least, unsure if they still do), allegedly for fraud prevention reasons [2].

I've contributed some to a cool Firefox extension called Port Authority [3][4] that's explicitly for blocking LAN intruding web requests that shows the portscan attempts it blocks. You can get practically the same results from just the uBlock Origin filter list, but I find it interesting to see blocked attempts at a more granular level too.

That said, both uBlock and Port Authority use WebExtensions' `webRequest` [5] API for filtering HTTP[S]/WS[S] requests. I'm unsure as to how the arcane webRTC tricks mentioned specifically relate to requests exposed to this API; it's possible they might circumvent the reach of available WebExtensions blocking methods, which wouldn't be good.

0: https://news.ycombinator.com/item?id=44170099

1: https://github.com/uBlockOrigin/uAssets/blob/master/filters/...

2: https://nullsweep.com/why-is-this-website-port-scanning-me/

3: https://addons.mozilla.org/firefox/addon/port-authority

4: https://github.com/ACK-J/Port_Authority

5: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...

A comment I wrote in another HN thread [0] (though this one was the original):

Web apps talking to LAN resources is an attack vector which is surprisingly still left wide open by browsers these days. uBlock Origin has a filter list that prevents this called "Block Outsider Intrusion into LAN" under the "Privacy" filters [1], but it isn't enabled on a fresh install, it has to be opted into explicitly. It also has some built-in exemptions (visible in [1]) for domains like `figma.com` or `pcsupport.lenovo.com`.

There are some semi-legitimate uses, like Discord using it to check if the app is installed by scanning some high-number ports (6463-6472), but mainly it's used for fingerprinting by malicious actors like shown in the article.

Ebay for example uses port-scanning via a LexisNexis script for fingerprinting (they did in 2020 at least, unsure if they still do), allegedly for fraud prevention reasons [2].

I've contributed some to a cool Firefox extension called Port Authority [3][4] that's explicitly for blocking LAN intruding web requests that shows the portscan attempts it blocks. You can get practically the same results from just the uBlock Origin filter list, but I find it interesting to see blocked attempts at a more granular level too.

That said, both uBlock and Port Authority use WebExtensions' `webRequest` [5] API for filtering HTTP[S]/WS[S] requests. I'm unsure as to how the arcane webRTC tricks mentioned specifically relate to requests exposed to this API; it's possible they might circumvent the reach of available WebExtensions blocking methods, which wouldn't be good.

0: https://news.ycombinator.com/item?id=44170126

1: https://github.com/uBlockOrigin/uAssets/blob/master/filters/...

2: https://nullsweep.com/why-is-this-website-port-scanning-me/

3: https://addons.mozilla.org/firefox/addon/port-authority

4: https://github.com/ACK-J/Port_Authority

5: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...

Since there're independent Lightness values set for each section (I'd say quadrant but there are 6 of them), I wonder if two bits can be shaved from the `L` value from the base color. It'd take some reshuffling and might not play well with color customization in mainly flat images, but I think it could work.

I'm also curious to see that they're doing solely grayscale radial gradients over the base color instead of tweaking the base color's `L` value and using that as the radial gradient's center, I'd imagine you'd be doing more math that way in the OKLab colorspace which might give prettier results(?).

Tempted to play around with this myself, it's a really creative idea with a lot of potential. Maybe even try moving the centers (picking from a list of pre-defined options with the two bits stolen from the base color's L channel), to account for varying patterns (person portraits, quadrant-based compositions, etc).

As someone pretty firmly in the anti-AI camp, I'm genuinely glad that you've personally found AI a useful tool to polish text and help you communicate.

I think that just because someone might be more or less eloquent than someone else, the value of their thoughts and contributions shouldn't be weighed any differently. In a way, AI formatting and grammar assistance could be a step towards a more equitable future, one where ideas are judged on inherent merits rather than superficial junk like spel;ng or idk typos n shi.t

However, I think what the parent commenter (and I) might be saying is that it seems you're relying on AI for more than just help expressing yourself—it seems you're relying on it to do the thinking too. I'd urge you to consider if that's what you really want from a tool you use. That said, I'm just some random preachy-judgy stranger on the internet, you don't owe me shit, lol

(Side notes I couldn't help but include: I think talking about AI and language is way more complicated (and fascinating) than just that aspect, including things I'm absolutely unqualified to comment on—discrimination against AAVE use, classism, and racism can't and shouldn't be addressed by a magic-wand spell-checker that "fixes" everyone's speech to be "correct" (as if a sole cultural hegemony or way of speech is somehow better than any other))

(Timestamp to skip alternative methods' background info: [0])

An algorithm that yields a computationally precise (no compounding floating point errors from small deltas like with a numerical evaluation) derivative function for all differentiable functions by evaluating it once, with no need for AST parsing or complicated rule compositions (think chain rule, quotient rule, etc. [1] used in symbolic differentiation).

The trick is dual numbers [2] (like a sibling of complex numbers), which have an epsilon component (analogous to complex numbers' i) with rules that ɛ != 0 and ɛ*ɛ = 0. A property of dual numbers is that f'(x) = the dual only component of the result of evaluating f(x + 1ɛ). It's honestly harder to explain in english than it is to write the code.

The one catch is that you do need to implement dual handling for all mathematical operations your functions will need (just *, +, and / get you really far though). It's not hard though, multiplication is (a, b) => {real: (a.real*b.real), epsilon: (a.real*b.epsilon + b.real*a.epsilon)}, which naturally follows from foil-ing and the two epsilon rules. Trig is a little more complicated, yet easy enough to look up [3].

From there, differentiation is just (f, x) => (f({real: x, epsilon: 1}).epsilon). Given that practically every language supports custom operator implementations for classes (or whatever the language's equivalent terminology is), after a little setup you don't even need to change the syntax you use to write functions, you just get free differentiation handed to you.

[0] https://youtu.be/QwFLA5TrviI?t=323

[1] https://en.wikipedia.org/wiki/Differentiation_rules

[2] https://en.wikipedia.org/wiki/Dual_number

[3] https://math.stackexchange.com/questions/900541/implementing...

Bivectors and higher show up a lot in the math of 4D+ geometry, too. There's a fascinating SIGRAPH 2020 talk [0] (with a paper [1]) by the maker of 4D Toys [2] and Miegakure (a 4D game in the works, [3]) explaining 4D geometry collision physics (with a good bivector intro in addition to the collision math). It's a great read and/or watch that smoothly covers everything from building basic intuitions to the gritty technical math of extending standard physics models to N-D spaces.

[0]: Bivector section timestamp: https://www.youtube.com/watch?v=JpxZQxXxMWY&t=479s

[1] https://marctenbosch.com/ndphysics/

[1]: PDF: https://marctenbosch.com/ndphysics/NDrigidbody.pdf

[2] https://4dtoys.com/

[3] https://miegakure.com/

A small native iOS feature that supports customized recognition (eg recognize an apartment buzzer or specific laundry machine chime).

I don't have an iPhone to experiment with so I don't know what all is supported, yet I could see this being used to pass specific sounds only through noise cancelling (or rewrite them to use a different chime), or by leaving your phone somewhere out of hearing range to "tunnel" to a notification onto your desktop (if that's supported).

You're right that doesn't fix it and it is annoying. I just learned something about git, thanks!

Thinking on this more I think I'd prefer changing `git checkout/switch <branch>` to automatically use `origin/<branch>` instead (like mook mentions in a sibling comment), rather than changing the `git pull` behavior.

Keeping the local branch refs in place after `git pull` lets you still easily see the local vs remote differences when running `git log`. Changing the behavior of `git checkout` or whatever you use to switch branches to auto fast-forward seems to be a way to have your cake and eat it too, almost.

But, clearly you've thought more on this than I have (having just learned about it lol), what do you think?

EDIT: I was wrong and misunderstanding how these options interact, this doesn't solve the stated problem. Still good to have in your config but not as powerful as desired, sorry. Keeping comment contents mostly for posterity's sake.

Under the hood `git pull` is just `git fetch`+`git merge` so these two configs together would ideally enable the behavior requested (but unfortunately don't):

    [fetch]
        all = true
    [pull]
        ff = only
I also disable fast-forwarding with `git merge` since I prefer the branch topology you get without it. This doesn't break natural `git pull` fast-forwarding either, thanks to the above config:
    [merge]
        ff = false
Commands to set all these:
    git config --global fetch.all true
    git config --global pull.ff only
    git config --global merge.ff false

I just discovered that feature due to your mistake, so thank you!

For similarly newly enlightened people it's a feature of MediaWiki (which Wikipedia runs on) and there are five (plus two) themes selectable with ?useskin= values:

- timeless (as seen above): https://en.wikipedia.org/wiki/Wikipedia:Skin?useskin=timeles...

- monobook (default 2004-2009): https://en.wikipedia.org/wiki/Wikipedia:Skin?useskin=monoboo...

- vector (default 2010-2021): https://en.wikipedia.org/wiki/Wikipedia:Skin?useskin=vector

- vector-2022 (desktop default 2022-): https://en.wikipedia.org/wiki/Wikipedia:Skin?useskin=vector-...

- minerva (mobile default): https://en.wikipedia.org/wiki/Wikipedia:Skin?useskin=minerva

- modern (delightedly dated, deprecated): https://en.wikipedia.org/wiki/Wikipedia:Skin?useskin=modern

- cologneblue (also ancient and anti-favored): https://en.wikipedia.org/wiki/Wikipedia:Skin?useskin=cologne...

I figured it out--<Shift + color-letter> changes the background color!

Shift+w = white background

Shift+9 = dark gray background

Shift+d = black background

Also I found out the color letters aren't limited to "rgbyo", there's a color for nearly every letter.

d = black

w = white

u = umber (nice brown)

i = teal

p = cream

s = salmon

l = slightly muted yellow

Check the code at view-source:https://jacksonpollock.org/js/myScript.js for more!

"m" brings up some info about the person who made this, Miltos Manetas. Thank you Miltos!

I've commented [0] on some of the hidden features (changing foreground and background colors with <letter/number> and <shift + letter/number> respectively) but also to note is there's some nice ascii art in the raw source (though the main bit is cut out by HN filters): view-source:https://jacksonpollock.org

       ___                        ___                     ___           ___     
      /  /\           ___        /  /\      ___          /  /\         /  /\    
     /  /::|         /__/\      /  /:/     /__/\        /  /::\       /  /::\   
    /  /:|:|         \__\:\    /  /:/      \  \:\      /  /:/\:\     /__/:/\:\  
   /  /:/|:|__       /  /::\  /  /:/        \__\:\    /  /:/  \:\   _\_ \:\ \:\ 
  /__/:/_|::::\   __/  /:/\/ /__/:/         /  /::\  /__/:/ \__\:\ /__/\ \:\ \:\
  \__\/  /~~/:/  /__/\/:/~~  \  \:\        /  /:/\:\ \  \:\ /  /:/ \  \:\ \:\_\/
        /  /:/   \  \::/      \  \:\      /  /:/__\/  \  \:\  /:/   \  \:\_\:\  
       /  /:/     \  \:\       \  \:\    /__/:/        \  \:\/:/     \  \:\/:/  
      /__/:/       \__\/        \  \:\   \__\/          \  \::/       \  \::/   
      \__\/                      \__\/                   \__\/         \__\/

0: https://news.ycombinator.com/item?id=42987887
Nellie Bly 1 year ago

Not that on-topic, yet the direct access page for the book [1] looks really rough style wise yet has fantastically annotated HTML. An inspect-element on the title and author block shows a ton of itemprop attributes and itemtype schema definitions for stuff as specific as alternative title information and author details including birth date and split first and last names. Downright aspirational levels of tagging, I wish that quality of care about metadata were everywhere on the web.

1: https://digital.library.upenn.edu/women/bly/madhouse/madhous... (just linking here too to be specific)