Skip to content

Instantly share code, notes, and snippets.

@rctay
rctay / async-gotchas1.ts
Last active July 14, 2022 04:44
calling a promise in "fire-and-forget" fashion but surprisingly subsequent code wasn't called
// assume just this and you don't have access to its source code
let doAsyncThing: () => Promise<void>;
// another async fn - eg. logging, GA reporting
const doAsyncThingSafe = (): Promise<void> =>
new Promise((resolve, _reject) => {
console.log('🎉did <this> where <this = always needs to be done>🚀');
resolve();
});
export default {
name: 'stretch',
title: 'Stretch',
type: 'document',
fields: [
{
name: 'name',
title: 'Name of stretching exercise',
type: 'string',
},
@rctay
rctay / my-component.html
Last active December 19, 2018 08:22
Testing handlers and their bindings
<form [formGroup]="teamFormGroup" id="team-details__form">
<input matInput placeholder="Team Name" name="teamName" formControlName="teamName">
<button type="submit" mat-raised-button
(click)="onSaveChangesClicked()"
id="details__save-changes"
color="primary">save changes
</button>
</form>
@rctay
rctay / settings-page.po.ts
Created December 19, 2018 01:40
Explicit typing for merging 2 objects/decorating in TypeScript with intersection types
import { $ } from 'protractor';
export interface ChangePasswordDialog {
currentPasswordField: ElementFinder;
incorrectPasswordError: ElementFinder;
submitButton: ElementFinder;
}
export class SettingsPage extends AppPage {
get changePasswordDialog(): ElementFinder & ChangePasswordDialog {
fly -t ci workers --json | jq '.[] | select(.state=="stalled").name'\
| xargs fly -t ci prune-worker -w
@rctay
rctay / docker-compose.yml
Last active December 5, 2018 08:41
Persist artifacts for concourse builds with minio
services:
# ...
minio:
image: minio/minio
ports: ["9000:9000"]
command: minio server /data
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
@rctay
rctay / foo.md
Last active April 6, 2018 06:04
soliloquy 20180406

Is this refactor warranted?

Before:

    const ROLES = ['boss', 'big boss', 'major boss', 'super boss', 'the boss'];

    describe('with Alpha Team details but', () => {
        describe('without Big Boss', () => {
            const expected_roles = ROLES.filter(role => role !== 'big boss');
def allnumbers(i=1):
while True:
yield i
i += 1
def fastforward(it, till, it_head=None):
n = next(it) if it_head is None else it_head
while n < till:
n = next(it)
return n
function copy(o) {
var p = {};
for (var k in o)
p[k] = o[k];
return p;
}
function Mapper(source) {
this.source = source;
this.result = {};
@rctay
rctay / SimpleHTTPServerWithUpload.py
Created December 19, 2015 15:20 — forked from UniIsland/SimpleHTTPServerWithUpload.py
Simple Python Http Server with Upload
#!/usr/bin/env python
"""Simple HTTP Server With Upload.
This module builds on BaseHTTPServer by implementing the standard GET
and HEAD requests in a fairly straightforward manner.
"""