Skip to content

Instantly share code, notes, and snippets.

Avatar
🐫

Yo Lulkin joaomilho

🐫
  • Choco.com
  • Berlin, Germany
View GitHub Profile
@joaomilho
joaomilho / peano.ts
Created Nov 3, 2020
Fully typed arithmetics with TypeScript 😨
View peano.ts
type Nat = ["S", Nat] | ["Z"];
type Succ<N extends Nat> = ["S", N]
type S<N extends Nat> = Succ<N>
type Prev<N extends Nat> = N[1]
type Z = ["Z"]
type Zero = Z
type One = S<Z>
type Two = S<S<Z>>
@joaomilho
joaomilho / log.ts
Last active Mar 20, 2021
A printf with dependant types in TypeScript, similar to Idris (https://gist.github.com/chrisdone/672efcd784528b7d0b7e17ad9c115292)
View log.ts
type FieldType<Field> =
's' extends Field ? string :
'f' extends Field ? number :
'i' extends Field ? number :
'd' extends Field ? number :
'o' extends Field ? HTMLElement :
'O' extends Field ? object :
'c' extends Field ? string :
never;
@hediet
hediet / main.md
Last active May 14, 2022
Proof that TypeScript's Type System is Turing Complete
View main.md
type StringBool = "true"|"false";


interface AnyNumber { prev?: any, isZero: StringBool };
interface PositiveNumber { prev: any, isZero: "false" };

type IsZero<TNumber extends AnyNumber> = TNumber["isZero"];
type Next<TNumber extends AnyNumber> = { prev: TNumber, isZero: "false" };
type Prev = TNumber["prev"];
@morsdyce
morsdyce / reactive2016_lightning_talk.md
Last active Mar 7, 2019
Introduction to BDSM - ReactiveConf Lightning talk proposal
View reactive2016_lightning_talk.md

This is a proposal for a lightning talk at the Reactive 2016 conference.

🌟Star this gist if you want to see it on the conference.

Introduction to BDSM

Every day we work with multiple teams to build our products, communication and sync are key factors to deliver your product on time without compromising quality.

In this talk I will introduce BDSM a new mocking tool that will change the way you coordinate between client and server teams minimizing friction allowing each team to work at its own pace while keeping in sync.

@SteveBenner
SteveBenner / conditional-html-tags.rb
Last active Oct 18, 2019
Helper [tag] for generating one or more HTML tags inside IE conditional comments, in the style of HTML5 Boilerplate
View conditional-html-tags.rb
# This is a special tag helper that generates multiple HTML tags in the style of HTML5 Boilerplate,
# meaning each is placed within an IE conditional comment and has special classes applied to it.
# One tag is created for each version of Internet Explorer specified in the first argument.
#
# @see https://github.com/h5bp/html5-boilerplate/blob/v4.3.0/doc/html.md#conditional-html-classes
#
# @note This helper requires a Slim block!
# @note The output of this helper must be HTML escaped!
#
# @param [Range] ie_versions A range of IE versions to generate code for, in which the
@coolaj86
coolaj86 / how-to-publish-to-npm.md
Last active Apr 30, 2022
How to publish packages to NPM
View how-to-publish-to-npm.md

Getting Started with NPM (as a developer)

If you haven't already set your NPM author info, now you should:

npm config set init.author.name "Your Name"
npm config set init.author.email "you@example.com"
npm config set init.author.url "https:/yourblog.com"

npm config set init.version "1.0.0"