my profile picture

Lance Owen Gulinao

Fullstack Web Developer,

About

👋 I'm Lance, a third year computer science student studying in UST. I develop websites that provide value to other people. I constantly refine my skills and workflow by experimenting with new tech and tools.

In my free time, I automate tedious processes that block creative output and tinker with programming language design.

Education

University of Santo Tomas

2022 - Present

BS Computer Science

  • Winner of CodeSprint 2023, a competitive programming competition hosted by the UST Computer Science Society
  • 1st runner up in DLSU Hackercup 2023, a hackathon hosted by the La Salle Computer Society
  • Consistent dean's lister with <1.50 running GWA
  • Top 4 for 1st semester of A.Y. 2023 - 2024

De La Salle University - Integrated School

2020 - 2022

Senior High School - STEM

  • Published a paper in the Manila Journal of Science discussing the viability of using code libraries as a teaching aid for problem solving skills in the context of programming.
  • Presented SpaceSimulator, a classical mechanics code library written in C# for calculating various physics concepts, in the 2022 DLSU SHS Research Congress.

Experience

Assistant Chief Technology Officer

TomasinoWeb

  • Designed and implemented website backends using latest web development technologies.
  • Lead projects and coordinated features and scope with the frontend and UI/UX teams.
  • Developed minimum viable prototypes which iterated into published applications.
  • Onboarded fellow backend developers with chosen technology stacks.
  • Deployed websites on VPSs using Nginx + Docker and cloud hosting platforms.

Websites I've worked on

TomasinoWeb.org

The official website of TomasinoWeb, the premier digital media organizaton of the University of Santo Tomas.

Learn More

TomasinoWeb.org main website featured image

TomasinoWeb.org

The official website of the premier digital media organizaton of the University of Santo Tomas

Some of the pages I brought to life

Problems faced and solutions system design writeup here

Short development time (April 18 - June 19)

  • Creating a custom backend framework that allowed for rapid feature development and integration between backend and frontend.
  • Implementing continous integration and testing with GitHub actions for constant QA.
  • Developing reusable components for the public and admin side of the website, with the help of SCSS mixins.

Lack of existing code libraries for common tasks

Developed copy and paste code snippets that can be used in future projects

  • Lack of full text search support for Prisma + SQLite
    • Gandalf - A function for describing and manipulating bitfields with full typesafety.
      • Used to implement role based user authentication with permissions.
    • RuntimeEnum - A function for creating enums which can be validated at runtime using Zod.
      • Used to store enum strings in databases that don't support enum values.
    • Scheduler.ts - A basic task scheduler built on top of node-schedule.
      • Used to release scheduled posts in the content management system.
    • Paginator - A react hook generator for dealing with paginated data from the backend.

    Reconciling content from an existing repository

    • Automated migration of content from old sources using Google Sheets

    lamona

    A food and drink directory for Thomasians featuring over 180 establishments.

    UST Computer Science Society Website

    A website that showcases information about the UST CS department's Mother Organization.

    join.tomasinoweb.org

    An organization recruitment / application website for TomasinoWeb

    rightclick.tomasinoweb.org

    The UST student elections coverage website of TomasinoWeb, showcasing the candidates of every student council, and their platforms.

    Sideprojects

    8-bit Minecraft Redstone Computer

    A compiler toolchain written in C and Python for compiling a custom programming language to a Minecraft computer's instruction set.

    8-bit Redstone Computer

    Scintax Programming Language

    A treewalk interpreted general purpose programming langauge, inspired by JavaScript, written in C#. It comes with its own REPL and "IDE" with semantic highlighting.

    scinss css preprocessor

    A rudimentary stylesheet language, allowing users to write shorter, more succinct CSS.

    LiReddit

    A basic Reddit clone, inspired by Ben Awad's GraphQL tutorial series.

    Skills

    Programming Languages

    HTML, CSS, SCSS, JavaScript, TypeScript, Bash, SQL

    Frameworks

    React, Next,js, Express, Koa

    Other

    Git, GitHub Pages, Vercel, Docker

    What I Use

    VSCode, Obsidian, Iosevka, Linux

    Open source

    @scinorandex/rpscin

    An experimental library for building fullstack typesafe REST and WebSocket APIs with TypeScript

    • Improves developer experience by reducing type-related code errors.
    • Used in production by TomasinoWeb.org.
    • Generates a typesafe client-side RPC library from server-side code automatically.
    • Allows developers to easily create realtime apps with typesafe event-based WebSocket connections.

    @scinorandex/erpc

    A lightweight express wrapper offering a typesafe middleware experience

    • Increases quality-of-life by automatically loading express.json(), cookie-parser, morgan, cors, and handling errors and rejected promises.
    • Provides middleware type information to API resolvers using TypeScript generics.
    • Simplifies common tasks such as multipart form uploads and authentication.
    • First class WebSocket support, treating WebSockets as if it was another HTTP method.

    @scinorandex/layout

    A tiny library for creating typesafe layouts with Next.js Pages Router

    • Fully customizable, guarantees the types of different data flows between layouts and pages.
    • Handles the automatic caching and revalidation of page props.

    @scinorandex/yoko

    A library for defining GraphQL resolvers and schemas using the Zod validation library

    • Uses a declarative, code-first approach for defining resolvers.
    • Usable with any API framework and can even be queried directly without an API.

    @scinorandex/scider

    A volatile in-memory data store for JavaScript applications

    • Fully typed with TypeScript and tested with Jest.