Bringing Fun into FP: Interview with Impure Pics

In this article, we interview Jay, the mastermind behind Impure Pics. If you have been on Haskell Twitter for a while, you’ve definitely seen some of his drawings. In addition to that, he’s recently started a YouTube channel where he distills functional programming concepts in a fun and accessible manner.

We have had the great opportunity to collaborate with Jay a number of times, the latest being a special edition tee celebrating one of the things that makes Haskell special: lazy evaluation.

In the interview, we talk about his approach to creating fun things, thoughts about what the Haskell community needs right now, and what could be the future of functional programming.

Interview with Jay (Impure Pics)

Could you give our readers a small introduction to yourself and your project – Impure Pics?

I’m Jay. I’m a software engineer and developer advocate absorbed in functional programming. Under the Impure Pics umbrella, I share FP-related memes, tips, and tricks.

What do you do for a living right now?

Recently I’ve switched to contracting, doing Haskell and Scala.

University was tough. Java everywhere. We wanted to escape reality. One summer, a friend suggested we try Scala. “There is a free course. Just give it a try. What’s the worst that can happen?” – he said. I got hooked immediately. Higher-order functions, immutable data structures, ADTs, and so on. I did my first traverse. A few months later, I got a job to deal with hunger. At some point, that wasn’t enough; I had to dope up. I started sneaking cats into code bases “because I needed validation”. When it got out of control, I tried Haskell – mostly reading and translating books. There was no going back. I’ve been doing Haskell and PureScript in different ratios ever since (whatever I could get my hands on). People warned me that I would be jobless forever. But they were wrong. It didn’t ruin me, my career, or my marriage.

All joking aside, why FP? I won’t sugar-coat this; many aspects of software engineering (or whatever you wanna call it) suck. It’s not all fun and games as I dreamed about when I was a kid. We must deal with ceremonies, JIRA, eye-rolling meetings, wobbly requirements, and so forth. And when I get a moment to code, I have little patience for null-pointers, boilerplate, silly bugs, archaic design patterns, semicolons on every line, and other nonsense that a good compiler can handle. FP is a breath of fresh air.

I want to bring fun back into programming. Isn’t this what FP stands for? That’s why Impure Pics exists – FP is fun, and more people doing FP is even more fun.

Which is your favorite FP language currently?

Would you ask a parent who is their favorite child? They’re all unique and quirky in their own particular way.

I’m just waiting for one of them to grow up and support me when I’m old and less energetic.

What do you think is the direction that FP languages will take in the next 10 years?

No idea where languages are going. But I do have bets on Verse. I don’t know their real goals, but in my mind, the plan is to infiltrate the minds of the youth through Fortnite.

No more OOP brainwashing in schools? And hey, maybe, teachers will leave them kids alone?

Do you think content creators such as yourself are important to have for programming languages in 2023?

Isn’t everyone a content creator to some extent?

Still, there isn’t enough FP content, and people should share more. For instance, how many tutorials on a typical mainstream-language concept are out there? Dozens? Hundreds? How many tutorials about something like a Service Pattern in Haskell? 2? 3?

Anyways, sharing what you learned is good for you and others.

  • Improve yourself. You can look at it from the point of view of branding and selling yourself, or you can look at it from doing it for yourself and your values. Hate your job doing XYZ? Is there an opportunity to learn something new there?

  • Improve the community. When you spend an hour implementing or improving something for yourself, you can write it down and save ~ an hour for every person who doesn’t have to do the same job anymore.

Have you learned about a fresh nit function recently? Share it. Improved your code base? Share it. Caught an exciting bug? Share it (not the bug, the solution). Wasted an hour because of outdated docs? Please, fix the docs. Played around with a library and made a small example? Please, share it.

What do you think is the most important thing we can do to make Haskell more popular?

Have more explicit goals, improve ergonomics, and spend more resources on marketing.

These days, the latter one overweights the other two. It would be nice if we had human-readable error messages and stuff. But what’s the point if people are still biased and think Haskell (and FP, in general) is slow, hostile, and has no use case.

Just look at other ecosystems (for inspiration). They can sell the solutions for the problems we don’t have and features we don’t need. Imagine what we can do if we’re actually solving issues.

Where are all the articles saying let’s do Haskell because Facebook [sic] does so?

To bring it down to earth, we must work on our image.

Describe your ideation process. For example, how did you come up with ideas like the FP chat bot or “Which typeclass are you” quiz?

Speaking of stereotypes. A few months ago, I was listening to a podcast where two widely-respected professionals talked about their Haskell impressions – how academic it is, how you can’t do anything “useful” because there are no side-effects, how special monads are, and so on. (For context, these are the memes many people keep spreading, not just the podcast hosts). It was so cringy that I immediately came up with a video idea and decided to make a YouTube channel.

Most ideas come from frustrations, seeing patterns, and aha-moments. Occasionally, they come from “you know what would be funny” thoughts. Here are a few examples.

  • In the chat rooms, people often say that traverse is the answer → Meme that traverse is always the answer → 🤔 You know what would be funny? A chatbot that does it → Fake FP bot that always answers traverse.

  • Trying to do something simple with Rust; code docs aren’t the best, but every library has a book → 🤔 Haskell also isn’t great about docs, however no books; a lot of package docs link to a paper → How is that Rust has a book for everything, and Haskell has a paper?

Stealing is also a great idea source. Take something funny, lift it into the FP context, and get something funny about FP.

We recently collaborated with you on the design for Lazy by Nature tee. Could you please tell us more about the philosophy behind this design and the whole creation process?

The philosophy is the same – trying new things for fun.

Wouldn’t it be fun to have Haskell merch that isn’t embarrassing to wear?

lazy haskell

What are your plans for Impure Pics in the future?

Recently, I’ve shifted focus from pictures to motion pictures and courses. 😉

In the long term, the plan is to keep making content and explore different mediums until FP is the norm or the next logical offspring arises.


Big thanks to Jay for taking the time to speak with us!

If you want to see more of his Haskell content, you can follow him on Twitter, subscribe to his channel on YouTube, or just browse his website.

If you want to check out our collab tee with an awesome & colorful design made by Impure Pics, you can find it (and our other merch) on Serokell Shop.

Serokell Haskell courses: Everyday optics
More from Serokell
Type families is the most powerful type-level programming features in Haskell.Type families is the most powerful type-level programming features in Haskell.
Functional Futures: Grain with Oscar SpencerFunctional Futures: Grain with Oscar Spencer
haskell in production standard chartered thumbnailhaskell in production standard chartered thumbnail