Overload - gym tracker
Overload is a minimalistic gym tracker for Android and iOS. Made using Kotlin multiplatform. Live in the App Store and Play Store.

Hi 👋 I'm @feresr! A sofware engineer currently working at Google (Maps📍).
I am interested in indie hacking, game development, computer graphics and more! Here you'll find my latest projects and random thoughts on software.
You can reach me on Twitter or by email: fernandoraviola@gmail.com.
Find my resume here.
Overload is a minimalistic gym tracker for Android and iOS. Made using Kotlin multiplatform. Live in the App Store and Play Store.
I got interested in 3D, I'm learning blender and I thought this would be a fun project. I've modeled and programmed I'm not great with React or Typescript but managed to put a nice demo together. Try it out!
05/01/2022 - I'm currently working on a new pet project on my spare time, a photo editor for Android using Jetpack Compose and Kotlin Coroutines. It is still in its early stages but if you want to get access to it and provide feedback reach out to me on twitter (DM).
Play store (Early access) - More info here
Trying to make the most of the Christmas break, I started reading @Peter_shirley's book on Ray tracing: "Ray Tracing in one weekend". I had a rough understanding of how raytracers work, but this book gave a more intuitive grasp on the subject.
I was plasently surprised to learn that images like the one above can be generated without using any graphics library. I am using OpenGL but just to render a texture, I could have instead outputted a image file and then open it with an image viewer (this is in fact what the author does in this book). The srouce code for the project is available on Github and I've documented some of my takeaways on Twitter.
I decided to learn C++ as step towards understanding more about the fundamentals of computer science, programming languages and graphics programming in general. Read more about the development process here.
Find a video demo + the source code for this project on Github.
Give it a try online (WebAssembly build made possible thanks to Paarwen68) here
I believe this is the project I am most proud of to date.
Walpy is a Wallpaper changer application I made on my free time, it has over +1.000.000 downloads on the playstore, 40k daily active users and a 4.7/5.0 user rating average from more than +12k users.
Download here
I keep iterating over this app to learn new frameworks, the current version was re-written using Kotlin coroutines, OpenGL ES, Sqldelight, and Kotlin-multiplatform features.
Let's talk about hype-driven development... I just released a new version of @WalpyApp, a complete rewrite, using Androidx, #kotlin coroutines, Ktor, #SqlDelight and is a Kotlin multiplatform project... now I just need to learn some iOS🍎 #AndroidDev #iOSDev https://t.co/kmFz4busTc
— Fernando Raviola 🧉 (@fernandoraviola) August 4, 2019
After learning about WebGL for the past few months I decided to make my life easier and started using Three.js.
I took this Three.js course by Bruno Simon and I absolutely loved every bit of it.
Then I took it a step further and started to play around with React-three-fiber. It's amazing how fast you can prototype using web tools, at least compared to how things are done in Android. I made a demo app that allows to display your mobile application in 3D by replacing the texture on the phone screen with your own, as always code is here
I haven't posted anything in a while but recently I've been playing around with WebGL and made the slimy animation that you see on the left of this website (Desktop version only). And it's interactive! Drag your mouse around it to see what I mean. I built this in shadertoy first. The code is available here.
My curiosity to understand how programming really works and what a computer is actually doing led me into a rabbit hole. It was time to understand how a CPU operates, how does it interact with the RAM, the peripherals, the operating system and utimately how I, as a programmer, can interact with the OS to access the hardware (CPU, IO, ect).
I found and excelent course on Coursera called Build a Modern Computer from First Principles: Nand to Tetris.
The instructor guides you in building a fully functional multi porpuse 16-bit computer starting from logical NAND gates. This virtual computer incldues a virtual machine and a compiler for a simple, Java-like programming language, and a basic operating system that closes gaps between the high-level language and the underlying hardware platform.
You can find my code for this project in github here.
The assembler is ready, and after fixing a subtle bug in the CPU implementation my 16-bit computer is finally running 🎉🖥️, this has been a great learning experience! next steps include implementing a Compiler and OS
— Fernando Raviola 🧉 (@fernandoraviola) December 12, 2018
#kotlin #cpu #assembler #compiler #oshttps://t.co/f4RuX9B2Ll pic.twitter.com/IPLIvm41Po
For the long est time I thought I wanted to make video games, but every time I set out to build one I would almost immediatelly get bored. This happened multiple times. I would spend hours researching the best game engine, downloading it, playing around with it, starting a new project only to abandon it a few weeks later. I thought by making a game, I would understand how they work under the hood.
In practice, that's not true. Game Engines do most of the heavy lifting for you, some go as far as providing a drag and drop interface that will allow you to make your game a reality in record time. That's what game engines are supposed to do! And that doesn’t mean making games using a game engine is easy, there's plenty of challenges (both technical and artistic) that go into making a good game. Those are just not the challenges I'm most interested in.
Graphics are a huge part of games so I decided to learn OpenGL for the sake of understanding how graphics API works and how computers draw things on the screen. It's been a rewarding experience so far! This is what I have to show for. a very rudimentary Phong-blinn renderer that suppors model loading via the Assimp library. As always the code is available on Github.
I can't recomend this book enough, it's a great introduction to neural networks.
Just finished reading the book https://t.co/Y2jDggB4ry by @michael_nielsen and this kind of sentence is one of the reasons I liked it so much:
— Fernando Raviola 🧉 (@fernandoraviola) August 1, 2018
"..we'll develop an intuitive picture of what the backpropagation equations mean, and how someone might discover them from scratch." pic.twitter.com/6N8I4gR2NE
I remade this classic game in #Kotlin using a very simple OpenGL wrapper to draw pixelated artwork. I'm not using sprites at all! all the asteroids are generated procedurally and drawn as wireframes. Find the code here.
much better now 😀 pic.twitter.com/TzV9J2Rx4n
— Fernando Raviola 🧉 (@fernandoraviola) August 19, 2019
A few days ago I discovered @javidx9's channel on youtube, can't recommend it enough, so many good videos!
— Fernando Raviola 🧉 (@fernandoraviola) August 18, 2019
I've just implemented the console FPS in #kotlin. Only not in a console, I used libGdX and OpenGL insteadhttps://t.co/nu3AnDPaeN
Github: https://t.co/OQTRUleHfq pic.twitter.com/9maBFWvtKv
I want to shed some light into the difficulties I had learning Kotlin Coroutines while working on my personal apps. I’m writing this first article as a quick go-to reference for myself and anyone else that might find getting started with coroutines a bit unintuitive. Disclaimer: I am learning this as I go so if you notice something wrong with this article please do let me know in the comments.
Let’s say we want to perform an asynchronous operation using Coroutines. To make things even simpler, we’ll assume this operation doesn’t even return anything back to us. This is simple enough using coroutines...
[Keep reding on medium]
I did not like the Udacity experience that much. Shared some comments on twitter about it.
I graduated from Udacity's Deep Learning Nanodegree! But I can't but feel a bit disappointed with the course material. It wasn't a very pleasant learning experience and I didn't feel that sense of thrill/accomplishment after solving the projects... pic.twitter.com/VvK4QQI0Gq
— Fernando Raviola 🧉 (@fernandoraviola) October 1, 2018
You can find the code here. Disclamer, I am not an expert in neural networks and the implamentation might not be 100% correct, but hey! I had fun building this anyways.
I've implemented a genetic algorithm #NeuralNetwork on @googlechrome dinosaur game that learns how to play by itself on #AndroidDev 🦕 pic.twitter.com/xdfjxi5R5d
— Fernando Raviola 🧉 (@fernandoraviola) May 27, 2017
I build this game with the goal of understanding how physics engines worked. I had a lot fun learning how tiled based collision detection works. The game was built using ActionScript 3.0 and Adobe Air (Adobe runtime for mobile phones). I believe this is not supported anymore, I can't get the game to run on a modern device but you can give it a try, it's available on the playstore.
Just published my first Android game ever! An action platformer with a twist #IndieGame https://t.co/GlwjLoXvOW pic.twitter.com/08JrXV5PK0
— Fernando Raviola 🧉 (@fernandoraviola) May 23, 2016