I don’t write about my company very often. I work only about 4 hours a week on it, so I don’t have much to share. This Sunday, as I was reviewing the annual metrics for my SaaS, I felt like sharing the one metric I like the most.
Burnout is common in our field   . If you work with programming for long enough, I am sure you already experiment some level of burnout yourself. So the question is, how not to burnout working on hard problems?
This is the first book I abandoned and decided to put out an review. Why? Because the subject matters to me yet, the practical tips do not apply to my current situation.
In 2020 I wrote a post titled “Are you working remotely? You should be ready to hit the road at any time”, at that time I knew little about what was to come and this pandemic made me rethink lots of stuff I use to do for remote work. Remote work is so ordinary that it is no longer cool, but the subject remains.
I believe every developer knows this in their heart, yet sometimes we still ignore it. I procrastinated with one flaky test for a long time in my project Nun-db.
This is a controversial book. They claim to be an “Engineering Approach,” but the text is full of opinions and personal tips based on the author’s experience, yet I liked the reading and how the authors structured it. But if you don’t like opinions and prefer a more scientific approach, this is probably not a book for you.
An approach to hunt and fix non-reproducible bugs - Case study - Fixing a race conditions in Nun-db replication algorithm in rust
This is the story behind the fix of one race condition in Nun-db. In this post, I went over the process to find the race condition by eliminating two initial theories and finally identifying the root cause, fixing it, and validating the fix. If you only want to see the results go straight to 3. Third and correct theory: Are nodes acknowledging messages before they are registered as pending?
In this blog post, I document the decision to create a command called
Debug to Nun-db. As we scale on usage and features, more complex problems are showing up, and it is about time to start adding features that will help manage Nun-db as Database administrators. If you unintentionally got to this post and want to read more about Nun-db, go to Github repository will be much richer information about the Database. The rest of this post will be focused on people familiar with Nun-db code.
This was an excellent year for Nun-db; at first, I thought it would take me a lot of time to get some adoption and bring external users to use it, but it was super quick.
Working in Public is an excellent book, in my opinion, but I am unsure who I would recommend reading blindly. If you are doing open source, I am sure it will be a great source of inspiration and information. It would also be an excellent reference for people out of open-source to learn how we operate in the software industry since it is hard to explain why super-smart people work thousands of hours for free to give the result of their work for free work well to everyone.
In this post, I will show my thought process to get the Nun-db Prometheus exporter from idea to POC to repository to the final Grafana chart. I have used Prometheus for a long time, but I never took the time to understand how the exporters work in deep. So it seemed the obvious choice when I started to look for an alternative to improving Nun-db observability. Observability is a must-have for infrastructure components like Nun-db, and I want to make sure we will monitor what we need to make it successful.
Testing is essential for developing good software. It is hard to keep speed and quality on software development without having a great test suite. I particularly like all levels of tests, and I think they are all vital, from the unit test, integration, to end-to-end tests. Each will run faster or slower than the other and cover a more significant part of the stack.
The book was a great surprise. I found this book on a list on the Ali Abdaal as books to read in 2021. The title got my attention right away as I am notes addicted, and since Ali was recommending it, I decided to give it a try.
Every year I like share what I have learned. I will do my best not to repeat myself and be as practical as possible with this annual post. Last year I shared a post where I talked about the following subjects.
Staff Engineer Leadership Beyond the Management is the first book I read in years that a friend did not recommend. It initially got my attention because of the title in an auto recommendation from amazon. I decided to buy it as soon as I see it included an interview with Damian Schenkelman (I met him some years ago at an event in Brazil, and he seemed to be a great engineer, in the worst case, I would get some updates about his career).
I started Nun-db to be a real-time database of one product I was building. One of the goals for that product was never to be down.
In this tutorial, we will show how to add Nun-db to an already existent react/redux app. This project is a copy and paste of https://github.com/reduxjs/redux/tree/master/examples/todomvc + adding Nun-db as a database that makes it real-time and durable.
Overall I think the book is direct and practical. I felt like reading a programming language book with lots of “Howtos,” except that it is about management and business. The 4th Chapter, The people’s content, got my attention especially. It does build an exciting framework to find the right people. The author highlights a few characteristics that seem to identify great professionals, to list the ones that got my attention, “
- Unequivocal excellence
- Honesty and integrity
- Hungry for achievement
- Is enthusiastic
- energetic” (Read the book for the complete list, I liked all of them)
Book review Designing Data-Intensive Applications The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
The book was by far the most useful, inside a full book I read in the last year or so. It may be because I am have been working on Nun-db (a real-time database), but I think I would have liked it just as much in the past as well. First of all, the book has been recommended to me by a friend that the opinion I respect a lot (A Ph.D. in Computer Science), the title immediately caught my attention and I have been reading it since the day I put it on my kindle.
A fast-to-sync/search and space-optimized replication algorithm written in rust, The Nun-db data replication model
I have been working on Nun-db as a side project for over two years. Finally, in June 2020, I got it running as the unique real-time database for my main application. In the post, I shared that milestone. Since then, a couple of other applications have been starting using Nun-db, e.g., a chatbot, a real-time visitor for my blog, a house price scraper, a tic tac toe multiplayer, etc.
NunDB is an in-memory database that means we store all the data mainly in memory for speed (this helps keep NunDb fast). The obvious drawback is that if you are hosting your own NunDb and you have a server restart or need to stop it for any reason, you may lose what is in memory.
Last year, I started working as one of the tech leaders on a performance optimization project for one of my employer’s customers. At first, the team started using a regular Kanban process, so an engineer would pick some part of the code to optimize and work on until we felt good about the improvement. To me, it felt not to be the right approach to the problems we were trying to solve.
One of the features I like the most about Google Analytics is the real-time user track. Randomly during my day, I visit the real-time analytics of all products I run to see how many people my work is impacting at that time. It gives me the energy to see my work affecting other people. On the other hand, there are some drawn backs of using google analytics, to name a few:
- Technical user may block google analytics to avoid been tracked (and you will not see that traffic in your tool)
- You are giving data to google for free just to use a simple feature that may not be worth paying for at all. Or maybe you won’t even use most of it’s features.
The book Atomic Habits is a classic and a consensus among productivity and self-improvement actors (Youtubers, influences, writers, etc.). It did not introduce any new profound concept I have never seen in some other source. On the other hand, the author outstandingly exposes the ideas behind acquiring new habits. The idea of driving your habits in the direction of the future version of what you want to become is not evident in other books, and it proves to be a good idea.
A group of friends and I maintain a telegram group to talk about investing. A few years ago, we developed a chatbot to search for some stock prices once we post the stock’s name. The bot is quite simple and makes it fun since you don’t need to google or any other platform to see the price of the stock you want to check (Check out the image one of me getting the price of bitcoin).
Adopting Elixir: From Concept to Production is an excellent book about adopting new technologies. I would recommend it to anyone who plans to migrate a legacy system to any new technology, not only Elixir, manly the initial character that contains extensive insides about approaching the migration.
It has been a year since I open-sourced Nun-DB. That happened when https://www.teknisa.com invited me to give a talk about real-time processing. At that time, I worked on Nun-DB for over six months, and I thought it would be an excellent opportunity to announce the project. It was called “Freira-DB” back then, and the goal of this post is to update the Nun-DB and what has happened during this one year.
I have been working as a remote developer fulltime, for the last five years. Part-time/freelancing for at least ten years, over this time, I have collected several tips and tricks on how to become better at it and how to succeed and deliver results under this environment. I am writing this post to share some of these tricks, while this is a brief list. I am always testing these things. I thought it would be useful to do this one and periodically create a new one to share some updates.
I needed a realtime database for two personal projects I was working, a time tracker (not public yet ) and http://ebelle.vilarika.com.br, the natural decision would be to use something like Firebase, but I was looking for a light open-source alternative turns out I did not found one as simple as I wished, so I decided to build one. My needs were simple, I need my frontend to be updated whenever the data change in the backend (And I do not want to implement a new WebSocket for each of my application). Here I will not give many details about how I build Nun-DB. You can read it [not public yet], but I will focus on how I went to production with it for my project Ebelle.
Making the react + redux + redux-saga development more fun and productive and less repetitive and verbose.
I have recently been working on and delivering some projects using pure react and react + redux, and it seemed like something was missing that would make working with them more reliable. Early last year, I started learning new front-end architectures using react to a POC for one of my customers. I came across the combination react + redux + redux-saga, which felt pretty healthy to me as the right solution for lots of problems I had faced in recent projects. Since then, I have wanted to try the combination in a real-world project to see if it scales or not. The opportunity came early this year when I needed to create a new mobile UI for one of my personal SAS solutions, so I decided to give it a shot. After developing the first set of features, I found myself doing a lot of repetitive work that delivered few new features or improvements.
One of the most significant advantages of working remotely is choosing how and where you work. That is what makes a big difference from a person working in an office. On the other hand, sometimes, you feel you have no focus or unproductive working on your home-office. The simple fact to go somewhere else will make you be much more productive and get your attention back. That happens because novelty produces dopamine, and dopamine increases focus.
I have been working remotely full time the last 2 years, since I join Tenfold (https://www.tenfold.com/), almost at the same time I was starting to work toward a master’s degree in Computer Since(You can see some info about my research here). Those are two demanding activities I have to deal with on a daily bases. To achieve my goals on both I have been testing myself on all the ways possible, on how to be more productive in these last two year, and this is the first of a group of articles about what I have learned an tested and what has worked or not.