uix.css — fast css-in-cljs library v0.4.0 is out com.github.roman01la/uix.css {:mvn/version "0.4.0"} https://github.com/roman01la/uix.css
• new: Added support for SSR on JVM (see docs https://github.com/roman01la/uix.css?tab=readme-ov-file#server-side-rendering)
I'm excited to share the initial release of my first Clojure library: https://github.com/robinlahtinen/clj-artnet v0.1.0 — a pure-Clojure implementation of the Art-Net 4 protocol, designed to provide a high-performance, data-driven API for building lighting control applications on the JVM.
Highlights:
- Pure Clojure: High-performance, zero-copy architecture running on the JVM.
- Modern stack: core.async.flow running on Java Virtual Threads to drive NIO DatagramChannel.
- Compliance: Full Art-Net 4 protocol support.
- Data-driven: An API designed specifically for creative coding and real-time apps.
This is my first Clojure library release! To foster collaboration, I have created the #lighting channel. Whether you are working with DMX, integrating Philips Hue, or just curious about controlling lights with Clojure, you are welcome to join.
Funny, I was just looking up the status of artnet on the JVM two weeks ago! This will be very helpful for a project I've been noodling on in the background.
Oh, sweet! Just a week or two ago, I got exposed to Art-Net - tried controlling hand-made Christmas lights via TouchDesigner. It did work, but I think I have significantly more lights that the designated TouchDesigner node can handle, at least when it comes to WLED (that, or I couldn't figure it out, dunno). Ended up writing a custom Python script for TouchDesigner that talks to a WLED controller via DDP.
That sounds like a fun project! I actually got started trying to control Philips Hue lights programmatically. I first tried the C++ Hue SDK, but it was a bit heavy for quick experimentation. Then I found a Go-based Art-Net server that turns Hue lights into generic RGB fixtures for lighting controllers like grandMA 3 and QLC+. The issue for me was that those lighting control apps felt bloated and not very friendly for quick, precise experimenting, which is something a REPL-driven workflow in Clojure can offer. I looked into https://github.com/Deep-Symmetry/afterglow, but it doesn't support Windows, which I use, so I ended up building my own Art-Net implementation in Clojure, starting with just sending DMX data. Over time, it grew into a full protocol implementation, partly because I wanted to contribute something back to the Clojure community. I'm really excited about the possibilities Clojure can offer for creative, real-time lighting control! The REPL-driven development works exceptionally well with DMX and lighting setups, letting you experiment and adjust things live without interrupting the flow.
What do you use as a controller?
I have a personal setup with six Philips Hue lights, including a lightstrip that counts as three separate RGB fixtures. I use an https://github.com/Techwolf12/artnet-to-hue bridge (with few fixes) to control them via Art-Net DMX. For a controller, I've used QLC+ and MagicQ PC (with some help from a friend). Since few weeks ago, I mostly use my own clj-artnet library along with a personal Clojure lighting toolkit I'm building to create cool lighting setups at home. It works great for everything from parties to cozy moods and anything in between.
I'm planning to design a time-coded EDM light show using Clojure 🕺
Heh, awesome! Thanks for sharing. Can't wait to finally be done with renovation and also play around with LEDs that will be installed.
I'm no expert in the space but can this also be used for stage lights or is that a separate protocol?
Yes, absolutely. Art-Net is widely used for stage lighting. It is essentially DMX512 transported over Ethernet, so most professional stage lights that support DMX can be controlled via Art-Net using an Art-Net node or interface. From the lighting fixture's point of view, it is still just receiving DMX. So the same setup can control stage lights, architectural lighting, LED strips, or even smart lights, as long as there is a DMX or Art-Net path in between.
This is a conceptual diagram of a stage lighting system using clj-artnet and DMX.
New library: simple web statistics for Clojure web servers Blog post: https://tonsky.me/blog/clj-simple-stats/ Github: https://github.com/tonsky/clj-simple-stats
oh, this is amazing, thank you for making this! I've looked at alternatives, but there's so much stuff. Ring middleware to the rescue! 🙏 gratitude ❤️
https://mikrobloggeriet.no/stats | Ridiculously easy to use. Thanks again! 😊
Sneak Preview for clj-threats - we have released the first version. https://repo.prod.meissa.de/meissa/clj-threats clj-threats is devops style tool for continuous threat analysis. The system definition is compatible with threagile, but we added attack trees. We will enhance the attack tree library while using this tool for the threat analysis for federated forgejo. #clojure #forgejo #threat-modelling #attack-tree