timbre
integrant
timbre | integrant | |
---|---|---|
5 | 14 | |
1,434 | 1,191 | |
0.2% | - | |
7.6 | 6.3 | |
12 days ago | 8 days ago | |
Clojure | Clojure | |
Eclipse Public License 1.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
timbre
-
Tracing: Structured Logging, but better in every way
There are logging libraries that include syntactically scoped timers, such as mulog (https://github.com/BrunoBonacci/mulog). While a great library, we preferred timbre (https://github.com/taoensso/timbre) and rolled our own logging timer macro that interoperates with it. More convenient to have such niceties in a Lisp of course.
-
A History of Clojure (2020) [pdf]
Mentioning μ/log and no mention of timbre (https://github.com/taoensso/timbre), that is an odd omission. Malli is a great mention, but there ought to be a mention of clojure.spec (https://github.com/clojure/spec.alpha) which has much more mindshare.
-
Rich Hickey – open-source is Not About You
If you're not familiar with lisps in general, it might be hard to grok the differences between lisp-macros (as used in Clojure) and "normal" macros you see in other languages.
But, if you are familiar already, and just wanna see examples of neat macros that makes the API nicer than what a function could provide, here are a few:
- https://github.com/clojure/core.async/blob/master/examples/w...
- https://github.com/weavejester/compojure
- https://github.com/ptaoussanis/timbre
- https://github.com/krisajenkins/yesql
-
Build and run Clojure projects. CLI, tools.deps and deps.edn guide
When clj is invoked, two libraries will be available in our code: timbre logging library which artifacts taken from Maven, and test-runner, taken from GitHub.
-
Tour of our 250k line Clojure codebase
No, I don't think they were hyped at any point.
They are used in certain libraries like https://github.com/ptaoussanis/timbre but for things that are simply not possible without macros, for example (timbre/spy (+ 1 1)) will actually print both the expression and the result:
DEBUG [ss.experimental.scratch:1] - (+ 1 1) => 2
Perhaps if the macros are "simple" they can be unpacked relatively easily. I do understand how mentally challenging that can be for somebody who's just starting with Clojure. I've been using Clojure for ~8 years and only just recently became more comfortable with macros after I made a conscious effort in that direction. I'm still far from an "expert" in them.
integrant
-
I Hate NestJS
Have a look at Integrant from Clojure: https://github.com/weavejester/integrant
-
A History of Clojure (2020) [pdf]
* Lifecycle management: Mount, Integrant or Component (https://github.com/tolitius/mount https://github.com/weavejester/integrant and https://github.com/stuartsierra/component)
-
Any resources for "current best practices and learnings?"
Allesandra Sierra’s Component has lots of competitors now: first mount which has since fallen out of favor for integrant. There’s newer ones too, like clip and donut-power.
- Clojure needs a Rails, but not for the reason you think
-
How can I learn functional programming?
This was the missing piece for me at least. As mentioned in another reply the Imperative shell, functional core helped me a lot with that. I discovered it through Clean Architecture and by using some micro-frameworks in Clojure that really emphasised the use of the pattern.
-
Reloaded workflow with nbb & expressjs
After reviewing the options, I settled on weavejester/integrant because it's small - only one dependency and two source files in total.
-
[ANN] Reveal Pro 1.3.308 — sticker windows for system libraries (component, integrant, mount)
Today I released a new version of Reveal Pro — dev.vlaaad/reveal-pro {:mvn/version "1.3.308"} — that adds sticker integration for system libraries such as mount, component and integrant!
- Little confusion trying to understand Integrant's source code
-
Forcing engineers to release by some arbitrary date results in shipping unfinished code - instead, ship when the code is ready and actually valuable
Component is nice but I found the records and protocols annoying to work with. Have you checked out Integrant? That ones been my preferred component-style library.
-
Tour of our 250k line Clojure codebase
I don't really like 'Component'. I seems very clunky and we had a lot of issues with it and a lot incidental complexity in our codebase (now converted to Java). It was the first real system that did these sort of things but if I start a project now, I much rather use Integrant or Clip.
https://github.com/weavejester/integrant
https://github.com/juxt/clip
I haven't used Clip a lot yet but my next project is defiantly going to be with Clip.
What are some alternatives?
mulog - μ/log is a micro-logging library that logs events and data, not words!
component - Managed lifecycle of stateful objects in Clojure
clj-new - Generate new projects based on clj, Boot, or Leiningen Templates!
mount - managing Clojure and ClojureScript app state since (reset)
rlwrap - A readline wrapper
re-frame - A ClojureScript framework for building user interfaces, leveraging React
clip - Light structure and support for dependency injection
wonderland-clojure-katas - Clojure Katas inspired by Alice in Wonderland
test-runner - A test runner for clojure.test
learn-you-a-haskell - “Learn You a Haskell for Great Good!” by Miran Lipovača
Luxon - ⏱ A library for working with dates and times in JS