I've been thinking about humans and their relationship to software. We still haven't figured it out. When I was younger, I had the idea that we could code something up and then it would be solved. But that is obviously not happening. Software is never done. Even software that doesn't get new features requires maintenance.
Software is much more like plumbing: it's painless when it's working, but when it stops working, basic life functions become a mess! And even though we're working with high-level languages with highly fault-tolerant algorithms, I still occasionally have to open up a hex editor.
Is this the future? The amount of software is only increasing. Are we looking at a future where we all need to code just to flush the toilet? Or is there some breakthrough in software engineering waiting to happen?
Oh, well. Enjoy the issue!
PS Want to be more attractive? Subscribe!
PPS Want to advertise to smart, talented, attractive Clojure devs?
When I was first thinking about starting the Clojure Gazette, I researched email providers. I wanted something that I could use for free to test out. What if nobody liked my content? I didn't want to pay a monthly fee just to learn that. And I didn't want to deal with all of the difficult problems with email lists: signup forms, unsubscribe links, analytics, and spam filters.
MailChimp does it all. It's free to start using. You get to send up to 12,000 emails per month for free if you have fewer than 2,000 subscribers. And trust me, once you get to 2,000, you'll gladly pay for the service. The signup forms, confirmation emails, everything is set up for you and yet super customizable. Oh, and there's a nice API.
If you follow this link, you and I will both get $30 in credit if and when you do become a paying customer. It helps keep the Clojure Gazette rolling!
I've been doing a lot of research about code reviews recently for work. This one really struck home with me. What I took away was that code reviews are not directly about improving code quality but about facilitating better technical discussions.
Reid Draper, who created
test.check, the property-based testing library for Clojure, explains a bit about what it is and when it's helpful. I'm this close to deciding to do a
test.check course as a complimentary course to my LispCast Intro to
clojure.test. If you want to see that, let me know!
One of the claimed advantages of using the same language on the client and server is the ability to run the same code on on both sides. This means you don't have to duplicate code that has to be done in both places. This article explores some of the practical considerations of validating form input on both the client and server using the same code.
Mathematical modeling of predator/prey populations using Clojure and ClojureScript. There's an interactive model at the end.
A second wave of React wrappers seems to be happening. (I mentioned Brutha last week.) This one uses mixins to achieve more control over components. Apparently you can build Om-like (and Quiescent-like and Reagent-like) semantics using the pieces it gives you very easily.
Awesome React GitHub
A huge collection of React resources.
A positive review of the recent London ClojureBridge. Reading this made me happy.
Nothing is Something Youtube
Sandi Metz shares some of her OOP engineering prowess. It's a great talk. One thing that's interesting is that the kind of OOP she's advocating looks a lot like functional programming to me. Perhaps that's just a bias, or perhaps it's normal for different paradigms to approach the same ideal. Another thing that I really appreciated was that she describes the Null Object pattern in terms of a mathematical idea: an explicit zero.
For a long time there was no zero. Why have a symbol that represented nothing? Can nothing have mathematical properties? Once you can create an object to represent the nothing, then it can be manipulated as a thing with its own properties. This is somewhat counterintuitive and I can feel it working its way through my thoughts. Thanks, Sandi Metz!
RailsConf 2015 Closing Keynote Youtube
Kent Beck gives a very personal talk about how he deals with his insecurities at work. It's humbling, refreshing, and helpful to hear someone held in such high esteem share something so personal.