d_t_w

Joined 14 years ago

Karma
848
Submissions
191
Member since
Apr 12
Founder & CEO at Factor House
View on Hacker News

Recent submissions

Comment · 2 months ago
> do we want clojure to develop a parallel story for enterprise development

I don't think this is feasible, partly because these enterprise frameworks tend to be abstract systems, and I haven't seen any evidence in the Clojure world of anyone building anything similar to Quarkus for instance.

It's too big a job, we have too few people doing this work in Clojure with the relevant experience to maintain something serious.

Much of my thought is put into how do I achieve the standard necessary for my company, and that's where Slipway comes from. But I have to consider how I will also support enterprise grade SAML for instance, and how those lands are shifting, and a number of other similar needs.

These are the things that are normally captured by the framework, and those JVM frameworks are moving in a non-Clojurish way.

> what do you think can be done on the clojure side to make the slipway integration story easier to reproduce for other enterprise frameworks?

Unfortunately I don't have an answer to this, and I'm not sure there is one. Slipway can work with Jetty because Jetty is POJO, and that is becoming more rare in this space.

Which would put us back at your first question, 'do we want clojure to develop a parallel story for enterprise development'.

Comment · 2 months ago
Hello, I'm the author.

Clojure has some limited support for Java annotations, it's just that support is a bit ungainly, and that introduces enough difficulty that it leads to frameworks like Quarkus having no real adoption in the Clojure community.

Quarkus also relies on byte-code rewriting which may also cause difficulty for Clojure, but that's an aside.

Better annotations support wouldn't necessarily improve the ease of annotation-driven web frameworks in Clojure because the issue is more fundamental than that.

The real problem for Clojure is, from the original article:

> It's because in Jakarte EE 11 Context and Dependency Injection (CDI) officially becomes the single, unified component model across the entire enterprise Java ecosystem ... CDI is entirely driven by annotations, and annontations are entirely not Clojurish.

What I mean here specifically is CDI is the 'blessed' solution for DI in Java, CDI is clearly derived from many years of innovation by Spring, other DI frameworks in Java. Annotations is the path forward.

That means DI in Java is driven at a code-oriented, not data-oriented. Code-oriented is more natural in Java, and to give you a counterpoint, when I first worked with Spring (and very briefly with Rod Johnson for a couple of weeks on a client engagement, boring story) it was possible to configure Spring in XML.

Spring XML would be the equivalent of data-oriented in Java. Nobody in Java wants to do that, they want annotations instead.

In the article I say:

> configuring systems in code is a pale imitation of configuring systems in data. I much prefer my data-oriented system config library in Clojure to annotations in Java.

As it turns out I wrote something on reddit about this recently, you can find that here:

https://www.reddit.com/r/Clojure/comments/1vm668q/comment/p3...

Sorry for quoting myself and links back to reddit, feels a bit odd.

The point is - when you start configuring things in code, you are leaning into Java objects and/or code-level constructs for dependency injection, rather than the frankly far better approach in Clojure of using the wonderful Integrant library which relies on Clojure datastructures:

https://github.com/weavejester/integrant

And then of-course Slipway, which is also entirely Clojure maps.

If you are using annotations to configure your web server, you are better to write your webserver code in Java and have the server handlers call out to Clojure at the handler level. It inverts your entire codebase back into 'Java is in charge, clojure is an adjunct to that'.

Comment · 1 year ago
Introducing two new open sources Clojure UI libraries by Factor House.

HSX and RFX are drop-replacements for Reagent and Re-Frame, allowing us to migrate to React 19 while maintaining a familiar developer experience with Hiccup and similar data-driven event model.

Comment · 1 year ago
Comment · 1 year ago
Comment · 2 years ago
Congratulations on building something great!

It is immensely satisfying to build something that you believe in and succeed in selling it. I founded my company in 2019 and my experiencing and motivations in bootstrapping mirror yours.

We are in year 4 (commercials) and 6 (product development) at Factor House[1].

We build enterprise tooling for streaming systems (Apache Kafka and Apache Flink mostly). Selling software to enterprise customers is different from B2C as the sales cycles can be endless and most likely your cashflow might be more lumpy, but at the end of the day it's a very powerful thing to be profitable and independent.

As @yevpats points out sometimes the bootstrapping story does miss some details, in our case we invested roughly $500k to get through the pre-commercial period, to achieve that we sold our house (my wife is also my co-founder). Not everyone can, or is mad enough, to commit resources at that early stage. To be honest we were quite mad.

Prior to starting product development with Factor House we ran a consultancy that delivered systems for enterprise customers based on Kafka, Storm, Cassandra, etc - so we had plenty of experience. We also had consultancy customers who were eager to use the pre-commercial versions of our product and provide feedback.

I also run a meetup[2] in my hometown that specialises in programming solutions with distributed systems.

Last year we took a small amount of funding from Lighter Capital (non-dilutive, fairly simple loan terms) to unlock some growth.

Bootstrapping is hard, but my interactions with VC left me with the impression that it's a low-information lottery for the benefit of those who already have capital.

It seemed clear that if we took funding we would rapidly lose control of our vision and we don't need to 100x our business to achieve our goals. I would rather focus on delivery for our users and avoid adopting manic ideas to pay off 99 failed lottery tickets.

[1] https://factorhouse.io

[2] https://www.meetup.com/melbourne-distributed/

Comment · 2 years ago
https://factorhouse.io/kpow/

An enterprise toolkit for Apache Kafka (and now another for Flink).

I spent years working in large enterprise orgs, a few more working with distributed systems. Along the way I picked up Clojure and by the power of greyskull managed to combine all those factors into a company. Now I work with a small team shipping tools for programmers. Good times.

Today we have users in 100+ countries, but it started off as something I needed for myself / my team when working on client projects.

Comment · 3 years ago
Question from an Australian(ish) here.

If you Americans buy a house with an 8% mortgage today, can you remortgage in the future if/when the rate drops. Is the buy-out penalty of remortgaging somehow higher than just selling / repurchasing?

Do people get locked into higher mortgage rates for long periods of time that are uncompetitive is my question. Is there a significant downside? Is 30-year fixed normal in the states?

30-year fixed rates don't exist in Australia. You'll get a 5 year fixed rate from ~6% or so, that's about it.

Comment · 3 years ago
Yes, sure is! https://kpow.io/

You can get started with the Community Edition for free, it includes our JQ implementation (we call it kJQ - https://docs.kpow.io/features/data-inspect/kjq-filters)

Just shout if you need any help.

Comment · 3 years ago
Comment · 3 years ago
I run a bootstrapped software company, not at the $100M scale.

My interest piqued I clicked, had a look at Aha! (having never heard of it before) and immediately thought - hey I could use this. You got me, ka pai, haha.

Any insight on how to navigate inflexion points that seemingly require more capital that cashflow allows? Stay true and spend less? Number 8 wire might not be the same solution today as it once was, that's my worry.

Comment · 3 years ago
Hi @richieartoul, does warpstream support the standard Kafka Admin API?

We build an admin console / dev tooling for Kafka (https://kpow.io) that supports Kafka 1.0+ including Redpanda due to their fairly strict adherence to those API.

Warpstream seems like a cool idea, I'd like to see what happens if we plug Kpow on top of it, if that's possible.

Comment · 3 years ago
Two Daft Punk outfits with about 70m of EL wire coupled with arduinos plugged into LED arrays stuck inside bicycle helmets. Turned out pretty good:

https://www.youtube.com/watch?v=uHrWllxRLgQ

Wrote the step-by-step and uploaded the code onto Instructables, it's still there ~15 years later:

https://www.instructables.com/How-To-Make-Two-Daft-Punk-Outf...

I made them with my girlfriend (now wife/co-founder) for my 30th, was lots of fun.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton