Skip to content

Instantly share code, notes, and snippets.


John Allspaw jallspaw

View GitHub Profile
View gist:aa40923215eda985d272a9a3f0dc460e
sed 's/U02D34WJF/Philip Luedtke/' $FILE | sed 's/U03HCD2V5/Lew Cirne/'| sed 's/U03QC3DMZ/Goro Harumi/'| sed 's/U03QFP4HA/Aaron Bento/'| sed 's/U03U84Q9M/Roger Gilliam/'| sed 's/U04LBV8RG/Jojo Cruz/'| sed 's/U050GSKMU/Evan Nelson/'| sed 's/U050H5GL6/Ben Weintraub/'| sed 's/U0515BD3H/Tim Krajcar/'| sed 's/U052AESSE/Rich Vanderwal/'| sed 's/U052C72SD/Caleb Troughton/'| sed 's/U052GTQ89/Steven Minor/'| sed 's/U052HNEDH/Shane Delight/'| sed 's/U0555D564/Bryan White/'| sed 's/U0555DGCS/Leslie Strauss/'| sed 's/U055JBKQ6/Carol Jones/'| sed 's/U06BXF2EL/Andrew Bloomgarden/'| sed 's/U06C509K7/Tony Mancill/'| sed 's/U06CDJU7K/Ben Summer/'| sed 's/U06CHQDGB/Nikolas Davis/'| sed 's/U06CHT3HP/Dave Peterson/'| sed 's/U06RP89PH/Andy Cunningham/'| sed 's/U06RQELV7/Yonatan Schultz/'| sed 's/U06T09J5V/Jason Van Pelt/'| sed 's/U07HZTQE8/Vince Foley/'| sed 's/U07J4BD9R/Jared Stanbrough/'| sed 's/U081J565S/Sean Kane/'| sed 's/U0D1NRQQ4/Nathan Rodman/'| sed 's/U0DPJB8AX/Bryce Buchanan/'| sed 's/U0DPLRLHW/Gus Sh
View gist:985bc1b377ec7ef1a0475617bea63fe6
jq -r '.[] | [ .type, .subtype, .ts, .thread_ts, .name, .text ] | @tsv' $FILE | awk -F\t '{print $3"\t"$5"\t"$6}' | dconv -S -i "%s.%N" -f "%Y-%m-%d %H:%M:%S" > $FILE-import

Keybase proof

I hereby claim:

  • I am jallspaw on github.
  • I am allspaw ( on keybase.
  • I have a public key ASAMgrgz_6hnZDBxtJ80auTrunHocGHZuEASjeSYq-__ago

To claim this, I am signing this object:

jallspaw / gist:bc60f27c38a2d9009f34
Created Apr 1, 2015
Summing up contextual influence on systems architecture
View gist:bc60f27c38a2d9009f34
1. Monolithic applications and architectures can vary in their monolithness. This is an under-specified description.
2. Microservice applications and architectures can vary in their microness. This is an under-specified description.
3. Microservices and monolithic architectures have both benefits and disadvantages.
4. Organizations will exploit those benefits while working around any weaknesses.
5. Success of the business is a large influence on the exploitation of benefits and implementation and costs of workarounds.
6. All benefits and work arounds are context-sensitive. Meaning that they are both technically and socially constructed by the organization that navigates them.
7. Path dependency is a thing. History matters and manifests in these architectural decisions and evolution in an organization.
8. Patterns exist to inform practice, not dictate it. Zealous adherence to an architectural pattern brings peril when it is to the exclusion of cultural context in actual practice.
9. Architectural patterns w
View gist:3ac49ded05c076b86f9a
Myth: during a retrospective investigation, something is waiting to be “found”
I’ll cut to the chase: there is nothing waiting to be found, or “revealed.” These “causes” that we’re thinking we’re “finding”? We’re constructing them, not finding them. We’re constructing them because we are the ones that are choosing where (and when) to start asking questions, and where/when to stop asking the questions. We’ve “found” a root cause when we stop looking. And in many cases, we’ll get lazy and just chalk it up to “human error.”
As Erik Hollnagel has said (Hollnagel, 2009, p. 85):
“In accident investigation, as in most other human endeavours, we fall prey to the What-You-Look-For-Is-What-You-Find or WYLFIWYF principle. This is a simple recognition of the fact that assumptions about what we are going to see (What-You-Look-For), to a large extent will determine what we actually find (What-You-Find).”
More to the point: “What-You-Look-For-Is-What-You-Fix”
jallspaw / gist:a2f3a5920ff12e60e7f4
Last active Aug 29, 2015
The rest of the 'Unwritten Laws of Engineering' section on making estimates
View gist:a2f3a5920ff12e60e7f4
This is excerpted from:
Promises, schedules, and estimates are necessary and important instruments in a well-ordered business.
Many engineers try to dodge making commitments. You must make promises based upon your best estimates
for your part of the job, together with estimates obtained from contributing departments for theirs. No one
should be allowed to avoid the issue by saying, “I can’t give a promise because it depends upon so many
uncertain factors.” Of course it does. You must account for them, estimating best and worse cases, and then
provide neither laughably padded nor unrealistically optimistic schedules. Both extremes are bad; good
View gist:5154620
Pinterest (Velocity Santa Clara)
Tumblr (Velocity Berlin)
Box (Velocity London)
Etsy (Percona)
Flickr (MySQL Conf)
View gist:4588551

"Jazz Improvisation and Organizing: Once More from the Top"

"Resilience, Adaptation and Improvisation: increasing resilience by organising for successful improvisation",%20resilience_adaptation_improvisation,%20TOG.pdf

"Space Operations Officers As Jazz Musicians"

"Supporting Improvisation Work in Inter-Organizational Crisis Management"

View gist:2595210
# Give a little warning about what is required before we start.
msg="Before running this script, make sure:
1. You are not on ${THIS_HOST}.
This backup was generated on ${THIS_HOST}. It cannot be applied to
2. You have removed the broken mysql server from the prod conf via
3. There is no data on this host. THIS SCRIPT WILL DESTORY THE CURRENT MYSQL
View gist:2321747
--- wireshark-1.7.0/gtk/main_menubar.c 2011-11-08 16:11:43.000000000 -0500
+++ wireshark-1.7.0-etsy/gtk/main_menubar.c 2012-04-06 13:08:46.000000000 -0400
@@ -1634,8 +1634,8 @@
{ "/Analyze/DecodeAs", WIRESHARK_STOCK_DECODE_AS, "Decode _As...", NULL, NULL, G_CALLBACK(decode_as_cb) },
{ "/Analyze/UserSpecifiedDecodes", WIRESHARK_STOCK_DECODE_AS, "_User Specified Decodes...", NULL, NULL, G_CALLBACK(decode_show_cb) },
- { "/Analyze/FollowTCPStream", NULL, "Follow TCP Stream", NULL, NULL, G_CALLBACK(follow_tcp_stream_cb) },
- { "/Analyze/FollowUDPStream", NULL, "Follow UDP Stream", NULL, NULL, G_CALLBACK(follow_udp_stream_cb) },
+ { "/Analyze/FollowTCPStream", NULL, "Zoom and Enhance! (TCP)", NULL, NULL, G_CALLBACK(follow_tcp_stream_cb) },
+ { "/Analyze/FollowUDPStream", NULL, "Zoom and Enhance! (UDP)", NULL, NULL, G_CALLBACK(follow_udp_stream_cb) },