HN user

refset

1,510 karma

https://github.com/refset

[ my public key: https://keybase.io/refset; my proof: https://keybase.io/refset/sigs/pyTK0thu8g5O4Zs7EA3HrQYKkYZjeEz_TUr8nZV2hlY ] c0ba44896414421c9009bc8a77a86ceb

meet.hn/city/51.0612766,-1.3131692/Winchester

Socials: - github.com/refset

---

Posts69
Comments459
View on HN
www.chrismdp.com 4mo ago

Lockbox: Constrain Your Bots to Set Them Free

refset
1pts0
inferal.com 6mo ago

Databases Don't Know Why You're Asking

refset
1pts0
kx.com 6mo ago

Benchmarking KDB-X vs. QuestDB, ClickHouse, TimescaleDB and InfluxDB with TSBS

refset
1pts0
arxiv.org 7mo ago

Not Minds, but Signs: Reframing LLMs Through Semiotics [pdf]

refset
1pts0
blog.phronemophobic.com 7mo ago

Simplifying Quines

refset
4pts0
columnar.tech 8mo ago

Columnar and the ADBC Driver Foundry

refset
3pts0
www.evalapply.org 9mo ago

LLMs Are Software Diamonds

refset
4pts0
arxiv.org 11mo ago

A Quantitative Model of Trust as a Predictor of Social Group Sizes

refset
1pts1
db.cs.cmu.edu 11mo ago

Future Data Systems Seminar Series – Fall 2025 (draft schedule)

refset
2pts2
aiven.io 1y ago

Diskless Kafka is the Tide, and it's Rising

refset
3pts0
xtdb.com 1y ago

Update Reconsidered, delivered?

refset
2pts0
cedardb.com 1y ago

The Decline and Fall of In-Memory Database Systems (2024)

refset
2pts0
www.divergent-desktop.org 1y ago

Principles for a Diverging Desktop Future (2020)

refset
2pts0
electric.hyperfiddle.net 1y ago

TodoMVC – Electric v3

refset
3pts0
xtdb.com 1y ago

The missing SQL sub-queries

refset
2pts0
adventofsql.com 1y ago

Advent of SQL

refset
5pts0
increment.com 1y ago

Planning for Momentum (2021)

refset
1pts0
www.boxlang.io 1y ago

BoxLang

refset
2pts1
thomascothran.tech 1y ago

Bthreads: A Simple and Easy Paradigm for Clojure

refset
85pts9
jank-lang.org 1y ago

Jank development update – Moving to LLVM IR

refset
190pts49
engineeringideas.substack.com 1y ago

Table transfer protocols: improved Arrow Flight and alternative to Iceberg

refset
1pts0
jepsen.io 1y ago

PostgreSQL 12.3 Jepsen Analysis (2020)

refset
1pts1
yyhh.org 1y ago

Competing for the JOB with a Triplestore

refset
24pts1
github.com 1y ago

ArcticDB: High performance, serverless DataFrame database

refset
2pts0
myke.blog 1y ago

Clojure Interactive Development 101

refset
54pts5
github.com 1y ago

Rvbbit: Reactive Data Board and Visual Flow Platform

refset
1pts0
materialize.com 1y ago

Incremental View Maintenance Replicas

refset
6pts0
hyperfiddle-docs.notion.site 1y ago

Electric Clojure v3: Differential Dataflow for UI [video]

refset
114pts52
mccue.dev 1y ago

Just use Postgres

refset
236pts228
hyperfiddle-docs.notion.site 1y ago

Electric progress update – July 2024

refset
2pts0
Inkscape 1.4.4 3 months ago

Fixed a crash when starting Inkscape with a graphics tablet plugged in

Great news! Having to reconnect the USB cable each time is no fun.

other requirements

In my experience, usually along the lines of "what was the state of the world?" (valid-time as-of query) instead of "what was the state of the database?" (system-time as-of query).

it's kind of frustrating that XTDB has to be its own top-level database instead of a storage engine or plugin for another. XTDB's core competence is its approach to temporal row tagging and querying. What part of this core competence requires a new SQL parser?

Many implementation options were considered before we embarked on v2, including building on Calcite. We opted to maximise flexibility over the long term (we have bigger ambitions beyond the bitemporal angle) and to keep non-Clojure/Kotlin dependencies to a minimum.

which is more efficient than "hacking it" with recursive queries in a relational db

It seems to me that the way recursive CTEs were originally defined is the biggest reason that relational databases haven't been more successful with users who need to run serious graph workloads - in Frank McSherry's words:

As it turns out, WTIH RECURSIVE has a bevy of limitations and mysterious semantics (four pages of limitations in the version of the standard I have, and I still haven't found the semantics yet). I certainly cannot enumerate, or even understand the full list [...] There are so many things I don't understand here.

https://github.com/frankmcsherry/blog/blob/master/posts/2022...

Show HN: Vibe Linking 10 months ago

Unfortunately not, I've just had this one opened in my browser for ages as a reminder (after seeing it on HN IIRC) and recognised it again in the OP instantly :)

Notion 3.0 10 months ago

"Notes and Domino is a cross-platform, distributed document-oriented NoSQL database and messaging framework and rapid application development environment that includes pre-built applications like email, calendar, etc." [0]

Lotus Notes was the original offline-first everything app, including cutting edge PKI and encryption. It worked over dial-up and needed only a handful of MBs of memory (before the Java rewrite at least). Has anything else really come close since?

[0] https://en.wikipedia.org/wiki/HCL_Notes

The SQL:2011 syntax puts the temporal filters directly after base table reference (and before the table alias) [0]

i.e. it would be `SELECT * FROM orders FOR SYSTEM_TIME AS OF "@seq:1000" WHERE customer_id="cust1"` rather than `SELECT * FROM orders WHERE customer_id="cust1" AS OF "@seq:1000"` (the latter being an example from the DriftDB readme)

[0] https://docs.xtdb.com/reference/main/sql/queries.html#_tempo...

AsOf join in those systems solves a rather narrow problem of performance and SQL expressiveness for data with overlapping user-defined timestamps. The bitemporal model solves much broader issues of versioning and consistent reporting whilst also reducing the need for many user-defined timestamp columns.

In a bitemporal database, every regular looking join over the current state of the world is secretly an AsOf join (across two dimensions of time), without constantly having to think about it when writing queries or extending the schema.

tl;dr

  CREATE VIEW IF NOT EXISTS world_facts_as_of_now AS
  SELECT
    rowid, txn_time, valid_time,
    e, a, v, ns_user_ref, fact_meta
  FROM (
    SELECT *,
      ROW_NUMBER() OVER (
        PARTITION BY e, a
        ORDER BY valid_preferred DESC, txn_id DESC
      ) AS row_num
    FROM world_facts
  ) sub
  WHERE row_num = 1
    AND assert = 1
  ORDER BY rowid ASC;
...cool approach, but poor query optimizer!

It would be interesting to see what Turso's (SQLite fork) recent DBSP-based Incremental View Maintenance capability [0] would make of a view like this.

[0] https://github.com/tursodatabase/turso/tree/main/core/increm...

Julian Hyde (Apache Calcite, Google) gave a crisp presentation on this and how SQL could express 'measures' to bridge the gap: https://communityovercode.org/wp-content/uploads/2023/10/mon...

A semantic layer, also known as a metrics layer, lies between business users and the database, and lets those users compose queries in the concepts that they understand. It also governs access to the data, manages data transformations, and can tune the database by defining materializations.

There's also now a paper: https://arxiv.org/pdf/2406.00251