Skip to content

Instantly share code, notes, and snippets.

@JulienRouse
Last active April 24, 2019 11:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JulienRouse/e6d1b3cf275864f0a729d4779ff0fdcb to your computer and use it in GitHub Desktop.
Save JulienRouse/e6d1b3cf275864f0a729d4779ff0fdcb to your computer and use it in GitHub Desktop.

side note => Good post about REPL and starting with Clojure Bare minimum

Videos for the talks will be available soon

Clojure North 2019

Talks I went to (Day1)

  • Keynote: The Crux of Bitemporality: Jon Pither (Juxt) unveiled Crux the new database they have been working on at Juxt. The project aims to help with the problem of bitemporality, wich is when you have data with a createdDate and also a valideDate (or expiration date)

    One example he gave that stuck to me is: Imagine you are working as a detective on a criminal case, you have clues that define the timeline of your case, but maybe there are clues that are found a long time after the case started, and you need to both have the date the clue was found/discovered but also when it has an effect on the timeline of the case.

    Technical side: Kafka, RocksDB , LMDB for local use

  • Yetibot : Trevor Hartman (eBay) Trevor gave an overview of what is Yetibot, and how you can contribute to it.

    He did a live coding session on how to add a new fonctionality: adding a github search function for Yetibot

    Looks like a very fun project! And they have issue especially targeted to newcomer on the github page

  • Where to Start? Simon Belak (Metabase a BI company)

    Talk on how to dive in a very big project.

    1. REPL early and often but beware of traps like multimethod, def-ed function and macros
    2. Use tap>
    3. Ask for help! Don't get stuck for days

    On the side of project maker, how to help people joining:

    1. Good documentation at namespace and function level (cljdoc might be a good fit!)
    2. Validation of all public interfaces (clojure.spec) because it help get an idea on the shape of what input and what output is expected
    3. Make the code REPL friendly and document how to setup a REPL environment
    4. Use notebook: Klipse, Clojupyter, Gorilla REPL (also Party REPL for pair programming) to get newbies on board more quickly, without the hassle of setting up a system.
    5. Enforce small, single responsabilty fonctions
    6. Enforce a good namespace structure to help understanding and focus
    7. Having a well defined coding style (Linter clojurefmt?)
    8. Code reviews doh!
  • Machine Learning: from ABCs to DEFs Anatoly Polinksy

    Talk to understand what is a neural network. Anatoly had a project of takings photos of human moving toward it's door and explained very nicely how he was able to do that and how the system works on a high level.

  • Solving Problems the Clojure Way Rafal Dittwald

    First a quick presentation on the difference between imperative, OOP and FP.

    Then a very very good example (using Javascript so more people can follow along) on how you can solve the same problem the three different ways, and also a step by step presentation of how you transform OOP code into FP.

  • Lessons Learned Creating a Successful Machine Learning Startup with Clojure Alex Hudek Kira

    Started with a stack that looks like -> Clojure backend, Javascript frontend?, C++ and Java for Machine learning / data processing and as time goes by, they went -> Clojure backend, Clojurescript frontend, Go and C++ Machine learning / data processing.

    Hard to find ClojureScript people (unicorn), clojure people prefer by a large margin back end

Talks I went to (Day2)

  • Martin presented his project, cljdoc that aim at providing a unified way to build docs for all clojure and clojurescript projects. (Kind of readthedocs.io)

    To get docs on cljdoc, you need to push your code on clojar, and provide a config files.

    This project is actively looking for contributors and has issues tagged for newbies.

  • Cross Platform Awesomeness Henry Widd (Juxt)

    This talk explains the why/how of cross platform Clojure and demonstrates a new date/time library 'tick' that goes a long way to enabling cross platform programs.

  • Improving yesterday Eric Fode (CircleCI)

    Eric spoke about his failed startup and his reflections on what you can do to avoid his mistakes.

    My main takeaway of this talk:

    • Empathy and communication is very very important
    • Listen (really) at what your customers problem are, not what you think they are
    • And tech stack doesn't matter. Use what you know, what you like and what other people can also learn and use.
  • Residential Programming without Mutable State Thomas Getgood

    Drawing his inspiration in how Lisp systems (or Lisp machines) were working in the 60s and 70s (interlisp, smalltalk and also a newcomer language unison ) Thomas try to find new ways to deal with the problem of collaborative codebase and explore ideas to deal with code in a new way.

    Lots of open questions to explores but very cool idea.

  • Building My Own Clojure Tools Nikita Prokopov (Github: Tonsky)

    Nikita likes to change everything he works on/with to make it his own. He has done his own

    • font (firacode)
    • a minimalistic color scheme Alabaster
    • Clojure and EDN grammars for Sublime
    • Better Clojure formatting

    Kind of a design talk more than a technical talk but very nice ideas nonetheless

  • Raising Services and People with Clojure Balint Erdos & Katsuyasu Murata

    They explains their 3 months projects introducing Clojure to their work usually a Ruby on Rails shop.

    Balint was a intermediate Clojure developer and Kastuyasu was a total beginner, they use Party REPL (and Teletype ) for pair programming in the REPL to help the learning process,

    Their stack was: Aleph, Reitit, Ring, Mount, Faraday, Cljstache.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment