Luís' Drivel-driven Webzone
FOR HIRE!

Previous Work and Projects

At Webincode

2019-2020, 2020-2021

Working at Webincode was my first step into the professional tech world.

I joined it through an internship program in the 2-year degree I was taking at a local polytechnic school (which I never finished since I left one course behind).

It helped me not only improve my Web development skills, but also how to organize work and how to act as part of a team.

Regrettably, I did not take the job as serious towards the end of my time there, forcing the great yet small crew there to cut ties with me, which I wish I could undo.

Lessons learned:

  • Putting in practice modern Web 'front-end' development with Bootstrap, and custom CSS+JS for unique page elements.
  • How SQL database queries should be formed in real life situations
  • Being introduced to the gigantic (in code size) cross-platform mobile app development made possible by Cordova and Angular through the Ionic Framework.
  • The importance of defining tasks (and time estimates) to solve before tackling a project

Reverse-engineering the PS4

2023-2026

With my hands on a passed down PlayStation 4 from a family member with a very convenient firmware version supported by the latest jailbreak at the time, I started hacking away on various small projects for it.

As time passed, some of these became more venturious and spawned:

egemu

An open-source compatibility layer for running PlayStation 4 games and applications.

[In development, not public yet.]

freegnm

An alternative PS4 GNM's user graphics library implementation.

[In development, not public yet.]

psbc

A Mesa-based shader compiler targetting the PlayStation 4's hardware.

[In development, not public yet.]

gnmtrace

A PlayStation 4 game frame tracing utility, with a focus in replayability.

[In development, not public yet.]

And as part of my learning on the Zig programming language:

open-orbis-zig

A wrapper for Zig over the PlayStation 4's Orbis OS system libraries.

[In development, not public yet.]

Lessons learned:

  • How powerful knowing the underlying hardware your software is targetting can be, versus abstracting over all theoretical hardware in the world, and how to balance that.
  • Insights on how GPUs operate, from an user's perspective down to a driver developer's view.
  • A new understanding of how complex mainstream graphics APIs are compared to console specialized ones.

Restoring Counter-Strike Online 2

2018-2022

This was my first modestly popular open-source project where my rookie reverse engineering skills were useful for others.

Technically this started in 2017, in the last week of the Chinese-flavor of this live service game, where I recorded a Wireshark dump of the network during a match.

A year later, I published on YouTube a video of a prototype custom game launcher that created a room and hosted a match, locally - made possible by Source Engine's DLL architecture, and by referencing previous leaked engine source code (fortunately Valve never found this project legally bothersome).

cso2-launcher

A custom game launcher for Counter-Strike Online 2 (abbreviated CSO2) in C++, with runtime hooks and patches for connecting to custom master servers and self-hosting matches.

[No longer in development.]

Following a reasonable amount of positive feedback, and inspired by the trending technology at the time, I began creating a master server in NodeJS for the custom launcher to connect to.

cso2-master-server

An implementation of a master, central server for CSO2 that manages user accounts and player's game sessions.

[No longer in development.]

This also lead to unexpected, but very welcome patches and bug fixes submitted to the source code repositories, giving me a taste of project management.

However, the project started to interfere with my work at Webincode, which coupled with a failed rewrite of the master server in modern C++, and a loss of interest for the game itself, lead me to stop working on this full-stop.

cso2-leet-server

A failed master server re-write in modern C++20.

[No longer in development.]

Lessons learned:

  • Don't over-engineer solutions or else they will impact development negatively. In this case combining NodeJS with MongoDB-then-Postresql and Docker-compose to top them all.
  • To not blindy follow 'modern' software practices such as 'microservices'. At some point in the project a user and inventory services (individual programs) were split from the master server itself.
  • Acquired an understanding of C++'s gigantic complexity. While I find the custom launcher's code more sensible, my decision to go all in C++20 with the master server rewrite was a complete disaster.
  • That public open-source projects require time to nurture the any interested users and developers.