Saturday, January 12, 2019

Eyes in All the Shadows

It took several minutes for Adam to regain his composure.

It is important to process things. Process enough, now, then compartmentalize, then process some more, later. That's what he'd learned in his years doing what he did for a living.

He allowed himself a moment to wish she hadn't found it. He let himself worry about the enormity of the news. He spent a few seconds worrying about his own safety and allowed himself to dwell on the ramifications to his mission.

Then he noticed two blank faces staring at him intently.

Through his entire crisis, they had not looked away from him. Their expressions were frozen. They simply waited, like a family listening to a doctor rattle off technical details when all they really cared about was the prognosis.

It was one more burden on his shoulders. Two civilians - real civilians, not "civilian" contractors, like himself - who depended on him to carry this the rest of the way.

Their lives were in his hands. Samantha had made it that way by finding the data leak and sharing it with him.

Before speaking, Adam took a moment to reflect on the trust Samantha had placed in him. How could she know he was not a part of whatever she found? He could easily have just lied to pass her clumsy little test of authenticity.

As it stood, he didn't have to.

She had taken a calculated risk. The United States is a big country with a lot of people. It had a big government, also with a lot of people. Statistically-speaking, Adam probably wasn't a traitor. So, she probably just played the numbers.

He began slowly, choosing each word carefully. "You've shown me a lot of trust in sharing this," said Adam. "I won't lie. This could get ugly."

"What's our next move?" asked Fred.

Adam pursed his lips and tried to focus on his chin for a minute.

"I have to think about what to do, next.," said Adam. "This is the kind of problem you can't just report to your commander. It has to be handled carefully..." he reflected on that for a moment and guffawed at the understatement. "Very carefully," he clarified.

Samantha's eyes glistened in the dim light of the closed room. "You don't know who to trust?" asked Samantha.

Adam shook his head. "I don't even know how you decided to trust me."

"So what do we do, now?" asked Fred. He swallowed a gob of nothing then added: "I mean right now."

Adam nodded. "Yeah. Okay. Action items. Stay safe. That's your main job," he said. "Stay safe."

"How do we do that," asked Samantha. "Are we going to some kind of a...a...safe...place?"

Adam shook his head ever so slightly. "Noplace is safe from something like this," he said. "Safe actions is what you need...not a safe place."

"What are those actions?"

"Behave exactly as you did before you found this," said Adam. "Go home, spend time doing the things you did.

"See your girlfriend, Fred. Keep investigating the problem from home in ways you think we don't see. Samantha, keep arranging for your...uh...sleepovers.

"We need to safeguard ourselves because what we know is too valuable to risk losing. That said, we need to quietly and slowly adjust our routines to reduce potential leverage. Create distance...distance keeps you and the things you care about safe.

"No matter what we do, though, there is a chance that things will go south. We need a plan to ensure what we know isn't lost. Ideally, one that ensures our safety. Even a stalemate that stops the leak and keeps us safe is a win, at this point."

"So what's that?"

"I don't know, but I'll start making arrangements for your escape if things get bad."

Adam could see he was losing them. He tried to force a smile but both Fred and Samantha seemed to recoil at whatever emotion he actually rendered.

"You took a huge risk, sharing what you found. You could have stopped searching when you had an inkling. I'm going to reciprocate that trust. I'm going to give you my real name and the contact info for my commanding officer. Don't use either unless you absolutely need to but, if things go off the rails, head for the La Jolla airforce base. He'll get you in and keep you safe."

Friday, January 11, 2019

Perseverance

Perseverance is assumed to be a good thing. This is probably because most of our success stories include a period of time where someone faced adversity and continued in spite of it.

Yet, the credo "persevere" can easily be used to disguise denial.

Long ago, I tried to launch a product. I had a cool idea and a consultant convinced me that the first thing I needed was a patent.

A business plan was born.

  1. Patent.
  2. Figure out how to sell it.
  3. Get rich.
I clung to that plan. I did the first two parts of it, kind of. I invested miles of paper and months of time in writing a patent. Then I figured out there was no way for me to sell what I had invented.

There were people who told me I shouldn't be wasting my time in that way but I couldn't hear them. All I could hear was "give up".

Sometimes we are faced with pivotal moments and, in those moments, we must do the hard thing for the benefit of ourselves and those around us.

It's just that the hard thing isn't always to keep going.

Thursday, January 10, 2019

Advantages of Using Acceptance Criteria as Sole Definition of Scope

Three open doors next to one another. Each has a label. "Telepathy" has flames behind it. "Guesswork" has ghosts behind it. "Good intentions" has a giant monster behind it. Each door has a sign hanging from a chain across it reading "CLOSED" with an arrow pointing to the right.

A while back, I wrote about using acceptance criteria as the sole definition of scope for a software product. I wanted to expand on how that helps development teams.

It gives developers a clear-cut way of ensuring that all the code they write services some business goal. If you can get rid of it and still clear all your acceptance criteria, you don't need it.

It actually makes writing requirements easier, too, once you get used to it. There's only one way to explain what you want and only one place to look to see what you already have.

Wednesday, January 9, 2019

Keeping It Small

Someone is chiseling away at a sculpture of a bird. Another person asks him "Ever want to sell any of these?" His reply: "Nah. That's not FUN."

I recently let myself go down a little rabbit hole. I built most of an entire gesture-recognition engine before I realized I only needed two-fingered-drag.

I'm out of it, now, but it's important to avoid going into another one. It would be easy for me to start doing the fun stuff with my little game - adding more features, making it look better, et cetera - but I need to start doing the important stuff, like networking, right away.

This is the hard part. It's not really that hard to convince people that they should do the minimum amount required to get something out the door. A few charts, a quick chat, maybe a case study or two and you're good to go, there.

The hard part is convincing someone that they should be bored in order to achieve that.

Sometimes, the boring stuff is the most important stuff, though. When it comes to product development, few things are more satisfying than actually shipping something. So maybe the boring stuff is less boring and more an exercise in delayed gratification?

Tuesday, January 8, 2019

Excerpt from Live Coding Session

Following is a little monologue I delivered via comments in my live stream.
// I woke up having realized
// again, the problem is an artifact
// of not dissolving the problem into
// enough tiny pieces.
// we need one thing that posts a pending state
// whenever the interior state changes
// we need another thing that expires a interior
// state after a period of time
// we need another thing that transitions to the right
// new state on tap start (for double tap)
//
// cohesion
//
// it's always cohesion
//
// every time you see some other force that looks like
// it's in contention with cohesion, it's really not.
// it's that you don't have enough cohesion...
It's never that you broke things down too far.



Monday, January 7, 2019

The Importance of Deleting

At the end of my ride to my current client's office, I ruthlessly hunted down and destroyed a class I didn't need anymore.

It wasn't doing anything. It wasn't bad. I just wasn't using it anymore.

It was in a category of classes that suggests I might need it, too. So this might seem overly fastidious to some. Maybe they are even right.

My observation is that dead code turns to gangrene remarkably quickly. Removing it costs little and pays off big way more often than the reverse is true.