Skip to content

Instantly share code, notes, and snippets.

View gilbert's full-sized avatar
🪐
Security in space

Gilbert gilbert

🪐
Security in space
View GitHub Profile

Another file

@gilbert
gilbert / showcase.rb
Last active March 10, 2020 23:55
Minimal "states" mixin in Ruby
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 January 24, 2020 06:54
Prolog learning
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 September 17, 2019 20:46
Concurrency-safe stubbing for TypeScript / Node.js
type QueueItem = {
filename: string
resolve: () => void
originalValue: any
stubValue: any
}
type Stub = {
queue: QueueItem[]
filename: string
originalValue: any
@gilbert
gilbert / showcase.jsx
Created February 12, 2018 13:50
JSX Formatting Tips
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 February 27, 2018 11:30
Add missing keyboard shortcuts on OS X
/*
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 February 7, 2018 23:39
React GET Data Dependencies helper
//
// 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 September 29, 2017 04:50
Pipeline op code
var inc = (x) => x + 1;
var double = (x) => x * 2;
var x = 10 |> inc |> double;
var y = 10 |> inc;
@gilbert
gilbert / logs.txt
Created June 5, 2017 03:27
Reason build error logs
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 March 7, 2017 19:37
Minimal Mithril 1.0 boilerplate
<!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!")