Skip to content

Instantly share code, notes, and snippets.

Tyler JavadocMD

Block or report user

Report or block JavadocMD

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@JavadocMD
JavadocMD / api.ts
Created Aug 24, 2019
Express handler type constraints.
View api.ts
import { Request, NextFunction } from 'express'
interface JsonResponse<T> {
status(code: number): JsonResponse<T>
json(value: T): JsonResponse<T>
}
type JsonHandler<T> = (
req: Request,
res: JsonResponse<T>,
@JavadocMD
JavadocMD / window.d.ts
Created Aug 23, 2019
Extending Window in Typescript.
View window.d.ts
// This file would go in your source path, e.g.: src/window.d.ts
declare interface Window {
foo: string
}
@JavadocMD
JavadocMD / opt.ts
Last active Jul 25, 2019
Possible optional chaining gains?
View opt.ts
// Without optional chaining.
export const getInstance = async (instanceId: string): Promise<Instance> => {
const result = await ec2Client
.describeInstances({ InstanceIds: [instanceId] })
.promise()
if (!result.Reservations) {
throw new Error(`Could not find instance ${instanceId}`)
}
if (result.Reservations.length > 1) {
@JavadocMD
JavadocMD / store.ts
Created Jul 25, 2019
TypeScript React/Redux Example
View store.ts
// user/store.ts
import * as Redux from 'redux'
import { anonymous, authenticated, User, UserData } from './User'
/* State */
export interface State {
readonly user: User
}
@JavadocMD
JavadocMD / OptionWithNever.ts
Created Jul 22, 2019
A simple example demonstrating the use of never in TypeScript.
View OptionWithNever.ts
// Let's assume we're writing our own Option type (in practice, you should probably use fp-ts or something).
export abstract class Option<T> {
public abstract map<U>(f: (t: T) => U): Option<U>
}
// Some needs a type parameter so we know what value it has.
export class Some<T> extends Option<T> {
constructor(public readonly value: T) {
super()
}
@JavadocMD
JavadocMD / ObservablesExamples.cs
Last active Oct 20, 2017
UniRx Before and After Example: loading a catalog from a web API while falling back to two on-disk sources.
View ObservablesExamples.cs
// First the solution as provided, using UniRx.
public class ObservablesExample {
// The CatalogInfo, this is non-null immediately after calling LoadCatalog().
public IObservable<CatalogInfo> CatalogInfo;
// Helper methods, where the work of loading is done.
// UniRx makes it painless to execute these off the main thread.
// Errors are handled by Observable.OnError
private IObservable<CatalogInfo> LoadFromPlayFab() { /* ... */ }
@JavadocMD
JavadocMD / Login.cs
Created Jun 20, 2017
Use of a partial class to implement platform-specific logic in Unity.
View Login.cs
namespace Login {
public static partial class Login {
// Call this from the outside to log in
public static void LogIn() {
DoLogIn();
}
// Implementation delegate
@JavadocMD
JavadocMD / chrome_open_bookmark.py
Created Nov 12, 2016
A script to open Chrome bookmarks or entire folders of bookmarks by name. (Windows)
View chrome_open_bookmark.py
#!/usr/bin/env python
import os, subprocess, json
# Get all bookmarks matching the given name(s)
def get_bookmarks(profile_dir, names):
with open(os.path.join(profile_dir, 'Bookmarks')) as f:
j = json.load(f)
results = []
# There are two root-level bookmark folders: one for the bookmark bar and one for all others.
@JavadocMD
JavadocMD / sof.scala
Created Nov 3, 2016
Sequence of Futures
View sof.scala
def details(since: Option[LocalDate], until: Option[LocalDate], page: Int): Future[NumberedDetailsPage] = { ... }
details(since, until, 1).flatMap { page1 =>
val pagesFuture = Future.sequence(
for {
n <- (2 to page1.details.totalPages).toList
} yield {
details(since, until, n)
}
@JavadocMD
JavadocMD / CompileIndicator.cs
Last active Jul 11, 2019
A Unity script to play a sound effect when script compiling starts and ends.
View CompileIndicator.cs
using System;
using System.Reflection;
using UnityEditor;
using UnityEngine;
// I recommend dropping this script in an Editor folder.
// You should have two audio clips somewhere in the project.
// You'll need to edit-in the paths of those clips (from your project root folder) in the static initializer below.
// Example path: "Assets/Editor/CompileIndicator/start.mp3"
You can’t perform that action at this time.