Skip to content

Instantly share code, notes, and snippets.

View dfoverdx's full-sized avatar

Beth Hitch dfoverdx

View GitHub Profile
@dfoverdx
dfoverdx / JavaScript Members Not Bound to Instances.md
Last active June 24, 2024 12:38
Why JavaScript class members are not automatically bound to the instance of the class

It took a few years, but I finally understand why member functions of classes in JavaScript aren't automatically bound to their objects, in particular when used in callback arguments.

In most object-oriented languages, functions are members of a class--they exist in memory only once, and when they are called, this is simply a hidden argument of the function which is assigned to the object that's calling it. Python makes this explicit by requiring that the first argument of a class's member function be self (Python's equivalent of this--you can name self whatever you want, but self is the convention).

class MyClass:
@dfoverdx
dfoverdx / async-database-client.js
Last active August 17, 2023 18:04
JavaScript/TypeScript Data Access Layer that automatically asserts the connection is ready, or waits for the connection to become ready
import Client from 'some-database-api';
import { connectionInfo } from './config';
class AsyncDatabaseClient {
constructor() {
this._connection = null;
this._initialized = Client.connect(connectionInfo).then(c => this.connection = c);
return new Proxy(this, {
get(target, prop, receiver) {
@dfoverdx
dfoverdx / Permutations.ts
Last active February 7, 2023 14:20
TypeScript Permutations Type
/**
* @document Permutations.ts
*
* I wanted to figure out, just for the challenge of it, whether I could, given an array type `A`, produce a type that
* matches any array with every element of `A` exactly once in any order. I *love* abusing the TS typing engine. It
* insulted my mother once.
*/
/**
* Returns an array type that includes every element of `T` exactly once in any order.
@dfoverdx
dfoverdx / example.js
Last active February 13, 2022 20:18
Scriptable extensions.js
importModule('./lib/extensions')({
// only need to pass in the types you need extended
// for this script
Math,
Number,
Array,
})
console.log(
Math.getFactors((6).factorial())
@dfoverdx
dfoverdx / Constitutional Amendments.md
Last active August 18, 2021 23:47
Constitutional Amendments that would dramatically alter the US government to more closely represent the People

Constitutional Amendments that would dramatically alter the US government to more closely represent the People

Whether true or not, and I believe it is true, many of us believe the US government is rampant with corrupt politicians, and therefore is corrupt itself.

However, Congress will never propose--much less ratify--an Amendment that would limit their own power. The solution is Constitutional Conventions as laid out by Article V of the Constitution.

The Congress, whenever two thirds of both houses shall deem it necessary, shall propose amendments to this Constitution, or, on the application of the legislatures of two thirds of the several states, shall call a convention for proposing amendments, which, in either case, shall be valid to all intents and purposes, as part of this Constitution, when ratified by t

@dfoverdx
dfoverdx / CompositeEnum.ts
Created July 7, 2021 18:29
TypeScript composite `as const`
/**
* Creates a readonly object which combines the given `as const` constants. If any of the objects overlap in keys or
* values, it evaluates to `never`. Unfortunately this does not work with enums because there is no way to determine if
* the *value* `Enum1.foo` is different than that `Enum2.bar`. Typescript treats enum values as distinct types.
*
* I made this type to prevent flux action types from overlapping.
*
* Requires Typescript@4.2 or later.
*/
type CompositeAsConst<
@dfoverdx
dfoverdx / isProxy.js
Created July 3, 2021 20:20
Add an isProxy property to Proxies
// Note to anyone who just happened upon this: I am not proud of this code.
Symbol.isProxy = Symbol('@@isProxy');
const _Proxy = Proxy;
(typeof global === 'undefined' ? window : global).Proxy = new _Proxy(_Proxy, {
construct(target, args, newTarget) {
const result = Reflect.construct(target, args, newTarget);
return new _Proxy(result, {
get(target, prop, receiver) {

This is a continuation of a Facebook post but a digression from the intent of the post. It is mere postulation of what could happen if the police brutality goes unaddressed by the government.

What happens next

If left undealt with, to my discernment, one of two things will happen.

1) The People give up. They determine that continued protesting is not worth the risk of the bodily harm and very lives of so many people. They disperse. The putrid status quo is maintained. No justice is served.

2) Things escalate. The People determine a violent overthrow of the government is warranted and obligatory. People take sides. Civil war erupts. Hundreds of thousands die.

Impossible Cape Level Slightly Antagonistic FAQs

  • Is this your level?

    Yes. That's why I'm clearing it.

  • Can you show us the rest of the level?

No. But here's what it looked like. Preview video.\