545 karma · joined March 24, 2011
I hate jacking threads pointing out X instead of Y, but in this case it feels warranted.
Early on in my career I'd get questioned about my CS degree from Tufts, and I'd jokingly mention "I'd gotten into CMU SCS, but I preferred to be a well rounded individual. I can send you the acceptance letter if you'd like."
I think people choose schools for all manner of reasons.
I discovered clojure about 25 years into my programming career, and while it introduced new "annoying things", it resolved most of the annoying things I had dealt with over the past 25 years in most other languages.
I do wish people would give clojure a real go, not just running a toy program, but taking the time to setup a REPL in clojure and clojurescript, learn about sending commands from the editor directly into the REPL, etc.
The reasons for choosing clojure are un-obvious at first glance. Moving from Java -> Ruby for example is something that you feel immediately. People understand in < 5 mins why ruby might be a better fit for a number of solutions then Java.
I don't dig clojure because it's a LISP, or it's homoiconic, or because of most of the academic ideas here in this thread. I picked clojure because with it, I get clojure and clojurescript.
With clojure I get to target all java libraries, great concurrency primitives, the ability to live code a running system, the ability to experiment extremely quickly due to the REPL based workflow, now with spec/generative testing, I get better testing then I had before, with writing fewer tests. I get systems are often easier to reason about or debug. There's rarely a ton of libraries to do a single thing. Existing libraries don't change much. We launched our first service in clojure 1.6, we've never had to do anything but bump the version number. No breakage.
With clojurescript we get just as many benefits. CLJS gives us access to all javascript libraries that have been written, Re-Frame/Om Next are incredible frameworks on top of react, figwheel allows us to never (rarely actually) have to refresh a page when doing layout / css things. Because we have access to a running REPL we can change the state of the app via function, allowing for way rigamarole when trying to test out inputs, etc. devcards lets you look at all the state of your widgets on the page + figwheel means you can see how CSS changes will affect all the states of your widget at once.
Synchronicity between the two languages allows us to write .cljc files where share functions and schemas can exist, so your backend and front end are pointing to the same place for critical things that should be shared.
It's really really different, but it's really really great. If you're a professional in the field, you owe it to yourself to just try it out and see if it helps you save time and be more productive.
Leaving this comment so people who may read this and get scared off understand that it's definitely not the case.
Makes you wonder how indicative those lists are of anything.
the iPad Pro has let me sunset my laptop.
The Watch / iPad Pro / Desktop combo would be ideal for me.
I no longer need to have my phone with me at all times. I can just walk into a space, put my phone down, and only engage with it when I want to. The watch lets me know about anything I actually NEED to know RIGHT NOW (turns out, it's not that much). It's perfectly un-intrusive.
We tend to gloss over the fact that when dealing with OSS:
- Project maintainers can leave/change/stop supporting the software and the idea that "since it's OSS, I can just pick up the slack" sounds better in ones head, then it does in practice.
- Even large projects (think Angular) can move in odd and unexpected directions, which in reality simulate a company "going out of business" for all intents and purposes.
- OSS 'support' is great, until it's not. Meaning, if there are plenty of SO questions and answers, it's great, until your specific issue isn't addressed, at which point you're either looking to a third party to pay for support, or you're rolling your sleeves up and digging into a codebase you have no experience with outside of an external API level understanding.
The dirty secret of large successful companies is that they actually pay for software, and the support of that software because they understand that time = money and vice versa.
After using datomic in production, I'd welcome my competitor to use Postgres. I'd even push them to. It's a monstrous competitive advantage for me.
Everything you're talking about is great in a vacuum, but stable APIs and backwards compatibility is more important to organizations in the real world.
I can't trust Angular as a framework anymore, as past actions are indicators of future behavior.
> There are things I do not like about Clojure, but so far I > haven't found anything even remotely comparable in terms > of real-world productivity. So I'm sticking with what > works really well, at least until something better comes > along.
This is exactly my take on it. I find myself thinking about Clojure adoption more and more these days, and where is the disconnect in all this.
I wonder if the idea of clojure both scares away "normal" programmers who are really just focused on using languages in their professional lives and want a simple, focused productive experience, and instead bring in more academic/experimental/recreational programmers who then actually dislike the fact it's made choices to promote use in the real-world.
Super fascinating stuff!
Disclaimer: 12 years ruby/rails experience 3-4 years clojure experience
Another serious question (and I mean this as un-snarky as I can). Are people just terrible at devops? I'm wondering if the people who think it is "too complex" grew up in a heroku world?
Best devops tools (along with ansible) I've ever worked with.
Indaba Music is an online community of musicians, producers, songwriters, remixers, and other music creators. We provide opportunities to our community to create music everyday for some of the biggest artists and brands in the world.
Looking for back-end clojure and front-end js/cljs programmers.
See https://indabamusic.com/careers for details.
I'm not saying that to be snarky, but I'm just pointing out how quick it actually is.
brew install leiningen
lein repl
<begin learning clojure>