Posts by Shawn McKinney

A bike riding code monkey.

Designing an Authorization System: a Dialogue in Five Scenes


Designing an Authentication System: a Dialogue in Four Scenes





  • Dramatis Personae
  • Scene I
  • Scene II
  • Scene III
  • Scene IV
  • Scene V

Dramatis Personae

Euripides a longtime programmer specializing in security and reigning curmudgeon.

Scene I










Athena:     What’s that?


Athena:     [walking briskly away] You better believe it.

Scene II






Euripides: [perking up slightly] Is that so?


Euripides: I hate it when that happens.


Euripides: [sarcastically] That’s a real catchy name.

Athena:    We’ll just call it RBAC for short.



Euripides: Like what?


Euripides: Like for dinner?


Euripides: Sounds simple enough.  Is that it?






Euripides: [sighing] What else is there?

Athena:    Well I’m still digging, let’s talk later.

Euripides: [relieved] Sounds good.

Scene III





Euripides: Do I have a choice?


Euripides: I’m on the edge of my seat here.


Euripides: Kind of like they’re in a family?




Euripides: Say what?


Euripides: Why would we do that?


Euripides: Why not?


Euripides: That makes sense.






Euripides: Good luck.

Athena:    Why do you keep saying that?

Scene IV


Euripides: Whoa!  Look alive there sailor!

The turtles scatter.


Euripides: How so?


Euripides: Why do they say that?




Euripides: What in hades are you talking about?


Euripides: Context… like attributes and such?




Euripides: Ay yi yi I see the problem.








Euripides: [retracting in horror] That’s bloody awful.



Athena:    I don’t know but I’m going to find out.

Euripides: Good luck.

Athena:     Stop saying that.

Scene V




Euripides: Wuff.  How’d you manage to pull that off?




Euripides: [groaning] Like it was yesterday.






Athena:     Could … you …

Euripides: Wha?



Role: Teller:locale

Role: Washer:locale



[draws on whiteboard]:

User: Curly

Role Assignment: Teller:locale:North123

Role Assignment: Washer:locale:South456


Athena:    It just pushes that into the runtime context…

[draws on whiteboard]:







Athena:    Don’t push your luck.

Confessions of a Middle-Aged Coder Turned Gravel Grinder

Slides from my ApacheCon talk yesterday:




The Dirty Kanza Effect

It happens every year.  The Dirty Kanza entices me with the idea that it can be mastered.  This year will be the year I have that perfect ride.  If only my plan is executed flawlessly, if my training holds up, if I can continue to hydrate and eat like I practiced.  This will be the year I get to return to Emporia in time to enjoy that beer at the finish with my friends and family.

That’s how it felt last year, and the others.  This year once again, flush with confidence and those first twenty-five miles were a thing of beauty.  A gorgeous sunrise, cool temps, tame roads and we were all smiles.  It’s an illusion.  Every endurance gravel event presents unique, i.e. never before seen, challenges and the DK is no exception.  In ’16 DK was the heat, and the south winds that made it a brutal sufferfest.  DK ’17 brought rains during 3rd leg that wreaked havoc.  DK ’18 had those punishing north winds.

DK ’19 will be remembered as the year of the heat.  To a lesser extent the course itself presented challenges.  For example, the gravel was chunkier, more hills over long sections.  But, for me it was the heat that brought difficulty.  To understand what happens think about when the radiator in your car gets overwhelmed.  Maybe it gets low on water, the fan stops working, or even the thermostat fails.  That’s what happens to me.  I can’t keep my engine cool.

This is when I start consuming more water, which leads to an electrolyte imbalance.  I try to keep up of course, consuming various concoctions but it’s always too little, too late.

Actually cramps around mile 80 seem to be a thing with me and the Kanza.  Happens Every Damn Time.  I now believe that I must have a defective left quad.  Always starts during one of the longer climbs.  Usually late in the morning.  Maybe halfway up when the red lights start to blink and the cramping begins.  This year, I had the antidote. In our DK swag-bags were packets with cramp pills and lotion.  I had these tucked away in my handy chase camelbak and immediately placed a couple tablets beneath my tongue.  As they dissolved I tore open the package and slathered the cramp lotion onto my left thigh and it actually — worked.  Or, I thought it worked.  At least for a while, say 10 miles before the whole process replays itself once again.

A hot engine means a slow, inefficient one and so one has to maintain at a lower capacity, say 75% or even 66%.  That 14mph trot has become a 10mph crawl. If there’s water to be found anywhere along the way by all means STOP.  Keeping the water tanks topped off is one of the things that helps.  But, if there isn’t water, don’t stop.  Don’t stop at the side of the road to sit beneath those lovely shade trees (with all of the others) unless it’s absolutely necessary.

Above all, don’t worry about it.  For example, don’t think like this:

If that hill up ahead continues for what looks like another mile with portions having a grade of more than 15% and we’re into the wind meaning most likely I’m going to have to get off and walk.  Especially because the very coarse-grained rock and ruts make it tricky finding a proper line with all of the riders dismounting and walking…

It’s still twenty miles to the next rest stop.  My stomach isn’t working very well and my energy levels will continue to dissipate making it likely that I’ll need to slow down even more…

Instead, focus on very small details of the ride.  A kind of mediation.  Focus on breathing.  In, out, in out.  Focus on form. Smooth strokes. On things that can be controlled, like cadence.  Focus on other tactics like the line you take.  Little else is more important than that.  Take a bad line, it’s over.  In other words, think about what’s happening NOW.  Let everything else fall to the wayside.

What works for me.  I avoid like the plague the clusters of casualties who gather at the roadside, unless help is needed.  Stop and help the rider from Minnesota find her cell phone. Stop and talk to those in obvious distress, who’ve wrecked, unresolved mechanicals, etc.  Provide water/food to those in need.  That kind of thing.  The positivity of the present.  It’s the culture of gravel.  It’s why we’re out there.  The negativity, replaying all of the bad stuff that’s already happened, or yet to, must be pushed out of the mind.

It’s OK to think about future positives.  That tailwind on the last leg.  That cloud that might dump cooling rains.  The dropping sun means cooler temps.  I ALWAYS get a second wind at sunset.  A secret weapon.  It can be counted on, when the barn is smelled.

My last leg to Emporia from Council Grove was the second most enjoyable part of the ride.  After the smiles on the first leg they returned again for the last.  The roads were tamer.  Fewer hills.  I was able to maintain a decent pace that last 50 and cross the finish line at 1:06am.  Jim Cummins was there to congratulate us.  I made sure to tell him that the new course was AWESOME.  It was in fact perfect and I had the best ride ever, if not a perfect one.

There’s always next year.  That’ll be when I finally master the DK.


On Becoming a Member













Why ApacheCon







Cliff Schmidt




Justin McClean


Dn_nTU8XkAEBvxs.jpg large

Christopher Dutz


DoBc3i2UwAEkK1C.jpg large

Daniel Ruggeri


