HN user

dwenzek

604 karma
Posts41
Comments154
View on HN
arxiv.org 26d ago

Beyond Objects

dwenzek
4pts1
www.youtube.com 9mo ago

TinySystems course: Write your own tiny programming systems [video]

dwenzek
5pts1
arxiv.org 1y ago

Rel: A Programming Language for Relational Data

dwenzek
3pts1
www.youtube.com 1y ago

Hexagonal Architecture (Alistair Cockburn) [video]

dwenzek
2pts1
dl.acm.org 3y ago

What if mass storage were free? (1980)

dwenzek
51pts48
www.youtube.com 3y ago

TigerBeetle: Magical Memory Tour (Joran Dirk Greef) (CMU Database Group)

dwenzek
3pts1
arxiv.org 3y ago

Fluent APIs in Functional Languages

dwenzek
2pts1
cacm.acm.org 3y ago

Persistence Programming

dwenzek
2pts0
arxiv.org 4y ago

Implementing Dependent Types in pi-forall

dwenzek
1pts0
www.turbulent.be 4y ago

Low head eco-friendly hydropower

dwenzek
2pts0
www.bbc.co.uk 4y ago

Using rubbish to make clean drinking water

dwenzek
1pts2
ayende.com 4y ago

Implementing a File Pager in Zig

dwenzek
4pts1
ocamlpro.github.io 4y ago

Verification for Dummies: SMT and Induction

dwenzek
3pts0
discuss.ocaml.org 5y ago

25 Years of OCaml

dwenzek
3pts0
www.infoq.com 5y ago

Functional UI – A Stream-Based Equational Approach (2020)

dwenzek
2pts0
www.bbc.co.uk 5y ago

Three surprising things you can make with mushrooms

dwenzek
1pts0
www.youtube.com 5y ago

Thesis: Partial State in Dataflow-Based Materialized Views

dwenzek
2pts1
www.usenix.org 5y ago

Testing Database Engines via Pivoted Query Synthesis [pdf]

dwenzek
7pts1
thegreatbubblebarrier.com 5y ago

Bubble barriers: a smart solution to plastic pollution in rivers

dwenzek
323pts140
pling.jondgoodwin.com 6y ago

The Fascinating Influence of Cyclone (2019)

dwenzek
1pts0
www.hydrosheds.org 6y ago

Hydro SHEDS: open geo-data of rivers, lakes and watersheds

dwenzek
3pts1
composition.al 7y ago

My students made zines, and so can you(rs)

dwenzek
61pts7
arxiv.org 7y ago

One SQL to Rule Them All: Management of Streams and Tables

dwenzek
260pts35
blog.fauna.com 8y ago

Why strong consistency matters with event-driven architectures

dwenzek
3pts0
arxiv.org 8y ago

CASPaxos: Replicated State Machines Without Logs

dwenzek
2pts0
medium.freecodecamp.org 8y ago

330 Ivy League courses you can take online right now for free

dwenzek
3pts0
arxiv.org 8y ago

Just-Right Consistency: reconciling availability and safety

dwenzek
2pts0
erratique.ch 8y ago

Multistroke gesture recognizer

dwenzek
1pts0
arxiv.org 8y ago

Supervised Learning: Localizing Novice Type Errors with Data-Driven Diagnosis

dwenzek
1pts1
thegamma.net 9y ago

The Gamma: Tools for open data-driven storytelling

dwenzek
2pts0
Beyond Objects 26 days ago

It is always a pleasure to read Daniel Jackson [1].

In this paper, Daniel revisits the ideas developed in his book, "The essence of software" [2]. placing them in their historical context and opening a future for more modular software implementations.

He presents a convincing argumentation on how and why an object-oriented approach does not really contribute to reducing coupling. And his proposal is truly appealing: building an application as a set of external synchronization rules governing the interactions between modules (so called concepts). Each module comes with its own view on the entities of the application domain and provides the actions featuring the concept. Only the synchronization rules of the application relate the entities and actions of these modules.

That said, I'm left wanting more and I will need to take the time to put these ideas in code.

- [1] https://arxiv.org/pdf/2606.27258

- [2] https://bookshop.org/p/books/the-essence-of-software-why-con...

I really enjoyed reading this well-written paper that introduces the Rel query language implemented at RelationalAI [1].

One main goal of Rel is to give users the ability to grow the language using libraries [2], say for linear algebra or graph processing. And I'm really impressed by the result. With ability to defines (possibly recursive) relations over relation variables and arbitrary-length tuples, Rel is a nice successor of Datalog.

I also like the oppiniated approach which is to enforce strong data modeling constraints on all relations (6th normal form and identifier uniqueness across entity types). This removes the need for nulls and beyond helps to remove complicated corner cases.

[1] https://relational.ai/ [2] https://docs.relational.ai/getting-started/walkthrough/rel-l...

Great to hear Alistair speaking about hexagonal architecture!

Since long, I love Alistair's books which are extraordinary insightful. As an example, [1] has drastically changed my way of writing specs and even thinking about user-software interactions.

Now, it's good to discover that Alistair is also a great speaker highlighting the key points that will help to understand his point.

[1] https://www.amazon.com/Writing-Effective-Cases-Alistair-Cock...

Actually, this document is direct to the point with the broad questions agile teams should address to repeatedly deliver the software their users are expecting.

Thanks for these links!

Austral rational documentation is indeed really interesting. My preference goes into another direction (notably toward expression-based languages), but it's refreshing to read well explained design decisions.

The section about linear types is also a gem to this regard. I would even consider this as a reference source to introduce the motivations and principles behind the Rust type system and borrow checker. Only the syntax would have to be made a bit more rusty.

[1] https://austral-lang.org/spec/spec.html#rationale-linear-typ...

I would not say this is incorrect as there is no definition of `a: condition`.

As being declarative is about expectations, one translation could be:

I expect that "either both a and the condition to be true, or b true and the condition false" once the computation done.

      a when: condition

      b when: not condition

I only read the first section on monotone fixed points. A real pleasure. Nothing new, but the key ideas explained in simple yet precise terms and examples. It really makes me want to read more.

I just found this quite old paper and it came as a surprise to me to discover that the idea of append-only storage is not 20 years old but more than 40!

The older work I was aware of is on "The design and implementation of a log-structured file system" (1)

So this is with pleasure that I learned that these ideas was around in the 80:

- Deletion considered harmful

- A non-deletion strategy using timestamps

- The importance of accessing past data

- A non-deletion strategy can improve both integrity and reliability

(1) https://dl.acm.org/doi/10.1145/146941.146943

It's amazing to see such a mix of ideas and tools, old and new, academic or not, all arranged in a software thoroughly optimized for accuracy and performance!

Rethinking DB API, viewstamped replication, no dynamic memory allocation, storage fault model, io_uring, zig, deterministic testing ...

It's a real pleasure the hear Joran share his passion.

What a refreshing post!

So many good points are highlighted: embrace as many as possible ideas without apriori triage, look for ideas in many places, with diverse people, make unexpected connections, add but also subtract, put things into actions, ...

I recognize myself on many points, even I would not pretend to be perfect on these lines - being also tempted to take shortcuts. And this is why this post is refreshing. It encourages me to keep exploring ideas and putting them into motion.

I love this kind of functional design that demonstrates how cascading functions is powerful! The HTML DSL provided as an example is really elegant. It's so amazing to realize these HTML elements are glorified functions.

I love this idea to check how quickly a candidate can learn: if blocked on some coding/refactoring question, show the candidate how to do it, erase everything and ask him to redo it alone.

One thing I find interesting and original is the idea of flow-based type inference.

Citing the "The Lobster Type System" page [1]:

    Type checking happens in order of function calls,
    i.e. it is much like evaluating the code,
    but with types instead of values.

With this flow analysis, lobster infer more specific types for each usage of a variable.
    var a = nil  // a is a nilable of unknown type
    if ..:
       a = "foo" // a is a nilable string
    if a:        // guaranteed not be nil inside block
       a += "!"  // ok: a is of type string here

[1] https://aardappel.github.io/lobster/type_checker.html

This post is a pearl! I love writing and I think that I'm good at it. However, I still have to learn and this post gives a sound structure. The point I'm struggling the most is to help my teammates growing their writing skills and to make them love writing. I will definitely recommend them this post!