Skip to content

Instantly share code, notes, and snippets.

View JavadocMD's full-sized avatar

Tyler JavadocMD

View GitHub Profile
@JavadocMD
JavadocMD / Example.cs
Created August 3, 2015 23:47
UniRx issue
public class GameModel : MonoBehaviour {
public FloatReactiveProperty Score { get; private set; }
void Awake() {
Score = new FloatReactiveProperty(0f).AddTo(this);
}
}
public class ScoreUI : MonoBehaviour {
@JavadocMD
JavadocMD / Main.scala
Last active April 26, 2016 22:50
Application of type classes for intersecting Shapes, inspired by http://eli.thegreenplace.net/2016/a-polyglots-guide-to-multiple-dispatch
// Define our shapes.
trait Shape
class Rectangle extends Shape
class Ellipse extends Shape
class Triangle extends Shape
object Shape {
// The method we'll call to perform an intersection.
def intersect[A <: Shape, B <: Shape](a: A, b: B)(implicit ev: Intersection[A,B]): Unit = {
@JavadocMD
JavadocMD / sof.scala
Created November 3, 2016 02:15
Sequence of Futures
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 / Login.cs
Created June 20, 2017 23:33
Use of a partial class to implement platform-specific logic in Unity.
namespace Login {
public static partial class Login {
// Call this from the outside to log in
public static void LogIn() {
DoLogIn();
}
// Implementation delegate
@JavadocMD
JavadocMD / ProjectName.sln.DotSettings
Last active October 4, 2017 10:48
A nice DotSettings file for JetBrains Rider projects.
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/UpgradedFromVSSettings/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/Highlighting/IdentifierHighlightingEnabled/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SuggestVarOrType_005FSimpleTypes/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnassignedField_002ECompiler/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/RecentlyUsedProfile/@EntryValue">Default: Reformat Code</s:String>
<s:String x:Key="/Defaul
@JavadocMD
JavadocMD / ObservablesExamples.cs
Last active October 20, 2017 05:19
UniRx Before and After Example: loading a catalog from a web API while falling back to two on-disk sources.
// 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 / OptionWithNever.ts
Created July 22, 2019 17:36
A simple example demonstrating the use of never in TypeScript.
// 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 / store.ts
Created July 25, 2019 00:11
TypeScript React/Redux Example
// user/store.ts
import * as Redux from 'redux'
import { anonymous, authenticated, User, UserData } from './User'
/* State */
export interface State {
readonly user: User
}
@JavadocMD
JavadocMD / opt.ts
Last active July 25, 2019 19:21
Possible optional chaining gains?
// 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 / window.d.ts
Created August 23, 2019 07:21
Extending Window in Typescript.
// This file would go in your source path, e.g.: src/window.d.ts
declare interface Window {
foo: string
}