PurelyFunctional.tv Newsletter 285: Scraping, Laziness, Design Patterns
I hosted the Clojure Career Workshop last week. It was a ton of fun and a bit of a wild ride. It was great getting to know the participants through their resumes, our time on the calls together, and their questions over email. I spent almost all of Tuesday reviewing the resumes and connecting them to people. Reaching out to my existing network and stretching a bit to connect to new people takes a lot of time, but I enjoy it. And I continue to connect the attendees up. I'll probably do so for the next few weeks.
Even though it was a ton of fun, and I think the attendees got a lot out of it, I'm not sure if I'm going to do it again. The main reason is that it didn't sell out. I had ten tickets to sell and only sold nine. After my video courses, the conference, and the book I'm writing, I don't have much energy left to put into things that aren't obviously successful. I'll be selling to the same people (you) again, so is it likely I'll beat nine sales next time?
So I'm asking you: are you interested in the workshop? What would get you to join in? If I don't get a lot of responses, I probably won't do it again.
Please enjoy the issue.
PS Want to get this in your email? Subscribe!
I posted something about this on Twitter the other day and I got a ton of job listings as replies. The answer is "Yes!"
Functional Design Patterns YouTube
Scott Wlaschin does an excellent job teaching some category-theory concepts like functors without too much jargon. I'm not sure if categories are really the equivalents of Design Patterns, but I'm happy he's getting the word out about powerful concepts in an accessible way.
Alex Miller on the Cognicast Podcast
What a great interview of Alex Miller by Carin Meier. Alex is such a great guy. I'm glad to know him.
This episode of Syntax is one after my own heart. I usually don't tend to geek out over hacks I do, but web scraping is just plain fun. You get to reverse engineer a web page and figure out how to script a human interacting with it. It made me want to make a course on how I do that in Clojure.
I don't know why, but I think this awesome project passed below my radar when it first launched two years ago. It's a Clojure that compiles to C++ so that it can run in real-time embedded devices, like Arduinos. Looks super cool!
Last year I was doing a lot of research about web frameworks. What makes them successful? Why do we use them? This article was one of the results of that.
Unconditional Code YouTube
Michael Feathers gives lots of good advice for refactoring code to remove special cases, corner cases, and missing values, all of which require conditionals to deal with.
Catherine Swetel presents some alternatives to estimates and velocity that would help you manage a team better than the standard way. I especially like the idea that we should minimize work in progress (WIP), and anything new that trumps WIP should be considered "flow debt" because it adds to lead time.
Lazy sequences are very powerful. They let you decomplect how to create new values from how many values you'll need. However, they come at a steep cost. Every sequence operation has to be lazy. And that means you have to know about it, even if you don't mean to use it.
Laziness comes with gotchas. This course is all about learning those gotchas, then learning how to use laziness to your advantage.