Skip to content

Instantly share code, notes, and snippets.


Ahmed El Gabri ahmedelgabri

View GitHub Profile
aleclarson /
Last active Sep 15, 2020
The best Rollup config for TypeScript libraries

Please retweet if this helps you!


🔥 Blazing fast builds
😇 CommonJS bundle
🌲 .mjs bundle
.d.ts bundle + type-checking
🧐 Source maps


Essential Apps

  • Blink: Install Blink on your iPad
  • Tailscale: Install Tailscale on all your devices.
  • mosh: Install mosh on all your devices. It comes with Blink by default.

Nice to have apps

Amphetamine for Mac

techtheriac /
Last active Jun 1, 2020
A subtle introduction to Lambda Calculus for the JavaScript Developer

Lambda (λ) Calculus For Javascript Developers

This article aims at explaining lambda calculus in a more approachable less 'mathy' manner.

Terms That Are Good To Know

  • Memoization: Memoization is an optimization technique used primarily to speed up computer programs by caching the result of expensive function calls and returning the cached result when fed with the same input.

  • Pure Function: A pure function is a function whose computation does not depend on globally declared variables, it does no I/O or mutations. All it does is return a value after doing a bunch of computations on the arguments it recieves. For a given set of arguments, a pure function will always return the same value. Thus, a pure function is one that is memoizable.

developit / *
Last active Apr 11, 2020
140b polyfill for Array.prototype.flat() and Array.prototype.flatMap().
View *

140b polyfill for [].flat() & [].flatMap()

Install: npm i tiny-array-flat-polyfill


import 'tiny-array-flat-polyfill';

const ARR = [1, [2, [3]], [[[4]]], 5]
busypeoples / RemoteData.tsx
Created Mar 6, 2020
RemoteData implementation using React, hooks and TypeScript
View RemoteData.tsx
import React, { useState } from "react";
type NotAsked = {
_type: "NOT_ASKED";
type Loading = {
_type: "LOADING";
WebReflection /
Last active Aug 16, 2020
The `handleEvent` ASCII doodle

About This Gist

This gist summarizes the handleEvent(event) pattern features, something standard, something described by me many times, written in my tiny book, tweeted about, and yet it's something most Web developers ignore.

The handleEvent ASCII Doodle

var handler = {   | any object that inherits or     |
sophiebits / reducer-with-effects.js
Last active Jul 29, 2020 — forked from davidkpiano/reducer-with-effects.js
An idea for actor-model-based effects with reducers
View reducer-with-effects.js
import {
} from 'react';
// In a component
const UserComponent = () => {
function fetchUserEffect(id, parentRef) {
const controller = new AbortController();
yegappan / VimScriptForPythonDevelopers.MD
Last active Aug 3, 2020
Vim script for Python Developers
View VimScriptForPythonDevelopers.MD

Vim Script for Python Developers

A guide to Vim Script development for Python developers. Sample code for the various expressions, statements, functions and programming constructs is shown in both Python and Vim Script. This is not intended to be a tutorial for developing Vim scripts. It is assumed that the reader is familiar with Python programming.

For an introduction to Vim Script development, refer to usr_41.txt, eval.txt and Learn Vimscript the Hard Way

For a guide similar to this one for JavaScript developers, refer to Vim Script for the JavaScripter

This guide only describes the programming constructs that are present in both Python and Vim. The constructs that are unique to Vim (e.g. autocommands, key-mapping,

View shape-generics.ts
interface Circle {
type: 'circle';
radius: number;
interface Square {
type: 'square';
width: number;
IanColdwater / twittermute.txt
Last active Sep 14, 2020
Here are some terms to mute on Twitter to clean your timeline up a bit.
View twittermute.txt
Mute these words in your settings here:
You can’t perform that action at this time.