This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-01-02
Channels
- # babashka (117)
- # babashka-sci-dev (6)
- # beginners (34)
- # biff (2)
- # calva (7)
- # clj-kondo (27)
- # clojure (6)
- # clojure-dev (8)
- # clojure-europe (41)
- # clojure-israel (1)
- # clojure-nl (1)
- # clojure-norway (2)
- # clojure-uk (1)
- # clojurescript (22)
- # cursive (3)
- # datascript (12)
- # dev-tooling (4)
- # emacs (13)
- # hyperfiddle (60)
- # introduce-yourself (8)
- # joyride (9)
- # lsp (46)
- # malli (3)
- # mranderson (75)
- # off-topic (40)
- # pathom (9)
- # pedestal (4)
- # reagent (11)
- # reitit (18)
- # releases (2)
- # shadow-cljs (81)
- # squint (18)
Happy new year đ !
Good morning in the new year! Workdays returned too soon, we didnât get all of our holiday goings-on done at all.
Happy new year, dear friends! Letâs hope it will be a good one! I would like to ask you all a favour and have a look at https://blog.jakubholy.net/2022/language-of-simplicity/ and share your thoughts with me đ Letâs make software development better!
Thanks for sharing this. I liked the read. I think I need it to be slightly more concrete in order to more fully grasp the concept. Maybe the further reading provides that? I havenât checked, yet. A thing I wonder about is the challenging of the level of separation between frontend and backend. How does that relate to the DSL message?
Thank you! I will think about how to make it more concrete. The last sentence in the blog, which mentions FE x BE separation, is a little orthogonal to the post itself. The whole post is based on the assumption that we are doing software development wrong and need to think out of the box. The last sentence simply challenges the reader to think out of the box in general. I see how it is confusing.
Thank you for sharing, I enjoyed reading it. As I understand it, you are talking about being at the right level of abstraction for any given part of a software system. In other words, we should be programming in the language of the domain. The Pragmatic Programmer book has a section on this as well you might enjoy. Regarding abstraction, I remember reading an approach to building these abstractions in layers; with the goal of each layer of abstraction being implemented only in terms of the layer directly below it. This is not new, what caught my attention was a very structured approach to detecting which layers the individual pieces belonged to. I wish I could remember where I read that.
Can it have been something from Eric Normand? I recall reading something about Onion Architecture...
You are absolutely right, it was from Eric Normandâs Grokking Simplicity! The chapters on Stratified design are really good.
Thank you for reading. Matthias! > talking about being at the right level of abstraction Yes and no đ You are right that this is a part of it but I try to communicate far more than just this. âRight levelâ is one thing but âright abstractionâ is another one. Also, when speaking of abstractions, people often mean abstractions they build in code. I am trying to emphasise that also our libraries and the programming language itself are part of this - and they form a synergetic whole and thus need a holistic approach. Also, I very much like the metaphor of a language and optimizing it to be able to express the things important to us. Abstractions are things, while language is a system that works with abstractions and enables us to relate them to each other and combine them and, most importantly, describe the system (software) that we want.
That makes sense. As you write, a language, be it for human speech or not, is a tool that enables the building of abstractions by combination. The abstractions cannot exist without a system that defines the rules of combination. Have you though more about what a holistic approach that encapsulates libraries and programming language could be? I think package managers and dependency management tools are the languages for that holistic approach. They allow us to express the needs of our programs and how to run them declaratively. So in a sense they form a language to describe what our programs are and which programming languages they use to define what they do. Could we consider the holistic approach to be a tower of languages, each defining the abstractions that make sense? Sort of the stratified design lifted above the code level. This is a fascinating topic.
By âholisticâ I mean design a language for your domain so you can more easily define the domain abstraction you need and pick the right libraries that will make defining and implementing these abstractions and working with them easier. I.e. all these 3 parts influence each other - either positively or negatively.
I wonder if anyone could test something for me please? I have a small test repo with a single deps and clj file in it,
that if you run clj -X:antq
, for me the version of expectations, for me, is upgraded to 2.1.1.
git status
after running shows:
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
.cpcache/
nothing added to commit but untracked files present (use "git add" to track)
The repo for expectations is
, yet the coordinates are https://clojars.org/com.github.seancorfield/expectations
maybe check your local m2 repo?
ls -l ~/.m2/repository/com/github/seancorfield/expectations
Do you see a 2.1.1
there?If I have http://jitpack.io as source of dependencies, that pulls down the errant 2.1.1 version