Albert Gonzalez homepage

Hello! I’m Albert Gonzalez, a computer engineer from Barcelona. I drink coffee and code both for fun and to make a living, and here are some of the things I write, make, try, research and tinker with; mostly software, microcontrollers and/or electronics related.

I finished my Computer Science degree at UPC - FIB (Polytechnic University of Catalonia - Barcelona School of Informatics) in 2014 and I’m currently working at The Hotels Network as a software developer focused on research and development (a fancy way to say I fix things here and there while prototyping new and experimental ideas, most of them web-based).

I'm fluent in catalan, spanish and, at some level, english (not a native speaker). Also I know a couple klingon expressions (that's not language-related at all but I'm a Star Trek nerd).

If you want to contact me, feel free to send me an email!

I'm also available on:

Code and projects

You can find here what I’m doing now (or what I did in the past). There's no particular order but usually the newest projects and/or updates are the first on the list. Some other minor things can be found on Github or

Analog Phone Dialer (atmega48p-based)

Got and old analog phone (non-compatible with more "modern" phone lines) and made an atmega48p-based circuit to capture the input numbers from the rotary dial and translate them into "modern" DTMF pulses using a DAC converter made with a R-2R resistor ladder.

I also made some PCBs for it! Let me know if you want one!

clickhouse cityhash php extension PHP extension implementing the custom Cityhash algorithm found on Clickhouse DBMS (needed that for some work-related projects, then published here). source
I2C libraries for attiny85-like AVR micros

A pair of I2C libraries for AVR micros with USI two-wire mode capabilities (developed and tested on attiny85's, but portable - in theory! - to similar devices with the proper pin changes) + a bunch of examples both with primary and secondary devices.

The goal here is to use them as the main entry point when dealing with I2C in future projects (and improve them over time, of course!), so there's also a fully functional micro-example of a primary device reading from a secondary device and writing into a third secondary one.

There's more info about how the libraries work in the github readme file.

Led Scroller Matrix (charlieplexing approach, atmega48p-based)

A charliplexing-driven 47x8 led matrix made with an atmega48p. With only a few resistors and ~400 leds it's a pretty decent scroller board to display messages or act as a pixel-driven screen (but also a little bit tedious to solder by hand!).

Can also be controlled via I2C and includes native scrolling text capabilites on the firmware.

There's more info about how it works in the github readme file.

(S)NES Mini Controller USB Adapter with an attiny85

An adapter to interface a (S)NES Mini Controller (an I2C device) with a PC as a generic USB Gamepad; based on an attiny85. The microcontroller uses the V-USB library to create a low-speed usb device and implements some homemade code in order to process the I2C signals from the controller.

I also tried to emulate an XInput controller (like the one in the XBox 360) with V-USB and wrote about that process here (it's not fully functional but I learned a few things about it while trying).

All of this started by trying to connect those controllers to a regular Arduino. I wrote about this here, with some examples, snippets and additional links.

I made some PCBs for the adapter! Check the post on the project page !

(as a side-note, it seems those controllers works better with 3.3v rather than 5, so hypothetical future revisions should take this into consideration)

Game of Life on an attiny85

Conway's Game of Life running on an attiny85 with an SSD1306 driven OLED display.

The fun part was to manage the display (a 128x64 one) in a dynamic way by using the small amount of SRAM available. I ended up writting a custom SSD1306 driver for the micro, so it allows the user to create (and modify) a 32x16 grid that can be stored in the internal SRAM and then translated into "big pixels" in the real 128x64 OLED screen.

More info about this process on the project page.

Game Boy Raw Snake My first Game Boy mini game: a snake port written in assembly using RGBDS. There's an extended post on the github page with some techical information about what I did, how and why; aditional links for extra info and the rom itself.
A bunch of jQuery plugins Few years ago, for a work-related project, I wrote some jQuery plugins: (I still work with jQuery from time to time, usually when I need to prototype some basic UI)
The Weather

Made as a small weekend project with an ESP8266 Thing Dev Board from Sparkfun, The Weather is a box with a big red button that prompts The Weather (but not The Weather From A Specific Location).

Thanks to the OpenWeather API each time the user hits the button the weather information from a random place is displayed in a small OLED screen. Initially developed as a stupid Slack command for my offtopic chats, the next logical step was to prototype it into a custom designed and 3d printed box connected to the Internet.

Extended info available on the project page (also in the github repo).


Small games written for fun (different engines and platforms):

Last update: 2024/07/03