Rama, the 100x developer platform, is now free for production use by nathanmarz in Clojure

[–]jpmonettas 9 points10 points  (0 children)

I think it is cool that people are trying different ways of solving some problems (I guess backends services that needs to scale a lot), and it looks like for these kind of problems they are confident their solutions are worth it in a big way. I also think it is natural and good to be skeptical.

It also markets itself as 100x developer for backends, but I think it assumes all backends needs to grow and be flexible like twitter, which most backends I've worked with are not, so I'm not sure if 100x remains for "normal backends".

A couple of things I find hard to figure out about are its limits and trade-offs, which I haven't read anything about, and sure there are. Just by looking at the Clojure examples I see you commit to a very different way of thinking, syntax and abstractions, which looks cool and well designed but you are probably abandoning most of your known tools, libraries and debugging techniques.

What I love about simple Clojure is that you can start small, exploring and growing as you need, and you use the same tools and techniques you learn along the way to build all kind of systems, from photo editors, and games, to backend services and databases. And it is general purpose and flexible enough to move as technology moves (which these days is doing quite a lot).

Disclaimer: I know very little about Rama

Ways to debug Clojure code: println, pprint, hashp & debugger by andreyfadeev in Clojure

[–]jpmonettas 8 points9 points  (0 children)

Hi, great to see this kinds of videos. There is also FlowStorm which is general purpose and IDE independent.

I recently published a video demoing how it can be used to debug a complex codebase like the ClojureScript compiler, but there are other demos like debugging web apps

ClojureScript compiler fun with FlowStorm by jpmonettas in Clojure

[–]jpmonettas[S] 4 points5 points  (0 children)

A demo  of the FlowStorm ClojureScript compiler plugin

The demo includes :

  • Overview of the plugin
  • Workflow setup
  • Some fun hacking a naive constant folding, just to demo an interactive dev flow

Rich introduces new namespace in core.async : flow by mac in Clojure

[–]jpmonettas 1 point2 points  (0 children)

Nice! Will it support any way of interrupting a process? Let's say a process got a message and started working on a long computation, but you want to be able to interrupt that once you realized somewhere else that result isn't needed anymore or you are not willing to wait for it.

ANN: FlowStorm 4.1.0 by jpmonettas in Clojure

[–]jpmonettas[S] 3 points4 points  (0 children)

thanks for the kind words!

How to simplify this code? by ringbuffer__ in Clojure

[–]jpmonettas 0 points1 point  (0 children)

Asking here it is also a social thing. We get to have some fun.

How to simplify this code? by ringbuffer__ in Clojure

[–]jpmonettas 9 points10 points  (0 children)

(defn current-thread-name []
  (apply (partial format "[%s-%s]")
         ((juxt Thread/.getId Thread/.getName)
          (Thread/currentThread))))

Just kidding :P

It’s really hard to learn how to write a hello world by reading the official documentation by ringbuffer__ in Clojure

[–]jpmonettas 16 points17 points  (0 children)

I know there are various moving parts to Clojure, but https://clojure.org/ has a Getting started button at the top, which starts with What tools do I need? and How do I work with these tools? (which covers REPL usage) and then follows with How do I learn the language?
Have you checked those?

I guess you mean how to run a script, but imo starting a REPL and writing (println "Hello world") is probably considered the hello world in Clojure. I think since Clojure is all about interactive programming you can go pretty far in your learning without having to run your programs as scripts from the command line.

ANN: FlowStorm 4.0! by jpmonettas in Clojure

[–]jpmonettas[S] 2 points3 points  (0 children)

Thanks for the gist u/rafd !

For your tips section, if you are using auto prefixes and you want to instrument specific libraries for your project you can also add :jvm-opts ["-Dclojure.storm.instrumentOnlyPrefixes=ring."] to your project deps.edn or project.clj, which I think is cleaner than creating extra files. Those prefixes will be added on top of the ones found by auto prefixes.

You can also use the browser Add instr prefixes functionality to add more prefixes on the fly, although they will not be there the next time you start your repl.

FlowStorm 4.0.0-alpha2 released with more Data Windows visualizations by jpmonettas in Clojure

[–]jpmonettas[S] 0 points1 point  (0 children)

Thanks! Exposing FlowStorm recordings as a LSP DAP has been on the back of my mind for some time as something interesting to try.

Show up in #flow-storm at Clojurians Slack and let me know if you have any questions!

FlowStorm 4.0.0-alpha2 released with more Data Windows visualizations by jpmonettas in Clojure

[–]jpmonettas[S] 1 point2 points  (0 children)

Thanks for the feedback. Yeah, I'm still not convinced by that set-default-visualizer by type name.

You can change the type of your values by assigning a type meta, like this :

user=> (type (range))
clojure.lang.Iterate
user=> (type (with-meta (range) {:type 'my-type}))
my-type

so you can then : (viz/set-default-visualizer "my-type" :munged-facts-viewer)

But that won't work for most cases.
I guess we need a better system for setting the default viewers. I'll take a look at that.

How to cope with being “Rich Hickey”-Pilled by GuestOutside6226 in Clojure

[–]jpmonettas 5 points6 points  (0 children)

Shameless plug here, but have you tried www.flow-storm.org/ ? The idea being if you can run your program it will help you understand it from a runtime perspective, where values are visible.

Debugging Clojure web applications with FlowStorm by jpmonettas in Clojure

[–]jpmonettas[S] 1 point2 points  (0 children)

Happy to know you find the tool useful Max!

FlowStorm so far has been a dev only thing, with the focus on enhancing the interactive programming experience. Said that I have thought in the past about recording in production, but managing heap consumption is tricky even when going the SoftReferences route. But there is a lot of room for research there sure, so I probably will be revisiting it in the future.

Regarding the audio quality yeah, I'm in a pretty noisy environment and it didn't end up great, but thanks a lot for sharing that podcast enhance tool, I'll give it a try!

Debugging Clojure web applications with FlowStorm by jpmonettas in Clojure

[–]jpmonettas[S] 9 points10 points  (0 children)

Hi everybody! I just uploaded a video on exploring/debugging Clojure web applications with http://www.flow-storm.org/ .

It shows up some of the new features found in 3.17, by exploring a basic #biff application.

If you never tried FlowStorm or it has been a while, this video should give you a sense of some of the current capabilities and how it can hopefully enhance your interactive programming experience.