Hacker News new | ask | show | jobs
by den1k 1223 days ago
I've been building with electric for several months now and it's hands down incredible! Why? I think most importantly because it allows for functional composition across the network (client/server–distributed systems more generally) while also ensuring payloads are as small as possible (only what functions in each env access) which translates to FAST.

IMO this is a paradigm shift similar to GC. No one wants to manage their garbage. No one wants to manage the network. It's grunt work. Let the compiler take care of it.

I've naively rewritten a re-frame (react/redux in js) app that started getting prohibitively slow due to a bunch of deserialization on the client in electric and the performance is outstanding! TBH I'm taking a break from additional UI work on the app to do research because I realized that with electric I can build something much more amazing than I thought possible before.

Caveat: the future will not be served on a silver platter. it's early days and there are some quirks

1 comments

Could you share which kind of quirks you've identified?
Small bugs overall, some of which the team already addressed. One Clojure specific that is outstanding is that dynamic variables are not rebound between electric and Clojure functions. Also, the compiler currently does not optimize the callstack so the whole app stream-renders in and out which has a cascading effect. None of these are deal breakers for me, they're being worked on and I'm glad the community can now help ship fixes and improvements.
(founder here) Thank you Dennis! All, broadly, to date we've focused on achieving correct program semantics over syntax/perf/ux/dx. We're rotating onto these issues now, since we've reached a point where, after 2 years of hardcore dogfooding and 8 months of private beta, we're comfortable that brave Clojurists like Dennis will be successful and have an acceptable development experience. (Especially when compared with the benefit of strong composition at the system level - functional programming over entire systems!)