RSS Amplifier

Blog

Janet A. Carr

Clojurian thought: A Clojure programming language blog

blog.janetacarr.comRSS feed ↗15 posts

Latest posts

Dead simple core.async job system in Clojure

In my off time (and my on time, for that matter) I've been working on this quirky thing I've called Scinamalink (sounds like 'skinamarink'). Scinamalink lets customers send Magic login links to their users with a single REST API call. If you don'

Building a Clojure CI/CD pipeline of CERTAIN DOOM

When things go wrong Devops is one of those important positions where nobody cares what you're doing until things stop working. Along with SRE folks, the position may as well be akin to a firefighter. I know this first hand having been a loaded-title myself. You haven&

Thriving in the dynamically type-checked hell scape of Clojure

People often come to me asking "I love the idea of Clojure, but how do you write code without types ?". I struggle to answer this question. I have no idea what they're talking about half the time. The nuance of strong and weak typing, and static

Building an Event-Driven Architecture in Clojure (Part 1)

Clojure has two types of publish/subscribe facilities built-in. The first is a watch, quite literally a first-class observer. The second, and the one we'll be using, is built into clojure's core.async library.

How to Hire Clojure Developers

This odd thing keeps happening to me where companies reach out to ask if I know of any Clojure developers they can hire instead of just hiring me. I understand why they do this. I am not interested in full-time position, after all. I think most people would bitterly

Ports and Adapters Architecture for Functional Programmers (with Clojure)

the small codebases of microservices provide great refuge for the salaried functional programmer.

Mindset shifts for Functional Programming (with Clojure)

For more experienced functional programmers, most of this post will seem introductory, but I introduce some more advanced stuff near the end. Functional Programming over Canadian Programming Lately, I've been thinking about this Functional Programming journey I've been on. I thought it started when I was

Clojure Transducers: Your Composable Data Pipelines

What is a transducer anyways? Specifically, from the documentation 'a transducer is a transformation from one reducing function to another'. We can think of a transducer as a context-independent transformation composed of, say, many reducers (like map and filter ). If we think of functional programming as a

Model-View-Controller, a classic architectural pattern in Clojure

I'm sure for some of you Model-View-Controller (MVC) resembles more of an anti-pattern than something to reach for when writing Clojure, but I think it's a great example of what architecture should accomplish, especially what can be accomplished in Clojure. MVC decouples state,

A Primer on Clojure Macros

One day my squad mate at a Clojure startup committed a macro to the codebase, and I was quick to reprimand them for it as the same functionality could have been implemented with Clojure core functions. Peeling back the decision rationale, I discovered my colleague had never learned the first

Clojure Frameworks: opinions are features, not bugs

Ever since I wrote Clojure needs a Rails, folks reach out to ask for my opinion on their web framework for Clojure. What's clear from these discussions is a lot of software developers have no idea what a framework is.

My Guest Spot on Cognitect's podcast

Janet A Carr - Cognicast Episode 172 In this episode, Christian talks to Janet A Carr about her career, writing, and life as a Clojure Consultant.

Clojure's typing "problem"

we can ship production code with Clojure. A strange bit of grumbling I hear from developers directs their angst toward not having "compile time type checking errors"

Fix your Clojure code: Clojure comes with design patterns (Part 2)

This post is the second in a series. You can find the first post in the series here where I covered Null Object, Singleton, Command, Observer, State, Visitor, and Iterator. Patterns Preamble Builder Chain of Responsibility Proxy Adapter Template Method Flyweight Strategy Our story continues Edmund, a bright, awkward young

Fix your Clojure code: Clojure comes with design patterns (Part 1)

Clojure either directly supports, or easily supports the use of common design patterns like singleton, command, observer, visitor