Live data from Hacker News

Nubank acquires Cognitect

cognitect.com

261–270 of 281 posts

Re: Nubank acquires Cognitect

#261

Are there any technical posts from Nubank on how they manage such a large Clojure codebase (I guess it must be Clojure's largest user in the industry). I'm looking for things like how to refactor safely in the absence of static typing, for example. Do they make use of spec? I'm a big fan of static typing, but when using a dynamic language with immutable values and pattern matching, like Erlang, I don't miss it that m…

Not sure we have any talks about that specifically, but what I can say is that on the Clojure codebases: - We rely heavily on testing (unit tests, property-based/generative and integration) - We adopt a micro-services architecture, so most codebases are small enough that refactoring is easy, or sometimes we just replace the service altogether - We leverage Schema ( https://github.com/plumatic/schema ) and/or clojure.…

Questions: transactions are really important in banking systems. If you have 100s of Microservices how do you manage transactions across them? Or maybe all of your microservices run on top of a monolith database with transaction safety?

Re: Nubank acquires Cognitect

#262

can one make a career out of clojure?

I haven't used Clojure before but I have worked mostly with Elixir another niche functional language. In my experience because of the limited talent pool, most companies tend to prefer experienced candidates and if they are to take you on as a junior, you probably have to be significantly experienced in another mainstream language. It's very hard for someone to take a punt on a junior Elixir or Clojure developer who has little or no experience in any other language. Generally, niche languages are not a great bet if you are just starting out. You can of-course build the experience by working on side projects, blogging or speaking at conferences. In short its a labour of love. If you learn Clojure or in my case Elixir for the explicit reason of getting a job you might become very frustrated and disappointed. This is my experience.

Re: Nubank acquires Cognitect

#263

Earlier quoted context omitted.

"My entire business is built on Clojure and ClojureScript, and it would not have been possible without these languages." No company depends any new language to succeed, depends on customers.

I feel like this is just being pedantic. obviously business is nothing without its customers, however it's also nothing without something to sell.

Which could definitely have been built using other languages had clojure never existed.

Re: Nubank acquires Cognitect

#264
post #240

I encountered a surprising remark recently: someone said they had no interest in Clojure because it is proprietary. In what way is it proprietary? Do Clojure programs depend on a runtime distributed with a restrictive license?

It's not proprietary. Clojure is under the EPL 1.0 (Eclipse Public License), which is intended to be a business-friendly copy-left license.

Re: Nubank acquires Cognitect

#265
post #234

Earlier quoted context omitted.

I am about to (next two or three months) launch a company/product that is heavily built on Clojure(script) too and I was actually thinking about this exact thing just this week! There are a number of libraries that I rely on that I would love to give back to, both as a thanks for the work so far, and to fund future development. I'm not in a position to do so yet, but its something I very strongly hope to do in the no…

I founded operatr.io. Our product, static site, and licensing systems are entirely built in CLJ/CLJS. JVM, brower, lambda, etc. Like JWR I feel there's absolutely zero chance we could have built this product as effectively in my previous primary JVM languages. Clojure is just a better toolset, no comparison. We recently enquired with Github about sponsoring as an organisation (rather than me using my personal account…

Thanks for the insights and ideas! And for the well wishes :)

Re: Nubank acquires Cognitect

#266
post #237

Earlier quoted context omitted.

Yeah, I wasn't necessarily trying to get into an argument with the person who responded, but there's so many factors not being accounted for in that study that it might as well be measuring nothing at all. Choosing Github projects and measuring defects on them has almost nothing to do with the quality of closed-source code (as we were discussing, functional programming languages in the wild). I also briefly started d…

That's oversimplification. Good programmers care about their work, doesn't matter which language. Also, use the right tool for the job. A language that forces you to think about values rather than mutable objects, will produce higher quality code as the number of ways you can shoot yourself in the foot are drastically reduced. Clojure will make you run your code constantly in the REPL. Paired with a dead-simple testi…

> Good programmers care about their work, doesn't matter which language.

Yes, but the whole purpose of my post is to point out the difficulty in _finding_ the good programmers.

> Also, use the right tool for the job.

Not sure how this applies. You can build banking software in literally any programming language.

> A language that forces you to think about values rather than mutable objects, will produce higher quality code as the number of ways you can shoot yourself in the foot are drastically reduced.

Again, this is just totally unsubstantiated. You're using "higher quality code" to mean "code I like more".

> Clojure will make you run your code constantly in the REPL. Paired with a dead-simple testing library, the desire to keep your majority of functions pure, it is not hard to see why Clojure code has higher quality.

Where have we demonstrated that clojure has implicit higher quality? Also, where have we demonstrated that all clojure devs keep their functions pure? Or test them? And how does clojure enforce that?

Your last bit kinda proves my whole point, I think. You like a language a lot, and you make good use of its tools. But again, when you're looking at large groups of programmers, they're going to drastically lower the bar on what you "should" do - talking about "strong desire" and "dead simple" is totally unrelated to whether people will _actually do_ something in the wild. And what's the best way to keep a codebase good? Well first, tooling, but second, not letting bad devs get ahold of it.

Re: Nubank acquires Cognitect

#267

Earlier quoted context omitted.

Not sure we have any talks about that specifically, but what I can say is that on the Clojure codebases: - We rely heavily on testing (unit tests, property-based/generative and integration) - We adopt a micro-services architecture, so most codebases are small enough that refactoring is easy, or sometimes we just replace the service altogether - We leverage Schema ( https://github.com/plumatic/schema ) and/or clojure.…

Questions: transactions are really important in banking systems. If you have 100s of Microservices how do you manage transactions across them? Or maybe all of your microservices run on top of a monolith database with transaction safety?

It's probably a misconception that database-level transactions are the primary way to implement business transactions - many business processes w/ customers or 3rd parties rely on ACKs and/or compensating transactions, escaping the scope of a single database-level transaction.

In practice, if the services are loosely-coupled enough, transactional boundaries will be local in scope and transactions spanning multiple services are unnecessary. Downstream services can be eventually consistent if idempotency is guaranteed and retries/replays are free.

Inside the scope of a single service, when needed, we use Datomic, which provides ACID guarantees for that (https://docs.datomic.com/on-prem/acid.html) and also helps w/ idempotency guarantees by allowing time-travel (https://docs.datomic.com/on-prem/getting-started/see-histori...).

Re: Nubank acquires Cognitect

#268
post #234

Earlier quoted context omitted.

I founded operatr.io. Our product, static site, and licensing systems are entirely built in CLJ/CLJS. JVM, brower, lambda, etc. Like JWR I feel there's absolutely zero chance we could have built this product as effectively in my previous primary JVM languages. Clojure is just a better toolset, no comparison. We recently enquired with Github about sponsoring as an organisation (rather than me using my personal account…

Thanks for the insights and ideas! And for the well wishes :)

Be sure to let me know when you launch, I'd love to see what you've built. Good luck!

Re: Nubank acquires Cognitect

#269
post #258
post #107

Earlier quoted context omitted.

I do not think so. The regulation is constantly changing and the meaning of names change frequently. Thus a "Verified Account" can mean different things over the years. The problem with types and object orientation is, that the names used in the domain diverge from the name used in source code (class name, types). Think about a class diagram with class names relating to each other. To represent the domain language be…

Standard Chartered, Mercury, Tsuru Capital (Haskell), Jane Street (OCaml) don't seem to have a problem with using a statically typed language in the financial space.

maybe they do have a problem if their net worth is so low in comparison :D

Re: Nubank acquires Cognitect

#270
post #86

Pretty strange how no one else sees that banks are very very fragile institutions, plus this one is heavily VC-ed, which makes everything they claim in public irrelevant (this is if we want to trust what any bank says at all). What is relevant is that Cognitect will now have 100% of income coming from the single (and fragile) source, they now do not have to compete and survive on their own, they can't say "no" when h…

How is a bank a fragile institution? Banks are the most heavily insured and protected institutions in any modern country. In the US for example, banks not only contribute to federal insurance but also have built joint private reserves to weather economic turmoil. In the modern world banks rarely go bankrupt because if they did that would tank any confidence in the economy and create incredible chaos. Even in failed s…

> In the US for example, banks not only contribute to federal insurance but also have built joint private reserves to weather economic turmoil.

did you miss how the banks all had to be bailed out a few years back?

Post reply on HN