Bernardo Amorim, Developer in Porto, Portugal
Bernardo is available for hire
Hire Bernardo

Bernardo Amorim

Verified Expert  in Engineering

Software Developer

Location
Porto, Portugal
Toptal Member Since
April 1, 2016

Bernardo started developing when he was a teen. His first amazing job was being the CTO of Responde Aí, an education startup. He learned a lot about building and maintaining software while taking ongoing client requests. Later, he built a banking system from scratch at Stone while leading teams, making key architectural decisions, and representing the company in the Brazilian and global Elixir communities.

Portfolio

SaltPay
TypeScript, React, Elixir, Go, Terraform, Argo CD, Tekton, Tilt, Kubernetes...
Toptal
Ruby, Ruby on Rails (RoR), TypeScript, React, SQL, HTML, Databases...
Stone Pagamentos SA
PostgreSQL, Docker, Kubernetes, Apache Kafka, React, Elm, Elixir, SQL, HTML...

Experience

Availability

Part-time

Preferred Environment

Zsh, Git, Visual Studio Code (VS Code)

The most amazing...

...thing I've done was build an entire banking system from scratch.

Work Experience

Principal Software Engineer

2021 - 2022
SaltPay
  • Assembled and led the Merchant Portal team. Mentored junior and mid-level engineers while teaching them good engineering practices. Focused on code quality and introduced agile practices.
  • Assembled and led the Salt ID team. Developed an in-house Identity Provider for enabling SSO across multiple apps across multiple companies. Used mainly Elixir and TypeScript for the front end.
  • Implemented features in the in-house Terraform HCL generation CLI written in Go. Used these features for Tekton's CI pipelines to provision infrastructure for applications.
  • Created the Elixir Guild to foster Elixir usage across the company while maintaining shared projects, like custom Tekton CI tasks and images, shared libraries for structured logging, metrics, tracing, etc.
  • Conducted workshops for about 200 engineers on setting up productive local Kubernetes environments with Kind and Tilt and good observability practices, specifically structured logging and metrics with Prometheus.
Technologies: TypeScript, React, Elixir, Go, Terraform, Argo CD, Tekton, Tilt, Kubernetes, Prometheus, Grafana, OpenTelemetry, SQL, HTML, Distributed Architecture, Microservices, Architecture, Databases, Full-stack Development

Senior Software Engineer

2020 - 2021
Toptal
  • Worked on the Matching team on a full-stack Ruby on Rails application.
  • Worked on the Client Portal on GraphQL APIs in Ruby and a TypeScript React application.
  • Contributed to an open source GitHub Codeowner linter written in Ruby.
Technologies: Ruby, Ruby on Rails (RoR), TypeScript, React, SQL, HTML, Databases, Full-stack Development

Software Engineer

2017 - 2019
Stone Pagamentos SA
  • Developed a double-entry accounting ledger as the center of our financial operations.
  • Built our transactional system using event-driven communication through Kafka and implemented a Saga pattern to roll back failed transfers.
  • Constructed a custom-tailored API gateway using Elixir.
  • Created an internal admin using react-admin and some JSON APIs.
  • Built an open-source data definition and validation library to handle our validation needs.
  • Developed CQRS/ES systems using Commanded, an Elixir framework.
  • Worked on our internet banking app written in Elm.
  • Made a Bitcoin payment processing system in Node.js from scratch to integrate with Mundipagg.
Technologies: PostgreSQL, Docker, Kubernetes, Apache Kafka, React, Elm, Elixir, SQL, HTML, Event-driven Architecture, Distributed Architecture, Microservices, Architecture, Databases, Full-stack Development

Front-end Developer

2016 - 2017
Bractlet
  • Built a new data-visualization tool in Elm, migrating existing functionality from a legacy one written in React.
  • Maintained existing React components for data visualization tools.
  • Collaborated on reviewing back-end code written in Ruby, Haskell, and other languages.
Technologies: HTML, CSS, JavaScript, Data Visualization, D3.js, C3.js, Elm, React, Databases

CTO

2012 - 2014
Respondeai.com.br
  • Fostered and maintained numerous customer relationships for a significant amount of time and developed the product.
  • Implemented a Word document to HTML and MathML converter. The first one was in C# and ran our own machines. The second one was in Ruby and ran on the server Github.com/bamorim/doctor_ninja.
  • Created a WYSIWYG HTML and math editor prototype to mimic Word's math editing capabilities.
  • Implemented a fully responsive front-end so customers could study anywhere.
  • Integrated the platform with Zendesk for reporting content errors.
  • Implemented a subscription managing system using only a payment gateway.
  • Split the application into two apps: one for creating the content and managing it and the other for users to consume the content. Gained experience with Docker and AWS OpsWorks.
Technologies: Amazon Web Services (AWS), AWS OpsWorks, Amazon EC2, Amazon DynamoDB, Amazon S3 (AWS S3), NGINX, Docker, Capistrano, New Relic, Google Analytics, Mixpanel, React, JavaScript, PostgreSQL, Ruby on Rails (RoR), Ruby, SQL, HTML, Databases, Full-stack Development

Netmosa

https://bamorim.github.io/netmosa
This started as one of my contributions to the research for "Growing Networks with Random Walks Without Restarts" to give us some visual and intuitive feedback on how the model worked.

The idea has impressed people at CompleNet 2016, so I made my graduation project on top of that.

Netmosa allows users to code their models using embedded Lua and Fengari (Fengari.io). The app was built using React with TypeScript, and you can check the source code at the GitHub page (Github.com/bamorim/netmosa).

Exchema

https://github.com/bamorim/exchema
Exchema is a library used to define, validate and coerce data. It allows you to check the type for a given value at runtime.

It uses the idea of refinement types, in which we have a global type to which all values belong and can refine that type with the use of predicates.

Doctor Ninja

https://github.com/bamorim/doctor_ninja
A library in Ruby that converts MS Word's DocX files into HTML. However, to maintain the math without rasterization, we converted it to MathML, a W3C standard. This was used at Responde Ai to enable "experts" to create content using the tools they already knew, like MS Word, while ensuring a good, consistent, mobile-friendly experience for the end-user.

Growing Network Simulator

https://github.com/bamorim/random_walk_generator
A C++ simulator for "Growing Graphs Through Random Walks Without Restarts" was built for my research at LAND UFRJ (research lab). This was used to simulate network growth models, and we ran that on the lab cluster.
2014 - 2020

Bachelor's Degree in Computer Engineering

Federal University of Rio de Janeiro - Rio de Janeiro, Brazil

Libraries/APIs

React, D3.js, C3.js

Tools

Git, Vim Text Editor, Zsh, Google Analytics, Capistrano, NGINX, AWS OpsWorks, Terraform, Grafana

Frameworks

Phoenix, Ruby on Rails (RoR)

Languages

Ruby, JavaScript, Elixir, TypeScript, SQL, HTML, Elm, C++, Go, Lua, MathML, CSS

Storage

Databases, PostgreSQL, Amazon DynamoDB, Amazon S3 (AWS S3)

Platforms

Docker, Mixpanel, New Relic, Apache Kafka, Amazon EC2, Amazon Web Services (AWS), Kubernetes, Visual Studio Code (VS Code)

Paradigms

Event-driven Architecture, Microservices

Other

Architecture, Full-stack Development, Distributed Architecture, Argo CD, Tekton, Tilt, Prometheus, OpenTelemetry, Graphs, Network Science, Computer Science, Calculus, Physics, Statistics, Networks, Algorithms, Software Engineering, Machine Learning, Data Visualization

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring