O Datomic é um banco de dados transacional, distribuído e um pouco diferente dos bancos de dados relacionais e não relacionais tradicionais, por exemplo: MySQL e MongoDB.

A ideia desse artigo é introduzir alguns conceitos básicos do Datomic e um exemplo de como funciona as operações simples de escrita e leitura. O exemplo completo está disponível no meu Github.

Adicionalmente também apresenta um passo a passo para preparar o seu ambiente para testar os primeiros códigos usando Datomic.

O primeiro passo para entender melhor as diferenças entre Datomic e os outros banco de dados é entender como o Datomic armazena…


Se você já escreveu algum código em Clojure provavelmente você já se deparou com as famosas macros, que é definida utilizando a função defmacro e muitas vezes possui caracteres diferentes como apóstrofos (‘), acento grave (`), til (~), sinal tironiano ou e comercial (&), arroba (@) e cerquilha (#). Nesse texto você vai entender, de forma bem simples e direta, o que é uma macro e o que significa esses caracteres estranhos.

Segundo o site oficial do Clojure, uma macro é um sistema que permite estender o compilador com código Clojure, e cita o exemplo do when, que é uma…


Have you ever forgotten a DDL script to be applied in the production environment before your service deployment and the service deployment failed?

Have you ever done a deployment that didn’t work and you had to rollback and it was easier to fix the problem than to rollback the deployment?

Have you ever be afraid of deploying a list of new services into the production environment because it was too much change?

If any of the answers is yes, you probably did a Big Bang Deployment.

Facing the problem

When I was in one of my first companies, we usually deploy new features…


Books

For the last few years, I’ve been challenging myself to improve my reading habit, the only rule that I follow is to read my little books every single day, it has been working and I’m really enjoying spending my free time watching movies, walking my dogs and also reading.

I’ve been through some books this year, some of them are about Product & Technology and they helped me a lot in terms of understanding new areas, how some important people mindset works, technologies, strategies, and businesses.

I would like to recommend those books and share my opinions and my perceptions…


A maioria das empresas já aceitou o fato de que o modelo em cascata não funciona bem para desenvolvimento de software e na verdade já fizeram bastante esforço para ser mais agile, a maioria delas utiliza o Scrum como principal framework de trabalho.

O Scrum se popularizou resolvendo os desafios do modelo em cascata, mas agora já estamos trabalhando com Scrum tempo suficiente para saber que ele também possui muitos problemas.

Este artigo tem objetivo de compartilhar alguns desafios que encontrei aplicando o Scrum, isso não significa que o Scrum não funciona e nem que não devemos utilizá-lo ou nos…


No ambiente de desenvolvimento Orientado a Objetos, é muito comum a gente escutar desenvolvedores falarem que temos que escrever códigos coeso e com baixo acoplamento (ou acoplamento fraco).

É importante saber que esses são conceitos que surgiram quando começamos a dar mais importância a legibilidade do código e manutenibilidade em detrimento de aspectos da engenharia de software como performance. …


Este artigo foi escrito em Maio de 2015 para explicar um pouco minha experiência com arquitetura e design de aplicações corporativas, este é o artigo original, mas vou descrever aqui novamente na plataforma Medium.

A ideia é que em breve eu possa escrever outro resumo da minha experiência desde Maio de 2015.

A minha experiência como desenvolvedor Java começou em fevereiro de 2011 em uma empresa que tinha a simplicidade e qualidade como principal valor. Devido a simplicidade raramente (ou quase nunca) a gente utilizava frameworks, a menos que fosse extremamente necessário. …


Muita gente me pergunta como começar uma carreira como desenvolvedor de software, programador, analista de sistemas ou qualquer outro nome que o mercado dê como referência à uma pessoa que vai construir código.

Códigos que vão resolver problemas principalmente para o mercado empresarial como bancos, telecomunicações, hospitais, seguradoras e assim por diante.

A ideia desse artigo é orientar as pessoas que querem começar no mercado de trabalho, não do dia para a noite, mas de uma forma consistente e duradoura, com base na experiência que eu tive e como atual recrutador nesse mercado de desenvolvimento de software.

Quando comecei minha…


We have a lot of roles in one engineering team, especially when we talk about the agile development team, like an engineer, developer, QA, scrum master, product owner, UI/UX, architecture and engineer manager.

There are so many roles that sometimes we get confused. What is the difference between an engineer and a senior engineer? Why do we need a tech lead? What does an engineer manager do?

I think the tech lead mission is to make the team autonomous, encouraging their responsibility. Tech Leads should do that connecting their leadership, business knowledge, and technical skills.

In my personal experience I…


Merging two branches

I’ve been using git merge every time I need to merge two branches. Then I knew an architecture member guy that said: “Everyone should use git rebase instead of git merge, it is easier to track changes using rebase than using merge”. I was curious and I tried to figure out what it means.

Beyond that, I noticed that many developers don’t know the main differences between git merge and git rebase and which they should use for certain scenarios.

Both git rebase and git merge are used to “join” or “put together” two different branches, it can be two…

Cesar Augusto Alcancio de Souza

Sofware Engineer Lead, focused on development and maintenance of products

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store