Matheus Marabesi website, sharing ideas about software development - Listing posts on page 5

AWS cloud practitioner notes - EC2

This post as the free official course from AWS [1] is the first on a series to cover the entire course content. The focus on this post is to go over the EC2 (Elastic Compute) service and another computing services that AWS provides. Besides that, a brief introduction to the model pay as you go that AWS uses is shared. Previous: AWS Cloud Practitioner Notes Module 1 - Introduction AWS The first module goes on the basics of cloud computing, what it is, and AWS pay as you go model, remember: Cloud computing is: On-demand delivery of IT resources and...

Creating web firebase app (browser based not server)

Firebase is a service that started as a real time database and expanded the services as it grew. The real time database provides a integration for sharing data in real time with no need to set up an infrastructure. This post aims to cover the web app creating in order to generate the javascript object needed to configure the javascript SDK. Be aware that the javascript SDK (Software Development Kit) used in this post is not the Nodejs, rather, the focus is in the client side only. Requirements A google account Javascript basic experience Creating the web app The first...

Deploying git bot release to AWS lambda

Git bot is a monolith application written in slim and it uses twig as a view render. Requirements This section assumes a linux based system (debian/ubuntu), but the commands presented can be arranged to fit another distros as well. The basic setup is to follow the bref documentation guide on setting things up, but, this section lists the basic language requirements, version and additional credentials needed from AWS. The general requirements are as follows: Aws account and security credentials generated (for this post I assume the root account) PHP 7.4+ Node Js 14+ The credentials (1) are downloaded from the...

Mocks, dummies, spies, fakes - testing your code

Testing code has different definitions and sometimes can mean different things for different people. this post is a collection for easy to come back definitions on mocks, dummies. stubs, spies and fakes. Mocks/Test doubles Mock is frequent used interchangeably with the term test double, mock is often used for people that didn’t read the paper definition of mock. Then, developers got used to the term mock instead of test double. Mocks, refers to the whole family of objects that are used in tests [1]. On the other hand, [2] defines this technique as substitutes or mocks objects. Despite of the...

My setup for web development, 2020 edition - Vim, linux, zsh, tmux, Jetbrains and docker

Usually I like to jump from one setup to another just for fun of learning some new tricks, I have worked on windows, linux and macos. Currently, my setup is linux, though, previously I used a macos. The latest version that I got in touch was macos Catalina. This post aims to cover my currently setup that I have been using in 2020 and provide details on configuration and why the decision to chose a given tool. Disclaimer: this is my personal setup, I am not endorsing any particular tool over another, I just use them because I feel they...

Production-Ready microservices - Book review and my personal notes

Microservices are a trend that is growing even more [1], recently I read the book “Production-Ready microservices” from Susan J. Fowler and it gave me insights on how to prepare or at least to have a guide to go through when developing in a microservices oriented architecture. Susan says in the book that this is a guide that she wish she had when she started to standardize the microservices at Uber, in this sense the collection is tested in a “production” like environment and in a “big” size company. Besides that, a few chapters can be taken and applied to...

Software architecture patterns - Layered, Event-driven, Microkernel, Microservices, Space-based and CQRS

This is a short post on the book Software architecture patterns by Mark Richards, published by O’Reilly. The book catalogs five architectural styles: Layered, Event-Driven, Microkernel, Microservices and Space-Based. For each of them the author goes through six aspects and rank them [1], that collects a broader named: Overall agility Ease of deployment Testability Performance Scalability Ease of development It covers in high level scenarios for each pattern to be used and also diagrams that helps the reader to understand the details. Therefore, the book does’t have code examples or concrete implementations, which might open the definition to different implementations....

Rethinking legacy code and testing

Previously I discussed about legacy code and the strategies to test legacy code bases [1]. In short the strategy is based on a code base without any automated tests, the suggested approach is to follow a strategy starting from an acceptance testing and gradually refactor the code and get to the unit testing level. Ideally the code base would have several acceptance tests and then, the refactoring will start replacing the acceptance test suite with unit tests. The proposed strategy, is based in a single real world project, which may not fit all projects. Previously to that, I wrote an...

Clean code and the art of readable code a brief summary

Readable code is a subject of discussions among developers aiming to improve their code skills and also thinking about the human side of the code, indeed, the machine executes the code and doesn’t care about the readability or maintainability of the code, instead, this chore, is part of the daily life of programmers. Readability, can be interpreted in different ways by different people, therefore, there are initiatives to at least create a common sense. [1]. Previously I reviewed the book “The art of readable code” [2], this time, the focus is to compare the differences and similarities between “The art...

Learning how to learn

Learning how to learn [1] is a course made by Barbara Oakley and Dr. Terrence Senowski published by Coursera, which aims to give people an understanding in how we as humans learn. The course is science based and dives on how we can benefit of knowing how our brain works, to make learning an approachable task. Here you will find a resume of what was my findings on my journey as a course student and the insight that I had. Even though it is based on the learning how to learn course, I will relate others resources that I found...