[HN Gopher] Nubank acquires Cognitect
       ___________________________________________________________________
        
       Nubank acquires Cognitect
        
       Author : zrkrlc
       Score  : 500 points
       Date   : 2020-07-23 12:05 UTC (10 hours ago)
        
 (HTM) web link (cognitect.com)
 (TXT) w3m dump (cognitect.com)
        
       | rafaelferreira wrote:
       | Nubank's co-founder and CTO offers his perspective:
       | https://building.nubank.com.br/welcoming-cognitect-nubank/
        
         | hu3 wrote:
         | > Clojure is and will remain open-source and Rich Hickey will
         | continue to lead its efforts (as the BDFL).
         | 
         | This is great! Languages need strong laser-focused vision to
         | avoid becoming a soup of ideas.
        
       | sidcool wrote:
       | I am genuinely curious. I haven't heard the name Cognitect
       | before. I checked the website and they seem like another software
       | consultancy firm. Anything I am missing? HN is very picky, so
       | they must be doing something special.
        
         | [deleted]
        
         | hvis wrote:
         | This is the company that employs Rich Hickey and most of (all?)
         | other maintainers of Clojure, the programming language.
        
           | sidcool wrote:
           | Ah. Makes sense. Thanks
        
       | jfbaro wrote:
       | I hope Nubank opens source DATOMIC... it would benefit a lot from
       | community work.
        
       | unexaminedlife wrote:
       | "Explicitly constraining and mitigating certain categories of
       | complexity was likely to pay off in the medium and long term."
       | 
       | 100 million % correct. It boggles my mind when I am hired onto
       | projects to help "bring them to prod" only to find out the past
       | several years the coding was primarily done by college grads and
       | relative beginners.
       | 
       | Ideally you get to rely on experts for the entirety of a project,
       | but if your budget doesn't allow for it, at minimum I think it's
       | early in the project that you want EXPERTS. You don't bring in
       | experts and expect miracles after all the bad decisions have
       | already been made and committed to.
        
       | sandGorgon wrote:
       | AWS has Quantum Ledger DB, which is a lot like what nubank
       | architected on top of datomic.
       | 
       | Anyone know what language qldb is built on ?
        
       | praveenperera wrote:
       | First plataformatec (company behind elixir) now this.
       | Interesting.
        
       | tom_b wrote:
       | Congratulations to Cognitect. Hopefully the acquisition will help
       | Rich's retirement funding. (see 'History of Clojure' for the not-
       | so-insider joke here)
       | 
       | I have had the pleasure of "using Clojure in anger" and for a few
       | years was very dedicated to learning how to use it effectively.
       | This was a significant step up for my general programming skills
       | and the simplicity of the language often saved me from myself
       | with respect to bad design or choices in code. Whatever
       | programmer "maturity" I can claim is probably due to Clojure and
       | teaching introductory programming and databases (not with Clojure
       | and Datomic to be clear).
       | 
       | This acquisition is more abstractly interesting to me in that a
       | _VERY_ dedicated Clojure /Datomic company made it. We didn't see
       | here, for lack of a better example, a FAANG company grabbing
       | Cognitect. That may have been a choice! Maybe Cognitect went with
       | an acquisition where they retain a high degree of autonomy with
       | the benefits of being acquired.
       | 
       | I never made the leap into a larger organization with Clojure at
       | its core. I was able to use Clojure only in my small shop where I
       | have a small degree of autonomy on development language choice.
       | For a few years, I was somewhat actively seeking an opportunity
       | to join a larger Clojure-oriented team but struggled to gain much
       | traction when applying to openings. It seems possible to build a
       | Clojure career, but I've not been very good at that.
        
         | keeganpoppen wrote:
         | (for anyone who doesn't get it, Rich funded Clojure development
         | via his retirement savings from 2005 until he ran out in 2009
         | https://dl.acm.org/doi/pdf/10.1145/3386321)
        
           | gdsdfe wrote:
           | Oh wow! I didn't know that
        
             | [deleted]
        
           | swyx wrote:
           | gotta ask - what did he do after 2009? is he alright now?
        
             | dkersten wrote:
             | He did a community drive in 2009/2010 or so and a lot of us
             | pitched in a little. Then he joined forces with Relevance
             | to create Cognitect and that has funded his Clojure
             | development since. Hopefully he gets a nice payday from
             | this acquisition too.
        
             | puredanger wrote:
             | He became the CTO of Cognitect. :) He's doing great.
        
       | systems wrote:
       | Since Nubank, is not in the business of selling software does
       | this mean, they might open source datomic ?
        
       | gdsdfe wrote:
       | Anyone have an idea on the nubank stack in a bit more details?
        
         | riadvargas wrote:
         | Here you can get a somewhat updated view on Nubank's stack:
         | https://stackshare.io/nubank/nubank
        
       | scribu wrote:
       | Did anyone else notice that the biggest non-academic supporters
       | of functional programming seem to be financial institutions?
       | 
       | Is it due to the nature of the problem space? Is it because
       | finance people tend to be more analytical? Something else?
        
         | Ericson2314 wrote:
         | Never discount networking effects. I think it's good for the
         | problem, but better languages are better for all problems, so
         | that doesn't explain it enough.
         | 
         | Considering that finance is decently geographically
         | distributed, I'd say it's more SV has become javascript hell
         | than finance is especially FP oriented.
        
         | gphil wrote:
         | I think the answer to both of your questions is yes. I think
         | the related concepts of immutability and pure functions without
         | mutable state allow for cleaner analytical modeling (and in
         | some cases in strong functional languages, mathematical proof)
         | of what that the code is actually going to do in production.
         | That kind of predictability is essential for dealing with
         | financial computations.
        
         | nolok wrote:
         | I would assume it's because it's easier to provide a
         | mathemathical proof for the code with functionnal programming.
        
         | orolle wrote:
         | It is nature of the problem space which requires you to produce
         | high quality code. If you have a small error in your program,
         | the financial market participants will use it against you to
         | profit. What you loose, others win! Google "fat finger" for
         | examples. In banking you have to keep track of every
         | transactions, see "double accounting". You never delete a
         | transaction, you only retract! Mutablity can cause you a lot of
         | trouble there. SQL DELETE and UPDATE are extremly dangerous!
         | Clojure and datomic solves this through immutibilty. Lastly
         | time is relativistic, meaning that every IT system has a
         | slightly different time. Normaly you never notice this. But
         | they are the cause of tricky race conditions and cost you real
         | money. Think about bank transactions, where you have a
         | transaction date (date you send money) and valuta date (date
         | your friend receives money). One transaction 2 different dates,
         | depending which perspective you take (perspective is
         | relativistic, Einstein is right even in IT!). Datomic
         | linerialies transactions thus this problem does not occure on
         | database level.
        
           | moon2 wrote:
           | Not really a Clojure user, but I made a small API with it
           | once and it blew my mind, especially the design patterns
           | involved. An interesting one is the ports-and-adapters
           | (a.k.a. hexagonal architecture) [1][2] . Basically, all the
           | business logic will be kept at a layer, and all of the
           | functions there should be pure (i.e. they will always return
           | the same information according to your input, and these
           | functions won't cause side effects [3]). Then you would have
           | layers where you can plug databases and REST handling.
           | 
           | And Nubank take testing really seriously. REPL and pure
           | functions makes it very easy to use TDD.
           | 
           | [1] https://github.com/nubank/basic-microservice-
           | example#ports-a...
           | 
           | [2] http://wiki.c2.com/?PortsAndAdaptersArchitecture
           | 
           | [3] https://practicalli.github.io/clojure/thinking-
           | functionally/...
        
           | alexbanks wrote:
           | > It is nature of the problem space which requires you to
           | produce high quality code.
           | 
           | Would love to see any actual data or studies showing that
           | functional programming implicitly produces "high quality
           | code".
        
             | beders wrote:
             | https://cacm.acm.org/magazines/2017/10/221326-a-large-
             | scale-...
             | 
             | Section 3, RQ1
        
               | alexbanks wrote:
               | I have quite a few gripes with this article, and overall
               | question the validity of its assertions, but interesting
               | nonetheless.
        
               | amw-zero wrote:
               | There's a ton of problems with empirical studies about
               | software in general. Very hard to conduct reliable
               | experiments. In particular, I think analyzing public
               | GitHub projects is pretty much the worst corpus possible.
               | 
               | For example, almost all of the projects in this study are
               | infrastructure projects (I'm not familiar with all of
               | them so I can't say that it's definitely all). I'm much
               | more interested in application projects, and even if you
               | (general you) aren't, you have to admit that an
               | infrastructure project has a totally different set of
               | characteristics than your average business application.
               | 
               | I think anything we can do to get more empirical data
               | related to software the better, as we have devolved into
               | strong personalities and conviction making pretty much
               | all of the major decisions in our industry, which is
               | really deeply sad. But we have to do better than just
               | mining open source Github projects.
        
               | alexbanks wrote:
               | 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 down the path of mapping that study's
               | measurements to overall language popularity (as I think
               | they're related - more C++ code available = more bugs),
               | but gave up as I remembered that A.) Nobody's opinion
               | changes as a result of a reasonable argument on the
               | internet, and B.) Convincing this person nets me nothing
               | at all.
               | 
               | You get higher quality code by hiring people capable of
               | producing higher quality code. A great way to find people
               | that are capable of producing higher quality code is by
               | hiring for languages with extremely small talent pools -
               | nobody got there because it was easy or the odds of
               | getting hired were good. Functional programming might
               | seem popular on HN, but in the wild is really not popular
               | at all. Clojure developers probably care a great deal
               | more about the quality of their work than, say, some
               | random J2EE developer, as the Java dev might not care at
               | all about anything other than staying employed.
               | 
               | I guess my argument summarizes down to "Functional
               | programmers care more about their work", which, to my
               | original point, has nothing at all to do with the
               | languages they're using (as the person I responded to was
               | saying). To assert that "Functional programming languages
               | produce higher quality code" is like saying "This brand
               | of hammer hammers better." It's just nonsense.
        
             | darthrupert wrote:
             | That's unfortunately hard to find, since hardly any
             | customers require that these days. Fast and cheap is where
             | it's at.
        
               | alexbanks wrote:
               | Or, as I'm asserting, it's just totally bogus.
        
           | hk__2 wrote:
           | > It is nature of the problem space which requires you to
           | produce high quality code.
           | 
           | Wouldn't a strongly-typed language be a better choice here?
        
             | in9 wrote:
             | I wouldn't think that strong types are an advantage. They
             | may be in classic software with long compile times and
             | complex builds. However, the current landscape for
             | financial institution doesn't require that. Immutability
             | and functional paradigms seem to be much more in line with
             | the needs of the business.
        
             | orolle wrote:
             | 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 better, you need to change a
             | lot in a class diagram. Dynamic languages reduce the
             | problem, as a lot less names are needed. Clojure spec is
             | used for specification of data instead of types, but there
             | is also clojure typed (which uses javas type system).
        
             | maximente wrote:
             | this is perhaps controversial but i actually think datomic
             | is so powerful, it's worth using clojure for. in other
             | words, the database is driving the choice of programming
             | language.
             | 
             | the idea of viewing a database as an _immutable_ state of
             | the world at a given instant t0, and time becoming a
             | parameter on that state of the world (in order to show
             | changes as time goes forwards [or backwards!]), is
             | extremely, extremely attractive for things like finance,
             | whose first class citizens are among others:
             | 
             | - capability for audits e.g. show me the history of
             | transactions from any particular account. since datomic is
             | basically a collection of immutable facts over time, this
             | is "free"
             | 
             | - distributed computing - datomic runs nicely across your
             | own internal compute (often needed for financial stuff)
             | 
             | - transactions are no longer strings, but are actual data
             | structures - this makes the gnarly steps of things like
             | transferring assets across instruments a lot easier (i'd
             | imagine). think about how you'd implement a shopping cart
             | with transactions in postgres vs. how you'd do it with
             | access to raw data structures
        
               | fnordsensei wrote:
               | Moreover, transactions are reified and can have arbitrary
               | metadata, so you can query the transaction log itself
               | (for example, "show me all transactions issued by person
               | X").
        
             | Nihilartikel wrote:
             | It takes the will and discipline to use it, but what
             | Clojure Spec (and other schemata libs) offer is, in a lot
             | of ways, more powerful and flexible than traditional type
             | systems. A spec can be thought of more as a contract with
             | the data, one with enough detail that it can be used to
             | auto-generate conformant example data even. If, for
             | instance, you have a function, that needs to work on
             | either, integers, or numeric strings, and textual fractions
             | like '1/5'. Enforcing this constraint on input, and getting
             | informative exceptions on bad data is easy with a spec, and
             | the function code does not need to contain all of the noise
             | to validate or coerce data. Sure, you don't see the problem
             | at compile time, but if you can auto-generate test data,
             | the tests that you should already have become easier to
             | write.
        
             | beders wrote:
             | Unlikely. At least not for domain modeling.
             | 
             | Especially in that industry where your domain is changing
             | all the time, where regulations are changing all the time,
             | where the ability to reason about your domain at different
             | points in time is essential.
             | 
             | Having more flexible types like maps is one of the building
             | blocks to avoid complexity (there are more, more important
             | ones) It sounds counter-intuitive, but it certainly is
             | working out for companies embracing clojure.
        
           | socksy wrote:
           | I love immutability and Datomic as much as the next Clojure
           | programmer. But this sounds quite a lot like post-hoc
           | reasoning.
           | 
           | For example, there's quite a few situations where you require
           | mutability in bank data (e.g. with government requirements,
           | or when you want to rollback fraudulent trading). Sure, both
           | are solvable with Datomic, but they don't scream "huge
           | advantage with an immutable datastore".
           | 
           | And there are plenty of highly competitive industries where
           | code quality matters, but they're not flocking to functional
           | programming.
           | 
           | Don't get me wrong, I think functional programming is an
           | absolutely great way to structure and think about programming
           | (and have coded professionally in Clojure for the last 5
           | years or so). But I suspect the prevalence of FP in some
           | industries is as much chance/social reasons than it is for
           | some inherit superiority in the approach.
        
             | polityagent wrote:
             | small note: Banks do not want to forget fraud, the rollback
             | would be akin to a git revert. Even if the history
             | presented to the customer makes the fraud vanish it won't
             | be forgotten by the bank.
             | 
             | With government requirements I'm assuming you mean
             | something like gdpr. Datomic supports actually removing
             | data via excision. it's just not the default behaviour. I
             | personally prefer a system that doesn't forget by default
             | whilst preserving the option to do so.
             | 
             | you can also support destruction of personal data via other
             | means such as key shredding.
        
             | galkk wrote:
             | Aren't "rollbacks" done as separate transactions, that
             | return account amount to Previous value?
        
               | socksy wrote:
               | Depends on the legal requirements of that rollback
        
         | dig1 wrote:
         | Mainly because of the problem space. Banking/finance is a
         | complex field with many moving parts: card processing,
         | validation, encryption, currency exchange and tons of
         | certification stuff (I believe Nubank's primary focus is card
         | processing). Didn't even touch other financial fields like
         | investing, credit handling, or any kind of trading.
         | 
         | The software is always expected to be correct, never fail and
         | fast. Otherwise, someone will lose the money, and usually, you
         | (bank or institution) will have to recoup that, plus penalties,
         | plus name damage.
         | 
         | Source: worked there.
        
           | darthrupert wrote:
           | Doesn't banking actually use double accounting to ensure not
           | losing money instead of relying on something as brittle as
           | software?
           | 
           | Then again, Wirecard happened. But perhaps that wasn't
           | exactly banking.
        
         | pea wrote:
         | In haskell, a lot of the uptake in financial services is
         | because they are writing internal DSLs to do things like
         | modelling exotic options.
        
         | dwwoelfel wrote:
         | As a counter example, Stripe uses Ruby and Mongo.
        
         | Joe8Bit wrote:
         | Immutability is a very powerful idea when record keeping and
         | dealing with transactions. I know of at least one major bank
         | whose ledgers are written Haskell.
        
           | bhurlow wrote:
           | any relevant links to share about this?
        
             | mark_l_watson wrote:
             | Perhaps: Standard Chartered Singapore?
             | 
             | I tried unsuccessfully to get a job with them about 4-5
             | years ago. They are a huge Haskell shop.
        
               | davidrupp wrote:
               | Sounds like a broken hiring process right there. Anything
               | you care to share about why that didn't work out? I can't
               | imagine a company having an opportunity to hire you and
               | choosing not to.
        
               | mark_l_watson wrote:
               | I don't mind sharing about that. Standard Charter has the
               | reputation for being a great Haskell shop and I have been
               | trying for years to up my Haskell skills.
               | 
               | I simply didn't have enough background in Haskell. The
               | interview was fun. The interviewer did his PhD in Haskell
               | and compiler theory.
               | 
               | Around the same time, I applied to Facebook's Haskell
               | group, and I got to interview with Simon Marlow, which
               | was great. He also said that I didn't have enough Haskell
               | experience and suggested that I do more Haskell
               | consulting work, and re-apply in a year.
               | 
               | Anyway, I love coding in Haskell but my skills need
               | improvement.
        
             | niclo wrote:
             | It's Walmart and not a financial institution but this is a
             | great talk about immutability applied to the backend
             | services using F#: https://youtu.be/FskIb9SariI
        
               | ilikehurdles wrote:
               | Coincidentally, Walmart also maintains a lot of clojure
               | libraries now, including the go-to graphql implementation
               | in clojure: https://github.com/walmartlabs/lacinia
        
         | dgb23 wrote:
         | Functional languages and databases seem to be a natural fit.
         | 
         | Given you have a basic grasp of bookkeeping, accounting and
         | financial statements: Would you rather program these things in
         | a functional or imperative language? Would you rather store the
         | transactions in a accreting, value oriented database or one
         | that has no inherent notion of these concepts?
         | 
         | Or more generally, if your application has a temporal reporting
         | feature, then you need to be able to ask questions like: "What
         | were these values at date X and what are they going to be at
         | Y?" etc.
        
       | mark_l_watson wrote:
       | Good for them, well deserved success for the principles, Clojure,
       | and Datomic!
       | 
       | I donated to the Clojure dev fund early on, and I had two
       | consulting customers over a few year period who mandated Clojure.
       | I stopped using Clojure when the paid work stopped because I
       | really like Common Lisp better for my use cases. I have on my
       | radar for sometime this year to update my cooking website [1]
       | that is written in Clojure, so I will at least get a small
       | opportunity to kick the tires on modern day Clojure.
       | 
       | [1] http://cookingspace.com
        
       | jacknews wrote:
       | Will the license change?
        
         | puredanger wrote:
         | No change in Clojure's license (it is still EPL 1.0).
        
         | adelarsq wrote:
         | No. It's just a "cooperation" to use technologies.
        
       | ksec wrote:
       | I thought Nubank was an Elixir Shop but now It looks like Nubank
       | is a much bigger Clojure shop than Elixir.
       | 
       | So why did they acquire Plataformatec?
        
         | kureikain wrote:
         | They are a big Clojure shop. They hire Plataformatec as a
         | consulting company. This podcast has more info:
         | https://changelog.com/podcast/402
        
           | riadvargas wrote:
           | We (Nubank) actually acqui-hired Plataformatec earlier this
           | year: https://www.contxto.com/en/startups/fintech-nubank-
           | acqui-hir...
        
       | huahaiy wrote:
       | Congratulations! Does this mean that there is a chance for
       | Datomic to be open sourced?
        
       | josefrichter wrote:
       | Killer team.
        
       | tomconnors wrote:
       | It sounds like Nubank might have the biggest Datomic installation
       | in the world (2000 servers). This is exciting news for people
       | like me who think Datomic is the most interesting database out
       | there. Putting more resources behind Datomic might finally allow
       | it to go mainstream.
        
         | tom_b wrote:
         | I was unable to bring Datomic in-house. Mainly because our
         | organization has a huge agreement with Oracle and all our
         | database servers are essentially "free" to teams.
         | 
         | So I cheated. I created some schema designs that were
         | immutable. I added a GUID, timestamp, and a deleted flag (value
         | of 'Y' or 'N') to tables. Basically, all selects are against
         | views that are defined over the tables to select the tuple
         | associated with the max(timestamp) for that tuple along with
         | the tuple having a deleted flag value of 'N'. This means that
         | any select only sees the most recent tuple value for a GUID if
         | it hasn't been "deleted".
         | 
         | There was a little bit more hiding in there to handle dirty
         | writes.
         | 
         | But this worked very well for my requirements. By really only
         | doing inserts, I was able to do similar "point in time" looks
         | at the db as an immutable value.
         | 
         | Fun stuff.
        
           | havenconnect wrote:
           | Would you be willing to have an email chat about that? I'm
           | thinking about doing a similar strategy with our relational
           | database and wanted to get your experiences with that.
           | 
           | sam at havenconnect dot com
        
           | escherize wrote:
           | Reminds me of the time I wrote an eavt (entity, attribute,
           | value, transaction-time) store on top of rethink db with a
           | friend of mine.
        
           | nickpeterson wrote:
           | You may want to look into Anchor Modeling
           | http://www.anchormodeling.com/
        
       | rel2thr wrote:
       | Wonder if this makes datomic more likely to become free/open
       | source
       | 
       | Not sure what their license revenue is but hard to imagine it
       | would be significant to a major fintech
        
         | kamaal wrote:
         | Also lets hope they acquire cursive ide too and offer it for
         | free.
         | 
         | Clojure deserves an IDE for larger adoption.
        
           | puredanger wrote:
           | Clojure has many free IDEs. Many people currently use Emacs
           | w/CIDER, Atom w/Chlorine, Visual Studio w/Calva, Vim
           | w/Fireplace, etc. For that matter, Cursive also has a free
           | non-commercial edition.
        
             | jcadam wrote:
             | I've found CIDER superior to Cursive for Clojurescript,
             | specifically. I use a combination of IntelliJ (with the
             | emacs keybindings) and emacs depending on which language
             | I'm working with. Most of my projects involve two or more
             | languages, so I'll usually have both editors open all day
             | :)
             | 
             | As an aside, I'm starting to become a fan of Kotlin for
             | backends (with some Clojure sprinkled in where it offers a
             | big advantage), and Clojurescript (re-frame) for the
             | frontend (because it offers a big win over javascript
             | there). I've taken a step back from full Clojure for
             | everything, being that I have to work with others who
             | aren't as in to "alternative" languages as I am.
             | 
             | Datomic is something I probably won't mess with until (and
             | if) it becomes open source.
        
               | randompwd wrote:
               | Using Spring with Kotlin or other?
        
               | jcadam wrote:
               | Yea, spring boot. When 90% of what you're doing on the
               | backend is gluing a bunch of different Java technologies
               | together, Clojure becomes hard to justify. Fortunately,
               | mixing JVM languages together on the same project isn't a
               | big deal so you can bring in some targeted Clojure where
               | needed.
               | 
               | Kotlin is great because it's the closest thing to a
               | general-purpose Java replacement I've seen. The interop
               | support between Kotlin and Java is outstanding.
        
               | KingMob wrote:
               | Funny, I _left_ Cider for Cursive a few years ago,
               | because back then, Cursive had the better cljs support.
        
               | jcadam wrote:
               | It's probably a result of my using shadow-cljs rather
               | than figwheel. Cursive will catch up eventually, I'm
               | sure.
        
               | kickopotomus wrote:
               | Are there any screen casts out there showcasing the
               | utility of CIDER? I guess I have just never been a big
               | emacs guy so it felt sort of clumsy to me but I am
               | probably just missing something. Could also be that I am
               | just too familiar with the Cursive workflow.
        
             | kamaal wrote:
             | Thanks Alex.
             | 
             | Wishing you and your team many congratulations and kudos on
             | this occasion.
        
             | LandR wrote:
             | ItelliJ w/Cursive too works great.
        
           | kgwxd wrote:
           | There's a free non-commercial license. If that's not enough,
           | wouldn't they have to acquire IntelliJ too since they have a
           | similar licensing model?
        
       | jyriand wrote:
       | What is meant by "joining"? Did Nubank aquire Cognitec?
        
         | josefrichter wrote:
         | yes
        
       | juskrey wrote:
       | 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
       | having a choice between having to conform or quit the only money
       | source.
       | 
       | I am not discussing personalities here - people are free to
       | choose how to sell their products or themselves. Just thinking
       | what this means to me as a software consultant who makes 100% of
       | money from Clojure (yes, a fragile single choice because of sort
       | of falling in love)
        
         | whoisjuan wrote:
         | 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 states like Venezuela banks are still a major
         | pillar of economy confidence.
        
           | juskrey wrote:
           | This is simply false - banks are not insured against failure
           | and not protected unless some political move "too big to
           | fail" is made, and this only makes systemic financial system
           | failures worse.
        
             | jwr wrote:
             | Whether this is false depends on particular country laws.
             | For example in the EU you can't call yourself a "bank"
             | without being subject to regulation, and in Poland for
             | example, if you are a "bank", your money is actually
             | protected against failure, up to EUR100,000.
        
               | juskrey wrote:
               | Deposits insurance has nothing to do with that.
        
             | whoisjuan wrote:
             | > Banks are not insured against failure and not protected.
             | 
             | Well. Except they are. In the US not only at the federal
             | level but also at the state level:
             | 
             | - https://en.wikipedia.org/wiki/Deposit_insurance
             | 
             | - https://www.fdic.gov/deposit/
             | 
             | - https://en.wikipedia.org/wiki/Federal_Deposit_Insurance_C
             | orp...
             | 
             | - https://www.cnn.com/2020/04/17/business/bank-earnings-
             | defaul...
        
               | cemerick wrote:
               | You are mistaking what is insured here. _Deposits_ are
               | insured, the banks themselves are not.
               | 
               | Here's the list of banks that have failed in the US and
               | for which their deposits entered receivership managed by
               | the FDIC; looks like a handful every year:
               | https://www.fdic.gov/Bank/individual/failed/banklist.html
        
               | whoisjuan wrote:
               | I'm not. I was trying to point to the OP that banks
               | aren't as fragile as he think they are. When the very
               | nature of your business, which is handling people's
               | money, is federally insured, you have mitigated a lot of
               | risk.
               | 
               | Yes banks can fail and they can go bankrupt, and if that
               | happens to Nubank then this acquisition goes to hell
               | which makes the Clojure ecosystem weaker. I give that to
               | OP.
               | 
               | But saying that banks are "very very" fragile
               | institutions I think is fundamentally wrong.
        
           | raphaeljlps wrote:
           | Just to clarify, Nubank is not an actual/formal bank in
           | Brazil. They have operating licenses as Financial institution
           | and Payment institution though.
        
         | dustingetz wrote:
         | Nubank raised nearly a billion $ since 2018, hard to see that
         | being bad in any possible way for Datomic to have access to
         | those resources
        
           | juskrey wrote:
           | That billion is not a charity, but comes with some people
           | pursuing some things. Most of the time that "things" are to
           | make a PR stunt, inflate and sell.
        
         | jonahbenton wrote:
         | With respect, I see where you are coming from, but would argue
         | it isn't necessarily the right read, either in terms of banks,
         | or in terms of Clojure, though there is nuance.
         | 
         | Banks are systemic actors in the financial system. They have
         | privileges granted only to them, requirements that only they
         | have to meet. It is HARD to build and operate a bank, whether
         | in the US or in another country.
         | 
         | From a "fragility" perspective- there are a lot of definitions
         | of fragility, but when looking at attributes like- may fail at
         | any time; may lose customer assets; may take on inappropriate
         | risks given their systemic position; have negative systemic
         | impact on larger financial system operations- whatever
         | attributes you think of, the amount of energy that goes into
         | oversight around those attributes is significantly larger for
         | banks than any other "systemic" industry (real estate, health,
         | whatever).
         | 
         | The number of health oversight agencies in the US is, like, 5.
         | The number of financial oversight agencies is in the dozens,
         | just at the federal level. (This is why in the US you sue for
         | medical malpractice but not financial malpractice, and why
         | there is government backed financial insurance of various kinds
         | and much less health insurance. You are on your own in the
         | health industry. In finance there are armies around).
         | 
         | Banks have like 10 different kinds of risk that they and their
         | supervision are monitoring for. Yes, banks fail, but that's
         | because people suck and are bad at things and the second law of
         | thermodynamics and so forth. It isn't necessarily the same in
         | other countries but banking, like many other industries, is
         | increasingly global, and banking core systems are increasingly
         | international.
         | 
         | Nubank is clearly doing a LOT of things right- I saw a
         | presentation in person from them in February and it blew my
         | mind the level of capability and abstraction they were working
         | at. They are a solid entity with a strong growth path.
         | 
         | Cognitect, in contrast, is a tiny consulting firm. Maybe 50
         | employees? Technical consulting at scale is an incredibly hard
         | business, particularly when your solution domain is limited to
         | a particular toolchain. There was really no chance Cognitect
         | was ever going to become Thoughtworks, or Deloitte, or anyone
         | like that. That's an infinitely more fragile financial
         | situation for Clojure than living under the roof of a business
         | with a valuation in the billions.
         | 
         | The way to think about this is that all technologies have a
         | sponsor. Clojure moves from basically being sponsored by a guy
         | in his backyard to, like PHP (Etsy has a market cap of around
         | $10B and employs the PHP leader). That's huge.
         | 
         | Beyond that, having what should become a more well known and
         | reputable player in the financial industry backing it- you
         | could well see A LOT MORE adoption from enterprises playing
         | copycat. It's not going to happen right away, but it is a
         | seminal step in COMPLETELY changing the enterprise adoption
         | calculation.
         | 
         | However, everything is a tradeoff. If you aren't working with
         | Datomic, or in finance- this move is a stronger statement that
         | maybe Clojure doesn't have the strongest future for you. It
         | isn't going to become a lot of other things that it could
         | become. The finance industry has a fondness for languages with
         | weird syntax, and those languages often stay in the finance
         | industry niche. That's probably where Clojure stays. There are
         | all sorts of wicked cool JVM things like LMAX and Azul that are
         | also financial industry specific, and Clojure and Datomic get
         | to become one of those. Very successful, very cool, but niche.
         | 
         | Anyway- hope that's helpful, happy to continue the
         | conversation.
         | 
         | Cheers.
        
           | juskrey wrote:
           | I have no issues with financial things per se - I have built
           | several financial systems (from crypto to funds management)
           | with Datomic and Clojure myself.
           | 
           | And this is also one of the reasons I think having sole bank
           | as your owner is a really really bad thing.
        
             | jonahbenton wrote:
             | Say more? Would be helpful for others to further articulate
             | your observations and opinions. No one has all the answers.
             | For all who have a stake a full diversity of views is best.
        
               | juskrey wrote:
               | I'll be really short: the bank lends money in Brazilian
               | real to credit card holders and, in addition, keeps half
               | of that in financial derivatives. The last real slide (3x
               | in value) was in 2011-2016. Current world situation is..
               | interesting, to say at least, and 1 billion of VC money
               | are not charity.
        
               | jonahbenton wrote:
               | Ah, yes, got it, that's helpful.
               | 
               | Are their financial reports available and published in
               | English? Would be interesting to read.
               | 
               | I don't know details of their financial model, but will
               | say:
               | 
               | * there is a long bootstrap process for a bank that
               | involves being selective with what customers they can
               | serve with what products at what margins in what order
               | 
               | * debt is a hard game, though in many niches now is the
               | best of times
               | 
               | * currency is also a hard game
               | 
               | * in general, banks are valued at a small multiple of
               | assets and do not attract VC
               | 
               | * in general, SAAS businesses are valued at a large
               | multiple of revenue and do attract VC
               | 
               | So my assumption would be that they are using equity to
               | build the ability to get into the banking core business
               | as a SAAS, which is both lucrative and exploding as an
               | opportunity (see recent nCino news). If they succeed,
               | that's an extremely durable business, and not a bad place
               | for Clojure to be. There are a number of languages that
               | still only "exist" because they form the basis of a
               | banking core.
               | 
               | Cheers. Thanks for the engagement.
        
           | mapgrep wrote:
           | "If you aren't working with Datomic, or in finance- this move
           | is a stronger statement that maybe Clojure doesn't have the
           | strongest future for you."
           | 
           | I don't follow. The company the python BDFL last worked for
           | was a storage outfit with a valuation roughly equal to
           | Nubank. The Rails BDFL is at a pretty small software shop in
           | Chicago. Ruby BDFL was at a division of Salesforce last I
           | checked.
           | 
           | Seems a bit reductive to say that Clojure creator being
           | employed by a bank makes Clojure a worse choice outside
           | finance.
        
             | jonahbenton wrote:
             | Sure, reductive is fair. In response:
             | 
             | a. ruby and especially python (and PHP for that matter) are
             | top 15 languages with very wide adoption, following, name
             | recognition, use cases. Great documentation, lots of books,
             | conferences, blogs. Robust business and consulting
             | ecosystem. etc. Lots of onramps and growth curves for
             | individuals. And communities still growing steadily.
             | Clojure is substantially younger (10 years vs 30 for py, 25
             | for php and ruby) but it is comparatively tiny and niche
             | and arguably its _rate_ of growth is lower
             | 
             | b. syntax is part of the story here. Clojure is a better
             | language than kotlin, but kotlin is seeing explosive
             | general purpose use case growth that Clojure can only dream
             | about. Clojure _syntax_ is niche.
             | 
             | c. there are a very large number of technologies, including
             | languages, that have wide usage within finance and banking
             | and zero use outside. No matter how neat k is, there is no
             | market for tutorials, no community growth (well, maybe
             | modulo data sci world). No one is ever going to use jbase
             | rather than postgres. Many of these also have niche syntax.
             | 
             | d. I think the Nubank news on balance is terrific, but I
             | don't think it helps Clojure's community growth story at
             | all, which is a chicken/egg problem in the context of
             | general purpose use outside of finance. Nubank committing
             | to _that_ outcome...seems doubtful to me, compared to
             | Nubank wanting to have more control over what it considers
             | to be its strategic differentiator.
             | 
             | This last could well be wrong, and what we'll get from
             | Nubank-owned Cognitect is developer experience, onboarding,
             | a completed Spec, a comprehensible REPL-based developer
             | onboarding, _error messages_ , documentation- all the UX
             | things where Clojure's superior design ergonomics are
             | undone by nits in the experience.
             | 
             | My understanding is that Nubank is concerned about these
             | things for its internal people, that their hiring rate has
             | forced them to solve for onboarding. We will see. The
             | Clojure team itself likes the sharp tools for experts
             | model. There would need to be a funded change in that
             | emphasis for the acceptability of Clojure solutions in
             | areas where it wasn't already known to grow.
        
           | kinleyd wrote:
           | An excellent assessment - Rich, Stu and team clearly must
           | have assessed the option similarly. Congratulations to
           | Cognitect and here's wishing them well.
        
         | latortuga wrote:
         | Cognitect is not winding down Datomic, Datomic Cloud, or
         | Datomic consulting, and they have big name customers including
         | Facebook and Netflix.
        
         | qroshan wrote:
         | Yeah, very strange for a bank to buy a technology stack
         | company. Why? It strategically doesn't make any sense, unless
         | the bank wanted Clojure/Datomic to prioritize their features
         | and requirements.
         | 
         | What would it mean for adoption?
        
       | hellofunk wrote:
       | Case you're curious, Nubank has done the same thing for the
       | Elixir language!
       | 
       | http://blog.plataformatec.com.br/2020/01/important-informati...
        
         | rafaelferreira wrote:
         | Not exactly, Elixir continues to be lead by Jose Valim, now at
         | Dashbit. (disclosure: nubank employee).
        
       | geokon wrote:
       | Does this mean Closure will continue to become more and more
       | server/web focused?
       | 
       | I could have the wrong impression, but from all the dead
       | libraries I've come across it feels like it used to be all over
       | the place with people doing math, visualizations/art, music,
       | people trying to run on Android (seemingly the only JVM language
       | that has no Android ecosystem/workflow.. crazy) etc.. Now a lot
       | of that has atrophied and looks like it's mostly all about web.
       | Though there are still interesting nonweb things going on - it
       | just feels like a shrinking fraction
       | 
       | Either way, a big congrats to the people involved. Happy for you
       | guys. That you for all your hard work, the beautiful language
       | that has made me enjoy programming more than ever, and all for
       | free :)
        
         | beders wrote:
         | It's not untypical for clojure libs to appear "dead". They will
         | work just fine. Some libs are just "done"!
        
         | puredanger wrote:
         | I disagree that people are not doing those things now or that
         | this has changed at all. We have a decade of yearly Clojure
         | surveys that show people continue to do all those things (and
         | lots more).
         | 
         | Most (70-80%) of Clojure developers work on web apps because
         | most programmers work on web apps.
         | 
         | People that like Clojure use it for everything you can think of
         | and I expect them to keep doing so.
        
         | Heliosmaster wrote:
         | FWIW Clojurescript can also be used in ESP32:
         | https://blog.tindie.com/2020/07/clojurescript-on-esp32-why-n...
         | 
         | Mike Fikes and the team at Vouch.io are doing some interesting
         | work there, using cljs for IOT.
        
         | johnfn wrote:
         | I think what you might be seeing is actually just a decline in
         | interest of the language in general:
         | https://trends.google.com/trends/explore?date=all&geo=US&q=%...
        
       | [deleted]
        
       | dustingetz wrote:
       | The bull case here is if Nubank goes full Amazon and uses banking
       | as a beachhead to create the next layer up from AWS, which
       | Clojure/Datomic is amazingly perfect for - data all the things
        
         | juskrey wrote:
         | And we'll have to go back using sqlite again
        
         | nudpiedo wrote:
         | there is also an on Prem solution, and I believe that's what
         | such customer wants.
        
         | bananaface wrote:
         | [deleted]
        
           | bhurlow wrote:
           | Is a "transaction log" not exactly the technical shape of a
           | bank?
        
             | [deleted]
        
             | patmorgan23 wrote:
             | It's definitely the shape of accounting
        
       | jwr wrote:
       | My entire business is built on Clojure and ClojureScript, and it
       | would not have been possible without these languages. I am always
       | slightly worried by this kind of news, because it means that the
       | main Clojure team is now dependent on a single institution. But
       | it could be good news as well, depending on how things go.
       | 
       | Until now, I've been getting nothing but excellence from the
       | Clojure team: not just great tools, but also great thinking
       | behind them. I appreciate what I've gotten (for free!) until now,
       | and hope that the trend will continue :-)
        
         | jonahbenton wrote:
         | Would love to hear what you learn from engaging on any
         | expectations you have for roadmap. I wrote separately that I
         | see a bright (very bright, complete game changer) future for
         | the toolchain in finance, but finance is a special ecosystem
         | where general purpose languages with goofy syntax become niche-
         | sometimes very large niche, but still niche.
        
           | jwr wrote:
           | Niche is fine. I don't know why people are obsessed with
           | languages becoming dominant, or enjoy calling languages
           | "dead". I don't need everyone to use Clojure. In fact, I'd
           | rather prefer that my competitors use something else, because
           | it gives me an edge over them.
           | 
           | I don't have "expectations", I think "hopes" is a better word
           | here. I hope to continue to profit from the core team's
           | thinking and be able to use the tools they create and ideas
           | they generate.
        
             | randompwd wrote:
             | I mean, that may be true to a point in the long run/true
             | outside of webdev.
             | 
             | But the dev who intimately knows Spring & Java/Kotlin is
             | gonna be far ahead of you for the first 9 months, given
             | that there's so much out of the box functionality. They'll
             | be going through a nice paint by numbers scenario for most
             | of the heavy lifting whilst you have to expound effort in
             | creating what's done.
        
               | fulafel wrote:
               | Usually you hear skepticism the other way around (that
               | Clojure's productivity advantage over Java style
               | languages in a project could diminish over time as static
               | typing advantages can be more pronounced in the twilight
               | years of the apps lifespan).
        
               | jonahbenton wrote:
               | Understand the argument- it's language vs ecosystem- but
               | Clojure leverages the JVM ecosystem in a first class
               | manner. Spring is very productive, to be sure, but I
               | still find that in terms of LOC, Clojure requires less
               | for simple cases, and much less for hard cases, and
               | Clojure practices- like REPL-driven development-
               | themselves are more productive/faster iteration.
        
               | lukashrb wrote:
               | Interesting view. What are the 'out of the box
               | functionalities' which Clojure is lacking? Keep in mind
               | Clojure provides Java interop and with clojurescript js
               | interop. The clojure ecosystem has also pretty great
               | libraries to work with. For example take a look at fulcro
               | or re-frame, also metosin works on some really great
               | libraries and there is much more.
        
               | dkersten wrote:
               | > What are the 'out of the box functionalities' which
               | Clojure is lacking?
               | 
               | None, because for anything Clojure doesn't have, you just
               | lean on the JVM (or JS for Clojurescript). Sure, the
               | syntax isn't as pretty and there are some abstraction
               | mismatches, but in my experience, you create thin
               | wrappers to hide this and move on.
        
               | slifin wrote:
               | If what you're comfortable with is Spring or Drupal or
               | Rails and those work for your use case then more power to
               | you
               | 
               | At the same time it's true there are products like roam
               | research that are fundamentally harder to achieve in a
               | cookie cutter environment
               | 
               | This talk kind of eludes to why that is
               | https://youtu.be/rI8tNMsozo0 but it's worth learning
               | there's many mature pieces of tech in this community that
               | are astounding
               | 
               | If you need boring.lib then reach into Java/JavaScript
               | with the easiest interop I've ever used
        
         | phrygian wrote:
         | I suppose a question for you would be how has your business
         | supported clojure(script)? It seems to me to be a case of a
         | business that has benefited from clojure - and wants to be
         | invested in its future - doing something about it. It cost
         | something to provide what you built your business on :)
        
           | jwr wrote:
           | A while ago I started to set aside an R&D budget that goes
           | towards developers writing open source, specifically Clojure
           | and ClojureScript libraries, and tools like magit or CIDER.
           | The amounts are still small (this is not an enterprise
           | business), but I'm increasing them regularly.
           | 
           | I want to see a stable, long-term ecosystem with maintainers
           | that are getting paid for their work.
        
             | dkersten wrote:
             | 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 not-too-distant future, if things go
             | generally well.
        
         | swyx wrote:
         | what was your decision process leading to bet on Clojure?
        
           | jwr wrote:
           | I used to enjoy programming in Common Lisp, then saw a talk
           | by Rich Hickey which intrigued me. I gave Clojure a try (this
           | was about 8 years ago I think) and (much to my surprise) it
           | turned out it works really well. It also turned out that a
           | coherent concurrency story is important, and that programming
           | with mutable data is not a very good idea after all, so I
           | abandoned CL completely.
           | 
           | Over the years, I got many fantastic gifts: ClojureScript,
           | transducers, core.async, spec -- and more. I'm very happy
           | with the choice. I also think my business would not have been
           | possible without Clojure and ClojureScript: the leverage I
           | have because of them lets me run a single-founder self-funded
           | business.
        
             | nathell wrote:
             | That'd have been 11 years ago. I know because my earliest
             | Clojure project on GitHub hearkens back to July 2009, and I
             | jumped onto the bandwagon after hearing enthusiastic
             | opinions of yours.
             | 
             | Not sure whether I ever had the opportunity to properly
             | thank you, but let me say so now. Thank you, jwr.
        
         | jacobsmith1984 wrote:
         | "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.
        
           | finnjohnsen2 wrote:
           | I would rephrase and ask why he claim his business would not
           | exists without Clojure/ClojureScript :)
        
             | Scarbutt wrote:
             | Yeah, seems like a cultish thing to say.
        
       | dbancajas wrote:
       | can one make a career out of clojure?
        
         | loevborg wrote:
         | The company I work for has 7+ open remote roles, all
         | Clojure/Script engineers. Clojure is mind-expanding but doesn't
         | necessarily take long to become proficient in - we've hired
         | many developers with no prior experience who've learned Clojure
         | in no time. If you're curious, my email address is in my
         | profile
        
         | iammiles wrote:
         | I work full-time in the healthcare industry writing mostly
         | Clojure(script). I wouldn't base my entire career off it (or
         | any one language for that matter), but there are career
         | opportunities out there using Clojure.
        
         | tom_b wrote:
         | I think this a much more nuanced question than a yes-or-no
         | answer can cover.
         | 
         | Looking at LinkedIn or indeed.com with just a simple search for
         | Clojure with no geographic qualifier (in the US), we see a very
         | small number of listed openings - 252 over the last month at
         | LinkedIn or 44 in the last 14 days at indeed. A plain google
         | job search on Clojure jobs in the US returns an even smaller
         | number.
         | 
         | Some of those job listings will almost certainly have Clojure
         | listed as part of a "laundry list" of technologies and the
         | actual job will probably not be Clojure oriented.
         | 
         | So just from a raw numbers perspective, the job sites to
         | suggest that there aren't a huge number of opportunities.
         | Comparatively speaking, there are like 60,000 Java job postings
         | on LinkedIn in the last month.
         | 
         | However, if you attend a Clojure/conj (one of the "primary"
         | Clojure programming conferences), you will find that many
         | attendees are part of some (not super-large?) number of
         | companies that use Clojure.
         | 
         | My best advice on building a Clojure career (that I failed to
         | follow) is that a programmer who wants to make a Clojure career
         | path is to be prepared to spend a significant amount of time
         | trying to make connections inside the Clojure community. On top
         | of that, you probably need to build a portfolio of project
         | experience that you at minimum blog about and preferably speak
         | at Clojure conferences, user groups, or meetups.
         | 
         | <edit: removed off-topic thought>
         | 
         | I would gently observe that long-time Clojure developers are
         | maybe too close to the tree to see the forest when it comes to
         | judging Clojure career opportunities.
         | 
         | But I would love to be wrong about my impression of Clojure job
         | opportunities! Perhaps fellow-HN readers could post
         | (anonymous?) numbers of Clojure job openings for their company
         | to give us a better idea?
        
         | vemv wrote:
         | Yes, but you may have to run the extra mile if you want every
         | job you get to be a Clojure one
         | 
         | (luckily, extra mile != extra 100 miles)
        
         | puredanger wrote:
         | Yes. There are 100s of companies using Clojure.
         | https://clojure.org/community/companies
        
       | PaulHoule wrote:
       | Why don't they take on the name Cognitect? It is a much better
       | brand than Nubank and that would distinguish this from the many
       | stories where a no brand or bad brand big co buys a good brand.
        
         | positr0n wrote:
         | Nubank has over ten million customers and undoubtedly many more
         | people in their target market that know their brand. The only
         | people that would recognize Cognitect are clojure developers or
         | particularly hardcore fans.
        
         | yomly wrote:
         | Is it a better brand? I believe Nubank offers b2c services.
         | What are all those customers going to think when
         | Nubank->Cognitect...
        
         | G4BB3R wrote:
         | 23 million customers disagree
        
       | stopachka wrote:
       | Congratulations team! I remember watching the Nubank infoq talk,
       | and sensing that they have a serious hacker culture.
       | 
       | This could be great for the clojure community. One idea, if done,
       | could step function the community: open source datomic... Oh ma
       | gad if that happens!
        
       | andrenth wrote:
       | 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 much. Maybe with Clojure is the same?
        
         | ballpark wrote:
         | I've watched a number of Clojure centric talks from Nubank
         | employees. Actually, I think it was one particular employee,
         | but I don't remember his name. One was on how they do testing.
         | The others were about Fulcro, which is a very interesting web
         | frontend library/framework.
        
         | hcarvalhoalves wrote:
         | 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.spec (https://clojure.org/guides/spec) to
         | annotate functions and data schemas, but it's opt-in
         | 
         | - We have static checking of data schemas across boundaries
         | (e.g. checking data producers did not break consumers over HTTP
         | or Kafka), which is where we found the most value (replaced
         | complicated end-to-end tests)
        
           | stopachka wrote:
           | Curious, did you really find that microservices helped?
           | 
           | The downsides can be so tremendous -- I wonder if nubank
           | would have done better to services in the low digit range.
           | 
           | (context: my thoughts on it -> https://stopa.io/post/236)
        
             | hcarvalhoalves wrote:
             | I believe micro-services change the trade-offs, and it's a
             | matter of what you value more.
             | 
             | We certainly have to invest more on infra-structure,
             | monitoring, standardisation, and we have been doing since
             | day one - by now it's pretty robust, to the point our
             | internal tooling allowed us to migrate from raw EC2 to
             | kubernetes (https://www.cncf.io/case-study/nubank/) and it
             | was a transparent change to all services and teams.
             | 
             | On the other hand, failures are more localised and we gain
             | robustness and speed to do certain kind of changes.
             | 
             | Your point about getting domain boundaries wrong is true,
             | but IMO it's a pain orthogonal to micro-services. The
             | solution is the same as if you defined a sub-optimal class
             | interface on a big mono-repo: relentless refactoring. We
             | are often strangling (https://martinfowler.com/bliki/Strang
             | lerFigApplication.html) and replacing legacy services.
        
           | andrenth wrote:
           | Thanks! Can you talk a bit more about the static checking of
           | cross-boundaries schemas? Any relation to tools that allow a
           | schema to evolve without breaking compatibility, like
           | protobuf?
        
             | hcarvalhoalves wrote:
             | It's not based on protobuf. There's some in-house tooling
             | that checks the schemas of producers against consumers
             | against known versions (aka the versions in production),
             | and we run it as part of the CI.
             | 
             | Since services implement standard components/protocols
             | there are standardised hooks to extract these schemas
             | definitions from each HTTP endpoint or Kafka consumer.
        
       | nt591 wrote:
       | Nubank also acquired Plataformatec and the Elixir team. Very
       | interested to watch how this plays out.
        
         | Plugawy wrote:
         | Not quite: they acquired the __consulting __part of
         | Plataformatec, the core Elixir folks are running a new
         | venture:https://changelog.com/podcast/402
        
       | fulafel wrote:
       | Apparently Nubank has offices in Berlin, wonder if at some point
       | there could be jobs there for working on open source Clojure
       | things.
        
       | jacobsmith1984 wrote:
       | Now there is a conflict of interest in Cognitect cloud services.
       | Would you trust a bank watch over your strategic information?
        
       | dgb23 wrote:
       | Nubank has a very inspiring story, both for engineers that are
       | fans of Clojure & Datomic and for entrepreneurs that want to do
       | "crazy" things like entering the bank sector.
       | 
       | This must be very validating and exciting for both Cognitect and
       | Nubank.
       | 
       | I'm excited of the future impact on Clojure and Datomic. I get
       | the impression that _all_[0] involved parties deeply care about
       | what made them great so far.
       | 
       | [0] I'm getting that vibe based on some talks I saw of Lucas
       | Cavalcanti and Edward Wible, available on Youtube.
        
         | jonahbenton wrote:
         | Yeah, I saw the Nubank folks present in person in NYC just
         | prior to COVID. I am a Clojure fan, to be sure, and also a
         | banking/money dweeb. Soup to nuts it was one of the most
         | impressive presentations / achievements I have seen. They were
         | clearly operating in the future. Congrats to both and looking
         | forward to growing the community.
         | 
         | Plans to release a SAAS banking core in the US? Pretty please?
        
           | ru552 wrote:
           | Was this a conference? Possible link to the talk mentioned?
        
             | jonahbenton wrote:
             | Clojure NYC meetup, sounds like video may be damaged but
             | was salvaged:
             | 
             | https://www.meetup.com/Clojure-nyc/events/268460200/
        
               | setr wrote:
               | direct link to the video:
               | https://www.youtube.com/watch?v=1dW4V3stFX0
        
         | puredanger wrote:
         | Exactly right.
        
       | auganov wrote:
       | > Nubank has grown to 600 Clojure developers, running 2.5 million
       | lines of Clojure code in 500 microservices
       | 
       | Wow, that's enormous especially for a concise language like
       | Clojure. Very happy about this announcement as a Clojure user.
       | Sounds like it's going to be viable for at least another decade.
        
       | bhurlow wrote:
       | I'm just remembering the sad collapse of RethinkDB...
       | 
       | The task of making a viable commercial database in 2020 is
       | herculean and I can really empathize with the team's need to both
       | keep cashflow and have a sufficiently sized deployment to debug
       | against.
       | 
       | Can also say that everyone I've met at nubank are really
       | passionate about the ecosystem and seem like they'll be excellent
       | partners
        
         | fulafel wrote:
         | Datomic is 8+ years old and by all accounts has a healthy
         | customer base, it's not like they are in the takeoff stage. But
         | of course they have to keep up like everyone else, especially
         | now that there is competition from the OSS side (Crux).
        
         | robertfw wrote:
         | I remember being very excited by RethinkDB, it was a huge shame
         | to see that go down. I feel like they signed their own death
         | warrant by making a product that was super easy to use and was
         | well documented.. so no support contracts, because simply not
         | needed. Such a shame.
        
       | Ericson2314 wrote:
       | > From their start in 2013, Nubank has grown to 600 Clojure
       | developers, running 2.5 million lines of Clojure code in 500
       | microservices on over 2000 Datomic servers.
       | 
       | Yikes that sounds like hell. Let's stop bragging about costs as a
       | succeess store? Headcount? LoC? microservices? These are all to
       | be _minimized_.
        
         | ilikehurdles wrote:
         | I really hope the hn trend of being reactionarily resistant
         | against everything that isn't a postgresql monolith would stop.
        
         | nlitened wrote:
         | What if a typical bank usually has 20 times more LoC and 5x
         | more developers?
        
         | puredanger wrote:
         | Edward Wible, CTO at Nubank, actually makes this comparison to
         | other banks (and how small it is) at
         | https://www.youtube.com/watch?v=2cYYwxgaxB0 (in the first few
         | minutes).
        
       | clj_throwaway wrote:
       | Throwaway account, for obvious reasons.
       | 
       | This is great for nubank, but how is this supposed to work for
       | other users of Clojure and Datomic? Who is really going to be
       | interested in building on top of tech owned by a (new, unknown,
       | regional) bank?
       | 
       | Someone said that this is just like Amazon (who would build on
       | top of tech from a bookstore??), but I hope it's obvious the two
       | situations are very different.
       | 
       | I expect that I'll have to be looking for a new job in a year's
       | time :-(
        
         | myth_drannon wrote:
         | Is it better to be owned by an adtech company (React, Angular,
         | Go)?
        
           | clj_throwaway wrote:
           | If you asked me that 15 years ago, I'd say "no". In
           | hindsight, it sort of makes sense given their objective of
           | increasing time spent online and the quality of the
           | experience.
           | 
           | The proposition here is that nubank will be the first bank to
           | successfully turn into a software vendor. Maybe my worries
           | will be nothing in 10 years, but no one can say its an
           | obvious outcome.
        
             | myth_drannon wrote:
             | Bloomberg and Jane street (not banks but still finance).
             | They don't own OCaml but are heavily involved in its
             | development.
        
             | lvh wrote:
             | Nubank already ships software, Cognitect is already a
             | healthy consultancy, no particular reason to kill either
             | one. Surely we can agree that banks also care about good
             | UX? Nubank in particular is known for it.
             | 
             | (I appreciate that you may not have heard of Nubank but I
             | don't think calling them "unknown" is fair. They have
             | attracted a literal billion in funding in a little over a
             | year. They have over 10 million users.)
        
         | [deleted]
        
         | puredanger wrote:
         | Per https://building.nubank.com.br/welcoming-cognitect-nubank/,
         | "Nubank does not own Clojure, just as Cognitect never owned
         | Clojure. Nubank will take over Cognitect's role as a corporate
         | sponsor for Clojure, funding the core development effort".
        
           | clj_throwaway wrote:
           | Outside of the license, OF COURSE Relevance, then Cognitect,
           | now nubank owns clojure, in every other way that matters.
           | 
           | Now do datomic :-)
        
             | dragandj wrote:
             | I am pretty sure that whoever owns Cognitect is in no
             | position to boss Rich around regarding Clojure. Besides,
             | Clojure is rather simple and stable. No need to change it
             | dramatically...
        
         | ilikehurdles wrote:
         | Nubank is a company valued at over $10 billion, with investing
         | from major Silicon Valley firms. It is not unknown to millions
         | of people, and is expanding internationally so I don't think
         | they'll be regional much longer. Clojure and datomic being such
         | a good fit for their tech stack of hundreds of microservices
         | and thousands of databases should really encourage people to
         | use clojure like Erlang's history in telecommunications
         | encouraged people to adopt Elixir.
        
         | xmlblog wrote:
         | > Who is really going to be interested in building on top of
         | tech owned by a (new, unknown, regional) bank?
         | 
         | As opposed to building on top of tech "owned" by a small
         | software consultancy? Perhaps I simply lack imagination, but
         | how is this worse?
        
           | clj_throwaway wrote:
           | We all know the history of acquihires. Key tech and products
           | inevitably are swallowed, never seen outside again.
           | 
           | Besides that, datomic really is a great solution for banks
           | and fintech....are other firms like that going to buy from
           | another bank, maybe a competitor?
        
         | mr_custard wrote:
         | A lot of people don't seem to mind building on top of tech
         | owned and developed by a telecommunications company - Erlang.
        
           | clj_throwaway wrote:
           | Yep, telecomms and banks, very similar dynamics and
           | incentives /s
        
             | [deleted]
        
             | kgwgk wrote:
             | In what relevant way are they different? (I find that your
             | comment has more sense without the /s tag)
        
             | monsieurbanana wrote:
             | Yes? What incentive exactly are you implying banks have
             | that make them less suitable than other mega-corporations
             | for the purposes of developing a programming language?
        
               | clj_throwaway wrote:
               | Banks and fintech often view their in-house tech as
               | competitive advantages, and they usually don't care a
               | whit about building cred in dev communities (a common
               | reason why projects are OSS in the first place, to drive
               | recruitment or promote a complimentary platform).
               | 
               | A good outcome isn't impossible, but it might be
               | unprecedented
        
               | kgwgk wrote:
               | And telecommunications companies don't see their
               | technology as a competitive advantage?
        
               | ilikehurdles wrote:
               | Nubank has presented their tech several times at a number
               | of conferences and I believe they often sponsor those
               | conferences. It's not a traditional bank, like Airbnb is
               | not a traditional travel agency, and Amazon is not a
               | traditional bookstore. This is not your local
               | neighborhood credit union or ancient behemoth running
               | COBOL mainframes.
        
               | lvh wrote:
               | Rich Hickey literally bet his retirement savings on
               | making Clojure, and owns all the IP. It seems unlikely
               | he's just going to let them smother it.
        
       | kgraves wrote:
       | what does this mean for the future of clojure?
       | 
       | I am a bit worried that a startup has acquired two companies that
       | have extremely deep experience in specialised languages
       | Platformatec (Elixir) and now Clojure (Cognitect)
        
         | draven wrote:
         | The answer is in the blog post ("Nubank understands the unique
         | value of Clojure and Datomic, and is committed to continuing
         | both without disruption." and the bullet points that follow.)
        
           | thom wrote:
           | That's what they _say_, it's not necessarily the answer to
           | the question.
        
             | ilikehurdles wrote:
             | Well then what would you prefer the answer to be instead?
        
               | thom wrote:
               | "Nobody knows"
        
         | halostatue wrote:
         | The acquisition of Plataformatec will have almost no impact on
         | Elixir, as Jose Valim had already moved to/created a new firm,
         | Dashbit.
        
         | dkersten wrote:
         | It sounds like not much will change.
         | 
         | I do wonder about datomic, though, as people I've spoken to at
         | Clojure conferences seem to have made use of Cognitect's
         | consulting as a kind of more advanced support mechanism and
         | they say that they will stop the consulting work.
        
           | stuarthalloway wrote:
           | All Datomic consulting will continue.
        
             | nojito wrote:
             | It says this in your post.
             | 
             | Cognitect will continue to offer professional services for
             | Datomic customers, _but will transition out of general
             | consulting development._
             | 
             | Does this mean your general consulting services are going
             | away?
        
               | [deleted]
        
               | mark_l_watson wrote:
               | I friend of mine hired the principles at Cognitect to
               | kick off a Clojure/Datomic project. They were like a
               | force of nature, really, and very quickly got things set
               | up and helped with architectural decisions, etc. I would
               | imagine that they have helped hundreds of customers this
               | way.
               | 
               | From the blog post, I think that the answer to your
               | question is yes: they will stop general consulting
               | services.
        
               | randompwd wrote:
               | Here's hoping they release a getting started project now
               | that they've dipped out of general consulting.There must
               | have been a standard-ish template in use.
        
             | dkersten wrote:
             | Great, so it sounds like not much will change for external
             | users of Clojure and Datomic. Sounds like the the biggest
             | change is in terms of funding.
             | 
             | Sounds good to me, congratulations!
             | 
             | EDIT: I guess my confusion was between _professional
             | services for Datomic_ and _general consulting_ , since both
             | were mentioned in the context of Datomic.
        
         | michel_dib wrote:
         | Disclaimer: I am a Nubank employee, so there might be bias.
         | 
         | Regarding the future of Clojure, I believe that not much will
         | change actually. Before Clojure was sponsored by Cognitect and
         | had Rich's / Stu's and Alex's stewardship and that's gonna
         | continue to be the case just swapping the sponsoring company
         | behind it. IMHO it's only on Nubank's best interest to have a
         | strong community around Clojure and Datomic as well.
         | 
         | About Platformatec I think that was a very different thing, it
         | was more an acqui-hiring, and before Elxir's stewardship was
         | under the company (but having very different development
         | dynamics compared to Clojure) and after the agreement, it was
         | transferred to the community. So the company was pretty much
         | dissolved after the contract, and back then, that was clear and
         | transparent, as it was announced to happen.
        
           | [deleted]
        
         | kamaal wrote:
         | I think the history of large companies hiring
         | maintainers/authors of programming languages/libraries they use
         | has so far gone good.
         | 
         | Take for example php, perl(booking.com, bbc, craigslist), js(fb
         | etc).
         | 
         | The language needs to be supported financially though.
         | Companies are not living beings, typically its some SVP making
         | decisions. Sometimes they do support, but sometimes big shots
         | do feel programmers are spending too much time working for
         | greater good, while they should be working for company profits.
         | 
         | So it depends on the bosses you report to. There is no easy
         | answer to this question, because many times it just comes to
         | down to one person making decisions.
        
         | regularfry wrote:
         | What would somewhat worry me somewhat is what the situation
         | would be if Nubank went pop, and Cognitect were no longer in a
         | position to step back in as sponsors.
        
         | fulafel wrote:
         | Would Nubank be still considered a startup?
        
       | ramon wrote:
       | Nubank is one of the biggest startups in Brazil and I am a Nubank
       | customer and I must say they have the best service available.
       | Treating customers as customers.
        
         | afefers wrote:
         | The customer support is the best! No waiting, no pre-recorded
         | messages, no muzak, no menu. A real person picks the phone and
         | talks to you. Oh and the app is a delight!
        
       ___________________________________________________________________
       (page generated 2020-07-23 23:00 UTC)