Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    D

    Data Sorcery

    data-sorcery.org · Personal blog · on HN since 2010

    A Clojure-focused blog on data analysis, visualization and the Incanter statistics library, with posts on parallelism and development practice.

    Visit blogHN submissions
    Data & VisualizationLanguages & CompilersProgramming
    What HN says

    HN suggests it as the home of Incanter, a JVM data environment, and links its Hammock Driven Development cheat sheet from Rich Hickey's talk.

    Stats for nerds
    22HN people shared it
    12linked in comments
    204story points
    Mar 2019last shared
    2010people per year2019

    Top posts on HN

    1. 1
      An Illustrated guide to multi-core parallelism in Clojure
      1 person · 76 points · first shared 2010 · 7 comments on HN
    2. 2
      Data Sorcery with Clojure
      3 people · 37 points · first shared 2010 · Discussion on HN
    3. 3
      Incanter now has standalone executables
      1 person · 25 points · first shared 2010 · 1 comments on HN
    4. 4
      Hammock Driven Development Cheat Sheet
      3 people · 23 points · first shared 2010 · Discussion on HN
    5. 5
      Data Sorcery with Clojure & Incanter: Introduction to Datasets & Charts
      1 person · 17 points · first shared 2010 · Discussion on HN
    6. 6
      Creating Processing Visualizations with Clojure and Incanter
      1 person · 13 points · first shared 2010 · Discussion on HN
    7. 7
      Getting started with Incanter using labrepl
      1 person · 4 points · first shared 2010 · Discussion on HN
    8. 8
      Reading and writing Excel (xls) files with Incanter
      1 person · 3 points · first shared 2010 · Discussion on HN
    9. 9
      Incanter 1.5.0 has been released
      1 person · 3 points · first shared 2013 · 1 comments on HN
    10. 10
      Statistical Learning in Clojure
      1 person · 1 points · first shared 2012 · Discussion on HN

    What HN people wrote when they linked it

    • gte525uDec 2014

      Fundamentally it's macros and homoiconicity of code and data that give lisp it's expressive power. Combined they grant you the power to inject new syntax / domain specific languages (DSLs) directly into your code. Any new syntax you create can look like normal lisp or can have different syntax evaluation rules like infix math notation [1]. A number of years ago I did a short write-up on stack overflow giving a basic explanation of how macros work in common lisp which may be worth a read [2].

      Macros in general work by being a syntax tree -> syntax tree transformation. The neat trick is it's not a static pattern like C - you can leverage functions, conditions, etc to build that syntax tree.

      As for comprehensions themselves, if you want to see the power of lisp look at the loop macro. It's a single macro yet gives you the power of normal control loops, list comprehensions, for-each all rolled into one package. [3]

      [1] http://data-sorcery.org/2010/05/14/infix-math/

      [2] http://www.gigamonkeys.com/book/loop-for-black-belts.html

      [3] http://stackoverflow.com/questions/267862/what-makes-lisp-macros-so-special/4621882#4621882

    • nnqAug 2015

      You're probably a verbal thinker, and English-like code matters a lot to you I guess. Probably lots of programmers are.

      For me, a mostly visual thinker that ends up building and visualizing a code tree in his head anyhow, Lisp is very readable because I can more clearly see the tree without all the noise.

      And when it comes to math, staying close to standard math notation is a clear winner, and this is why all lisps have ways of writing infix for formula-heavy code, stuff like http://data-sorcery.org/2010/05/14/infix-math/ and others. But lispers don't use them that much because they simply get used to the Lisp notation more.

      ...oh, and Common Lisp is NOT an example of readable Lisp. It's probably the most unreadable and obsfucation-friendly of them all :)

      Take a look at some Clojure code for something that's just as readable as Python after you "get you eyes used to it" (jargon for learning to ignore the parentheses and learning the special meanings of the "funny symbols" like :, ~, # and a few more): https://github.com/weavejester/compojure/blob/master/src/compojure/core.clj

    • JoshColeDec 2010

      I think your defining "human" based on norm. I would prefer to define "human" based on a humans ease of use given familiarity with the notation. I prefer this definition because if you use what I take to be your definition you get oddities like Roman Numerals being more human than what we use today. Given this definition I'm not sure you can say he is purely rationalizing his choice, since he gives a clear example of a situation in which he finds that the notation is easier to use.

      I don't feel strong one way or another on this issue, though I do program in Clojure. If you want infix math in clojure: http://data-sorcery.org/2010/05/14/infix-math/

    • vijucatNov 2014

      It just occurred to me that Hackathons which stress on the caffeine-induced sleepless continuous-production aspect of programming are the opposite of what Rich Hickey termed "Hammock driven development" : http://data-sorcery.org/2010/12/29/hammock-driven-dev/

      I guess the "furious activity IS productivity" approach of such hackathons is appropriate if you're building the next great website where the assembly of components is the challenge but they are probably not great for solving open-ended problems such as designing an algorithm or figuring out how to solve a puzzle (a business puzzle, a programming puzzle, a life puzzle).

    • alexottFeb 2012

      currently there is no such support in Incanter. Chars are implemented via JFreeChart that can export to JPEG & PNG out of box, although it's possible to export charts to other formats, such as PDF and Incanter supports it out of box with incanter.pdf/save-pdf function (http://data-sorcery.org/2010/02/05/pdf-charts/)

    • vorgOct 2014

      > Now to get it working in Clojure

      Perhaps you've seen the macro for infix operators in Clojure: http://data-sorcery.org/2010/05/14/infix-math/

      Use that and all you'd need to implement for infix ops is a parser that translates {...} to ($= ...) for any sequence ... of tokens.

    Related

    Best In Classbestinclass.dk46 people

    Reddit/HN clone in Clojure

    Best In Class
    Personal · last shared 2020
    Live Free or Dichotomizelivefreeordichotomize.com17 people

    Using AWK and R to parse 25TB

    Live Free or Dichotomize
    Personal · last shared 2024
    Red Planet Labs Blogblog.redplanetlabs.com28 people

    Databases and why their complexity is now unnecessary

    Red Planet Labs Blog
    Company · last shared 2026
    Yogthosyogthos.net45 people

    Why I'm Productive in Clojure (2013)

    Yogthos
    Personal · last shared 2026
    Prismatic Blogblog.getprismatic.com40 people

    Om Sweet Om: functional front-end engineering with ClojureScript and React

    Prismatic Blog
    Company · last shared 2015
    Factual Blogblog.factual.com23 people

    Introducing Drake, a kind of ‘make for data’

    Factual Blog
    Company · last shared 2015
    Turso Blogturso.tech102 people

    Working on databases from prison

    Turso Blog
    Company · last shared 2026
    Rerun Blogrerun.io37 people

    Why Rust?

    Rerun Blog
    Company · last shared 2026