PurelyFunctional.tv Newsletter 317: When you see a job, apply

Issue 317 - March 11, 2019 · Archives · Subscribe

Clojure Tip 💡

If you're looking for a job, apply to many!

I've helped several people find jobs in Clojure. And I've fielded many questions about the number of jobs. The number one thing that people stumble on is so simple, I often feel like it's insulting to say it. So, please, you probably don't need this advice, but many others do. So here it goes:

Apply to the jobs.

People ask me whether there are enough Clojure jobs. The answer is yes. There are way fewer than JavaScript, Java, C#, or even Scala. It's true. But you only need one.

While there might be fewer jobs, there are also fewer applicants. The #1 complaint of companies is that they can't find enough applicants! If the applicants think there are not enough jobs, and the jobs think there aren't enough applicants, something isn't right!

Here's how my conversations go:

Them: There aren't enough Clojure jobs.

Me: How many did you find?

Them: About 20.

Me: How many did you apply for?

Them: None.

Well, it's just a defeatist attitude. Even if there were 200 jobs, or 2,000 jobs, you might think that's not a lot.

Here's my tip: make a commitment to apply by the end of the week. Spruce up your resume, but even if you don't get a chance, apply to the job! Set aside about an hour per application. Get yourself out there. Get some feedback on your resume and applications.

If you're looking for Clojure job listings, I've made a big list of places to look for Clojure jobs. Companies are looking. And there are more companies than ever.

Brain skills 😎

Learning by making is one of the most effective ways to make skills real. All the theory in the world won't add up to one great piece of practice. Get some real world practice with a small project. And please keep it small! The last thing you want is some big, unapproachable project weighing you down.

If you'd like some ideas for side projects, check out [this


Clojure Puzzle 🤔

Last week's puzzle

I'm actually away on vacation this week, so I can't share the answers from last week. Consequently, I'm still accepting responses if you're interested. Check it out. I'll share the responses next week.

This week's puzzle

Run-length encode a sequence

Run-length encoding is a way to represent a sequence in a more compact form. Instead of saying :p :p :p, you say "3 :ps". Write a function that takes a sequence and returns that sequence with run-length encoding.

For example:

(rle [:a :a :a :b :c :d :d :d :d])
;=> ([3 :a] [1 :b] [1 :c] [4 :d])

Then, write a function to decode the run-length representation.

(rld '([3 :a] [1 :b] [1 :c] [4 :d]))
;=> (:a :a :a :b :c :d :d :d :d)

That's two functions: one to encode, and one to decode. Bonus points for laziness, concision, and efficiency.

As usual, please send me your implementations. I'll share them all in next week's issue. If you send me one, but you don't want me to share it publicly, please let me know.

Rock on!
Eric Normand

PS ✍️

PurelyFunctional.tv is the most comprehensive Clojure training online. It's hundreds of pages of guides, 80+ hours of video, and more. Most of the video is available for a fee, and the rest is free. The video gives you a pairing experience---you see me coding and hear me talking out my thought process. You can't get that with text alone.

If you'd like to get access to everything, the best way is to purchase a membership. You can learn all about the different plans and what you get, plus some kind words from my customers here.