Profile picture

Hello, I'm

Bartolomeu Rodrigues

Practical Full-stack developer


🏗️ Focused on creating software projects and artwork

🛡️ Certified in Cyber-security

Intro

🔧⌛ Practical and oriented towards simplicity.

🏗️ My career has been built around creating digital products and features.

🛡️ Trained in Cyber Security

💻🌍 Experienced in working remotely for startups outside the country, even before COVID.

🎨 Jack-of-all-trades, master of ever-changing technology: Building for startups with a product-first mentality and engineering-second approach has enabled simplification of product construction with ever-changing technologies, as well as the ability to tackle troublesome bugs in all parts of the product.

🤖 On-the-job experience with GPT-3, fine-tuning and embeddings search, 3 months before the launch of ChatGPT

🕒 Timezone: GMT+0 Lisbon

Technologies (Primary technologies have a white background)

Languages
Typescript
Python
Java
Kotlin
C#
Front-end
React
React Native
Angular
Android
iOS
Back-end
Node.JS
NestJS
FastAPI
ExpressJS
Spring
ASP.NET
Databases
PostgreSQL
MongoDB
PrestoDB
DevOps
Docker
Linux
Terraform
AWS
Azure
Redis
RabbitMQ
Apache Kafka
Low-code / No-code
Firebase
n8n
Retool
Supabase
AI
GPT-3
Pinecone Vector Database

Highlighted projects

Be in Public

My drafts and my notes, PUBLIC.

I see a lot of #build-in-public in social media feeds. I also have a bunch of notes and procedures that I build everyday for my career and personal life. So I'm going to start a #be-in-public and post my notes and insights in a public repository where others can give me advice while also reusing knowledge I stored or built. Be free to open a PR with advice

  • One more window of transparency where you can see my procedures and methodologies

Unifies data validation across frontend and backend, compile-time and runtime

This library allows you to describe the types of data that circulate in your project once, and use it in both backend (endpoint validation) and frontend (form validations), and also as Typescript types, with little overhead.

  • Reduces bugs caused by different data contracts describing the same information

Centralize all of your the projects engineering foundations in a single place. Start projects fast, fix bugs once.

Estirador is an upgradable boilerplate that packs most of the engineering foundations you need for a full-stack project, so you can start writing business logic right away.

It comes with an update system that allows your projects to keep up with the boilerplate improvements and fixes as time moves on.

  • Start writing features right away when starting a project. No more writing boilerplate to kickstart a project. No more days spent setting up tools
  • All of your engineering foundations in one place, shared across your projects
  • If a foundation needs some fixing or improvement, just write it once and pull those changes into your projects
  • Reduce technical debt by having a predictable codebase and tooling that is ready for most usecases and project specifications
8land

Pixelart RPG game with lands built by everyone.

8Land is an open pixel-art RPG game where players design their own lands and launch their own public games. The objective is to have the gameplay of Decentraland and the feel and nostalgia of Pokemon Gold and Silver.

This project was entirely created with Estirador. It's a result of compounding a few hours every week.

  • An example of how a project with some complexity can be maintained by a single (or few) people, by placing a few simple abstractions in the right place, static-analysis in data contracts between client and server, and sticking to simplicity.
Docker Workspaces

Docker Workspaces

Protecting my data and client's data, by running day-to-day apps in isolated environments

Regular software and files share the same user session in the computer. They can read each other, which means, malware can read your files and passwords without even issuing a warning.

In order to protect my data and clients data, I run all projects and day-to-day software in individual Docker containers, so that none of them can access data outside their scope.

Collaborators can assure an extra layer of security to their clients, in a increasingly remote work environment where everybody uses their own personal devices, with their own baggage from previous projects, jobs and activities.

  • By running each of my clients projects and my own software inside isolated sessions, if one becomes compromised, the damage won't spread to other projects, companies or activities.

Previous work

Tech Expert Academy

Impossible Logo

Role:

  • Coach
  • Help unblock students in their own independent path to become full-stack developers

Impossible & SyntheticUsers

Impossible LogoSynthetic Users Logo

SyntheticUsers is a platform that gives you user interviews for product research and market validation, without real users.

Through the use of AI, SyntheticUsers allows you to interview specific audiences and validate the market fit of your solution without the need for sampling and recruiting people for user testing.

It gives you a unique overview of your product, allowing you to uncover features and blockers, without spending as much time and money on user research.

Role:

  • Building multiple product drafts from scratch as a sole MVP developer for user testing and market validation.
  • Integrating a team and developing a final product that suits the requirements gathered from the previous product drafts.
  • Implement no-code and low-code tools so that stakeholders could change business rules without needing developer time
  • Implemented large language models months before their boom, together with training and search utilities

Key Takeaways:

  • GPT-3 can behave like an agent that acts on its own in a product. It introduces intelligence in business logic, instead of it just being a set of strictly defined instructions
  • Vector databases are an excellent way to search for content in the way that the user meant it
  • Code needs to be more simpler than ever, and with as little in-house customization and libraries as possible, in order to be able to use the new wave of AI that generates code.

    That's why I try to keep the code as close as possible to the framework's and library's defaults, since Language Large Models like GPT-3 can then generate product code based on the documentation or past code it has been trained with.

Drawbotics & Mosaic

Drawbotics LogoMosaic Logo

Redefining the way new property is sold so that our customers can turn building permits into profits faster.

Mosaic is Drawbotics side-company, a complete end-to-end SaaS platform for off-plan property sales.

Role:

  • Develop and maintain features in Drawbotics and Mosaic's many frontends

Key Takeaways:

  • There are no perfect solutions, but the simplest one is normally the closest to what you want, and you can always change it quickly.
  • 3rd party solutions save you time from dealing with problems that are not related to your company's expertise. If you are writing non-business related code, prepare for unpredictable maintenance that is not aligned with the company objectives.

Opplane

Opplane Logo
Silicon Valley startup developing intelligent apps with machine learning and telco services

Role:

  • Design and develop full-stack apps (database, workers and recurring processing of data, backend, auditing, web and mobile apps) for various clients in the finance and health sector.
    These apps are connected to machine learning services and they all share the same technical core, meaning each project only needs to have its business rules and features developed.
  • Architect project structures, tools and frameworks
  • Direct support, planning and feedback with clients
  • Conducting job interviews for developer positions

Key Takeaways:

  • Most projects have a large chunk of workload that is common to any IT project, yet, it's still re-written and maintained multiple times in separate teams.
    That chunk can be shared with multiple projects and be maintained once whenever needed.
  • Build explicitly, rather than implicity
    A developer has a limited memory about the project, while new developers onboarding the team don't even know about the project. Projects should be aimed at being built in a way that anybody can get fully and quickly onboarded, without needing to wait for other team members. This means avoiding having "little quirks in order change something or make the project work". Building explicitly is also useful for the developers already in the team, when they have to re-visit features after a long time.

Zenklub

Zenklub
Zenklub is a B2C and B2B mental healthcare provider in Brazil.
It offers many features, the main ones being a marketplace of therapists where you can book and pay appointments with the web or mobile app, and services that give you insights regarding your employees mental health.

Role:

  • Rebuilt the company's engineering side from the small MVP it once was, in a smooth transition that never locked the development of new features, and allowed to slowly move away from the legacy MVP.
  • Projects built from the ground up:
    • React Native mobile app
    • NodeJS Data Layer
  • New features and maintenance:
    • Serverless API
    • ASP.NET legacy services
    • Angular (5+) web apps (front and back office)

Key Takeaways:

  • A project should be treated as a whole, and not has separate stacks: backend, web-app, mobile app, etc... Sharing code between stacks is essential not just for avoiding redundant work, but also for keeping the whole project stable and avoid miscommunications between teams and team members (like missing properties in data exchanges between backend and frontend)

Farfetch

Farfetch is a British-Portuguese online luxury fashion retail platform that sells products from over 700 boutiques and brands from around the world

Role:

  • Shopping Experience team with the purpose of maintaining the website's core

Key Takeaways:

  • There are no shortcuts. Like any other engineering practice, something rushed now will have consequences in the future
  • Tools and code should be the things that catch errors before they're deployed and not your brain. You should be focused on new features, not having to remind yourself of many things that can fail: that job is for compilers and linters
  • If the above takeaway is present in your workday, you should write code for what you know and you're sure in the present, and not try to write it for the future. Requirements and environments change, and it's actually safer to write code is thought out for a single situation, and not an over-engineered code that is expecting a non-existing future. Code that is written with only the present requirements in mind is easier to replace and discard. We need to know where to let it go and embrace some of the chaos in our favor.

Yelloh

Yelloh
Yelloh's aim is to give designers, marketers and researchers the easiest, fastest and most affordable way to conduct qualitative research. This is done through our video online survey tool which gives clients the flexibility of an online survey, yet the quality of a in-person interview.

Role:

  • Develop the whole suite of services that allowed companies to conduct video surveys (backend, back-office, web app)

Key Takeaways:

  • Developers need to see their changes in the code immediately and without much hassle. The feedback must be almost as fast as changing something on Photoshop. No reloads or compilation times. Hot reload seems to be the best solution in these cases

CGI

CGI
Founded in 1976, CGI is among the largest IT and business consulting services firms in the world.

Role:

  • Full-stack developer for non-governmental organization applications

Key Takeaways:

  • Legacy code can be manageable if the early developers put simplicity as a priority, and organize software based on its business features and requirements and not based solely on the technology's needs and one-size-fits-all structures.

Education

Academia Nacional de CiberSegurança

Academia Nacional de CiberSegurança

National Academy for Cyber Security.
With a duration of 500 hours over 8 months, it covered the following subjects: CyberCrime, Computer Systems, Operating Systems, Databases, Network Programming, Vulnerabilities, Information Security, Risk Management, Intrusion Detection, Malware Analysis, OSINT, Forensics, SIEM, Incident Response, Information Warfare, Encryption, Electronics, GDPR and Telecommunications Security.

Academia de Código

Academia de Código

A 14-Week Intensive && Immersive FullStack Programming Bootcamp

Academia de Código

Escola Secundária Artística António Arroio

The Escola Secundária Artística António Arroio is a secondary school in Lisbon, Portugal that specializes in the applied arts.

Follow me