Top all-time · #2464
Val on Programming
Personal blog · vvvvalvalval.github.io/postsprogrammingdata
Val on Programming is a personal blog at vvvvalvalval.github.io about programming and data. Since 2016, 29 different Hacker News readers have linked it 67 times, most often “Datomic: Event Sourcing without the hassle”. The last post was in 2024, but the archive is still widely read.
Rarely recommended · 3 of 37 sampled comments recommend it?
Why HN links it
HN readers link this blog, Val on Programming, for essays on Clojure, REPL-driven development, Datomic and event sourcing, and static versus dynamic typing.
Summarised by Claude from a sample of 37 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Datomic: Event Sourcing without the hassle10 people · 16 mentions · first linked 2018-11-12
- What makes a good REPL? (2017)6 people · 13 mentions · first linked 2018-10-31
- What makes a good REPL?5 people · 7 mentions · first linked 2017-08-23
- So yeah, about Clojure's syntax3 people · 3 mentions · first linked 2018-01-09
- Datomic: Not the history you're looking for (2017)2 people · 5 mentions · first linked 2022-04-22
- DataScript (Lingua Franca for domain modeling)2 people · 3 mentions · first linked 2018-09-15
- /posts/2018-05-01-making-a-datomic-system-gdpr-compliant.html2 people · 2 mentions · first linked 2018-11-13
- DataScript as a lingua franca for domain modeling2 people · 2 mentions · first linked 2018-07-23
What Hacker News says?
> I think there are some projects floating around out there, but I personally don't see a purpose for one. It's not python or matlab I was thinking of a REPL in the sense of common Clojure usage ( https://vvvvalvalval.github.io/posts/what-makes-a-good-repl.... ) not the basic "write lines into a separate program and then copy-paste it into your source code" that Python offers.
Comment linking /posts/what-makes-a-good-repl.html
on “Dave Herman’s contributions to Rust”Submitted Datomic: Event Sourcing without the hassle as a story · 206 points
HN discussionSimple core languages that are syntactically extensible with libraries have the best of both worlds: https://vvvvalvalval.github.io/posts/2018-01-06-so-yeah-abou...
Comment linking /posts/2018-01-06-so-yeah-about-clojures-syntax.html
on “What's Coming in Python 3.8”Submitted What makes a good REPL? as a story · 168 points
HN discussionClojure isn't actually a purely functional language. It's more of a consenting adults language that guides you towards doing the right thing by default. If you write idiomatic Clojure code, then it will be written in a purely functional style. However, Clojure won't stop you from writing imperative code or adding side effects if it makes sense in your particular scenario. Lisp family of languages also have a lot of…
Comment linking /posts/what-makes-a-good-repl.html
on “A History of Clojure [pdf]”Submitted Supdate – A Clojure library for transforming nested data structures as a story · 155 points
HN discussionDatomic: Event Sourcing without the hassle https://vvvvalvalval.github.io/posts/2018-11-12-datomic-even...
Comment linking /posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html
on “Event Sourcing is Hard”Submitted Datomic: this is not the history you're looking for as a story · 132 points
HN discussionSome contrarian opinion: https://vvvvalvalval.github.io/posts/2018-11-12-datomic-even... Basic idea is to make the event log dumb. Instead of capturing business logic, make them as dumb as SQL commit logs: this row was inserted at this time, that row was deleted at that time. Sort of like a glorified WAL file. Benefits of this scheme? Querying old database states and auditing.
Comment linking /posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html
on “Event Sourcing is Hard”Submitted What makes a good REPL? (2017) as a story · 90 points
HN discussionA lot of the same refactoring is possible in dynamic languages as in static ones. I recommend reading up on Term to see what's possible to do with JavaScript http://marijnhaverbeke.nl/blog/tern.html I use Cursive https://cursive-ide.com/ for working with Clojure, and it can do safe refactoring for symbols by doing static analysis of the source. It can show all usages of a symbol, rename it, do automatic imports, and…
Comment linking /posts/what-makes-a-good-repl.html
on “Diminishing returns of static typing”Submitted What makes a good REPL? (2017) as a story · 63 points
HN discussionThe claim that there's declining interest is absurd, and that's what I'm arguing. Google trends are simply not a measure of anything interesting in practice. It's about as useful as throwing around TIOBE rankings. >Tooling is a big problem, not because the once you learn emacs and cider it is insufficient, but because it is a pain to setup and learn emacs and cider. Not because Atom and proto-repl are bad tools, but…
Comment linking /posts/what-makes-a-good-repl.html
on “Elements of Clojure”Submitted What makes a good REPL? (2017) as a story · 15 points
HN discussionWorked with static typing for about a decade primarily with Java in the enterprise. However, I've also used Haskell and Scala which have advanced type systems. I moved to work with Clojure about 8 years ago, and I don't miss types. If I did, I would've gone back to a typed language a long time ago. My experience is that dynamic typing is problematic in imperative/OO languages. One problem is that the data is mutable…
Comment linking /posts/what-makes-a-good-repl.html
on “Clojure at Netflix (2013) [slides]”Submitted Covariances behave: views on normal distributions and Gaussian Processes as a story · 5 points
HN discussionYou just discovered repl driven development that lisp users have been advocating for years. Check it out in Clojure: https://vvvvalvalval.github.io/posts/what-makes-a-good-repl....
Comment linking /posts/what-makes-a-good-repl.html
on “Django 2.2”Submitted What makes a good REPL? as a story · 5 points
HN discussionThis is often called "event sourcing". The other commenter mentions Datomic, which probably is the 'latest and greatest' form of event sourcing (I've never used it). https://vvvvalvalval.github.io/posts/2018-11-12-datomic-even... If you want something built on postgres, I don't have any specific recommendations, but you can build a simple event sourcing system yourself. I worked somewhere that used event sourcing on…
Comment linking /posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html
on “You might as well timestamp it”Submitted Datomic: Event Sourcing Without the Hassle as a story · 4 points
HN discussionMy team used to be a Java shop, we adopted Clojure around a decade ago and never looked back. Not really sure what this whole compiler telling the developer what to do is supposed to mean to be honest. One of the advantages of using a Lisp is that you get immediate feedback from the compiler as you're writing code via the REPL driven workflow. https://vvvvalvalval.github.io/posts/what-makes-a-good-repl....
Comment linking /posts/what-makes-a-good-repl.html
on “Lisping at JPL (2002)”Submitted So yeah, about Clojure's syntax as a story · 4 points
HN discussionI submit that Event Sourcing (or at least something very close to it) can be easy, once you've removed some technology locks. I've seen it happen with Datomic ( https://vvvvalvalval.github.io/posts/2018-11-12-datomic-even... ), but it can probably happen similarly with other tech, such as XTDB ( https://xtdb.com/ ).
Comment linking /posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html
on “Event Sourcing Is Hard (2019)”Submitted Event Sourcing without the Hassle as a story · 3 points
HN discussionThis matches closely with my experience working at a company that was mostly built on event-sourcing. I would add a few things, some of which are touched upon in the article: - The general problem with event-sourcing (at small scale) is that it forces you to have to think about and handle many things that can mostly be ignored with a more typical persistence approach. This overhead of complexity was one of the facto…
Comment linking /posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html
on “Event Sourcing Is Hard (2019)”Submitted Clojure's keyword namespacing convention Considered Harmful as a story · 3 points
HN discussionEvent Sourcing sucks. I blame OOP abstractions taken to an extreme. https://vvvvalvalval.github.io/posts/2018-11-12-datomic-even...
Comment linking /posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html
on “Event Sourcing Is Hard (2019)”Submitted DataScript (Lingua Franca for domain modeling) as a story · 3 points
HN discussionTo me, being able to make changes to your code while keeping the current state in the REPL is key to interactive development. My workflow is generally to build up state, and then experiment with functions on that state until I get the correct output. This workflow is very natural in Clojure, Common Lisp and even Python (with IPython and autoreload). However, in Racket you have to restart everything on every change.…
Comment linking /posts/what-makes-a-good-repl.html
on “Why I haven't jumped ship from Common Lisp to Racket just yet”Submitted DataScript as a lingua franca for domain modeling as a story · 3 points
HN discussion