Skip to content

Instantly share code, notes, and snippets.

@donabrams
donabrams / nest1.js
Last active September 16, 2016 21:22
Component nest
const nest = ({components: [Wrapper, ...rest] = [], props={}, children}) => rest
? nest({components: rest, props, children: <Wrapper {...props}>{children}</Wrapper> })
: <Wrapper {...props}>{children}</Wrapper>
nest({components: [Wrapper1, Wrapper2]}) // <Wrapper2><Wrapper1/></Wrapper2>
@donabrams
donabrams / altReducer.js
Last active September 15, 2016 19:12
Alternative Redux reducer syntax
import { ACTION1, ACTION2 } from './someAction'
import { reducer } from 'alt-redux'
export const name = "TODOS"
const initialState = {}
const store = reducer({ name, initialState })
store.on(ACTION1, (state, { foo, bar }) => ({...state, foo, bar }))
store.on(ACTION2, (state, { baz }) => ({...state, baz }))
@donabrams
donabrams / post.js
Created September 6, 2016 14:29
State Machine in Javascript
const STATUS_DRAFT = "STATUS_DRAFT"
const STATUS_PUBLISHED = "STATUS_PUBLISHED"
const STATUS_UNPUBLISHED = "STATUS_UNPUBLISHED"
function createPost() {
return {
status: STATUS_DRAFT
}
}
@donabrams
donabrams / post.hs
Last active September 6, 2016 14:34
State Machine in Haskell
Post = Draft | PublishedPost | UnpublishedPost
publish :: Post -> PublishedPost
PublishedPost
unpublish :: Post -> UnpublishedPost
UnpublishedPost
@donabrams
donabrams / postReducer.js
Last active September 6, 2016 14:27
Javascript state machine example
import { ACTION_PUBLISH, ACTION_UNPUBLISH } from "./actions"
export const STATUS_DRAFT = "STATUS_DRAFT"
export const STATUS_PUBLISHED = "STATUS_PUBLISHED"
export const STATUS_UNPUBLISHED = "STATUS_UNPUBLISHED"
const initialState = {
status: STATUS_DRAFT
}
@donabrams
donabrams / Post.java
Created September 6, 2016 14:11
Example Java State Machine
public class Post {
public enum PostStatus {
PENDING, PUBLISHED, UNPUBLISHED
}
private PostStatus status;
public void post() {
this.status = PostStatus.PUBLISHED;
@donabrams
donabrams / exampleRelayRequest.graphql
Created September 1, 2016 14:08
Example Relay Request with Heavy fragment user
query Index {
viewer {
id
...FX
}
}
fragment F0 on User {
name
email
@donabrams
donabrams / example.js
Created August 24, 2016 18:33
Redux Reducer Middleware to Conditionally Execute a second action
import {createStore} from 'redux';
import {interceptingAction} from 'redux-intercepting-action';
import {createAction} from 'redux-actions';
import reducer from './reducers'
const getInterceptingAction = (state)=> {
if (state.good) {
return {
type: 'YAY'
}
@donabrams
donabrams / InstallCinnamonCrouton
Last active July 18, 2016 15:03 — forked from sohjsolwin/InstallCinnamonCrouton
Steps to install and setup a cinnamon flavored crouton on a Chromebook Pixel
# The next command will install a [raring] based ubuntu
# chroot, named [cinnamon] into the default directory
# with the targets [core], [cli-extra], [touch], and [keyboard]
sudo crouton -n cinnamon -r xenial -t core,cli-extra,touch,keyboard
# Supply your new username and password like normal, and
# once that finishes, enter the chroot with:
sudo enter-chroot -n cinnamon
let obj = checkin
do {
console.log(Object.getOwnPropertyNames(obj))
} while ((obj = Object.getPrototypeOf(obj)) !== null)