most read
Software Engineering
Why We Killed Our End-to-End Test Suite Sep 24
Product
Product Managers: what they do and why we need them Feb 15
Software Engineering
The value of canonicity Oct 30
Careers
We bring together great minds from diverse backgrounds who enable discussion and debate and enhance problem-solving.
Learn more about our careers



The Hammock is a podcast in which engineers can take a break, allowing their minds to roam free while listening to conversations with content relevant to the software development community.
The conversation in the third episode was about embrancig Datomic and Clojure , personal journey, use of Datomic, and challenges on data interoperability for business. This time, Filipe Andrade, lead software engineer at Nubank, and Robson Filho, senior software engineer at Nubank, talked to Enzzo Cavallo, Clojurian and also software engineer.
Stay tuned to learn about the evolution of both Clojure and Datomic, the dynamic nature of Clojure, external databases, modeling, migration, memory and data ownership challenges and more!
You can listen to “The Hammock” on the following channels: Spotify, Apple Podcasts, Google Podcasts, Amazon Music, and Anchor.
Enzzo Cavallo’s journey into Clojure is quite unique. Unlike many developers who transition between multiple languages throughout their careers, Clojure was the first language Enzzo worked with professionally. Before this, while studying physics, he had experience with other languages but only for small scripting tasks.
He shared that he began working with Clojure when he joined a company that was already using it. Interestingly, this company often hired individuals with no prior Clojure experience, which goes to show how welcoming and inclusive the Clojure community can be.
Embracing Datomic and Clojure
Datomic was the first database that Enzzo seriously worked with. His introduction to it was quite organic as his initial employer was already using it alongside Clojure. Within a few months, he was actively using and exploring it.
One of the best parts of starting with Clojure for Enzzo was discovering Clojurians—a Slack group for Clojure enthusiasts. This platform proved to be an invaluable resource for newbies and seasoned developers alike. Many library developers actively engage on this platform, making it a dynamic space for learning and collaboration.
The podcast touched upon the growth of Clojure in Brazil. While the market for Clojure in Brazil is relatively small, it’s vibrant. The versatility of Clojure, being a hosted language that can run within various hosts like JVM or JavaScript, offers developers a wealth of opportunities.
Check our job opportunities
Personal journeys and reflections
Both the hosts and the guest reflected on their personal journeys in tech, from starting as computer technicians to evolving into software developers. There’s a sense of nostalgia and appreciation for the paths they’ve taken and the opportunities that arose along the way.
Enzzo, who hails from Rio de Janeiro, shed light on the tech scene there, emphasizing Python’s prominence. The conversation also took a lighter turn as they discussed operating systems, with Enzzo sharing his preference for Arch Linux for its stability and control.
After that, they proceeded to talk about Clojure’s documentation. The idea of a live, ever-evolving documentation where developers can contribute is compelling. However, moderating such content can be tricky.
Who decides the relevance and accuracy of a submitted example? Despite these concerns, the dynamic nature of Clojure (especially with its multiple targets) can make documentation interactive. One can run code examples directly within the browser, enhancing the learning experience.
The transition from Datomic to other databases
Enzzo began his journey with Datomic on-prem and witnessed the inception of Datomic Cloud. Transitioning from Datomic to conventional databases like SQL was eye-opening. Features he took for granted in Datomic (like viewing a field’s previous value) were absent in SQL, requiring a different mindset.
It also simplified testing. Its in-memory mode allows rapid integration testing, behaving as if it’s unit testing. This flexibility is absent in conventional databases where one needs to rely on containers for testing. While Datomic offers autonomy and reduces dependency on infrastructure teams, it’s not without challenges. Issues of data serialization and debugging within transaction functions can arise.
Compared to other databases, Datomic’s API feels more like an ORM (Object-Relational Mapping) than a mere database connector. It provides a developer-friendly interface, easing the process of data handling and manipulation. This approach contrasts with traditional SQL-based tools where the developer interacts more directly with the database.
In traditional ORMs, the idea is to transform database table data into language objects. However, in Clojure, the standard data structure isn’t an object but a map and vectors. Modeling, migration, memory and data ownership challenges
Many developers transitioning to Datomic face challenges, primarily because they’re accustomed to the table-centric models of SQL. However, Datomic requires a shift in mindset. Instead of tables, you need to think in terms of attributes. Some developers even take the unique approach of first sketching their queries in Datomic’s style and then translating them into SQL.
One significant advantage of Datomic is its in-memory database, which facilitates swift interactions and enhances testability. In contrast, when working with SQL, evolving your model can be hard. Datomic offers flexibility, allowing developers to iterate on their models without the need for extensive planning.
Furthermore, Datomic’s migration process is less complex than traditional SQL databases. The former allows for simple addition of attributes, while the latter requires intricate versioning of migrations.
Despite Datomic now being free, some companies remain hesitant. In Enzo’s opinion, the primary concern revolves around using a proprietary database system. Although one can access their data even if the license expires, the reluctance to have data in a proprietary format remains.
Filipe says that this isn’t exclusive to Datomic. For instance, if you store data in PostgreSQL, it’s confined to that platform unless you run the PostgreSQL software. The key here is transparency. Companies want assurance that they can retrieve their data without depending on a third-party software. Enzo suggested that an open-source tool capable of reading and exporting Datomic data could mitigate these concerns.
Despite that, there’s much value in sharing experiences. If you face challenges or encounter obstacles, it’s vital to communicate them to a community. By doing so, you not only gain clarity but also help the community evolve and become more inclusive.
About The Hammock
The Hammock is a podcast that has been developed and produced by some of Nubank’s engineers, including Filipe Andrade, lead software engineer; Robert Randolph, engineering manager; Christian Romney, director of engineering; and Jaret Binford, senior product manager.
The name “The Hammock” aims to capture the essence of Rich Hickey’s philosophy of taking a break to contemplate complex problems. With its release, Nubank aims to explore innovative ideas, evolving technology trends, and highlight the innovation taking place within their own ranks.
Check our job opportunities