Skip to content

Instantly share code, notes, and snippets.

Avatar
🚀
Prolog is the future

Gilbert gilbert

🚀
Prolog is the future
  • San Francisco, CA
View GitHub Profile
@gilbert
gilbert / showcase.rb
Last active Mar 10, 2020
Minimal "states" mixin in Ruby
View showcase.rb
module HasStates
def state_field(column, state_names)
state_names.each do |name|
define_method("#{name}?") do
self.send(column) == name
end
end
end
end
@gilbert
gilbert / dogs.pl
Created Jan 24, 2020
Prolog learning
View dogs.pl
dog(rover).
dog(felix).
dog(benny).
has_owner(rover).
has_owner(benny).
is_happy(Dog) :- has_owner(Dog).
is_happy(Dog) :- breed(Dog, poodle).
@gilbert
gilbert / stub.ts
Last active Sep 17, 2019
Concurrency-safe stubbing for TypeScript / Node.js
View stub.ts
type QueueItem = {
filename: string
resolve: () => void
originalValue: any
stubValue: any
}
type Stub = {
queue: QueueItem[]
filename: string
originalValue: any
@gilbert
gilbert / showcase.jsx
Created Feb 12, 2018
JSX Formatting Tips
View showcase.jsx
class Showcase extends React.Component {
constructor(props) {
super(props)
this.state = { ... }
}
toggle() {
this.setState({ open: ! this.state.open })
}
render() {
var {open, loading} = this.state
@gilbert
gilbert / DefaultKeyBinding.dict
Last active Feb 27, 2018
Add missing keyboard shortcuts on OS X
View DefaultKeyBinding.dict
/*
Create this as a file ~/Library/KeyBindings/DefaultKeyBinding.dict
Then restart your computer.
NOTE: ~ means alt/option
^ means ctrl
*/
{
"~f"="moveWordForward:";
"~b"="moveWordBackward:";
"~<"="moveToBeginningOfDocument:";
@gilbert
gilbert / data-deps.js
Last active Feb 7, 2018
React GET Data Dependencies helper
View data-deps.js
//
// Our main data fetching tool.
// This fetches an object of promise makers ONLY ON THE CLIENT SIDE,
// and manages loading and data states for each key.
//
import React from 'react'
import http from './http'
export default (promisesMakers, options={}) => Component =>
class FetchHOC extends React.Component {
@gilbert
gilbert / actual.js
Last active Sep 29, 2017
Pipeline op code
View actual.js
var inc = (x) => x + 1;
var double = (x) => x * 2;
var x = 10 |> inc |> double;
var y = 10 |> inc;
@gilbert
gilbert / logs.txt
Created Jun 5, 2017
Reason build error logs
View logs.txt
Configuring for host x86_64-apple-darwin16.6.0 ...
Configuring for target x86_64-apple-darwin16.6.0 ...
Using compiler gcc.
The C compiler is ANSI-compliant.
Checking the sizes of integers and pointers...
Wow! A 64 bit architecture!
This is a little-endian architecture.
Doubles can be word-aligned.
64-bit integers can be word-aligned.
Native division and modulus have round-towards-zero semantics, will use them.
@gilbert
gilbert / index.html
Created Mar 7, 2017
Minimal Mithril 1.0 boilerplate
View index.html
<!doctype html><title>Minimal Mithril</title>
<div id="app"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mithril/1.0.1/mithril.min.js"></script>
<script>
var AppComponent = {
view: function (vnode) {
return m('h1', "Hello World!")
@gilbert
gilbert / DefaultKeyBinding.dict
Created Feb 17, 2017
Enable terminal text navigation keyboard shortcuts across entire OS X operating system
View DefaultKeyBinding.dict
/* Create a new file at ~/Library/KeyBindings/DefaultKeyBinding.dict */
/* and copy/paste this into it. */
{
"~f"="moveWordForward:";
"~b"="moveWordBackward:";
"~<"="moveToBeginningOfDocument:";
"~>"="moveToEndOfDocument:";
"~v"="pageUp:";
"~d"="deleteWordForward:";
"~^h"="deleteWordBackward:";
You can’t perform that action at this time.