Skip to content

Instantly share code, notes, and snippets.

View MatthewReinbold's full-sized avatar

Matthew Reinbold MatthewReinbold

View GitHub Profile

(Scraped from the Internet Wayback Machine. Original content by Eran Hammer / hueniverse.com July 26, 2012)

OAuth 2.0 and the Road to Hell

They say the road to hell is paved with good intentions. Well, that’s OAuth 2.0.

Last month I reached the painful conclusion that I can no longer be associated with the OAuth 2.0 standard. I resigned my role as lead author and editor, withdraw my name from the specification, and left the working group. Removing my name from a document I have painstakingly labored over for three years and over two dozen drafts was not easy. Deciding to move on from an effort I have led for over five years was agonizing.

There wasn’t a single problem or incident I can point to in order to explain such an extreme move. This is a case of death by a thousand cuts, and as the work was winding down, I’ve found myself reflecting more and more on what we actually accomplished. At the end, I reached the conclusion that OAuth 2.0 is a bad

@MatthewReinbold
MatthewReinbold / bad.json
Created September 20, 2022 03:43
An Example of Bad Character in JSON That Breaks Parsing and Validation And Leads To Unhelpful Errors
[
{
"title" : "Creating Compelling Stories",
"category" : "",
"tags" : "Software Change",
"url" : "/2021/09/10/CreatingCompellingStories",
"date" : "Sep 10, 2021",
"content" : "In my last post, I talked about the importance of creating a plausible promise for system change. To briefly recap, a plausible promise must be (1) inspiring enough to attract others to participate and (2) stand a believable shot of happening given all other constraints.But what happens when a change agent needs more than the elevator pitch? How does one move from a plausible promise to a compelling change narrative? The answer is crafting a compelling story for systems change.Why Stories?Storytelling is for more than just screenwriters and teenagers past curfew. Stories are how we articulate the world, our place in it, and the ability to change. “We’re all-in on the cloud” and “We’re an agile shop” are both story excerpts companies retell to shorthand how their technical work
@MatthewReinbold
MatthewReinbold / gist:6446311
Created September 5, 2013 05:13
#Merge Sort in Python The forth in a series of *sorting algorithms* developed in **python**, inspired by the visualization here: http://www.youtube.com/watch?v=kPRA0W1kECg . Merge sort is a comparison sort that has the advantage of being *stable* (that is, the order with which like elements are submitted is preserved). While, at first blush, it …
# setup; build a list with random elements
import random
lNums = []
for item in range(0,10):
lNums.append(random.randint(0,1000))
print lNums
# mergesort, which is the divide and conquer piece
@MatthewReinbold
MatthewReinbold / Quick Sort in Python
Created August 5, 2013 04:34
#Quick Sort in Python The third in a series of *sorting algorithms* developed in **python**, inspired by the visualization here: http://www.youtube.com/watch?v=kPRA0W1kECg . Quick sort is also know as a partition-exchange sort. ##Pros: - Despite the worst case making O(n^2) comparisons, usual performance is in the O( n log n) range. - Because it…
# setup; build a list with random elements
import random
lNums = []
for item in range(0,10):
lNums.append(random.randint(0,1000))
print lNums
# quicksort using python's list comprehensions
@MatthewReinbold
MatthewReinbold / Insertion Sort in Python
Last active December 20, 2015 14:59
#Insertion Sort in Python The second in a series of *sorting algorithms* developed in **python**, based on the visualization here: http://www.youtube.com/watch?v=kPRA0W1kECg ##Pros: - Straightforward Implementation - Requires a constant amount of memory space - Can sort as it receives information, as in streaming cases ##Cons: - **Slow**, possib…
#insertion sort
# setup; build a list with random elements
import random
lNums = []
for item in range(0,10):
lNums.append(random.randint(0,1000))
print lNums
@MatthewReinbold
MatthewReinbold / Selection Sort in Python
Last active December 20, 2015 14:49
#Selection Sort in Python The first in a series of *sorting algorithms* developed in **python**, based on the visualization here: http://www.youtube.com/watch?v=kPRA0W1kECg ##Pros: - Simple to Implement (duh) - Can Perform Better than More Complicated Algorithms in Certain Situations, like when Memory is Limited ##Cons: - **Slow**, like on the o…
# setup; build a list with random elements
import random
lNums = []
for item in range(0,10):
lNums.append(random.randint(0,1000))
print lNums
# we will be scanning the entirety of the list
@MatthewReinbold
MatthewReinbold / index.html
Created July 21, 2013 03:32
A CodePen by Matthew Reinbold. Polygon "Trading Card" Flip - Polygon, or more accurately, Vox Media's Chorus CMS, does a very cool trading card effect. You can see a sample at http://www.polygon.com/features/2013/7/16/4503412/starcraft-commentators-tastosis . It turns out that they accomplish this feat using CSS and 3D transforms.
<html>
<body>
<div id="wrapper">
<div class="card-container left">
<div class="card">
<div class="front">
<img src="http://voxpopdesign.com/demo/cards/front.jpg" />
</div>
<div class="back">
@MatthewReinbold
MatthewReinbold / index.html
Created July 16, 2013 17:59
A CodePen by MatthewReinbold. Dripping Paint - An example of the dripping paint animation on VoxPopDesign.com. Uses the DOM canvas and javascript to animate the individual paint drips.
<html>
<body>
<!--
Example of paint drips on VoxPopDesign.com
todo: detect when screen is resized and repaint based on the new window dimensions
-->
<canvas id='c'>
</canvas>
</body>
</html>