Live data from Hacker News

Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

book.fulcrologic.com

51–60 of 66 posts

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#51

Would anyone recommend Clojure if you run an engineering org and get to make decisions about languages? I've been running node shops for the last several years, and love Clojure since having hosted a couple meetups a while back. That and being most influenced by lispy/ai culture from SICP, CTM, PAIP, AIMA books. Node is getting tiresome due to not being able to trust the ecosystem quality (which takes away some of th…

The main issue with using Clojure is that you are expected to build everything out yourself. A lot of dependencies tend to stop being maintained after a while. Auth systems etc. are half-baked with 10 different implementations on GitHub. The newer shinier ones lack in features while the more featureful ones are from 3 years ago and have not seen a single update since. Now lisp people like to say "but...but.. backward…

> A lot of dependencies tend to stop being maintained after a while. [...] The newer shinier ones lack in features while the more featureful ones are from 3 years ago and have not seen a single update since.

A lot of libraries are not updated because they do not need any updates. This is surprising to people coming from other languages, but is fairly common in the Clojure world. I use many libraries which haven't been touched in 3-5 years and it is fine: they don't need updates.

> Auth systems etc. are half-baked with 10 different implementations on GitHub

Here I would agree — authentication is a problematic area. I use buddy, which I had to integrate into my ring+sente app manually with quite a bit of pain. Friend has the wrong abstractions, IMHO, and does not get the job done.

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#52
post #11

Clojure is awesome. But refactoring a big project without a type system is very hard and error-prone, and clojure error messages are very difficult to understand.

I disagree — I am refactoring a large project (60k LOC, that's a lot in the Clojure world!) continuously and find that a type system would just get in the way. On the other hand, clojure.spec together with :pre/:post conditions works great and helps me a lot by checking things that no type system would verify (such as validity constraints on entire data structures).

Error messages stopped being a problem with Clojure 1.10.

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#53

Should I be using a Modern do-it-all frameworks for Clojure and Clojurescript? My opinion is of course colored by my years spent in JAVA/J2EE's world of web frameworks ( Wicket, Tapestry, JSF + Hibernate EJBs etc.). In this world, I found most of my time was spent in learning the deep intricacies of the framework and fitting it to my use case. I began to hate every minute I spent on these frameworks. And then I disco…

I’m a fan of using tools that fit your problem. I think Fulcro is probably better if you have a frontend that uses Fulcro/React. It can bring order to the sometimes Wild West of data fetching that happens in the browser world. That said - if your problem isn’t a full stack web app, don’t use Fulcro. Like you said, there is already very good tech for doing REST APIs or static html pages or the like. I don’t think Cloj…

>> I’d probably switch to httpkit over ring if I needed to solve a problem with async websockets.

You probably meant going from jetty to httpkit, ring is just a middleware lib

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#54
post #48

Should I be using a Modern do-it-all frameworks for Clojure and Clojurescript? My opinion is of course colored by my years spent in JAVA/J2EE's world of web frameworks ( Wicket, Tapestry, JSF + Hibernate EJBs etc.). In this world, I found most of my time was spent in learning the deep intricacies of the framework and fitting it to my use case. I began to hate every minute I spent on these frameworks. And then I disco…

My take is that frameworks are great when you are building new projects, but become somewhat limiting over time. Also, with a complex application you often find that not everything can be nicely abstracted and there are features which cut across the stack, requiring changes everywhere. In my fairly large Clojure+ClojureScript app I do not use a framework, mostly because nothing existed when I started. I pick librarie…

The huge reason I'm not using Clojure for webdev is because there is rarely an accurate, current guide that demonstrates how to plug things together to get a typical CRUD+user auth website going.

I know that everything I need already exists, but I have yet to find a complete tutorial (Rails Depot, for example) that actually works. There's always some gap that isn't explained or some step that fails because the guide is 2+ years old.

So while I do agree that choosing your own libraries (and essentially building your own custom framework, because that's what they all end up as) is preferable long term, it is incredibly frustrating trying to build that first webapp.

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#55

Should I be using a Modern do-it-all frameworks for Clojure and Clojurescript? My opinion is of course colored by my years spent in JAVA/J2EE's world of web frameworks ( Wicket, Tapestry, JSF + Hibernate EJBs etc.). In this world, I found most of my time was spent in learning the deep intricacies of the framework and fitting it to my use case. I began to hate every minute I spent on these frameworks. And then I disco…

My understanding is that Fulcro is a frontend framework that also helps you build the communication between the browser and backend server: http://book.fulcrologic.com/#FullStack , http://book.fulcrologic.com/#_going_remote . Of course, you can also use Fulcro to communicate with any sort of backend server, and still take advantage of Fulcro's normalized client-side database: http://book.fulcrologic.com/#Networking ,…

Just a note for anyone affiliated with Fulcro who reads this:

I opened the links as new tabs on iOS Chrome to check them out, and it turns out they don’t go to the anchors unless I switch to the tab in a short enough time. Not sure if Chrome or the page itself (presumably using Fulcro?) is to blame here, but it was disappointing to find 3 tabs all open to the top of the page when I switched over to read them instead of the relevant sections.

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#56

Earlier quoted context omitted.

My understanding is that Fulcro is a frontend framework that also helps you build the communication between the browser and backend server: http://book.fulcrologic.com/#FullStack , http://book.fulcrologic.com/#_going_remote . Of course, you can also use Fulcro to communicate with any sort of backend server, and still take advantage of Fulcro's normalized client-side database: http://book.fulcrologic.com/#Networking ,…

Just a note for anyone affiliated with Fulcro who reads this: I opened the links as new tabs on iOS Chrome to check them out, and it turns out they don’t go to the anchors unless I switch to the tab in a short enough time. Not sure if Chrome or the page itself (presumably using Fulcro?) is to blame here, but it was disappointing to find 3 tabs all open to the top of the page when I switched over to read them instead…

Just tested in the latest Chrome -- the page does take awhile to load, and doesn't jump to the linked section until right when the page finishes loading

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#57

Earlier quoted context omitted.

Just a note for anyone affiliated with Fulcro who reads this: I opened the links as new tabs on iOS Chrome to check them out, and it turns out they don’t go to the anchors unless I switch to the tab in a short enough time. Not sure if Chrome or the page itself (presumably using Fulcro?) is to blame here, but it was disappointing to find 3 tabs all open to the top of the page when I switched over to read them instead…

Just tested in the latest Chrome -- the page does take awhile to load, and doesn't jump to the linked section until right when the page finishes loading

On Chrome iOS, a delay of around 10s before switching to the tab results in it staying at the top of the page, even after waiting around 20s. But switching quickly to the new tab loads the anchor in 1-3s.

Thanks for the links though, they gave me something intriguing to explore!

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#58
post #11

Clojure is awesome. But refactoring a big project without a type system is very hard and error-prone, and clojure error messages are very difficult to understand.

Clojure has a type system... but I know what you mean. Perhaps you could expense a copy of Martin Fowler's new 2nd edition of Refactoring? It uses JavaScript, so applying the lessons to Clojure will be even easier. Refactoring in dynamic languages just isn't an obstacle for some of us, I don't know why, but that book is the only thing I can think of that might help someone having trouble bridge the gap.

Re: Fulcro Developers Guide: Single-page full-stack web applications in clj/cljs

#60

Earlier quoted context omitted.

In my experience -- I was a professional Clojure developer for 6 years (until 2018), and hung out in the #clojure IRC channel on freenode a lot between 2011 and 2014 -- the Clojure community tends to be very experienced. Clojure is not many people's first language, but tends to be a language you find your way to after dissatisfaction with other languages, or exposure to other lisps. I'm sure you can find crappy or ch…

You said 'was a professional Clojure developer'. Are you not doing Clojure development anymore? If so, why?

Yes. I was at Puppet (nee Puppet Labs) for four years, one of the larger Clojure shops to my knowledge (not that I've been keeping close tabs on who's picked it up recently).

I switched jobs and language choice was not my #1 criterion. A very interesting opportunity that aligned well with my values (and paid better to boot), but was in a completely different tech stack (Python DS ecosystem, with some Scala). I love the language, think it's wonderfully concise yet expressive way to think about code, runs on a great platform for the web, and is a great fit for when team size exceeds codebase size (though not so much the other way around). All my fun software projects are still in Clojure or Clojurescript; I just wrote some today to scrape doggy listings.

Post reply on HN