Fork me on GitHub
#clojuredesign-podcast
<
2024-05-16
>
Marcel Krcah12:05:12

Hey @neumann @nate In the Sportify serie, you talked about the value of interacting with the real world. I wanted to share the impact this point has had on our project. We are implementing an https://evroaming.org/ for electric charging at work, in a bit of a waterfally approach, unfortunately, without lean/tracer-bullet approach. However, after listening to the serie, we decided to start interacting with other OCPI parties much sooner, even with our half-baked solution, and sometimes with ad-hoc scripts, just to see how parties behave and to get a feel for it. It was a bit unfamiliar in the beginning: why would we interact with the parties, if the OCPI spec is already there? Oh well; such interactions revealed quite some surprises, such as that not all parties follow the spec fully when required data is unknown, or that some parties use unexpected casing in http-headers that we didn't account for. So we are incorporating the learnings and feel more prepared in general. It feels as if "interacting with the real world" gave us a new, lighter, more feasible approach to experimentation, as opposed to a lean/tracer-bullet approach, which is not on the menu for this project. So, thanks a lot and looking forward to the next episodes ❤️

❤️ 3
Jason Bullers14:05:10

If there's one thing I've learned about "standards" is they're anything but. Weird exceptions, special cases, regional variations... The only thing you can trust is the reality you've directly observed Great that you were able to do that exploration!

💯 1
nate16:05:08

Wow, that's so cool! Glad you were able to interact sooner and start the learning process earlier in the project.

❤️ 1
neumann19:05:10

@U0609QE83SS Thank you so much for sharing! That's so satisfying to hear how that approach helped you get to those surprises early! You make a great point too about specs. It feels counterintuitive to interact early because everyone has the spec, but no one follows a spec 100%! You can't know which parts they won't follow, so you better find out sooner than later. Very cool example!

❤️ 1
neumann16:05:38

Do you find frontend codebases to be a dizzying array of complexity? Code, markup, images, media, events, bundling, frameworks, browser APIs, oh my! How do you keep it all organized and make sense of it? In our latest episode, we turn our attention to the frontend, and our eyes burn from the complexity. https://clojuredesign.club/episode/116-the-main-focus/

neumann16:05:52

Does anyone have a frontend coding horror story they want to share?

markbastian17:05:30

Oh, man, I wish I could. BTW, IDK if you've done an episode on htmx or other alternatives to the traditional SPA, but it might be worth doing.

neumann19:05:56

@U0JUR9FPH That's a great idea. I have to play with htmx more myself. Have you done much with it?

Nick20:05:46

Here is a repo where someone did the examples on the HTMX page (https://htmx.org/examples/) in Clojure: https://github.com/sandre1/clj-training/tree/main/htmx-demo/src/clj/nas/htmx_demo/htmx_examples And here is a todo app with Babashka and Clojure: https://github.com/prestancedesign/babashka-htmx-todoapp

neumann20:05:31

@U04A1LVBBPU Awesome! Thanks for sharing!

Casey17:05:28

Also I'd add a plug for Simple UI https://github.com/whamtet/simpleui a small clojure lib that helps you get going fast with htmx.

Casey17:05:03

Re the podcast episode, I found it interesting how near the end you basically landed on the same description of the frontend that re-frame uses "derived data, flowing" https://day8.github.io/re-frame/a-loop/

Casey17:05:40

The re frame docs are a highly recommended read even if you don't use re-frame, the mental model it eapouses for thinking about the frontend is very powerful

neumann16:05:06

@U70QFSCG2 Thanks for the links! Yes, the re-frame "data loop" is a great example of that. (Yes, they have great illustrations in their docs too!) I also used Redux back before I started using Clojure. A reactive loop seems like such a natural fit for UIs.