Software Developer · Unavailable

I write the systems
a project runs on

The client asks; the server checks the payload, the replay, the permission and the rate limit, then decides.

Languages

  • Luau
  • JavaScript
  • Python
  • Java

Runtime

  • Node.js
  • Roblox
  • discord.js

Tooling

  • Rojo
  • Git
  • VS Code

Persistence

  • durable writes
  • schema migration
  • recovery after a restart

Realtime

  • replication
  • concurrency
  • state sync

Services

  • REST
  • webhooks
  • Oracle Cloud VM

Current focus

Roblox development in Luau

Everything below is built on it, in Roblox Studio.

01Roblox Releasing soon

GENTES IN ARMIS

Two armies run by players rather than by scripts: companies that recruit, promote and dissolve, an officer ladder that decides who may do what, and a standard you can carry, plant and lose. I own it and wrote every line.

  • Every system custom-built. No kits, no free models.
  • Player-run hierarchies that operate without me touching them.
  • Ranks and command structure survive a restart, so a chain of command isn't rebuilt every session.
Role Owner & sole scripter
Lang Luau · Roblox Studio
Systems Musket ballistics · Combat · Battles · Flag system · Ranks & command hierarchy · Persistence
Build ~73,000 lines of Luau over 4 months
Scope Written from scratch. No kits, no free models

02Roblox Complete

Area-23

An entire SCP Foundation facility: five anomalies, containment protocols, and the systems tying them into one coherent game. Built solo in two weeks.

  • Five anomalies, each with its own rules and failure states.
  • Containment protocols driving how staff and players interact.
  • Full map scripting across the whole facility.
Role Sole scripter
Lang Luau · Roblox Studio
Systems 5 anomalies · Containment protocols · Facility-wide scripting
Build Whole map, end to end, in 2 weeks

03Details

Server-authoritative by default

A client message clears five gates before anything happens: shape, replay, rank, rate limit, audit. The client is the one machine you don’t control.

CompanyInfra/Officer/OfficerActionService.luau
-- SafeRemote has already checked the envelope: a table, under 6 deep,-- under 256 keys, no Instances, under the byte cap, matching the schema.local function dispatch(player, payload)  if NonceCache.Seen(player.UserId, payload.nonce) then return end  NonceCache.Mark(player.UserId, payload.nonce)   local actor = CompanyAuthority.LevelFor(player, company)  if actor <= Authority.Level.None then return end   if actor < Authority.Level.Organiser     and not RateLimit.Consume(player, handler.rateKey, 1) then return end   AuditService.Log({ actor = player.UserId, action = handler.name })end
04Contact
Write to me directly felipe@felipeariza.com

Or email me at felipe@felipeariza.com

“Write it so someone else can pick it up.” — how I decide what’s finished