Skip to content

Instantly share code, notes, and snippets.

Always learning!

Bennett Smith BennettSmith

Always learning!
  • San Francisco Bay Area, CA
View GitHub Profile
BennettSmith /
Created Nov 11, 2016
Transform a text string into an sha256 hash and then base64 encode it.
# Takes in an e-mail address and answers back with the expected hash used
# for the AWS Cognito username field.
args=`getopt e: $*`
if [ $? != 0 ]; then
echo "Usage: ..."
exit 2
View key_authorization.rb
def authorize_key_for_root(config, *key_paths)
[*key_paths, nil].each do |key_path|
if key_path.nil?
fail "Public key not found at following paths: #{key_paths.join(', ')}"
full_key_path = File.expand_path(key_path)
if File.exists?(full_key_path)
config.vm.provision 'file',
BennettSmith / .gitignore
Last active Apr 28, 2017
gtest-1.7.0 build script
BennettSmith / .gitignore
Last active Aug 18, 2022
Google Protobuf v2.6.0 Build Script for iOS
View .gitignore
BennettSmith / protobuf-2.5.0-apple-ios7.patch
Created Dec 14, 2013
Resolve C++ namespace collision when building Google Protobuf 2.5.0 with Xcode 5.0 for iOS 7.0 Apple includes a copy of protobuf as a private framework and if you link a locally built copy into and app that already uses the private framework version it will result in application crashes. Thanks Apple!
View protobuf-2.5.0-apple-ios7.patch
diff -rupN protobuf-2.5.0/src/google/protobuf/stubs/common.h protobuf-2.5.0-modified/src/google/protobuf/stubs/common.h
--- protobuf-2.5.0/src/google/protobuf/stubs/common.h 2013-02-26 09:56:38.000000000 -0800
+++ protobuf-2.5.0-modified/src/google/protobuf/stubs/common.h 2013-12-13 22:03:16.000000000 -0800
@@ -82,6 +82,13 @@ inline BOOL GetMessage(
namespace std {}
+// This is to get around a namespace collision between the privately built
+// copy of Google Protobuf and the copy linked into Apple's OpenGL ES
+// support.
BennettSmith /
Last active Oct 15, 2022
Script used to build Google Protobuf 2.5.0 for use with Xcode 5 / iOS 7. Builds all supported architectures and produces a universal binary static library.

Google Protobuf 2.5.0 - Mac OS X and iOS Support

The script in this gist will help you buid the Google Protobuf library for use with Mac OS X and iOS. Other methods (such as homebrew or direct compilation) have issues that prevent their use. The libraries built by this script are universal and support all iOS device architectures including the simluator.

Get the Script

The easiest way to use this script is to simply clone the gist onto your

BennettSmith / 0001-Add-generic-GCC-support-for-atomic-operations.patch
Created Oct 23, 2013
Patches for Google Protobuf 2.5.0 release designed to add support for architectures that used to work in 2.4.1, but broken in 2.5.0. The patch is courtesy of this developer ( who posted it on the Google Protobuf discussion group ( in May, 2013.
View 0001-Add-generic-GCC-support-for-atomic-operations.patch
From d099ec11fc8c2eb97df2bf2fbb6996066eefca46 Mon Sep 17 00:00:00 2001
From: Stanislav Ochotnicky <>
Date: Thu, 2 May 2013 10:43:47 +0200
Subject: [PATCH] Add generic GCC support for atomic operations
This is useful for architectures where no specialized code has been
src/google/protobuf/stubs/atomicops.h | 2 +-
.../stubs/atomicops_internals_generic_gcc.h | 139 +++++++++++++++++++++
BennettSmith / UIImage+ParadigmPics.h
Created Jul 26, 2013
UIImage class category for ParadigmPics sample application.
View UIImage+ParadigmPics.h
#import <UIKit/UIKit.h>
@interface UIImage (ParadigmPics)
+ (void)saveImage:(UIImage*)image withFilename:(NSString *)filename;
+ (UIImage*)loadImageFromFile:(NSString *)filename;
+ (UIImage *)fixOrientationForImage:(UIImage *)aImage;
  • Only use a URL to reference a resource. A resource should never be referenced by some other bit of JSON by a simple identifier (id, oid, etc.)
  • Use HAL to express relationships between resources. (
  • If a resource appears in the _embedded section of a resource must also appear in the _links section of the resource.
  • Items that appear in the _links section of a resource may also appear in the _embedded section of the resource.
  • Use curies to simplifiy link relationship naming in resources.
  • Use URI Templates to express optional parameters (generally query string parameters) for a resource.
  • Define and publish a URI Template parameter table so clients know what the possible "fill-in-the-blank" fields are for URI templates.
BennettSmith /
Created Apr 25, 2013
Experiment to verify conditional assignment of a default value for DOXYGEN environment variable.
echo ${DOXYGEN}