Byte Tank

Pedro Lopes Blog

Personal Local (Llama3 8B) LLM Extended With WhatsApp + Obsidian Data

This blog article will describe the implementation of a fully offline Llama3 8B LLM agent with access to WhatsApp Messages and Obsidian notes (or any other data sources), making it able to hold conversations about any of the topics present there. All data stays local, including the data from WhatsApp and Obsidian - it is in fact a personal assistant.

Source code for this project is available on GitHub.

Book Quotes Collection - Part 1

Books are an immensely valuable source of condensed knowledge and insightful thoughts. Here is a selection of my favorite quotes, from books I’ve read throughout the past years:

Learnings as a Software Engineer Techlead

YouTube video with a summary of this article

Life is growth. You grow or you die.

― Phil Knight, Shoe Dog

I’ve had the good fortune of having the opportunity to develop my software engineering work as a tech lead (which is not a fixed role), focusing more of my effort on solving sets of problems, as opposed to individual projects/tasks. While navigating this path, I’ve gathered a set of teachings from my mentors/peers/managers and other personal learnings and observations that I attempted to compile in a condensed list. Hopefully these can be useful in your own journey, just like other people’s learnings were to mine:

Survival Ball: Making the Game

YouTube video version of this article

Before: Initial prototype, built 6 years ago

After: Current version, released last November

This article/postmortem provides an in-depth look into the process of building Survival Ball, a Single / Local Co-Op physics-based game available on Steam for Windows and macOS. From prototype until showcase at Lisboa Games Week, passing by the related principles, design decisions, level creation process, tools and technical details.

Unity: Dynamic Multi Target Camera

Mostly invisible, yet essential, camera work is key to any game with dynamic cameras. This article dissects a concise Unity open source library which dynamically keeps a set of objects (e.g. players and important objects) in view, a common problem for a wide range of games.

The library was developed for, and used by my first Steam game, Survival Ball. The game has an heavy shared screen local co-op component, which requires the camera to dynamically keep many key elements in view.

React Native Offscreen Toolbar

In material design, there is a common scrolling technique in which the toolbar is smoothly tucked away while scrolling down and is made visible again when scrolling up. This behaviour is fairly straightforward to implement when developing a native android app, but for a react native app, the best solution I found was Janic Duplessis’.

The library I am releasing today is an encapsulation of this behaviour and its implementation is heavily based on Janic Duplessis’ approach.

Library usage in both the example bundled with the library and in the search screen of a to be released application

Deep Reinforcement Learning: Playing a Racing Game

Agent playing Out Run, session 201609171218_175eps
No time limit, no traffic, 2X time lapse

Above is the built deep Q-network (DQN) agent playing Out Run, trained for a total of 1.8 million frames on a Amazon Web Services g2.2xlarge (GPU enabled) instance. The agent was built using python and tensorflow. The Out Run game emulator is a modified version of Cannonball. All source code for this project is available on GitHub.