HNHacker News
TopNewBestAskShowJobs

buzzm

67 karma · joined July 24, 2023

Hacking for years. Fond of creative combinations of existing things to make solutions.
submissionscomments
buzzm··on How old is Ann?
I am surprised no one spotted the obvious solution:

perl -e '$_=24;print+(y///c,$m=$_)&&$_*3/4 .$/'

buzzm··on AI World Clocks
Wonderful. I don’t particularly care if it is or is not a valid test. I like the “wrong” renderings better. Some are hilarious, some … inspired.
buzzm··on Show HN: I made Confetti: a configuration language file format
Of late I have grown fond of ... brace yourself ... RDF in turtle format for config files. Supports comments, multiline literals, built-in support for references, and rich typing via xsd casting when necessary e.g. ex:subject ex:createdOn "2002-01-24T12:00:00.000Z"^^xsd:dateTime ; You can have no namespace (:subject :name "foo") or one or more to help separate metadata and structure (the config structure) from actual config data (ex:myInstance config:logfile "pathname to file"). And of course, all the metadata itself is labelable and can carry comments and descriptions so the config is essentially self-documenting. Or at least there is a standard, straightforward way to extract and organize the labels and comments if time has been taken to add them.
buzzm··on Boris Spassky: 1937–2025
UGN -- unusable game notation. That has a ring to it.

UGN was designed with SPARK and AWS S3 pbzip2-aware threading JSON readers in mind. For an analysis of a year's worth of lichess games -- over a billion, maybe more -- I believe UGN is a good solution. Try bucketing clock time vs. blunders or castling analysis or opening vs. ELO on 1 billion PGNs. Not simple search; aggregation. In the end, UGN is an information architecture; JSON is used as a convenient implementation/representation but it happens work well with SPARK and S3. And you can reliably use jq or even grep on the same UGN files. I didn't feel the need to create yet another binary format.

Anyhoo.... We're up to 60 downloads!

buzzm··on Boris Spassky: 1937–2025
:-) You visited the site so props for that. But I find it odd you call the soup of braces, colons, and quotes a complete mess. That's JSON. As in industry standard everyone-uses-it JSON. If you're not familiar with the space I can see why PGN has more human readable appeal.
buzzm··on Boris Spassky: 1937–2025
Well... it's actually more parseable. Human readability is not the primary goal of BGN. It's precise capture of information esp. things ending up in PGN comments like %eval and %clk
buzzm··on Boris Spassky: 1937–2025
Game in BGN (https://moschetti.org/rants/bgnchess.html)

{"moves":[{"p":"P","f":"d2","t":"d4"},{"p":"n","f":"g8","t":"f6"},{"p":"P","f":"c2","t":"c4"},{"p":"p","f":"e7","t":"e6"},{"p":"N","f":"g1","t":"f3"},{"p":"p","f":"d7","t":"d5"},{"p":"N","f":"b1","t":"c3"},{"p":"b","f":"f8","t":"b4"},{"p":"P","f":"e2","t":"e3"},{"p":"k","f":"e8","t":"g8","castle":"K"},{"p":"B","f":"f1","t":"d3"},{"p":"p","f":"c7","t":"c5"},{"p":"K","f":"e1","t":"g1","castle":"K"},{"p":"n","f":"b8","t":"c6"},{"p":"P","f":"a2","t":"a3"},{"p":"b","f":"b4","t":"a5"},{"p":"N","f":"c3","t":"e2"},{"p":"p","f":"d5","t":"c4","x":"P"},{"p":"B","f":"d3","t":"c4","x":"p"},{"p":"b","f":"a5","t":"b6"},{"p":"P","f":"d4","t":"c5","x":"p"},{"p":"q","f":"d8","t":"d1","x":"Q"},{"p":"R","f":"f1","t":"d1","x":"q"},{"p":"b","f":"b6","t":"c5","x":"P"},{"p":"P","f":"b2","t":"b4"},{"p":"b","f":"c5","t":"e7"},{"p":"B","f":"c1","t":"b2"},{"p":"b","f":"c8","t":"d7"},{"p":"R","f":"a1","t":"c1"},{"p":"r","f":"f8","t":"d8"},{"p":"N","f":"e2","t":"d4"},{"p":"n","f":"c6","t":"d4","x":"N"},{"p":"N","f":"f3","t":"d4","x":"n"},{"p":"b","f":"d7","t":"a4"},{"p":"B","f":"c4","t":"b3"},{"p":"b","f":"a4","t":"b3","x":"B"},{"p":"N","f":"d4","t":"b3","x":"b"},{"p":"r","f":"d8","t":"d1","x":"R","c":1},{"p":"R","f":"c1","t":"d1","x":"r"},{"p":"r","f":"a8","t":"c8"},{"p":"K","f":"g1","t":"f1"},{"p":"k","f":"g8","t":"f8"},{"p":"K","f":"f1","t":"e2"},{"p":"n","f":"f6","t":"e4"},{"p":"R","f":"d1","t":"c1"},{"p":"r","f":"c8","t":"c1","x":"R"},{"p":"B","f":"b2","t":"c1","x":"r"},{"p":"p","f":"f7","t":"f6"},{"p":"N","f":"b3","t":"a5"},{"p":"n","f":"e4","t":"d6"},{"p":"K","f":"e2","t":"d3"},{"p":"b","f":"e7","t":"d8"},{"p":"N","f":"a5","t":"c4"},{"p":"b","f":"d8","t":"c7"},{"p":"N","f":"c4","t":"d6","x":"n"},{"p":"b","f":"c7","t":"d6","x":"N"},{"p":"P","f":"b4","t":"b5"},{"p":"b","f":"d6","t":"h2","x":"P"},{"p":"P","f":"g2","t":"g3"},{"p":"p","f":"h7","t":"h5"},{"p":"K","f":"d3","t":"e2"},{"p":"p","f":"h5","t":"h4"},{"p":"K","f":"e2","t":"f3"},{"p":"k","f":"f8","t":"e7"},{"p":"K","f":"f3","t":"g2"},{"p":"p","f":"h4","t":"g3","x":"P"},{"p":"P","f":"f2","t":"g3","x":"p"},{"p":"b","f":"h2","t":"g3","x":"P"},{"p":"K","f":"g2","t":"g3","x":"b"},{"p":"k","f":"e7","t":"d6"},{"p":"P","f":"a3","t":"a4"},{"p":"k","f":"d6","t":"d5"},{"p":"B","f":"c1","t":"a3"},{"p":"k","f":"d5","t":"e4"},{"p":"B","f":"a3","t":"c5"},{"p":"p","f":"a7","t":"a6"},{"p":"P","f":"b5","t":"b6"},{"p":"p","f":"f6","t":"f5"},{"p":"K","f":"g3","t":"h4"},{"p":"p","f":"f5","t":"f4"},{"p":"P","f":"e3","t":"f4","x":"p"},{"p":"k","f":"e4","t":"f4","x":"P"},{"p":"K","f":"h4","t":"h5"},{"p":"k","f":"f4","t":"f5"},{"p":"B","f":"c5","t":"e3"},{"p":"k","f":"f5","t":"e4"},{"p":"B","f":"e3","t":"f2"},{"p":"k","f":"e4","t":"f5"},{"p":"B","f":"f2","t":"h4"},{"p":"p","f":"e6","t":"e5"},{"p":"B","f":"h4","t":"g5"},{"p":"p","f":"e5","t":"e4"},{"p":"B","f":"g5","t":"e3"},{"p":"k","f":"f5","t":"f6"},{"p":"K","f":"h5","t":"g4"},{"p":"k","f":"f6","t":"e5"},{"p":"K","f":"g4","t":"g5"},{"p":"k","f":"e5","t":"d5"},{"p":"K","f":"g5","t":"f5"},{"p":"p","f":"a6","t":"a5"},{"p":"B","f":"e3","t":"f2"},{"p":"p","f":"g7","t":"g5"},{"p":"K","f":"f5","t":"g5","x":"p"},{"p":"k","f":"d5","t":"c4"},{"p":"K","f":"g5","t":"f5"},{"p":"k","f":"c4","t":"b4"},{"p":"K","f":"f5","t":"e4","x":"p"},{"p":"k","f":"b4","t":"a4","x":"P"},{"p":"K","f":"e4","t":"d5"},{"p":"k","f":"a4","t":"b5"},{"p":"K","f":"d5","t":"d6"}],"opening":{"ECO":"E56"},"site":"Reykjavik ISL","event":"Spassky-Fischer World Championship Match","result":"W","type":"C","players":[{"handle":{"domain":"UNK","value":"Boris Spassky"}},{"handle":{"domain":"UNK","value":"Robert James Fischer"}}]}

buzzm··on Nuclear fusion: WEST beats the world record for plasma duration
Agreed. Multi-multi billion. It is a fundamental change in the global energy dynamic -- including the fact that D-T reactors are still use heat exchange which means heat is also a useful output product for industrial purposes. MSRs are really good for this but of course are fission not fusion reactors.

It borders on a national security issue.

buzzm··on The Taylorator – All Your Frequencies Are Belong to Us
Very good.
buzzm··on Why blue animals are so rare
Exactly; see pollinators comment above. Although as tech progresses... perhaps we can make black plants as attractive to genetically modified pollinators. Do I sense a slippery slope here?
buzzm··on How the Soviets revolutionized wristwatches (2016)
A fascinating piece that combines technology, precision in micromanufacturing, design aesthetics, economics, politics, and history -- centered on the now all-too-forgettable wristwatch in the smartphone age. I haven't worn a wristwatch since I got a Blackberry about a 100 years ago (wink) but it is articles like this that rekindle my appreciation of them.
buzzm··on What to do when an airline website doesn't accept your legal name
Adding to the chorus of woes, my legal first name is Paul and middle starts with A and often the ticket comes out as "Paula". I have had at least two heated encounters with gate attendants saying the ticket could not possibly be mine because I don't look like a "Paula".
buzzm··on AI-generated sad girl with piano performs the text of the MIT License
Agreed! Unexpected and made my morning.
buzzm··on Show HN: Qrlew, simple SQL to SQL-with-privacy written in Rust
It does; I got this running easily because fortunately I have current postgres and psycopg2 installed so no tangential problems to interfere with the main event.

So clearly the example shows how I can issue a SELECT statement against the raw data. Is there a concise statement about what the DP'd statement offers me? This isn't access control or raw data obfuscation in the traditional sense. What is the consumable use case here as opposed to, say, the statistically private use?

buzzm··on Show HN: Qrlew, simple SQL to SQL-with-privacy written in Rust
Is there a "hello world" example available that is a highly simplified version of https://qrlew.readthedocs.io/en/latest/tutorials/getting_sta... ? Just 2 tables, 2 fields apiece, with the join bringing private data into the mix?
buzzm··on Sky lapse in two tone
Outstanding link; thanks for sharing.
buzzm··on Show HN: Babel – browse every book that will ever be written using simple math
Fascinating. Well done! There is a certain eerieness to seeing this actually work. Although Borges lived to see computers becoming mainstream, I am sure he never imagined his artistic vision being implemented in such a strangely convenient and easy way.
buzzm··on Show HN: Natural-SQL-7B, a strong text-to-SQL model
Like many uses of AI, very good as a "seed" especially if it comes up with nuggets like grouping on a range instead of a single value. But as with almost any database, devil is in details. Different products have different interp of "quantity" (e.g. box vs. unit), coupons and discounts are modeled in weird ways, weights are assumed to be pounds/kg and are mixed without assigning units, etc. etc.
buzzm··on Show HN: BSON Extension for Postgres
Retested on OS X 13.2 for both 15.5.3 and 16.1; bug discovered thanks to 16! Fixed and new version pushed.
buzzm··on Show HN: BSON Extension for Postgres
With BSON I am guaranteed that, for example, in Java, when I do `Document d = BSON.fromBytes()`, then `BigDecimal amount = d.getDecimal128('amount')` is non-lossy. `amount` is typed; `double amount = d.getDouble('double')` is an error. Again, it's not a failure of JSON[B]/postgres. It's what happens when the data carrier (JSON) is just a string with a small inferred type suite. How many times have we run into issues when `{"v": 1.3}` works and `{"v": 1.0}` works but `{"v":1}` gets turned into an `int` by accident?
buzzm··on Show HN: BSON Extension for Postgres
Considering a random brew install bumped my postgres to 14.10.1 and I didn't even notice until 45 mins ago, maybe I should.
buzzm··on Show HN: BSON Extension for Postgres
JSON[B] does work perfectly fine with decimal and float inside postgres and pgsql, e.g. select (data->>'amount')::numeric. The issue is moving that data in and out of postgres (or truly, any other data manager) with precision. If the JSON[B] is {amount: 12.09} then you have no guarantee that someone picking it up outside of postgres uses float conversion which could lead to 12.0899999. With BSON, amount is a decimal128 and stays that way, fromBytes() and toBytes().
buzzm··on My database was compromised A look at a PostgreSQL and MySQL Ransomware bot
Excellent article that shows how to determine the veracity of the ransomware claims.
buzzm··on Happy New Year: Solving the Rubik's Cube in SQL
Wow. Just... wow.
buzzm··on A CEO's Guide to Emacs (2015)
Consistent navigation and keystroke commands for content/context-appropriate basic operations have really been the foundation of my use of the emacs. Yes, there's an elisp integration to everything and Magit is (perhaps..?) the best git client period, but boy ... For example, I have gotten so much mileage out of M-x comment-region across Java, bash, C++, XML. Using Ctrl-S to inc search a dired buffer in the same way I inc search text. And I was delighted when I first used Eclipse to discover that 90% of the keystroke commands that have become muscle memory (nav, save, multilevel undo, block copy and paste...) are the same. Same with bash of course.
buzzm··on An Ethereum WSS get-and-stay-current event listener in Python
Needed it; hacked it; sharing it
buzzm··on Microsoft took down the Azure ChatGPT Repository
It was good while it lasted.
buzzm··on Quantum Echoes: A Revolutionary Method to Store Information as Sound Waves
Why acoustic vs. light? Gigahertz, yes, but still... information density?
buzzm··on SQLite Functions for Working with JSON
SQLite is good stuff. Fan as I am of BSON over JSON as a more precise and comprehensive datatype for data management, I wrote this: https://github.com/buzzm/sqlitebson
buzzm··on SQLite Functions for Working with JSON
SQL extensions for JSON in RDBMS is not the same thing as MongoDB query language on MongoDB. Try this on for size: https://moschetti.org/rants/postgresvmongo.html
Page 1 of 2Next →