Leslie Lamport is one of my all-time favorite computer scientists. That said, something about most of his classical papers, such as Paxos and the Byzantine Generals Problem (BGP), makes it complicated to understand the details. In addition, there’s a flood of non-technical takes on the BGP due to many people being interested in the non-technical parts of Bitcoin and other cryptocurrencies.…
Virtual Machines (VMs) are a magical thing: a computer being emulated inside a physical computer. Since this emulated computer isn’t physical, we call it “virtual”. Such a simple description for something so powerful. From a practical perspective, VMs allow users to safely run programs in an isolated environment: the emulated machine. Why build a Virtual Machine from scratch So,…
Graceful shutdowns are a fundamental trait of most distributed systems. Often, gracefully shutting down a server is very straightforward: stop accepting new connections and let the open ones finish their job. This is usually handled by your server code of choice — Golang’s HTTP package has a shutdown method to help you with that. Yet, many cases need a more thorough and hand-crafted graceful…
In this past year I have been working on a big system that is fundamentally an ETL to process real estate data across the US and Canada. I can’t talk much about the business details, but let’s say that if you’re browsing for real estate properties, it’s very likely you’re using this system. You’re welcome. Or I’m sorry, who knows? I joined this project…
I have been brewing the idea of using machine learning to improve software systems since 2016. It was pretty vague and broad, without an actionable plan. I just had the intuition — the software configuration and tuning, especially after the adoption of microservices, was getting too complex. The increasing complexity of configuring and tuning systems If you have enough experience in the software…
The more I think about the advantages and disadvantages of upfront design, the more I find it complex, I mean, the whole software architecture diagramming in general. I’ve been following the development of the C4 model for a considerable time, I find it interesting, but it still brings me the old struggles about how much detail we should put into the diagrams and whether we should do it…
Artificial Neurons is one of the most beautiful ways to simulate a biological behavior through computation, despite the fact that it’s not very close to the level of details of a real neuron. But it captured the core of what a neuron is doing. And I find that trying to understand this mathematical method by first understanding the concept through a metaphor (which, in this case, I think that…
Well, this case was a fun one, sentiment analysis is a sub type of NLP (natural language processing) in which you have to train a model to analyze a text, and classify it was a negative sentiment or a positive sentiment. In this case, I wanted to apply it on movies reviews, to see if a review is a negative one or a positive one. So, basically, teaching this kind of sentiment to the machine.…
One of the most commons tasks in Machine Learning is text classification, which is simply teaching your machine how to read and interpret a text and predict what kind of text it is. The purpose of this essay is to talk about a simple and generic enough Architecture to a supervised learning text classification. The interesting point of this Architecture is that you can use it as a basic/initial…
I’m a big fan of a nice challenge, therefore, I like books like Programming Pearls, I like to dive into many kinds of solutions to the same problem and try to differentiate them by novelty, performance, elegance, etc… This time I was playing with a fun problem, from the column 2:
Redis is such a great technology. Unfortunately, there’s still people who don’t know Redis or don’t know that Redis can be used as a Cache System to improve the speed of responses. Why Redis Well, let’s start this discussion remembering how a common Relational Database basically works: Suppose we’re using a MySQL, every time your app sends a request to the MySQL…
Are you total lost in this world full of jargons like: API, Rest API, microservices and stuffs? Come here, sit, grab a cup of coffee, and let’s talk briefly about it. Today a lot is said about APIs. Everything has an API, every programmer (newbie to expert) uses tons of API. Also, today we can see a lot of people talking about microservices and the idea of total separation of backend,…
I’ve been working with AI/Machine Learning at Jusbrasil recently, and it’s being pretty challenging due to the huge amount of data that we have to deal with, so cleaning this data and making predictions and classifications in an acceptable time demands a nice AI architecture. That said I can say that I’m extremely thankful for a few technologies that are helping me go through…
How can we make a machine learn from data? Then, how can we make the machine predicts things based on that learned data? Those are the question answered by one of the most classic Machine Learning Algorithms, the Gradient Descent Algorithm , from a Mathematical-Statistical side it’s called Univariate Linear Regression . This is one of the tools of the Machine Learning toolbox, and what it tries to…
The first thought I had when I started to study Design Patterns was: damn, is all this really necessary? I mean, so many patterns, so many details to do things that look simple to do without any further detailed thoughts. And I started to question myself if this was really a productive thing. The first answer I gave was: no, wonderful not-bad-word this, I’m losing too much time trying to wrap my…
I’ve been reading many texts on automata theory these times, and let me tell you, that’s such a wonderful thing. It pretty much explain how computers can…. compute! Simply put, Automata Theory deals with the logic of computation with respect to simple machines, referred to as Automata. From the mathematical models to represent it to the fun programming implementations, it’s really great and…
Graph Theory is definitely one of my favorite branches of the Mathematics & Computer Science, mostly because of its nearest infinity applications, in both real world problems and pure theoretical problems. These days I’ve been working (with my buddy Daniel Almeida) in a framework to create and manipulate graphs. Which means, creating a data structure to represent graphs, edges, vertexes and…
Well, it all starts with your first attempt to write a program; a very innocent and and naive program - I mean, your very first “Hello World” and the classic“Read 3 inputs and print the sum of them”. Your only concerns will be some missing commas, whitespaces and some misplaced IF’s - things that may cause a little confusion first. You’ll eve think that it is hard. #include int main() { printf(…
###What are the main goals of the object-oriented programming?### 1. Abstraction, yes, i had to put this in the first place, in my point of view, this is the biggest goal of the OO programming 2. Encapsulation, which is a form of abstraction! 3. Reusability 4. Modularity 5. Readability
Hello there, I’m Rodrigo Araújo. I live in Vancouver, Canada; originally from Brazil. I’m a software engineer with a background in Computer Science. My main interests in software are: Distributed and decentralized systems; Cryptography, cryptocurrencies, and blockchain; Compilers (including virtual machines, interpreters, language design); Artificial intelligence and machine learning;…
EpiMobile: Pathogen Point of Care Diagnosis and Global Surveillance using Mobile Devices (Paper, Code, Talk) Areas: Bioinformatics, Distributed Systems, Healthcare Information Systems Rapid identification of disease causing infectious agents (pathogens) in patient samples is important to mount effective responses to potential, or ongoing, disease outbreaks. New advances in genomic sequencing…
Peer-reviewed papers ARAÚJO, RODRIGO. S.; HOLMES, REID. . Lightweight Self-Adaptive Configuration Using Machine Learning. To appear in CASCON 2021. ALVES, N. S. R.; ARAÚJO, RODRIGO. S.; SPÍNOLA, RODRIGO O. . A Collaborative Computational Infrastructure for Supporting Technical Debt Knowledge Sharing and Evolution. In: Americas Conference on Information Systems, 2015, Puerto Rico. 2015 Americas…
Here’s a list of books I read and recommend and a list of books I’m currently reading. This document is mainly for my bookkeeping, but it might be helpful if you’re looking for some recommendations or taking a glance over where I get my inspiration from. I do not try to read as many books as fast as I can; in fact, I’m a relatively slow reader. I try to balance technical…