Skip to content

Instantly share code, notes, and snippets.

View benmccormick's full-sized avatar

Ben McCormick benmccormick

View GitHub Profile
@benmccormick
benmccormick / file.js
Created December 24, 2015 03:41
Super Simple async-await example
async function showMessageFromServer() {
let data = await fetch('/get/data.json');
let message = data.json().message;
alert(message);
}
@benmccormick
benmccormick / file.js
Created December 24, 2015 03:26
Promise Examples
//Promises take a function that receives callbacks that can be run when an operation completes
let delay5Seconds = new Promise(function(resolve, reject) {
setTimeout(resolve, 5000);
});
//You can respond to the results of a successfully resolved Promise using the `then` function
delay5Seconds.then(function() {
console.log('This gets logged 5 seconds later')
});
@benmccormick
benmccormick / file.js
Created December 24, 2015 03:23
Waiting on multiple async operations using Promises
//fetch makes an HTTP request and returns a promise that resolves
//when the file is loaded
let p1 = fetch('/data/file1.json');
let p2 = fetch('/data/file2.json');
let p3 = fetch('/data/file3.json');
Promise.all([p1,p2,p3]).then(function(values) {
//values contains the responses from each of the promises
let [response1, response2, response3] = values;
@benmccormick
benmccormick / file.js
Created December 24, 2015 03:20
Converting callbacks to promises
//Backbone.Model's save function is a function that takes callbacks
//for successful or failed saves.
//Normal usage
let model = new Backbone.Model();
model.save(null, {
success: function() {
alert('saved');
@benmccormick
benmccormick / promises.js
Last active December 24, 2015 03:19
Promises swallow exceptions
try {
fetch('/some/data').then(function() {
throw 'error';
})
} catch(e) {
//this code won't be executed
console.log('Exception Caught')
}
@benmccormick
benmccormick / timsetup.sh
Last active December 17, 2015 18:09
A quick script to get tim setup on mint
#!/bin/bash
# This is a script to set up a Linux Mint environment for Tim's development this summer. It is by no means complete, but is just meant to get started with some of the basics for java development and the courage project.
#set your username here
USER=ben
#update available packages
apt-get update
#installing postgres
apt-get -y install postgresql
@benmccormick
benmccormick / knockout-protected.js
Last active December 17, 2015 02:38
Protected Observables by Ryan Niemeyer
/* Small Knockout Extension to allow for canceling/confirming
* changes to the view model Originally from:
* http://www.knockmeout.net/2011/03/guard-your-model-accept-or-cancel-edits.html
*/
//wrapper to an observable that requires accept/cancel
ko.protectedObservable = function(initialValue) {
//private variables
var _actualValue = ko.observable(initialValue),
_tempValue = initialValue;
@benmccormick
benmccormick / knockout-revertible.js
Last active December 17, 2015 02:38
Revertible Observable
/* Small Knockout Extension to allow for canceling/confirming
* changes to the view model. Defaults to the changed option. Based on code sample from Ryan Niemeier
* http://www.knockmeout.net/2011/03/guard-your-model-accept-or-cancel-edits.html
*
* Please note: You should not use this unless you are
* explicitly confirming or resetting the values in every scenario before you
* reference them again. An unwanted revert may occur if you make changes without confirming and then cancel at a later point.
*/
//wrapper to an observable that requires accept/cancel
@benmccormick
benmccormick / Palindrome.java
Created April 14, 2013 22:39
A java equivalent of my coffeescript solution for the Google Code Jam qualification problem
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Palindrome {
public static void main(String[] args) throws Exception
@benmccormick
benmccormick / palindrome.coffee
Created April 14, 2013 17:40
Submission for Problem C of google code jam Qualification Round 2013 https://code.google.com/codejam/contest/2270488/dashboard#s=p2
fs = require('fs')
writevalue = (i, val)->
output += "Case #"+i+": "+val+"\n"
# is a palindrome (expects a string)
isPalindrome = (num) ->
reversed = (num).split("").reverse().join("")
num is reversed