Cretezy / Charles

Software Developer

GitHub LinkedIn Twitter

My first published game, MagnetBox

July 18, 2022

I released my first small game, for a game jam! Well, it was released April 13th, just took me a while to get around writing a post here.

The game was made for Weekly Game Jam - Week 248, and it won out of 14 entries!

It's a simple 2D game with 3 levels, where the player can move (pull) the magnet towards metal walls. On the way to the level's end…

Continue reading...

Become a git stash pro

January 26, 2021

git stash is a very useful feature in git allowing you to 'stash' away changes for later.

Key points for git stash:

  • Stashes are a last-in-first-out list. You can push and pop to it
  • Stashes have an index (the latest is 0), and optionally a message (like commits)
  • Stashing requires a commit. You can't stash if you haven't created a commit yet (for example - right after git init)
Continue reading...

React Query + Axios for authentication

November 30, 2020

React Query is a great library. It provides an API similar to the Apollo GraphQL client, but in a backend-agnostic design. It is perfect for use with traditional REST APIs, or any type of data API you wish to fetch from.

Axios is a small and simple Promise-based JavaScript HTTP client for browsers and Node. It provides a simple API with powerful…

Continue reading...

Flutter JSON vs Protocol Buffer: Benefits and performance

May 19, 2020

As discussed in my last post on Flutter JSON decoding performance, we saw that parsing JSON on the main thread is usually the right choice for decoding data.

Today, we'll be looking at Protocol Buffers, Google's data serialization format. Protocol Buffers serves the same purpose as JSON, with the following differences:

  • It is structured. You create .proto files which define the schema of the data, and generate code for encoding/decoding
  • It is a binary format. This means that it doesn't need to encode to a string (like JSON). For example, "123" can encode to 1 byte instead of 3.
Continue reading...

Flutter JSON parsing: What is the fastest?

May 17, 2020

Flutter, Google portable UI framework, uses Dart for application code. My question today: What is the fastest way to parse JSON in Flutter?

Flutter is single-threaded, meaning all code runs on the UI thread by default. It uses an event loop but supports isolates (thread-like workers who don't share memory). Overall, this is very similar to…

Continue reading...

Cloud Run + Cloud Build for Monorepos

June 24, 2019

Cloud Run is a "serverless container compute platform" running on Google Cloud. It is a surprisingly good product, even in it's beta stage.

Today, we'll be setting up Cloud Run and Cloud Build to run inside a monorepo with a Node.js back-end (as an API), with a Next.js front-end. We will deploy each package (server, web) as an individual Cloud Run…

Continue reading...

Beta Lister Release

June 19, 2019

Today I'm releasing an Android app, Beta Lister, which lists all available beta versions of installed applications.

It's a simple utility app that can be downloaded on the Google Play Store right now. It’s free and easy to use: Simply launch Beta Lister to display a list of your apps and their beta status. You can click on an app to view its…

Continue reading...

Hello World!

February 17, 2019

I've recreated my personal website with Gatsby. It's been a great experience so far.

I've gone the way of using no external dependencies except for Emotion, a CSS-in-JS library with support for Gastby.

This allows the site to be pre-rendered statically, making loading times very fast, especially behind a CDN like Netlify. In addition, JS is…

Continue reading...