All blogs / Software / engineering practice
Yehonathan Sharvit
Developer. Author. Speaker.
Software / engineering practiceLisp / Clojure / SchemeJavaScript / TypeScriptMath
- Posts
- 167 from 17 Mar 2016 to 6 Jul 2026
- Posting
- now and then (4 in the last year)
- Kind
- personal blog
- Feed
- https://blog.klipse.tech/feed.xml
2026 4
2022 6
2021 19
- A hundred things I learned writing my first technical book "Data-Oriented Programming"
- Data-Oriented Programming: A link in the chain of programming paradigms
- Polymorphism without objects via multimethods
- Polymorphism without objects via multimethods
- Data validation with JSON Schema
- A new way of blogging about Golang
- On sameness in programming
- On sameness in programming
- La notion de mêmeté en programmation
- Data-Oriented programming coding challenges
- Data-Oriented programming simplicity illustrated by coding challenges
- How to access data dynamically in Java without losing type safety
- The concepts behind Data-Oriented programming
- Data-Oriented programming in Java
- Structural sharing with 7 lines of JavaScript.
- Graph visualization playground with Cytoscape.
- Distinction between three data related programming paradigms.
- A new way of blogging about Python
- Imagine there's no objects
2020 26
- Computing the data diff between two hash maps
- Applying Git and Optimistic Concurrency Control principles to Data Oriented Programming
- Functional Lodash
- Manipulate immutable collections with no performance hit.
- Clojure and EDN diff tool
- DO Principle #5: Data has a literal representation
- DO Principle #1: Separate code from data
- DO Principle #2: Model entities with generic data structures
- DO Principle #3: Data is immutable
- DO Principle #4: Data is comparable by value
- Principles of Data Oriented Programming
- Data Oriented Programming: Table of Contents
- The complexity of Object Oriented Programming: A bit of UML
- The complexity of Object Oriented Programming: What's wrong with you OO?
- The complexity of Object Oriented Programming: DO magic sauce
- The complexity of Object Oriented Programming: Imagine
- The complexity of Object Oriented Programming: Classic OO design
- What is Data Oriented Programming?
- Core.match available for self hosted ClojureScript (Planck and Klipse)
- Generative testing in Clojure with test.check
- The most elegant implementation of FizzBuzz
- Manipulating the DOM with Clojure using Klipse
- A new way of blogging about HTML and CSS
- Procedural Texture Generator in JavaScript
- Symbolic Computation in JavaScript with Math.js
- How to draw on a canvas with Klipse and core.async
2019 8
2018 7
2017 19
- Type-safe bindings from JS to Reason for dummies
- A new way of writing about Reason
- A new way of blogging about Ocaml
- Lodash playground
- It's complex to measure complexity
- Turing Omnibus #1: Algorithm for generating wallpapers in javascript
- Turing Omnibus #1: Algorithm for generating wallpapers
- Clojure.core: juxt, some and reduced
- Klipse: A javascript plugin for interactive code snippets in blog posts
- A new way of blogging about Lua
- A new way of writing Data Driven Documents with Klipse and Google Charts
- Interactive Business Report with Google Charts
- KLIPSE secured mode
- Write your own compiler - Station #1: the tokenizer
- Write your own compiler - Introduction
- Write your own compiler - Station #2: the parser
- Write your own compiler - Station #3: the emitter
- Write your own compiler - Last station
- A turtle can draw fractals
2016 78
- Interactive reagent snippets
- A new way of blogging about C++
- How to do arithmetics in BrainFuck?
- Javascript: await looks synchronous but it is asynchronous
- React.js controlled components
- ES proposal: Object.entries() and Object.values()
- Javascript can sleep
- Brainfuck for dummies
- JSX (react) in depth - an interactive tutorial
- str vs. pr-str - humans vs. machines
- In javascript, setTimeout is forced to be >= 4 msec
- Core.match interactive tutorial
- KLIPSE talk at ClojureX 2016
- bootrapped (self-host) namespace loading strategy in KLIPSE - insights into the cljs compiler
- Custom defn macro with clojure.spec - part 1: conform/unform
- Custom defn macro - part 2: playing with parse trees
- Parsing with derivatives - Elegant matching of regular languages in clojure
- Automata to solve programming interview riddles
- Regular expressions to solve programming interview riddles
- Transit format: An interactive tutorial - better than JSON (part 1)
- Transit format: An interactive tutorial - custom types and caching (part 2)
- Reverse Polish Evaluator in Python
- Fun with valueOf in javascript
- Solving a not-so-easy riddle with javascript permutations
- Solving a not-so-easy riddle with clojure.math.combinatorics
- Interactive overview of Scheme's semantics
- Code playground in ruby, clojure, javascript, python, PHP and more
- Functional programming: Monads made clear - in javascript
- Y combinator real life application: recursive memoization in ruby
- Recursions without names: Introduction to the Y combinator in ruby
- Y combinator real life application: recursive memoization in javascript
- Y combinator real life application: recursive memoization in clojure
- Recursions without names: Introduction to the Y combinator in javascript
- Lambda Calculus: The Y combinator in javascript
- Lambda Calculus: The Y combinator in ruby
- Recursions without names: Introduction to the Y combinator in clojure
- Recursions without names: Introduction to the Y combinator
- Lambda Calculus: The Y combinator in clojure
- Numbers and Arithmetics with functions only: lambda calculus live tutorial
- Lambda Calculus Live Tutorial with Klipse: Boolean Algebra
- Generative property testing with Javascript: live tutorial
- Multi language live snippets with the klipse plugin by @viebel
- A new way of blogging about PHP with #klipsePlugin by @viebel
- immutable.js is much faster than native javascript
- A new way of blogging about javascript
- A new way of blogging about ruby
- javascript eval: direct vs indirect call
- How to klipsify a clojure[script] blog post #cljklipse @viebel
- Clojure 1.9 introduces clojure.spec: tutorial with live coding examples #cljklipse @viebel
- Clojure Macros Tutorial - part 4: Examples of cool macros #cljklipse @viebel
- Clojure Macros Tutorial - part 3: Syntax Quote (aka Backtick) in Clojure
- Clojure Macros Tutorial - part 2: how not to write macros
- Clojure Macros Tutorial - part 1: functions vs. macros
- The power and danger of deftype in clojure and clojurescript
- In Clojure, records are wacky maps
- 3 ways to generate Lazy Fibonacci sequences in Clojure
- Deep into clojurescript function call mechanisms: static vs. dynamic dispatch
- IFn's magic beyond defprotocol secret
- Clojurescript defprotocol's secret
- Extend IFn protocol like if you were part of clojurescript core team
- Self-Hosted Clojurescript in action - Part 1
- Clojurescript's areduce is faster than native javascript's reduce
- Truth in clojurescript
- Clojurescript: abstraction and data structure clarification - Part 1
- Destructuring in Clojure - Part 2
- immutable.js live tutorial
- Destructuring in Clojure - Part 1
- Measuring clojurescript performance with KLIPSE
- KLIPSE: Clojure libs are now available!
- Clojure Append Cyclic
- Demistify clojurescript namespaces
- KLIPSE hotkeys and url parameters
- Eval only with KLIPSE
- Javascript only with KLIPSE
- Messing with Macros at the REPL
- Dead code elimination in clojurescript
- KLIPSE: how we built it?
- KLIPSE: a simple and elegant online cljs compiler and evaluator