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.…
Nubank acquires Cognitect
261–270 of 281 posts
Re: Nubank acquires Cognitect
#262can one make a career out of clojure?
Re: Nubank acquires Cognitect
#263Earlier 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.
Re: Nubank acquires Cognitect
#264I 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?
Re: Nubank acquires Cognitect
#265Earlier 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…
Re: Nubank acquires Cognitect
#266Earlier 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…
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
#267Earlier 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?
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
#268Earlier 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 :)
Re: Nubank acquires Cognitect
#269Earlier 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.
Re: Nubank acquires Cognitect
#270Pretty 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…
did you miss how the banks all had to be bailed out a few years back?