projects for large companies • Working on our own projects (open source and otherwise) • Previously: • Data analysis for banking, healthcare • Game development
different. • Had access to the full Java platform… • …while still giving you a fully functional approach. • New paradigms shake up your thought process.
• For a great one, see Rich Hickey’s “Clojure, Made Simple” https:// www.youtube.com/watch?v=VSdnJDO-xdg • Focus on how design decisions affect your work. • Won’t be overloaded with code samples.
why it works for me. • I’ve always found the elegance of LISPs appealing. • SPOILER ALERT: Unapologetically positive about it… • … so we’ll start with the scary bits.
sorta gets you there… • Java is finally catching up… • … but neither enforces immutability. • You’re still juggling objects. Some will methods will change properties.
have a couple classes. • Maybe you can keep the side effects in mind as you code. • Maybe you know what that ProcessTransactions() returns a value, but changes a couple of things… • … but we are fallible, with finite mindspace.
You only need to learn semantics once, syntax is an on-going cost. • Again… it uses up headspace. • Would you rather use it for the syntax, or for the concepts?
is written. • We need to convey meaning quickly, without unnecessary ceremony… • Doesn’t matter if it’s a new programmer, or you six months after you wrote it. • And that’s before we discuss the baroque class architectures people build on top.
a new function now and then. • You have to use it to get acquainted with the semantics. • Need to learn how to express yourself differently. • It’s not about understanding the language, it’s about grokking its semantics.
figuring out what I want to say. • In C# or Java, I spent a lot of time in scaffolding and ceremony before getting to that. • There’s no boilerplate. It’s just you and what you want to calculate.
even have objects. • I used to love Grails’ approach… until I realized I couldn’t control it. • Full control over what’s going on. • Libraries are easy to replace, since you don’t have to wonder about what goes on behind the scenes.
your functions as you develop. • Excellent for exploring someone else’s functions (remember, no context!) • I’ve found myself experimenting with my new functions on the REPL, then codifying those as tests.
transpiled to Javascript. • All of Clojure’s advantages, on the browser. • Straightforward and consistent. • Both front and backend on the same code. • Enables some amazing tools.
https://github.com/bhauman/lein-figwheel • Scans ClojureScript source folders, reloads the application live. • “Presses F5 for you, big whoop” • No data loss.
C# to Java, it’s not just about learning new vocabulary. • There will be a learning curve. • Don’t get too used to blindly hack off templates at first just because you want to start big. • 5 mistakes Clojure newbies make: http://adambard.com/blog/five-mistakes- clojure-newbies-make/