Top all-time · #1705
Yehonathan Sharvit
Personal blog · blog.klipse.techprogramming
Yehonathan Sharvit's personal blog at blog.klipse.tech covers programming. Since 2016, 42 different Hacker News readers have linked it 187 times, most often “Revisiting the principles of data-oriented programming”. It is still writing: the last post was on 2026-07-06, and you can follow it by feed.
Rarely recommended · 4 of 31 sampled comments recommend it?
Why HN links it
Yehonathan Sharvit's blog, cited for its Data-Oriented Programming principles and for interactive code tutorials built with the Klipse plugin (JavaScript, Clojure, Python, lambda calculus).
- Recommended for · 4 comments
- Called a great article, good introduction material for Clojure topics, and a nice brief summary clarifying DOP vs DOD.
Summarised by Claude from a sample of 31 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Developer. Author. Speaker.
Most-linked posts?
- Revisiting the principles of data-oriented programming5 people · 6 mentions · first linked 2022-06-24
- Distinction between three data related programming paradigms4 people · 6 mentions · first linked 2021-03-12
- Things I learned writing my first technical book3 people · 4 mentions · first linked 2021-12-21
- Parsing with derivatives – Elegant matching of regular languages in clojure3 people · 4 mentions · first linked 2016-10-05
- Code playground in ruby, clojure, JavaScript, python, PHP and more2 people · 3 mentions · first linked 2016-09-09
- A new way of blogging about ruby2 people · 2 mentions · first linked 2016-06-20
- Show HN: Brainfuck for dummies2 people · 2 mentions · first linked 2016-12-18
- Interactive Wallpaper Algorithms2 people · 2 mentions · first linked 2017-04-24
- Clojure: Re-Frame (Interactive Demo)2 people · 2 mentions · first linked 2019-02-20
- Lambda Calculus: The Y combinator in ruby2 people · 2 mentions · first linked 2016-08-14
What Hacker News says?
Data Oriented Programming. In short, don't entangle your code with data, and the data should immutable. https://blog.klipse.tech/databook/2020/09/25/data-book-chap0...
Comment linking /databook/2020/09/25/data-book-chap0.html
on “Case against OOP is understated, not overstated (2020)”Submitted Principles of Data Oriented Programming as a story · 375 points
HN discussionGreat article! It would be fantastic to make all the code snippet interactive with the klipse plugin. http://blog.klipse.tech/javascript/2016/06/20/blog-javascrip...
Comment linking /javascript/2016/06/20/blog-javascript.html
on “Overview of JavaScript ES6 features”Submitted Show HN: How to write a tiny compiler as a story · 224 points
HN discussion| Objects are excellent for data Check out DOP https://blog.klipse.tech/dop/2022/06/22/principles-of-dop.ht... and Rich Hikey's critique of OOP (~'objects are custom languages on top of data'; they force you to learn specific semantics to manipulate plain data structures and make it tough to reuse your code).
Comment linking /dop/2022/06/22/principles-of-dop.html
on “Why study functional programming? (2012)”Submitted Things I learned writing my first technical book as a story · 142 points
HN discussionI've copy/pasted the code of your reverse polish evaluator in python in this interactive blog post: http://blog.klipse.tech/python/2016/09/22/python-reverse-pol...
Comment linking /python/2016/09/22/python-reverse-polish-evaluator.html
on “LL and LR Parsing Demystified (2013)”Submitted An interactive way of blogging about JavaScript as a story · 137 points
HN discussionI think ClojureScript has been able to compile itself since ~2015 if I remember correctly. There is some helper libraries that makes the experience nicer nowadays too, tools like KLIPSE ( https://github.com/viebel/klipse ) Here are some starting points: - https://clojurescript.org/guides/self-hosting - https://practicalli.github.io/clojurescript/quickstart/self-... - https://blog.klipse.tech/clojurescript/2016/04/04…
Comment linking /clojurescript/2016/04/04/self-host-part-1.html
on “ClojureScript 1.10.866 Release”Submitted JSX in detail as a story · 129 points
HN discussionI understand your worry, but I've had a quite opposite take on this. I think we can agree that it's not that hard to find ANY job as an experienced developer. However it's much more difficult to find a great, satisfying job. For that you need to navigate around a lot of corpo-bullshit type of projects, and Clojure has served me well as a useful filter in doing that. My reasoning is that Clojure is niche enough that…
Comment linking /dop/2022/06/22/principles-of-dop.html
on “Ask HN: What is the job market like for niche languages (Nim, Crystal)?”Submitted Revisiting the principles of data-oriented programming as a story · 126 points
HN discussionComments like this make my day, thanks :) I'm hopeful that we'll see lots more blog posts written in this interactive style in the future - the KLIPSE plugin I use is extremely simple to set up, and has support for a ton of languages including Python and Ruby (not to mention regular old JavaScript!). http://blog.klipse.tech/klipse/2016/09/09/klipse-languages.h... is a gallery page that has examples of all of the lan…
Comment linking /klipse/2016/09/09/klipse-languages.html
on “Procedural Dungeon Generation: Cellular Automata”Submitted Show HN: A new way of blogging about Lua as a story · 111 points
HN discussionThe same site has also done similar plugins for ClojureScript: http://blog.klipse.tech/clojure/2016/06/07/klipse-plugin-tut... And Ruby: http://blog.klipse.tech/ruby/2016/06/20/blog-ruby.html
Comment linking /ruby/2016/06/20/blog-ruby.html
on “An interactive way of blogging about JavaScript”Submitted Lambda Calculus Interactive Tutorial as a story · 83 points
HN discussion> I can't get past the lack of currying. Say again? Currying may not exist as a special form, but adding it is utterly trivial: [0] Which I guess is where Lisp shines. Modifying the language to suit your needs is easy. You aren't bound by the limits that many languages force upon you. That being said, I wouldn't say that Common Lisp or Ocaml have the same userbase. In much the same way that C and JavaScript don't se…
Comment linking /clojure/2016/10/25/core-match.html
on “Portacle – A Portable Common Lisp Development Environment”Submitted Recursions without names: Introduction to the Y combinator in JavaScript as a story · 77 points
HN discussionDOP is not the same as DOD [1] 1: https://blog.klipse.tech/visualization/2021/02/16/data-relat...
Comment linking /visualization/2021/02/16/data-related-paradigms.html
on “Revisiting the principles of data-oriented programming”Submitted An Interactive Quine in Clojure as a story · 47 points
HN discussionAwful stuff. These principles could only ever make sense in a dynamic language since it's mostly manually enforcing some of the basic functionality of a type system, but the fact that he also tries to argue this style could be used in a language like C# throws that defense out the window. https://blog.klipse.tech/databook/2022/06/22/generic-data-st... The examples also contradict his other principles, i.e. immutabil…
Comment linking /databook/2022/06/22/generic-data-structures.html
on “Revisiting the principles of data-oriented programming”Submitted Java is confusing, Clojure is simple as a story · 30 points
HN discussionIts official use case is hacking recursion into a language that doesn't support recursion, but does have first-class functions. To the best of my knowledge, the only language that fits this description is the lambda calculus itself. There is a paper, Y in Practical Programs ( https://blog.klipse.tech/assets/y-in-practical-programs.pdf ) that presents some interesting things you can layer on top of the technique. I'l…
Comment linking /assets/y-in-practical-programs.pdf
on “Common Lisp Books”Submitted A new way of blogging about Prolog as a story · 27 points
HN discussionFor most things, yes. But this is JavaScript, the language where intransitive equality, implicit object-to-primitive casting and mutable global objects must be used in all slight-above-trivial code. Where `typeof` is useless and wrong, but nonetheless necessary; where there are seven different ways to parse a number, with six different semantics… there's a reason that “JavaScript: The Good Parts” is such a short boo…
Comment linking /assets/js_good_parts.jpg
on “In JS functions, the ‘last’ return wins”Submitted A New Way of Blogging About Common Lisp (2018) as a story · 22 points
HN discussionYour small dive prompted me to create a simple version of what you were describing [1]. I didn't use my usual editor, and just used the cljsfiddle itself. I really wanted to create a spec for the data in app-state, and check the value in the app-state atom each time I edited it (perhaps with an add-watch). That gets you many of the same advantages of static typing, but you only add the extra insurance when you think…
Comment linking /clojure/2016/10/10/defn-args.html
on “A small dive into, and rejection of, Elm”Submitted A new way of blogging about Golang as a story · 21 points
HN discussionIt's nice to have interactive code samples in most places where you use an editor. e.g.: http://blog.klipse.tech/lisp/2018/05/07/blog-common-lisp.htm... https://polymervis.github.io/monaco-editor/build/demo/ https://oakes.github.io/play-cljs/
Comment linking /lisp/2018/05/07/blog-common-lisp.html
on “Ace – an embeddable code editor”Submitted Data-Oriented Programming: A link in the chain of programming paradigms as a story · 20 points
HN discussion