Hacker Newsnew | past | comments | ask | show | jobs | submit | arms's commentslogin

I put this together because I found navigating the GraphQL ecosystem, with all its tools, to be confusing. I thought it'd be helpful, especially to newcomers, to see how the pieces fit together, and to list all* the tools in one spot.

* Except the ones I missed, of course :)


The official tutorial[1] is the best place to start; it's guaranteed to be the most up-to-date resource. After that, I'm a big fan of egghead.io's courses. Most are paid, but I believe some are free. The paid ones are well worth the money IMO.

[1] https://facebook.github.io/react/tutorial/tutorial.html


I use Python because:

- it's a well designed language

- it has a great ecosystem and community

- it runs fast (enough for my purposes)

- it looks enough like pseudo-code that translating what I wrote on paper into a program is that much simpler.

The fact that it can be used both for teaching computer science in colleges and children how to code speaks volumes about its versatility and approachability.

I use it mostly for web apps, APIs and miscellaneous scripts. Python has been a great addition to my tool-belt. There are some languages I hope I never have to write again; Python on the other hand is something I'm going to always keep in mind, even if I spend most of my days writing another language.


> Should we make the switch now?

You can, but until I see evidence that "We, the developers, will lose our jobs" any time soon, I'm going to continue doing what makes me happy, and that's coding.


The last time I wrote any ClojureScript was over a year and a half ago. I played around with Reagent a bit and remember really liking it. I never used it for any serious projects or in anger though - how is the tooling and debugging experience? I would love to use ClojureScript for my front end work (since I always end up using React + ImmutableJS anyways) but developer ergonomics are really important to me.


Well, the CLJS->JS side of story is very polished, Figwheel [1] makes things work smoothly (in-browser errors and warnings, sourcemaps, hot reload all work from the box). You can check out [2] if you are interested.

There are two areas that still can be improved in my opinion:

* the asset story. Right now I use a gulp task that prepares my assets and outputs CSS into a folder known to Figwheel, which makes hotreloading work automagically. However, if you need a complicated interaction between JS, HTML and CSS (i.e. you use CSS Modules), it can be a bit more involved.

* the NPM deps story. AFAIK it's gonna be solved in CLJS core soon, but right now your best bet is to pack all NPM deps using native JS tool (webpack, rollup or w/e) into one file and include it before CLJS-generated JS code. Ah, and in some cases you will need externs, too. It's actually way less complicated then it sounds, and if you need any help, feel free to reach me through mail (my nickname here at gmail.com). I would be happy to help.

[1]: https://github.com/bhauman/lein-figwheel

[2]: https://www.youtube.com/watch?v=KZjFVdU8VLI


Fighwheel and cljs-devtools (https://github.com/binaryage/cljs-devtools) makes working with ClojureScript very ergonomic. The regularity that re-frame brings (knowing where all data resides and exactly what can change it) makes it even nicer.


As others have mentioned Figwheel and DevTools certainly improve the picture. There is also re-frisk which is an embedded, real-time, event monitor and database viewer. It's early days but already very helpful.


The debugging experience still requires thinking in javascript (https://drive.google.com/file/d/0Bz3IhEqTy9ioZWQ1T24tSzVwaW8...). It's not that big a deal from a day to day. Obviously still worth it, clojurescript is amazing and no other language comes even close. I dont use a ClojureScript repl these days either but I know some are and I need to revisit it.


I haven't gotten a chance to try it yet (would be interested in hearing from anyone who has), but there is a Chrome devtools fork called Dirac that is targeted at natively debugging clojurescript.

https://github.com/binaryage/dirac


Wouldn't JavaScript make you angrier anyway?


It probably would. Yet

>to "use something in anger" is a phrase, meaning to use something "for real" - in production, etc. rather than just to try it out.


That's weird, but I believe I remember seeing some DHH writings talking about coding in anger around the time he was defending cursing and sexually suggestive mostly-nude slides at Ruby confs[1]. I blew the phrase off as as a DHH-ism, thinking maybe he believed in trying to remain angry while coding or something crazy like that. Thanks for explaining the term!

1) http://david.heinemeierhansson.com/posts/39-im-an-r-rated-in...


I don't know what DHH meant, but the idiom "in anger" is used to mean "in seriousness", "for real" or "properly". Whether or not DHH meant the idiom, I do not know. But its likely.

For example: "I've been tinkering with emacs, but I've yet to use it in anger."


Elixir's concurrency primitives & actor system make some concurrent and parallel jobs much easier than I'm used to in other languages.


Wouldn't you be able to do the exact same things in erlang?


Sure. I mentioned Elixir because I'm familiar with it, but not Erlang.


Django, mostly. I like its batteries included approach and its maturity. I've found it's a great tool for many jobs. Every now and then I'll use something smaller, like Flask or Falcon, but as soon as I need an ORM, or auth, I use Django.

I've also used Phoenix a few times now and have been enjoying it. But I know Python much better than I do Elixir, so I skew towards that.


I was very interested in Clojure and studied it for awhile. I liked it a lot, but had a difficult time becoming proficient with it. Part of it was the tooling (I tried learning Emacs and Clojure simultaneously when I should've only focused on Clojure), but my biggest hurdles were the syntax and understanding the error stack traces. They just seemed way too opaque. This really slowed down my progress. On the flip side, when I picked up Elixir, I became productive very quickly. Studying Clojure actually helped a lot here because I was familiar with functional programming and immutable data, but Elixir's familiar syntax and easier to understand error messages made it much easier for me to grok. I've since built a few things in Elixir and have been very happy with it.


This is great. Thanks for creating and sharing. I've made sure to bookmark it.


Agreed. I'm working on an API where most of the endpoints are RESTful, but there's a handful where it makes total sense to break the rules in order to make everyone's lives easier.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: