Morning, going to give a Rama presentation this morning.
Good luck! I've looked into Rama briefly, and I’m wondering if it makes a good solution for applications beyond stream processing; would it be a good or bad fit for more general application development?
I think it's a good model for general backends. Not so sure regarding a local application.
for backend yes... local probably not.
well... I survived it...
but presenting to a laptop sucks.
Tough crowd?
a room with people is 1000 times better.
1 person asked what twitter didn't know and Rama did know... regarding the mastodon clone they wrote.
Twitter wrote several databases to solve their problem, no?
yes, flockdb was one of them
and I think they started out on mysql and moved to a graph db
And Nathan worked for Twitter for a while, no?
yes, he was in a start up called backtype I think and they got acquired by twitter
it is where he worked on Storm.
To say, Rama was built with problems like Twitter in mind. "What if you had a generalized backend that could dolce Twitter's issues" What Rama knew that Twitter didn't? It's about what they had - hindsight
good point
you can also plot an evolutionary process in the design of Data Intensive Applications here, and some convergence with event sourcing and single level stores. Kafka Streams, Datomic, Samza, Storm - eventually you end up with: • data and compute should be colocated • compute should be reactive • compute results should be checkpointed immediately • there should be support for a natural partition of data + compute you couldn't end up with anything other than Rama
that is, if you wanted a generic backend. If you wanted a restrictive subset you could use materialize dot io or Naiad
nice idea
Thanks. I guess this explains why I'm bullish on Rama
🙂
same here
did you manage to convince your colleagues?
one of them seems to like the idea.. .for the rest no clue as it was an online presentation
I've been psyopping my colleagues dropping "Rama fixes this" for every issue we had in our backend in the past year
🤣
good idea.
I had that for a long time with Clojure.... and at a certain point it felt like that Clojure was the answer to all questions, regardless the question.
(probably true, but it feels like clichee(?))
I wouldn't do real time or HFT in Clojure
I'd use Jank!
fair point
then again... I wouldn't wanna do HFT.
There is a disproportionate concentration of good taste and good design in the Clojure world, we're justifiably biased
HFT is very interesting from the engineering challenge perspective
ooh yes, I agree. But from a morel perspective not so much
There are other performance sensitive domains, like game engine design, take your pick. There's an argument to be made that HFT is necessary and inevitable, but that's for another thread 🙃
yup
What's HFT?
High Frequency Trading
Do you think Rama would be a reasonable replacement for Datomic? Not everything has an ingest/high volume bottleneck, but I'm wondering about developer productivity and code evolution affordances.
No idea TBH, you would have to build your own time traveling...as Rama can do/does update-in-place. (from all I understand)
you could, I recall reading about someone who implemented an indexed triple store on top of Rama
nice, would be cool to hear more about this. And I guess you can build an XTDB equivalent as well.
Besides time travel, I'm not sure why you'd want to do that in Rama
https://blog.redplanetlabs.com/2025/03/04/how-multiply-went-from-datomic-to-xtdb-to-rama/
no idea either
as the big idea is to build materialzied views tailor made for your application, while triple stores are generic
but this might answer some questions
(there was a max of 64 people at the talk, not bad IMHO)
yes, thanks, i've seen that blog post. Databases like Datomic, SQL, etc. make it pretty straightforward to, for example, create a users table / entity and start adding and querying data. I've tried this with Rama but felt very counter intuitive for these purposes and hard to iterate on. Of course, that's likely not rama's fault. What's your take on that?
You start with the questions you're going to ask about data (query), design a pstate to accommodate them, system events, then write the ETL to injest the events into the pstate
There's so little to it it's disorienting in the beginning
morning! ☕
good morning, may… oh well, just good morning 😀
morning!
good morning
good morning
morning!
Starting to think I should turn https://github.com/piglet-lang/piglet into a cljs dialect, would be so nice to have a cljs that's a real lisp
elaborate! Is it the "What's not there yet" part from the homepage that's missing, or is there more to it?
it's a different language right now, it's not meant to be able to load existing cljs code, but it could be made to do so
there are differences in syntax and differences in semantics
here's some example piglet code https://github.com/plexus/fogio/blob/main/src/main.pig
biggest work would be around namespacing/packaging, handling deps.edn, jars, etc
plus everything from "what's not there yet", but some of those can still wait a bit longer
the dev experience is great though, you run pig pdp in the project (for node), or you load the a page with some bootstrap code, and you're instantly evaluating stuff in emacs. No waiting for a build, no "you can't use your repl because you have a syntax error" or any of that nonsense
nice 🙂 > Support for editors beyond emacs What's missing for neovim?
Someone doing a pdp server implementation in lua or fennel I suppose
Piglet does have a minimal nrepl implementation somewhere so you can try that too
And syntax highlighting etc is its own story of course, we have an emacs piglet mode based on treesitter
Morning
Morning
Good droplet morning
Morning!
Morning!
@seancorfield Just curious, since I still struggle with finding a balance with Slack. Do you have notifications enabled? Does it interrupt your focus? Any tips for separating out critical messages vs just chatting (low priority) messages?
I get notifications and badges for @'s and threads I've contributed to. Sometimes I turn off notifications for a thread if it goes beyond what I'm interested in. Otherwise unread channels are bold (and I can ignore them).
And if I do get a pop-up notification on my desktop/laptop, the pop-up has enough context that I can tell at a glance whether I need to go read/answer it or not. Depending on how much self-control I have at that moment 🙂
Yeah, I'm not very good at the self control part when it comes to Slack. I'm way too curious!
Good job you're not a cat...
That still happens?
Every once in a while. I wanted to pay tribute to the legacy that you've created.
I love this channel! It's so uplifting! I can't recall if I found something for the Deref in here or not, but while I have Slack open for the Deref, I go through the channels. I try to ignore Slack for 80% of my day because it's way too irresistible for me. 😊 🍬
We use Slack at work so it's always open and it's part of how I interact with Jira and BitBucket (as well as my few remaining colleagues!). That means I always have at least three and sometimes four Slack workspaces open (work + this one + LGBTQ in Tech + maybe another community), which makes it really hard to ignore for all the hours I'm awake... and I've been kind of terminally online for years now (even in my 60s!), so Slack is only one of several real-time chat apps I have open across dozens of communities.
Where in the world is Christoph? 🙂
I'm following the customary greeting. Just ask @slipset.
But really, it's when I happened to check the channel. I was working on the Deref.
I'd be a bit stunned if you ever found anything here for deref
I heard there were talks at a conference that might be interesting for deref. I think there was at least one Bruce sighting in one of those talks?
Morning!
Morning!
Good morning 🌅
Morning