Skip to content

Instantly share code, notes, and snippets.

View saulin18's full-sized avatar
🏠
Working from home

Saúl Sondón saulin18

🏠
Working from home
View GitHub Profile
@saulin18
saulin18 / gist:ce079d31f8ca240c325316880c6b6bfd
Created April 30, 2026 12:58
Type-safe TS service registry
type ServiceA = Service<"ServiceA"> & {
name: "ServiceA";
foo: () => void;
};
type ServiceB = Service<"ServiceB"> & {
name: "ServiceB";
bar: () => void;
};
type Service<T extends string> = {
__brand: T;

Job hunting tips

/More Eitzes from me, 'Eitzes is billik' - advice comes cheap.../

This gist is my experience. In general: do not trust such advice. Somehow the market tends to change every few years, always be aware of that possibility and be on the look-out.

Kinds of companies to work for

You can work for a big established company or for a startup. With more advanced companies you have a less stressed environment / and a more steady job, kind of.

Keeping up with python

Python is one of the tools in my toolbox, so I never used it exclusively. This means i need to get an update, occasionally.

Rant mode on

They want to have an expressive language, so they keep adding features upon features to it, instead of caring too much about performance (which means that no JIT - just-in-time compiler - has been added to cpython).

I would have thought that typescript is gaining over python on github, because node.js is JIT based, unlike cpython, but that guess was wrong: github article. The github article suggests a different reason:

@saulin18
saulin18 / builder.ts
Created May 5, 2026 15:11
form-schema-builder with Zod
import * as z from "zod";
export type FormFieldType = "text" | "textarea" | "email" | "tel" | "number" | "select" | "multiselect" | "array" | "date";
export interface FormField {
name: string;
label: string;
type: FormFieldType;
required?: boolean;