The Curious Engineer

All blogs / Software / engineering practice

Yehonathan Sharvit

blog.klipse.tech

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

  1. A Wheel, the Same Forwards and Backwards
  2. Too big to draw, but yet drawable
  3. An elegant formulation inspired by the one and only paper Bill Gates ever wrote
  4. A 13th-Century Enumeration Algorithm, Ignored for 700 Years

2022 6

  1. Separate data schema from data representation
  2. Data is immutable
  3. Represent data with generic data structures
  4. Separate code from data
  5. Principles of Data-Oriented Programming
  6. Reading the present moment

2021 19

  1. A hundred things I learned writing my first technical book "Data-Oriented Programming"
  2. Data-Oriented Programming: A link in the chain of programming paradigms
  3. Polymorphism without objects via multimethods
  4. Polymorphism without objects via multimethods
  5. Data validation with JSON Schema
  6. A new way of blogging about Golang
  7. On sameness in programming
  8. On sameness in programming
  9. La notion de mêmeté en programmation
  10. Data-Oriented programming coding challenges
  11. Data-Oriented programming simplicity illustrated by coding challenges
  12. How to access data dynamically in Java without losing type safety
  13. The concepts behind Data-Oriented programming
  14. Data-Oriented programming in Java
  15. Structural sharing with 7 lines of JavaScript.
  16. Graph visualization playground with Cytoscape.
  17. Distinction between three data related programming paradigms.
  18. A new way of blogging about Python
  19. Imagine there's no objects

2020 26

  1. Computing the data diff between two hash maps
  2. Applying Git and Optimistic Concurrency Control principles to Data Oriented Programming
  3. Functional Lodash
  4. Manipulate immutable collections with no performance hit.
  5. Clojure and EDN diff tool
  6. DO Principle #5: Data has a literal representation
  7. DO Principle #1: Separate code from data
  8. DO Principle #2: Model entities with generic data structures
  9. DO Principle #3: Data is immutable
  10. DO Principle #4: Data is comparable by value
  11. Principles of Data Oriented Programming
  12. Data Oriented Programming: Table of Contents
  13. The complexity of Object Oriented Programming: A bit of UML
  14. The complexity of Object Oriented Programming: What's wrong with you OO?
  15. The complexity of Object Oriented Programming: DO magic sauce
  16. The complexity of Object Oriented Programming: Imagine
  17. The complexity of Object Oriented Programming: Classic OO design
  18. What is Data Oriented Programming?
  19. Core.match available for self hosted ClojureScript (Planck and Klipse)
  20. Generative testing in Clojure with test.check
  21. The most elegant implementation of FizzBuzz
  22. Manipulating the DOM with Clojure using Klipse
  23. A new way of blogging about HTML and CSS
  24. Procedural Texture Generator in JavaScript
  25. Symbolic Computation in JavaScript with Math.js
  26. How to draw on a canvas with Klipse and core.async

2019 8

  1. The secrets of Type Inference in Clojurescript
  2. Java is confusing, Clojure is simple.
  3. Seqs and the City
  4. Custom defn macros with clojure.spec
  5. re-frame interactive demo
  6. Welcome Clojurescript 1.10.516
  7. An interactive Quine in Clojure
  8. A new way of blogging about Prolog

2018 7

  1. Lazy sequences are not compatible with dynamic scope
  2. Welcome Clojure 10
  3. Easy Clojure, Easy REPL
  4. Hello Clojure
  5. A new way of blogging about Common Lisp
  6. Polymorphic vs. ordinary variants in ocaml
  7. Polymorphic vs. ordinary variants in reason

2017 19

  1. Type-safe bindings from JS to Reason for dummies
  2. A new way of writing about Reason
  3. A new way of blogging about Ocaml
  4. Lodash playground
  5. It's complex to measure complexity
  6. Turing Omnibus #1: Algorithm for generating wallpapers in javascript
  7. Turing Omnibus #1: Algorithm for generating wallpapers
  8. Clojure.core: juxt, some and reduced
  9. Klipse: A javascript plugin for interactive code snippets in blog posts
  10. A new way of blogging about Lua
  11. A new way of writing Data Driven Documents with Klipse and Google Charts
  12. Interactive Business Report with Google Charts
  13. KLIPSE secured mode
  14. Write your own compiler - Station #1: the tokenizer
  15. Write your own compiler - Introduction
  16. Write your own compiler - Station #2: the parser
  17. Write your own compiler - Station #3: the emitter
  18. Write your own compiler - Last station
  19. A turtle can draw fractals

2016 78

  1. Interactive reagent snippets
  2. A new way of blogging about C++
  3. How to do arithmetics in BrainFuck?
  4. Javascript: await looks synchronous but it is asynchronous
  5. React.js controlled components
  6. ES proposal: Object.entries() and Object.values()
  7. Javascript can sleep
  8. Brainfuck for dummies
  9. JSX (react) in depth - an interactive tutorial
  10. str vs. pr-str - humans vs. machines
  11. In javascript, setTimeout is forced to be >= 4 msec
  12. Core.match interactive tutorial
  13. KLIPSE talk at ClojureX 2016
  14. bootrapped (self-host) namespace loading strategy in KLIPSE - insights into the cljs compiler
  15. Custom defn macro with clojure.spec - part 1: conform/unform
  16. Custom defn macro - part 2: playing with parse trees
  17. Parsing with derivatives - Elegant matching of regular languages in clojure
  18. Automata to solve programming interview riddles
  19. Regular expressions to solve programming interview riddles
  20. Transit format: An interactive tutorial - better than JSON (part 1)
  21. Transit format: An interactive tutorial - custom types and caching (part 2)
  22. Reverse Polish Evaluator in Python
  23. Fun with valueOf in javascript
  24. Solving a not-so-easy riddle with javascript permutations
  25. Solving a not-so-easy riddle with clojure.math.combinatorics
  26. Interactive overview of Scheme's semantics
  27. Code playground in ruby, clojure, javascript, python, PHP and more
  28. Functional programming: Monads made clear - in javascript
  29. Y combinator real life application: recursive memoization in ruby
  30. Recursions without names: Introduction to the Y combinator in ruby
  31. Y combinator real life application: recursive memoization in javascript
  32. Y combinator real life application: recursive memoization in clojure
  33. Recursions without names: Introduction to the Y combinator in javascript
  34. Lambda Calculus: The Y combinator in javascript
  35. Lambda Calculus: The Y combinator in ruby
  36. Recursions without names: Introduction to the Y combinator in clojure
  37. Recursions without names: Introduction to the Y combinator
  38. Lambda Calculus: The Y combinator in clojure
  39. Numbers and Arithmetics with functions only: lambda calculus live tutorial
  40. Lambda Calculus Live Tutorial with Klipse: Boolean Algebra
  41. Generative property testing with Javascript: live tutorial
  42. Multi language live snippets with the klipse plugin by @viebel
  43. A new way of blogging about PHP with #klipsePlugin by @viebel
  44. immutable.js is much faster than native javascript
  45. A new way of blogging about javascript
  46. A new way of blogging about ruby
  47. javascript eval: direct vs indirect call
  48. How to klipsify a clojure[script] blog post #cljklipse @viebel
  49. Clojure 1.9 introduces clojure.spec: tutorial with live coding examples #cljklipse @viebel
  50. Clojure Macros Tutorial - part 4: Examples of cool macros #cljklipse @viebel
  51. Clojure Macros Tutorial - part 3: Syntax Quote (aka Backtick) in Clojure
  52. Clojure Macros Tutorial - part 2: how not to write macros
  53. Clojure Macros Tutorial - part 1: functions vs. macros
  54. The power and danger of deftype in clojure and clojurescript
  55. In Clojure, records are wacky maps
  56. 3 ways to generate Lazy Fibonacci sequences in Clojure
  57. Deep into clojurescript function call mechanisms: static vs. dynamic dispatch
  58. IFn's magic beyond defprotocol secret
  59. Clojurescript defprotocol's secret
  60. Extend IFn protocol like if you were part of clojurescript core team
  61. Self-Hosted Clojurescript in action - Part 1
  62. Clojurescript's areduce is faster than native javascript's reduce
  63. Truth in clojurescript
  64. Clojurescript: abstraction and data structure clarification - Part 1
  65. Destructuring in Clojure - Part 2
  66. immutable.js live tutorial
  67. Destructuring in Clojure - Part 1
  68. Measuring clojurescript performance with KLIPSE
  69. KLIPSE: Clojure libs are now available!
  70. Clojure Append Cyclic
  71. Demistify clojurescript namespaces
  72. KLIPSE hotkeys and url parameters
  73. Eval only with KLIPSE
  74. Javascript only with KLIPSE
  75. Messing with Macros at the REPL
  76. Dead code elimination in clojurescript
  77. KLIPSE: how we built it?
  78. KLIPSE: a simple and elegant online cljs compiler and evaluator