HNHacker News
TopNewBestAskShowJobs

dwenzek

604 karma · joined September 21, 2014

submissionscomments
dwenzek··on Evan's Jujutsu Tutorial
I have been convinced by the sales pitch https://evmar.github.io/jjtut/pitch/ I will give a try to jj!
dwenzek··on Making Sense of Proof by Contradiction [pdf]
Exactly! A very nice explanation of what is and what is not a proof by contradiction is given by R. Harper in "Proofs by contradiction, versus contradiction proofs" [1]

- [1] "https://existentialtype.wordpress.com/2017/03/04/a-proof-by-...

dwenzek··on Beyond Objects
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...

dwenzek··on TinySystems course: Write your own tiny programming systems [video]
Tomas Petricek introducing the online version of his course "Write your own tiny programming system(s)" at Charles University.

A really appealing menu on interactive programming systems.

dwenzek··on Examples are the best documentation
A proper doc definitely has to provide the details. However starting with an example or two is a nice way to a give the users a quick overview. Even better when this example is interactive as for redis where you even have an example use case. See https://redis.io/docs/latest/commands/incr/
dwenzek··on Alternative Blanket Implementations for a Single Rust Trait
A nice model solving a quite recurring problem. However this sounds a bit as over-engineering here, as two traits have exactly the same type signature.
dwenzek··on Rel: A Programming Language for Relational Data
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...

dwenzek··on Hexagonal Architecture (Alistair Cockburn) [video]
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...

dwenzek··on A list of awesome CLI apps
Just got a quick look, and found a gem: https://github.com/maaslalani/slides

Easy to use, neat and powerful!

dwenzek··on Dib Guide: Detecting Agile BS [pdf]
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.
dwenzek··on The Essence of Compiling with Continuations (1993) [pdf]
There is also the counterpoint: Compiling without continuations (2017) [1]

[1] https://www.microsoft.com/en-us/research/wp-content/uploads/...

dwenzek··on What makes a great technical blog
Beside the rational, what's really great is the list of such blogs: https://lists.eatonphil.com/blogs.html
dwenzek··on Why is Maxwell's theory so hard to understand? (2007) [pdf]
I'm just a bit surprised that this post says nothing about Heaviside who rewrote Maxwell's equations in the form commonly used today.

According to wikipedia [1], Heaviside significantly shaped the way Maxwell's equations are understood and applied in the decades following Maxwell's death.

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

dwenzek··on Onyx, a new programming language powered by WebAssembly
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...

dwenzek··on Is It Imperative to Be Declarative?
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
dwenzek··on Is It Imperative to Be Declarative?
This post assumes that there is consensus around a formal definition of being declarative. This is hardly the case as highlighted by Robert Harper, an academic recognized for his work in the field of programming formalization , in his essay "What, If Anything, Is A Declarative Language?" [1].

[1] - https://existentialtype.wordpress.com/2013/07/18/what-if-any...

dwenzek··on Deconstructing Datalog [pdf]
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.
dwenzek··on What if mass storage were free? (1980)
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

dwenzek··on TigerBeetle: Magical Memory Tour (Joran Dirk Greef) (CMU Database Group)
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.

dwenzek··on Show HN: Cozo – new Graph DB with Datalog, embedded like SQLite
Really nice!

I like the design choices of Datalog for the query language and Relations for the data model. This contrasts with the typical choices made for graph databases where the word graph seems to make links a mandatory query and representation tool.

dwenzek··on Keep ’em coming: Why your first ideas aren’t always the best
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.

dwenzek··on Fluent APIs in Functional Languages
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.
dwenzek··on Time is an illusion, Unix time doubly so
Thank you for the link! I love this kind of comprehensive blog posts that open a door to a new world. It's worth the time to read those.
dwenzek··on The Little Typer (2018)
And here is a gist that demonstrates how simple it is to implement such a type-safe printf function:

https://github.com/mukeshtiwari/Idris/blob/master/Printf.idr

dwenzek··on Val, a new programing language inspired by Swift and Rust
So many new programming languages that there is a shortage of names ;-)

When I saw the title I thought it was another post for Vale, but no, it's Val!

* Yesterday post on Vale PL: https://news.ycombinator.com/item?id=31786487

dwenzek··on Ante: A low-level functional language
OCaml and Haskell parse `a b c d e f` as `((((a b) c) d) e) f`.
dwenzek··on Stop Interviewing with Leet Code
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.
dwenzek··on The Lobster Programming Language
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
dwenzek··on Instead of an MVP, Build an SLC: Simple, Lovable, and Complete
Interesting. However, since I'm not a gamer, I find more convincing the post given as a reference https://blog.asmartbear.com/slc.html.
dwenzek··on Writing for Engineers
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!
Page 1 of 6Next →