HNHacker News
TopNewBestAskShowJobs

seancorfield

215 karma · joined September 13, 2011

submissionscomments
seancorfield··on Clojurists Together – Q2 2026 Open Source Funding Announcement
What do you mean by "falling apart"?

Clojure is the most stable and robust language I've ever used, and I've been using it in production for 15 years now.

seancorfield··on Clojure: Transducers
Clojure 1.9: Spec.

Clojure 1.10: datafy/nav + tap> which has spawned a whole new set of tooling for exploring data.

Clojure 1.11: portable math (clojure.math, which also works on ClojureScript).

Clojure 1.12: huge improvements in Java interop.

And, yes, the new CLI and deps.edn, and tools.build to support "builds as programs".

seancorfield··on Clojure Civitas – Publish Clojure Ideas and Explorations
Think of Civitas as a "static site generator" that uses the GH pages for the project as the public hosting for all the content -- a centralized, Clojure-specific blog if you like.
seancorfield··on I failed a take-home assignment from Kagi Search
Absolutely this, yes!

If you post a JS position, you will get 1,000 or more applicants, so it is a huge amount of work behind the scenes to filter this down to try to find the vaguely worthwhile candidates to interview.

If you post, for example, a Clojure position, you will get 10s or maybe even a 100 candidates tops. And they tend to be uniformly more qualified because niche tech tends to self-select folks who want to explore outside the mainstream.

Of course, a lot of businesses want to use mainstream tech because "the hiring pool is much larger", but the flip side is "the hiring process is a lot more work", because of the volume. So, we get a crappy hiring process because they can't scale up a good hiring process :(

seancorfield··on I failed a take-home assignment from Kagi Search
A lot of companies seem to want to hire folks who "think like me". IMO, that's a mistake: you need diversity of thought to provide new insights into problems. If you all think the same way, and one of you gets stuck, then it's likely you'll all get stuck. This seems to be a common problem in startups, IME, and perhaps an indicator of why 9 out of 10 startups fail.
seancorfield··on I failed a take-home assignment from Kagi Search
I'm surprised this seemed to be voted down. I've been a hiring manager for over 30 years, and I never do "technical tests" -- no take-home, no live coding, none of it.

I have a map of topics and questions, and I get the candidate chatting about their past projects, their approach, and what they liked/disliked about past projects and various technology they've used.

It takes a maximum of one hour and usually close to about thirty minutes to make a yes/no decision on a candidate (sometimes it only takes ten minutes to make a no decision, and then it's a matter of trying to politely end the interview).

I've interviewed hundreds of candidates this way over the years, and everyone I've hired has been capable of doing the job. Not once have I ever had to let someone go for lack of technical ability.

Part of the problem is that we don't train people how to conduct interviews, and another part is "this is how I was interviewed, so this is how I'm going to interview other candidates" -- pure inertia.

As an industry, we really need to do better.

As for the OP, _if_ I had been administering a vague take-home project that had a 1-week delivery deadline, and a candidate peppered me with Qs and then presented a full proposal for the project for approval, prior to working on it... I would have rejected them. But I'm pretty certain I would have decided to reject them in my regular 30-60 "chat" interview, and I would not have moved on to the take-home project and wasted their time like that. So, again, I fault the interviewer(s) for not being able to filter candidates efficiently.

seancorfield··on Ask HN: Are there any companies that moved away from Clojure?
I guess it depends what the tech stack was before?

Where I work, we were previously a ColdFusion shop when I joined, and after a false start with Scala, I introduced Clojure and it stuck: we cross-trained the CF devs and slowly rewrote the platform from the bottom up in Clojure.

We had struggled with automated deployments, and the size of servers, when we were a CF shop but after the switch to Clojure we had a fully-automated deployment pipeline, with rolling cluster updates, and much smaller servers than we needed before, running more processes than before.

seancorfield··on Clojure macros continue to surprise me
My bad... the sixth time (the fifth time was under a different title).
seancorfield··on Clojure macros continue to surprise me
The fifth time this has been posted in just over a week... it must be a REALLY good article! :)
seancorfield··on Why Use Clojure for Machine Learning?
Jeez, these FreshCodeIT guys are really spamming us lately...
seancorfield··on Clojure: Managing throughput with virtual threads
There have been several comments from the core team folks that a vthread variant of core.async is being considered. It would be a different library and may be somewhat API-compatible -- but that's all up in the air right now.
seancorfield··on Ask HN: How is Clojure for DevOps work?
Babashka is a self-contained executable that can run with no dependencies.

I was not commenting on the appropriateness of introducing a scripting language for devops work. I was responding to your incorrect assumption that writing scripts in Clojure would require a JVM.

If a company uses Clojure or ClojureScript already, Babashka is a fairly natural way to support devops for that company.

seancorfield··on Ask HN: How is Clojure for DevOps work?
There's babashka for scripting without the JVM, which I think quite a few Clojurians use for devops-style work.
seancorfield··on Ask HN: No deep understanding of any particular prog. language?
What exactly is the question here?
seancorfield··on Ask HN: Had AL. Company is "going corporate" & I'm uninspired. Time for new job?
I sympathize to a degree. I've worked in startups, and I've worked in Large Corps, but size alone isn't necessarily correlated with "fun" and startups aren't always good environments, nor do fun startups always turn into a corporate enterprise. I _generally_ prefer the smaller companies but you can find fun and interesting work in larger companies too.

I loved working at Macromedia while it was between 1,000 and 2,000 employees (a lot of expansion by acquisition) but did not enjoy working at Adobe when they acquired us -- Adobe had a very corporate mindset, Macromedia almost felt like a whole bunch of startups. I had a blast working for Verizon (no idea how big they were back in the mid-90s but the IT department alone covered an entire floor of a warehouse-sized building), but then I went to work for a much smaller actuarial firm and, while the _project_ was fun, the corporate culture was not.

You have to figure out what is important to you ("fun", "interesting" are reasonable goals for work) and what sort of compensation you're willing to take in order to have fun. Are you willing to put up with more corporate BS for a ton of money? Would you rather have more fun and less rules but less money and far more risk (startups can be fun and interesting but also long hours and most of them fail -- I've been at three that imploded but I can't take that risk now I have a family and a home to keep up).

Is the tech stack important to you? Important enough that you'll really limit your choice of jobs? Important enough that you'd rather be out of work for months than work with tech you dislike?

I've been in IT for... over 40 years now. I've done everything from assembler and COBOL to Scala and Clojure, in companies as small as four people up to many thousands of people. Most of what contributed to my enjoyment at various jobs was the team interactions, closely followed by the problems being solved -- not the size of the company (nor the tech stack: the assembler job was at a large insurance company but the project was fascinating, and the team were awesome; and Macromedia was mostly C++ and Java and some ColdFusion -- but great people and interesting projects). For the last decade, I've mostly done Clojure and I love that and joke that I wouldn't work in another stack... but if push came to shove, I probably would if the team and the problem space seemed fun and interesting.

seancorfield··on Ask HN: Had AL. Company is "going corporate" & I'm uninspired. Time for new job?
Annual Leave, probably.
seancorfield··on Why is Jepsen written in Clojure?
There's a lot of cool Java interop stuff coming in Clojure 1.12 that might help here (Alpha 6 should drop "soon").
seancorfield··on Why is Jepsen written in Clojure?
I've been doing Java since '97 and have gone through dozens of IDEs and editors over the years -- and never used IntelliJ (because I don't like it).
seancorfield··on Why is Jepsen written in Clojure?
As the current maintainer of clojure-doc.org, I'd be happy to hear your feedback on what needs additional explanation/clarification.

This year's funding by Clojurists Together allowed me to spend a lot of time completely rewriting large sections of the site to bring it up-to-date with modern Clojure tooling and libraries -- but I know there's still room for improvement.

seancorfield··on Ask HN: What's the state of Clojure's ecosystem and community these days?
Seven years ago you would have been using Clojure 1.8 or earlier I expect?

A LOT has happened with the language and the tooling since then!

Clojure 1.9 gave us Spec "for describing, validating, and testing the structure of data and functions." and a whole bunch of new core functions (mostly new predicates).

Clojure 1.10 overhauled error reporting and gave us tap> (for debugging) and datafy/nav for lazy "navigation" through object graphs, which kicked off a series of new visual tools for exploring data structures: REBL (now Morse), Reveal, Portal, etc.

There's new Clojure CLI tooling now (tools.deps and the deps.edn file) and a library supporting programmatic builds (tools.build and the build.clj file). The 2023 State of Clojure survey shows the new CLI tooling surpassed Leiningen in popularity!

VS Code now has an amazingly capable Clojure extension called Calva, and you can script VS Code and Calva directly in ClojureScript via the Joyride extension.

The latter is made possible by sci -- Small Clojure Interpreter -- from @borkdude. He also created Babashka which provides a near-zero startup time solution for writing shell scripts in Clojure/Script, and clj-kondo which is a powerful, high-performance linter, which in turn powers clojure-lsp bringing static analysis for Clojure to several editors.

Datomic has grown up a lot in the last seven years and is now completely free to use (but not open source). We also have an open source bitemporal database in XTDB from the JUXT folks.

Clojure 1.12 is currently in alpha, and provides built-in support for adding new dependencies to your running REPL (without restarts).

It's a great time to be a Clojurian!

seancorfield··on A Case for ClojureScript 2.0
This has been posted repeatedly before:

https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...

seancorfield··on Ask HN: Why does the Clojure ecosystem feel like such a wasteland?
> At least in the official docs, things should be cleaned up and made much more user friendly.

The source of clojure.org is at https://github.com/clojure/clojure-site/ and it gets a pretty constant stream of updates these days (it even accepts PRs!). It's a huge improvement over what it used to be -- so it depends on what/when you're comparing it to.

If you have specific criticisms or suggestions, I expect they'd be welcomed.

seancorfield··on A case for ClojureScript 2.0
This has already been posted several times: https://news.ycombinator.com/item?id=36505733

and https://news.ycombinator.com/item?id=36486486

and https://news.ycombinator.com/item?id=36477850

and https://news.ycombinator.com/item?id=36524611

seancorfield··on A Case for ClojureScript 2.0: The Google Closure Compiler
This has already been posted several times:

https://news.ycombinator.com/item?id=36505733

and https://news.ycombinator.com/item?id=36486486

and https://news.ycombinator.com/item?id=36477850

seancorfield··on Clojure programmers – is it still relevant?
Improving your skills is always relevant. I think The Pragmatic Programmer's advice to learn a new programming language every year is aspirational but still good -- I've tried to learn a new language every few years for the past couple of decades.

That's how I came across Clojure back in 2010 and I've ended up using it in production ever since 2011 and I consider it my primary language these days.

Given how nearly all mainstream languages have adopted features from functional programming languages, I definitely think there's value in improving those skills, and working with a range of languages that are functional-first, including immutable data structures, lazy evaluation, and so on. Mastering these concepts will make you a better programmer overall, regardless of what language is your day-to-day "home" because you will think about problem solving in a more diverse way.

seancorfield··on Clojure/Conj 10 Years On
The Juxt T shirt is an awesome design -- I love it!
seancorfield··on Why I Like Clojure
Already posted at https://news.ycombinator.com/item?id=35630868
seancorfield··on Clojure 1.12.0-Alpha2
After many years of Emacs (decades, in fact), I went through a few other editors and ended up with VS Code + Calva + Joyride (so I can script VS Code using ClojureScript) + Portal to visualize results.

When I got started with Clojure (back in 2010), Leiningen was the only game in town. At work we switched to Boot in 2015 because Leiningen just wasn't "programmable" enough for us, but after a few years we started to run into limitations with Boot (both the file system abstraction and the "pod" isolation caused problems), so we were very happy to switch to the Clojure CLI in 2018 with deps.edn -- and then add build.clj (and the tools.build library) when that appeared a couple of years ago.

We manage a monorepo with over 140 subprojects building almost two dozen artifacts, and 136K lines of Clojure, using the official Clojure CLI and tools.build.

seancorfield··on Clojure Turns 15 panel discussion video
Clojure evolves slowly and deliberately -- it gets about one release a year (with various prereleases) so "2 months" between commits isn't a big deal. I consider it a "feature" because it means Clojure is extremely stable -- which is great for us at work given that we've used it in production for a dozen years at this point and have been able to run alpha builds in production safely during nearly all of that time.
seancorfield··on Clojure Turns 15 panel discussion video
If you're a Clojure developer and you're using the next.jdbc library you don't need to ask that question :)
Page 1 of 3Next →