HNHacker News
TopNewBestAskShowJobs

mbo

1,267 karma · joined November 4, 2017

submissionscomments
mbo··on Facebook is cooked
My mother is an international flight attendant in her 60s.

I recently caught a glimpse of her Facebook and I was shocked to discover a version of the website that seemed to be the platonic ideal of exactly what all the Facebook PMs intended. Her feed was filled with the photos of her friends and coworkers international trips and holidays, posts in groups for planning activities in her most frequented cities. But I discovered that my mum was also a frequent "poster" of the photos of her various trips around the world, and the comments sections were filled with with some beautiful messages from her many many friends and family.

From this I learned that there is a subset of the population that Facebook works perfectly for and meaningfully improves their real-world social relationships. And perhaps Facebook has been hyper-optimized for that kind of use case through relentless A/B testing. But I fear my mum is quite privileged to have this kind of experience.

mbo··on What functional programmers get wrong about systems
This is an absolutely wonderful article. I helped build a system very similar to the one quoted below:

> A deploy pipeline that queries your orchestrator for running image tags, checks your migration history against the schema registry, diffs your GraphQL schema against collected client operations, and runs Buf’s compatibility checks: this is buildable today, with off-the-shelf parts.

that was largely successful at eliminating interservice compatibility errors, but it felt like we were scrambling around in a dark and dusty corner of software engineering that not many people really cared about. Good to see that there's a body of academic work that I was not entirely aware about that is looking into this.

The article successfully identifies that, yes, there are ways, with sufficient effort, to statically verify that a schema change is (mostly) safe or unsafe before deployment. But even with that determination, a lot of IDLs make it still very hard to evolve types! The compatibility checker will successfully identify that strengthening a type from `optional` to `required` isn't backwards compatible: _now what_. There isn't a safe pathway for schema evolution, and you need to reach for something like Cambria (https://www.inkandswitch.com/cambria/, cited in the article) to handle the evolution.

I've only seen one IDL try to do this properly by baking evolution semantics directly into its type model, typical (https://github.com/stepchowfun/typical) with it's `asymmetric` type label: it makes a field required in the constructor but not the deserialiser. I would like to see these "asymmetric" types find their ways into IDLs like Protocol Buffers such that their compatibility checkers, like Buf's `buf breaking` (https://buf.build/docs/reference/cli/buf/breaking/), can formally reason about them. I feel like there is a rich design space of asymmetric types that are poorly described (enum values that can only be compared against but never constructed, paired validations, fallback values sent over the wire, etc.)

Another one that I think makes a pretty good attempt is the config language CUE and its type system (https://cuelang.org/docs/concept/the-logic-of-cue/), which allows you to do first-class version compatibility modelling. But I have yet to investigate whether CUE is fit for purpose for modelling compatibility over the wire / between service deploys.

mbo··on The Mathematics of Tuning Systems
If anyone wants to hear the practical effects of a 1/4 comma meantone temperament compared to an equal temperament, Brandon Acker gives a wonderful overview on the classical guitar: https://www.youtube.com/watch?v=tiKCORN-6m8
mbo··on Buttered Crumpet, a custom typeface for Wallace and Gromit
I've seen nostalgia expressed for the CLIP guided diffusion aesthetic of 2021!
mbo··on Ask HN: Share your personal website
https://maxbo.me/
mbo··on Classical statues were not painted horribly
This is somewhat an unfounded theory of mine and I was hoping if anyone has any insight: but I sense that this is perhaps a construction of Western restoration/preservationist theory. A lot of effort seems to be taken to either preserve original material, not take liberties etc. While touring temples and museums in Japan, I got a sense that restorations were much more aggressive, and less regard was taken to the preservation of material (or building "fabric"), with a greater focus on the use of traditional techniques during restoration.
mbo··on Hashcards: A plain-text spaced repetition system
Aren't the hashcards complaint recutils files too?
mbo··on Transpiler, a Meaningless Word (2023)
Partial evaluators would also be considered cispilers.
mbo··on HTML Slides with notes
self plug: one of my articles also has its own slide infrastructure (exposed to the reader as well!): https://maxbo.me/a-html-file-is-all-you-need.html#:~:text=Sl...
mbo··on Intent to Deprecate and Remove XSLT
This is why I've needed to use XLST, to style my personal RSS feed. Great guide for this: https://andrewstiefel.com/style-atom-xsl/ Looks like it's been raised on the whatwg issue too: https://github.com/whatwg/html/issues/11523#issuecomment-315...
mbo··on Kafka is Fast – I'll use Postgres
This is an article in desperate need for some data visualizations. I do not think it does an effective job of communicating differences in performance.
mbo··on Ask HN: Our AWS account got compromised after their outage
This happened to me on Twitter maybe like, 9 years ago? What's the mechanism of action that causes this to happen?
mbo··on Areal, Are.na's new typeface
> are.na still hasn't disabled Introspection on their GraphQL API endpoint

I would not be surprised if this is intentional. The Are.na REST API is extremely permissive too.

mbo··on Engineer restores pay phones for free public use
I actually investigated this exact thing (phone booths as advertising vectors) a little while ago: https://observablehq.com/@mjbo/sydney-qms-panel-public-telep...

To cut to the chase, I think local councils are really upset that Telstra has the right to put these anywhere they want.

mbo··on Observable Notebooks 2.0 Technology Preview
self-plug that you might be interested in: I built a thin wrapper around the Observable Runtime that allows you to more easily use it in a pure HTML context: https://maxbo.me/celine/
mbo··on An origin trial for a new HTML <permission> element (2024)
> Another challenge, especially on big screens, is the way the permission prompt gets commonly displayed: above the line of death[0], that is, outside of the area of the browser window that the app can draw onto.

So the proposal is to... put the permissions grant flow _below_ the line of death? Permissions grants _should_ break out of the untrusted context! It's a privilege escalation that only the browser (and its associated UI) should be able to grant!

[0] https://textslashplain.com/2017/01/14/the-line-of-death/

mbo··on Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
Amazing stuff!

Do you foresee this project getting a Web Components API like A-Frame and Google's <model-viewer> component (https://modelviewer.dev/)?

mbo··on <Blink> and <Marquee> (2020)
I use it to display RSS feeds on my personal website (https://maxbo.me) as a allusion to news tickers (which are themselves an allusion to ticker tape machines: https://en.wikipedia.org/wiki/Ticker_tape)
mbo··on Ask HN: What are good high-information density UIs (screenshots, apps, sites)?
Rate Your Music has a famously divisive UI which would send the userbase into open revolt if ever changed. Primary examples:

An artist page: https://rateyourmusic.com/artist/stereolab

An album page: https://rateyourmusic.com/release/album/stereolab/dots-and-l...

I personally adore it - RYM is permanently open on my 3rd monitor throughout the work day as I churn through new music.

mbo··on Clean Code vs. A Philosophy Of Software Design
While I am not a Uncle Bob-style "no comments"er I do love a ridiculous method name. I pay very close attention to that method and the context in which it is called because, well, it must be doing something very weird to deserve a name length like that.
mbo··on Oracle justified its JavaScript trademark with Node.js–now it wants that ignored
> Do not fall into the trap of anthropomorphising Larry Ellison. You need to think of Larry Ellison the way you think of a lawnmower. You don't anthropomorphize your lawnmower, the lawnmower just mows the lawn, you stick your hand in there and it'll chop it off, the end. You don't think 'oh, the lawnmower hates me' -- lawnmower doesn't give a shit about you, lawnmower can't hate you. Don't anthropomorphize the lawnmower. Don't fall into that trap about Oracle. — Brian Cantrill (https://youtu.be/-zRN7XLCRhc?t=33m1s)
mbo··on "We're building a new static type checker for Python"
Because sometimes people choose their jobs prioritizing pay, location, title, company, project, role, coworkers, etc. and the language they will primarily use (or even use on a secondary basis) is a lower priority concern.

In my case, I have, in the pursuit of my engineering goals, had to dig into a Python component that I did not normally work on or intend to work on. I am thankful it had type hints.

mbo··on Rewriting my website in plain HTML and CSS
> It took me hours of Googling and trying out different options to come up with this awful piece of code that worked to load the contents of a file and give them to my page [CODE]

Do I have Stockholm syndrome or is the code here completely fine?

mbo··on Show HN: celine/bibhtml: a Web Components referencing system for HTML documents
Ah yeah I tried to add support for this a while back! Unfortunately Citation.js doesn't handle it properly - encouraged me to actually file an Issue: https://github.com/citation-js/citation-js/issues/240
mbo··on Show HN: celine/bibhtml: a Web Components referencing system for HTML documents
Look, not to be defensive but no academic work provides its citations in the Bibtex HTML microformat (they should, but they don't) or even heavyweight structured format like https://schema.org/Text. They provide BibTex syntax at best and DOIs and ISBNs at worst. I'm just meeting the academic standard where it is, and running the {citation format}->HTML conversion on the fly in an ergonomic manner.
mbo··on Reactive HTML Notebooks
> Can this example be widened to use server side code?

Author: Nothing stopping you from forcing a Jupyter notebook to self-host itself: https://hello-notebook-http-mode.fly.dev/ . Then you can just use HTTP to send messages back and forth between the browser and the notebook.

mbo··on Reactive HTML Notebooks
So I've used Observable Notebooks for building interactive articles for a while now (my favorite https://observablehq.com/@mjbo/sydney-qms-panel-public-telep...). I wanted to see if I could replicate _most_ of the (reader's) affordances of this platform in a context where I have more control.

The article is documenting me trying to do that replication. What's it used for? @celine/celine (https://maxbo.me/celine) is the packaged product that I now use for some private articles that I've been writing.

mbo··on Reactive HTML Notebooks
Well the edited artifact and the published artifact are one and the same. I think there's value in a "buildstepless" notebook format.

Thanks for the heads up about SliderServer btw, was experimenting with something similar with Jupyter: https://hello-notebook-http-mode.fly.dev/

mbo··on Reactive HTML Notebooks
Author: The ergonomics of this _are_ hideous, to my dismay, which was a lot of the motivation behind @celine/celine (https://maxbo.me/celine, aka me packaging the article up into a library).

It's still not quite there as a platform for exploratory data analysis - you don't have the instant reactivity of either a fully-fledged web code editor from Observable Notebooks or the hot-reloading file-watching Observable Framework. And the new Jupyter Kernel for Deno + VSCode is a pretty smooth experience too.

So while I agree that the ergonomics for exploratory analysis is uhhhh bad, I don't think the _publishing_ ergonomics is that bad. In fact, they're good. It's just a single file! I don't need to maintain some massive toolchain or pay some 3rd party service to just send someone a graph and some data munging - I just lob a HTML file at someone over Slack or host it somewhere. And the flexibility to style the analysis means that you can publish in environments where styling is important (blogs, or as a research paper).

mbo··on Reactive HTML Notebooks
Author here! Happy to take questions!
← PreviousPage 2 of 9Next →