This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-12-15
Channels
- # adventofcode (110)
- # announcements (30)
- # aws (2)
- # babashka (39)
- # babashka-sci-dev (112)
- # beginners (155)
- # calva (5)
- # cider (12)
- # clj-kondo (11)
- # cljs-dev (1)
- # cljsrn (2)
- # clojure (144)
- # clojure-australia (2)
- # clojure-europe (14)
- # clojure-nl (5)
- # clojure-spec (3)
- # clojure-uk (2)
- # clojurescript (22)
- # core-async (23)
- # cursive (31)
- # data-science (3)
- # emacs (12)
- # events (1)
- # fulcro (8)
- # honeysql (7)
- # jobs-discuss (11)
- # lsp (1)
- # missionary (28)
- # nextjournal (7)
- # off-topic (64)
- # pedestal (3)
- # polylith (19)
- # reagent (14)
- # reitit (12)
- # releases (4)
- # shadow-cljs (33)
- # tools-deps (3)
- # xtdb (3)
https://terranostra.one/posts/ASCII-Art-Animations-in-Lisp.html there is some very nice syntax highlighting (for Common Lisp) in this post; I've never seen this type of contextual structural highlighting before, even in an editor (mouse over the let bindings to see it in action)
I think it's this library doing the work: https://github.com/kingcons/colorize
you may also like: • Inspiring a future Clojure editor with forgotten Lisp UX - Shaun Lebron, https://www.youtube.com/watch?v=K0Tsa3smr1w • https://gist.github.com/cellularmitosis/c43c3988e1e2b76ed5519e2473158afb here's the timestamp when he talks about "filling" https://youtu.be/K0Tsa3smr1w?t=724
followed the link to https://github.com/coleslaw-org/coleslaw which it looks like the author uses to generate their site
Hello. I'm studying the pedestal jetty/websocket API
I found a blocking call inside a go-loop.
As far I know, this is a invalid call, once will park block a go-thread and may end up in a deadlock scenario.
Stacktrace:
go-loop
https://github.com/pedestal/pedestal/blob/0.5.9/jetty/src/io/pedestal/http/jetty/websockets.clj#L48
ws-send
https://github.com/pedestal/pedestal/blob/0.5.9/jetty/src/io/pedestal/http/jetty/websockets.clj#L51
sendString
https://github.com/pedestal/pedestal/blob/0.5.9/jetty/src/io/pedestal/http/jetty/websockets.clj#L25
sendString
https://github.com/eclipse/jetty.project/blob/jetty-9.4.35.v20201120/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/RemoteEndpoint.java#L108
Nice catch. I'm not sure but I think you are using the word "park" wrong here. If I understand parking is what you should do in go blocks (it's what <! >! etc. do), and what is happening here is called blocking.
for example the doc string for <! https://clojuredocs.org/clojure.core.async/%3C!
park
and block
are thread states?
A thread can be parked
or blocked
parked
is accepted in go
blocks
blocked
is not accepted in go
blocks
my understanding is a thread is running or blocked, and the core.async state machine allows a go block to park (suspend) and resume when data is ready, maybe on a different thread
maybe clearer: you can't park a thread, you can park a go block
like, threads are "real" and exist on an OS level, go blocks (and the concept of parking) belong to the world of core.async and are translated into state machine transitions and queue operations in the vm
Thanks for all clarifications @U051SS2EU https://github.com/pedestal/pedestal/issues/696
https://github.com/pedestal/pedestal/issues/497 looks to be related
I think I'm going to change my job title from Senior Software Architect to Senior Software Updater at this point... 😕
log4j updating specialist
Hi, my name is seancorfield. Visit me at http://logforge.io (unfortunately this domain is already taken xD)
💙 Hope the end is in sight. I mean, you know, in a good way. 😂 Dying to ask, @U04V70XH6 — what's been most surprising part of it all? Is it all just tedium of updating dependencies, or has it revealed things that are genuinely startling and idiosyncratic about JVM? (Beyond the shocking nature of the huge surface vuln surface area of log4j. My mind still reels at scope of this.) I ask because yesterday I learned a ton more about a new dimension of classpaths that I never knew even existed — @U04V15CAJ taught me about classpath-overrides and aliases vector in depstar, in context of native images.
I also should've told you that depstar is deprecated, but we didn't get to that part yet :)
@U6VPZS1EK At this point, I'm "old and jaded" so nothing really surprised me about it. I mean, I can totally trace the path of how they went from simple string extrapolation for Java properties to environment variables to "any lookup that the Java standard library supports out-of-the-box", especially given the way so many "Enterprise Java" shops think about configuration and so on (I started doing Java in 1997 so I've seen nearly a quarter of a century of code there). And as a long-time OSS project maintainer (since 1992!), I know all too well just how easy it is to accidentally introduce potential security issues and attack vectors into code, in the name of "convenience" -- witness https://github.com/seancorfield/next-jdbc/issues/194 for example. That wasn't something I'd even considered (that someone would run one of the "friendly" SQL functions in next.jdbc.sql
passing in a map whose column names came from user input unsanitized!
And, yeah, depstar
is archived in favor of tools.build
per https://github.com/seancorfield/depstar#use-toolsbuild 🙂
Thanks so much, @U04V70XH6 — crossing fingers some reasonable resolutions come soon!!! And I found a case where depstar creates an uberjar successfully but tools.dep didn't. I will try to generate a reproducible case “soon.” In the meantime, I continue to enjoy and appreciate depstar. 😂😂
@U6VPZS1EK Happy to help you migrate from depstar
to build-clj
etc. There were initially a few edge cases that I didn't realize were only possible in depstar
but as far as I know those are all addressed at this point. Feel free to DM me about it.
Roger that — thank you so much for the offer, and hoping it will just work!! And will definitely work to post a test case if it doesn't. May you have a great weekend, free of problematic logging!
I remember watching a talk (Rick Hickey's one I believe) where the presenter shares this idea that you cannot build flexible system on top of rigid systems, and that strongly typed systems can actually be a problem because systems are so specific that changing them is a pain. Does anyone knows which talk was? Is there any research to back this idea up?
On the surface, the idea sounds strange. And you probably mean "statically typed", not "strongly typed".
If a statically and even strongly typed language supports some umbrella type (`void *` or Object
) and has collections where you can put objects of that type, you can already build anything you want with it.
also covered a bit in https://www.youtube.com/watch?v=2V1FtfBDsLU
Truth be told, it's hard to think of a Rich Hickey talk where he doesn't touch on this 😆
Thanks everyone. I was not sure about the exact words and that's why I want to re-watch it. If I find it I will share it here.
Any thoughts, experience or recommendations for internal company knowledge bases and shareable notes and outlines? I have an obvious bias towards Roam / Athens / Logseq. Some are gung-ho for Notion Need more perspective. Integration with Jira and gitlab is a plus
I use Roam personally. I suggested and we use Notion for internal company. My reasons: • I feel pages, and a hierarchy of pages is the right abstraction for teams. It’s the level where a team can find agreement. It also makes is obvious where the access control is applied. • Notion has just-enough structure. The databases in Notion adds loads of leverage. • Notion is far superior for documents. The UX feels so very, very good when writing in real-time. I type up emails in Notion and copy-and-paste to GMail for perfect formatting. Copy&pasting into-and-out-of-Roam is … not good. • You can share only certain pages and their children with the public internet. Behind a non-indexed link, which is something we use all the time now. And allow it to be view-only, comment-only, or even editable. Without the guest user needing an account. • Having Slack updates configurable per-page and its children is useful Roam is better when it is just me and my brain trying to make sense of the world. I miss Roam’s speed of the local-database when I use Notion. And Notion’s offline story is... weak. There is some, but I do not trust it. I trust Roam’s implicitly.
This is an example of a public page, to make it slightly topical: https://www.notion.so/matterindustries/Clojure-101-47c7cb41975347cbbca74e6ebeb9517a
Git/github is already a tree of knowledge, can be very much Roam-like
People don't fully realise (in both senses of the word) this.
Some nuances that make this a reality:
create high-quality issues
use links to refer to things
use extended commit messages
use clojure's facilities (defn/ns docstrings, testing
strings) to refer to this knowledge
I like the idea of using git How would you handle meta knowledge, such as which APIs and services are worked on?
When you have a bunch of services and APIs, do you have some centralized place where you list all of them, how they communicate, how the system is built?
GitHub discussions can be used as StackOverflow-like documentation.
I don't like external documentation because it rots pretty quickly. Instead one can do a mixture of inline documentation (docstrings etc) and thoroughly descriptive PRs. For example, a PR body can include a diagram. But that diagram is just a snapshot in time of how the codebase looked like then, it's not something to merge, maintain, etc Perhaps one can add a few more mechanisms to the equation e.g. auto-generated diagrams or statistics that can be run from the cli/repl but aren't really persisted (persisting = leaving to rot)
I think there was a pretty famous essay defending code is documentation, maybe it's the one from Jack Reeves linked here? https://martinfowler.com/bliki/CodeAsDocumentation.html
I tend to agree with you and like the alternative you suggest, mostly trying to convince myself now
@U45T93RA6 so all internal stake-holders with knowledge about how the systems should work together are fluent in git? that's never been my workplace experience
non-tech stakeholders caring about tech intricacies at all? That's a problem I'd love to have :)
I think I misunderstood the scope of this discussion
> Any thoughts, experience or recommendations for internal company knowledge bases and shareable notes and outlines? nothing about that said "tech stack only" to me
for context, my last job had complex interactions between departments for non tech jobs (due to industry conventions and regulation) which were woven into the tech
A model which I've seen work reasonably well is emitting .md files dynamically out of clojure code/data. Programmers would consume .clj, biz .md. CI would make sure .md is up-to-date
Anyone know a good license which is good for protecting against SaaS hosting without negotiation? e.g please don't just run my code in your own SaaS and sell it? I've seen https://www.elastic.co/licensing/elastic-license any others like it? I think with elastic its like an anti AWS repackaging license.
I was looking into this and was searching for a generic license like the one from timescale but I guess there is none so far. You would have to craft it yourself.
Thanks for the tips, with all these things its a balancing act as I also do not want to hinder adoption. I think given my meagre aspirations I might just go MIT and take my chances 🙂
Take a look at the work of https://kemitchell.com/, a lawyer and programmer who has done a fair bit of thinking about how to balance open source with commercial viability: https://blog.licensezero.com/2017/09/12/manifesto.html https://polyformproject.org/licenses/ https://github.com/kemitchell Largely US-centric in terms of background and law, but worth looking at.
Any recommendations for a GitHub Action to bump the snapshot version in a project.clj file or deps.edn file on merge to a protected branch? Essentially an action that creates a new pull request to update ‘(defproject com.company/repo-name “1.0.8”’ to ‘(defproject com.company/repo-name “1.0.9-SNAPSHOT”’ and then automatically merges the new pull request into the protected branch? I've looked at http://GitHub.com/guardian/actions-merge-release-changes-to-protected-branch, and would like to know if a similar feature already exists for Clojure that I could use before writing a new action.
Perhaps this may be of use? https://github.com/liquidz/antq-action