Trucks, tubes and truth – event-driven systems
30 points • 8 comments
From 1/7/2011, 1:27:17 PM till now, @jgrodziski has achieved 2151 Karma Points with the contribution count of 139.
Recent @jgrodziski Activity
Trucks, tubes and truth – event-driven systems
30 points • 8 comments
Humble Decomposition
44 points • 11 comments
UnFIX Model – Alt. To Safe, Less, Holacracy, Mgmt 3.0, Spotify, Matrix Orgs
2 points • 0 comments
I made this introduction to DDD [0] with my friend Thomas a few years ago. It was specifically intended at developers and to be very practical.
[0] Video of the talk: https://vimeo.com/167722768
GraalVM issue an error if it can't resolve the proper method call or if another Thread is involved in the computation so I find it pretty safe to use. Of course, GraalVM doesn't exempt you from doing some tests.
Starlink Satellite Map
3 points • 0 comments
I'm one of the few client here in France for a few days. I moved from Paris to a quite isolated area (Vercors mountains) with only ADSL (no mobile coverage), and it's night and day, I now get between 100 Mbps and 200 mbps with 30/40 ms latency... I don't have a lot of time with the service to give an exhaustive feedback, but for the moment I'm able to do video conferencing and call perfectly. And the setup experience is great!
A History of Clojure – HOPL Conf 2021
3 points • 0 comments
Orbital Mechanics – How do rockets get to where they're headed?
135 points • 59 comments
How much can a Clojure developer do alone?
113 points • 102 comments
Software Design for Flexibility
109 points • 39 comments
I have the same setup (re-frame SPA, websocket, etc.), the only page that is themed with Keycloak is the login and password change page, everything else is handled by API calls.
I prefer to deal with account data and logic in a dedicated component that map with users stored in Keycloak. Even if you can associate custom attributes with user and groups, I don't think it's a good idea to do so (performance, separation of concerns, etc.).
For me Keycloak jobs is to handle authentication and authorization data and/or logic (authorization service is very well designed but a little bit complex), for simple use-case a role check in the application is enough.
You can theme the Keycloak UI to be similar to your app's one, particularly the login/registration screens so the user experience is very smooth. But you can also define the user/account UI and logic in your app and just delegate the authn and authz data through the Keycloak APIs.
Feel free to ask me anything about Keycloak in the Clojure ecosystem. The README of keycloak-clojure needs some lifting but hopefully you'll find everything you need.
Keycloak is a great piece of engineering. It's a robust IAM, fully-featured, easy to deploy and integrate with. My opinion is that people should rely on battle-tested 3rd party solution like Keycloak for their authentication and authorization needs.
We run it in production on GCP and it integrates nicely with the Clojure ecosystem (both on the frontend with a SPA and on the backend dealing with REST API security).
Shameless plug: I maintain the keycloak-clojure wrapper: https://github.com/jgrodziski/keycloak-clojure (You'll find some explanations of the Keycloak concepts in the README).
Production-Oriented Development
115 points • 62 comments
Production-Oriented Development
3 points • 0 comments
See also that repo with a skinparam for a "not ugly" plantuml style: https://github.com/matthewjosephtaylor/plantuml-style
Interactive Explanation of Hysteresis (2018)
1 points • 0 comments
I've used Clojure several times for production-ready software and it's a breeze to operate. Concerning production-readiness, here are my takes about it: - a major requirement is a good integration with infrastructure softwares like databases, search engine, messaging, IAM. As Clojure is hosted on the JVM, the integration is very simple with already available drivers for Postgres, Kafka, Solr/Elastic Search (easier as the protocol is a REST API), Keycloak, etc. - Cloud integration, even for Serverless, is very easy: just transpile to Javascript (Google Cloud Function) or Java (AWS Lambda) - build and package management are very mature with Leiningen, the latest "tools.deps" have, IMHO, very interesting characteristics of simplicity (composibility at core and simple "main" interface for invoking build process) - You'll need top notch security: OpenId with Keycloak makes it very easy to have a very good IAM system (disclaimer: I make a Keycloak Clojure wrapper https://github.com/jgrodziski/keycloak-clojure) - Good operability is also a must-have: structured logging (look at Cambium), metrics (Prometheus), good performance of the JVM, good monitoring and profiling - On the development Side, the productivity of using clojurescript with reagent/re-frame and the development flow both on frontend and backend is a killer argument. The possibility of isomorphism (running the same code on the frontend and backend) makes it very easy to share the same domain between the backend and frontend.
In the end, Clojure is amazing and fun, and it's production-ready for a long-time. I made a talk at the Clojure Paris meetup 3 weeks ago (slides here: https://speakerdeck.com/jgrodziski/clojure-project-in-the-fi... only the 3 first slides are in french, the rest in english).
site design / logo © 2022 Box Piper