About

My name is Raphael Amorim, and I’m a developer.

Previously, I worked at companies like Viaplay, Spotify, GoDaddy, and Globo.com. I have been a speaker at a few conferences.

I was responsible for Viaplay’s adoption of the Rust language. I built the starter infrastructure, released the first service for production, and actively worked on developing a Rust culture, which led to the language’s adoption in the upcoming years, along with many other feats. See when it all started.

Currently, I am having fun building a terminal emulator written in Rust, called Rio.

I also like to create music. If you want to listen, check out Apple Music or Spotify.

Books

Aug 2023
Desmitificando WebAssembly (English title: Demystifying WebAssembly)

Employment

Jan 2021 – Present
Viaplay, Senior Software Engineer
Stockholm, Sweden
Currently working on creating tooling and infrastructure ready for Rust in Viaplay, teaching the language in internal workshops and creating the first Rust microservices in the company.
Aug 2020 – Dec 2020
Spotify, Software Engineer III
Stockholm, Sweden
Core developer of an editor for music publishers and internal content editors.
Feb 2018 – May 2020
GoDaddy, Software Development Engineer III
USA - Remote
Core developer of GoCentral Website Builder.
Jul 2016 – Feb 2018
Globo.com, Software Developer
Rio de Janeiro, Brazil
In the first few months, I worked on topics related to performance, monitoring and metrics. Getting good results, we reduced the latency/time of the TTFB (time to first byte), domContentLoaded and render time. The rendering time was from 14 to 6 seconds. We reduced the bundle file weight by more than half, also we rewrite all old code to work based on asynchronous architecture to help with the rendering time (in this meantime I created a script loader, used even by other companies: https://github.com/raphamorim/nautilus.js).

After working with client-side performance, we started to address work to performance at the server layer (golang and nodejs). From there, began a meticulous job. Profiling code focusing in reduce server response time. We obtained interesting results, finding several memory leaks created by goroutines. We've worked on a server side render where you deliver critical content for rendering only and then asynchronously serves the rest.

In the monitoring sides, we incorporate in several microservices metric on processing, memory, CPU usage and measure of processes queues.

After these works, I went to work on the Webmedia division of Globo.com. Where I became responsible for the cross product video experience componentization.
Oct 2015 – Jun 2016
FLAGCX, Freelance Software Developer
Rio de Janeiro, Brazil
As a startup inside a big company, our small team design, build and maintain products that support Business Intelligence teams automating operational tasks, creating metrics and using data visualization techniques to get business insights.
Feb 2015 – Oct 2015
Mobdiq, Backend Nodejs Developer
Rio de Janeiro, Brazil
Mobdiq is an indication platform. Focused on mobile devices and large-scale usage. My mission was to create a stable, tested and scalable API using technologies such as nodejs and MongoDB.

We developed the entire architecture based on distributed queues and workers to do different tasks. During the development phase in the project, a lot of internal logic became distributed open modules (tested and versioned) to serve other developers.
Oct 2014 - Feb 2015
ONYO, Fullstack Developer
Rio de Janeiro, Brazil
Acting as fullstack developer, working using python in API design. After working in the client-side layer, using technologies such as HTML5 and JavaScript.
Oct 2013 - Sep 2014
Videolog.tv, Junior Developer
Rio de Janeiro, Brazil
Videolog is a Brazilian version of Youtube, it was born before the famous video portal but have not achieved the same success.

The scenario was full of challenges, there was no automated tests, Git repositories used to be a huge mess, there were thousands of useless lines of code, serious security issues, some core parts of the systems were so coupled that testing them in a development environment became very difficult, and so on. In seven months working hard with the team, we were able to:

• Stop using Git as it was SVN and adopt a simplified version of Git Flow;
• Start to develop a new REST API 100% covered by tests;
• Deploy the first version of an in-house video encoder that was delayed for more than one year;
• Increase the uptime of the main product from 82% to 99%; • Deploy another MVP: http://puffer.tv;
• Write setup scripts for almost all projects;
• Automatize a bunch of small tasks.

We use Javascript (node.js) and PHP as main languages, Ruby in one little Rails app and in deploy scripts, MySQL and MongoDB as databases, all deployed on Amazon infrastructure.
Jul 2013 - Oct 2013
Xgo Servicos Empresariais, Software Developer Internship
Rio de Janeiro, Brazil
Working as a frontend developer (HTML5, CSS3, JS) and backend developer (Java and PHP).

Talks

Jul 2019
Nov 2018
Oct 2018
Nov 2016
Using Canvas Components - Graphical Web UK
Oct 2016
500 Days of Open Source - Python Brazil
Jul 2016
The Mighty WebGL - Free Software International Forum
Aug 2015

Projects

Escapades in research and development, ranging from serious research projects to one-off diversions.

Rio
I wrote a terminal called Rio, which is built over WebGPU, WebAssembly and Rust. The WebGPU API makes it suitable for general purpose graphics and compute on the GPU.

Rio terminal is largely used by many developers nowadays, having featured multiple times into Github's trending projects.

Github: https://github.com/raphamorim/rio
Website: https://raphamorim.io/rio
Hacker News: https://news.ycombinator.com/item?id=36057687
Product Hunt: https://www.producthunt.com/posts/rio-terminal

React TV
React TV is an ecosystem for TV based React applications (from the renderer to CLI for pack/build applications).

The development of React TV has stopped and the project is not longer maintained however has been responsible for few hundreds of applications releases for TVs. React TV has also featured on Github trending worldwide project list.

Github: https://github.com/raphamorim/react-tv
Medium: https://medium.com/@raphamorim/developing-for-tvs-with-react-tv-b5b5204964ef

React Ape
React Ape tries to solve same problem that React TV target to fix but uses a different approach. React Ape does not use Document Object Model for rendering, instead uses HTML5 Canvas and WebGL.

The reason behind React Ape choices is that craft a high-performance TV user interface based on DOM is a real challenge, because of limited graphics acceleration, single core CPUs and high memory usage for a common TV App. These restrictions make any user experience targetting 60 frames per second quite tricky on the development side. The strategy is step in the renderer based on a hardware-accelerated canvas.

Github: https://github.com/raphamorim/react-ape
Hacker News: https://news.ycombinator.com/item?id=31492028

Worth mentioning other projects that I have created:

Lucario - A color scheme/theme with more than one million downloads, Github: github.com/raphamorim/lucario.

Native-CSS - A conversor of pure CSS to javascript literal objects or React Style objects. It was used by Google in few projects for many years. Github: github.com/raphamorim/native-css.

Origamijs - Lightweight Library to create using HTML5 Canvas. Origamijs was used by Mozilla and other code schools to teach programming for kids. Github github.com/raphamorim/origami.js.


Volunteering

Teacher
Django Girls (2015-2017)

Django Girls is a non-profit organization that empowers and helps women to organize free, one-day programming workshops by providing tools, resources and support.



Teacher
Mozilla (2015-2016)

The Rio Mozilla Club was a social project that seeks to transform Lan Centers in multidisciplinary areas of informal learning and exchange of experience in digital culture. We want to make web users in content producers and not just consumers of media.

We believe digital skills are essential for participation in the 21 century and everyone can take more advantage about the knowledge in the many areas of Internet, Web and content creation.