Disclaimer : Everything here is just my personal opinion, and this text does not reflect any opinion of my employer. Also, feel free to disagree with me on anything here; again, this is just my personal opinion and reflects my experience. 
 Before I talk about my first year at Meta, I think it is worth first discussing how I arrived here.
I haven’t applied for any job at Meta. Since around…
One of the most fundamental algorithms that appears in interviews at big tech companies is Binary Search . Of course, nobody will ask you to implement binary search directly. However, as Jon Bentley cited in his famous book Programming Pearls , only a small percentage of people he asked—10% to be precise—were able to code this algorithm without any errors. 
 Here, I will show you a correct…
In this post, I will explain in detail how I used the builder design pattern together with the bit mask field technique to reduce complexity. As a result, I decreased the cyclomatic complexity from 24 to 0 and reduced development time from hours to minutes. 
 The rest of this post is organized as follows sections: 
 
 The problem explains the problem I was solving. 
 Creating the…
In software development, organizing our codebase in a way that is easy to maintain is always a good practice, and this idea is not new.
Actually, I think this started in 1968 when the term software crisis was coined. Since then, we have developed many principles to help us achieve this goal.
One person who has made many contributions to this field is Barbara Liskov . She is very famous for…
In this post, I will present how I improved an ETL process to be more than 4x faster using the same resources. While the old architecture used Python threads, the new one used task queue architecture to be more reliable and scalable. So, I will explain how we can improve a legacy code and speed it up by only modifying the architecture to run the code. 
 Almost 10 years ago, I was hired to…
The Global interpreter lock(GIL) is a mechanism in CPython implementation to ensure only one thread is running at a time.
This means that even if we use threads to try to speed up our programs’ runtime, this will not work because, in the end, the interpreter will block that two or more threads will be executed in parallel. 
 As the name suggests, the GIL is a locker that a thread…
Redis is an in-memory data structure store, very powerful, with an excellent abstraction via its API to manipulate its data structure. What makes Redis very powerful, in my opinion, is the variety of data structures it provides and the performance of its operations. This last feature is an effect of being an in-memory store. 
 As with every software, Redis also has technical decisions and…
I was verifying the performance of an endpoint in an API using framegraph when I noticed that checking if an object is in a set or a hash data structure was consuming a lot of time.
This post explains the problem and the solution to it. 
 First of all, checking if an object is in a Set or HashMap is O(1) when we don’t consider collisions. Even in the presence of collisions, it should…
First things first, this is a classic book by Tom DeMarco and Timothy Lister that everyone working in the software industry must read. 
 The third edition divides this book into 6 parts with 39 chapters and 249 pages. It is an easy book to read and follow. However, it is necessary to stop constantly to reflect on the facts and ideas presented. Also, the reading would be like a map of the…
When we study transactions in relational databases , one of the first
things we learn are the guarantees that a transaction must provide.
 ACID(Atomicity, Consistency, Isolation, Durability) are the properties that we desire. Here, I will discuss the Isolation level in more detail and
show that atomicity alone is not enough when handling concurrency. 
 One classic example of the…
The Quicksort algorithm was created by Tony Hoare in 1961 and it is a very powerful algorithm to sort an array in memory until today. Here, I will describe the Quicksort algorithm, show an implementation in Python, and analyze the time complexity of this algorithm in the worst and best scenarios. 
 The idea behind the Quicksort is so simple: to sort an array \(V\) of \(n\) elements, it is…
Disclaimer: Don’t read this review, go ahead and read the book , it will be much better for you. The only reason that I wrote this is for my future reference. 
 First of all, I love to read books and I do not believe that a review should influence someone to read or not a book. However, as a researcher, one of the most important things that I learned during my years at the university was…
Sometimes, when I execute the Chrome inside a docker container I receive the error below: 
 selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed 
 It is caused because Chrome uses the /dev/shm to share memory and the docker, by default, set 64MB for this partition. 
 Here, I will describe how to reproduce this error and how to resolve…
I’m learning computer vision and I’m using the Opencv 
and Python to write algorithms in this field of computer science. This field
is very interesting because it involves computer science and math and also, it is necessary to have good ideas to solve problems. 
 Here, I will show my first algorithm in computer vision. It is to identifies paragraphs in a text image. It…
I wrote a list of operational research resource which contains many name of books, events, groups, solvers and teachers.
I publish this list here . It is a github’s repository and you can help to update :-) 
 I wrote it based on the list, wrote by Avelino , about resources for go programming language .
Callbacks in Cplex 
 I used LazyConstraintCallback 
to implement a Branch and Cut algorithm with
 CPLEX , but when I implemented and run this algorithm, it was very slow if I compare it with its version that doesn’t use callbacks in Cplex. The reason is because ControlCallback(LazyConstraintCallback is a ControlCallback) switch Cplex to sequential mode by default and turn off…
I’m John Jr, an Applied Mathematics and Software engineer with many years of experience. 
 I hold a Master’s Degree (M.Sc.) in Computer Science, specializing in Operations Research, with a focus on Combinatorial Optimization and Optimization under uncertainty. I also hold a Bachelor’s Degree (B.Sc.) in Applied Mathematics, where I explored the fundamentals of Math and…
I have a Master Degree in Computer Science (MCS) at Departamento de Ciência da Computação (DCC) , Universidade Federal de Minas Gerais (UFMG) .
During my MCS, I have worked with two interesting NP-Hard optimization problems. I studied, the Robust Shortest
Path Problem (RSP) and the Tree Hub Location problem (THLP). The former relies on a Shortest Path problem where
uncertainties are…