Short-term thinking

#

Right as I was getting out of newspapers I was talking with our circulation manager, who had just heard of a revolutionary new idea that was going to save the industry. As a baseline, let’s say the paper cost 75¢ per issue (I worked at a moderate-sized daily). You buy it from one of the little metal newspaper houses, 75¢. Grocery store, 75¢. Buy a subscription, you get a little discount, but there’s one flat rate you pay.

Then, one day, some economic geniuses from high atop the mount gazed into their scrying balls and noted, “Hey, rich people have more money.” From this fact, they extrapolated a theory that rich people would be more likely to spend more money than non-rich folks. Thus was born our new Model for Journalism™: income-based pricing.

As you might have guessed by even a passing knowledge of the current state of the journalism industry, this did not solve the problem. Now, they rolled this out with a modicum of sense. They didn’t just suddenly jack up the rates on everybody; when subscription renewals came up, they just modified the increase so it was higher for some people than others. Because they lacked detailed demographic information on individual customers (I shudder to think what they would have done had this initiative been launched in 2024), they based it loosely on Zip codes. (This had the added benefit of making sure that neighbors wouldn’t be discussing the price of the newspaper and find out they were paying vastly different rates.)

It worked, kinda? For a little bit, anyway. Some people were willing to pay more, and the sales people were instructed that if customers put up too much of a fight, they could resub at the new standard rate. But there are two crucial flaws to this approach; I won’t name them yet, because first I want to talk about how this idea has absolutely exploded across the entire American marketplace.

Anyone who’s been to the grocery store knows that prices have gotten significantly higher since COVID. As have fast food prices, concert ticket prices, and streaming service subscription fees.

Some will point to the laws of supply and demand, which is a) facile, b) not relevant in industries like streaming, and c) not nearly enough to account for the rate of increases we’ve been seeing in consumables. The real reason, of course, is greed: Those selling think they can make more money by raising prices and enough consumers will continue to fork over the money to offset those who don’t.

Here’s where we get to the issue: This economic model ignores how people actually work.

In our newspaper example, raising rates did two things: First, it made people reconsider their model of what a newspaper is. For a long time, getting the newspaper was just what you did: it’s how you stayed informed and, as a teacher of mine once put it, “It’s what cultured people do.”

But by significantly raising the price, you force people to think of the thing they’re purchasing’s overall utility to their lives. What was once an automatic, “Yes, of course we pay for the paper,” now gets framed, internally, as “Does the paper provide $x amount of value to me?”

The second thing that raising prices does is increase awareness of the competition. In newspapers' case, this was pretty broadly known, but there was a significant percentage of people even in the early 2010s for whom getting the news via a single source delivered to their house every morning was more convenient than seeking out online or TV news sources.

But once that price goes up? Suddenly the hassle of trying to sift through information on the internet doesn’t seem so daunting. You’re more willing to experiment, because you’re saving so much money. And now the newspaper has to stand on its own as a value proposition, which isn’t a good strategy for a medium that is objectively and definitively slower, more expensive and less adaptable than its direct competition.

And we’re seeing the same thing happen now in real-time, in a variety of industries. Subway jacked up its prices 39% 2014-2024; a week ago, they had to hold a corporate emergency meeting because sales are so low. McDonalds announced its first quarter-to-quarter sales drop since 2020. These and other companies assumed they could jack up the price and enough people would cover at the new high to offset those who bailed. And, worst-case scenario, if it’s too high, they can always drop the prices back down.

But that’s not how people work. When people feel like they’re being screwed, they get bitter and hold a grudge. When people are forced to confront and try new alternatives, sometimes it turns out they liked the new option better than the old one, anyway. And any brand loyalty they may have once held is completely obliterated, so you’re not only starting from scratch, you’re actually digging yourself out of a hole.

Such is life when you’re focused solely, maniacally on the short-term. You might find yourself with no long-term options back to success.

That's not "real" scrum: Measuring and managing productivity for development teams

#

People always seem confused by the title of this: “What does scrum have to do with measuring productivity?” they ask. And I smile contentedly, because that’s the whole point.

Scrum is supposed to be a system for managing product work, iterating and delivering value to the customer. What usually winds up happening is scrum gets used for the management of software development work as a whole, from decisions about promotion to hiring and firing to everything else. That’s not what scrum is designed to do, and it shows.

Now, I love to talk about process improvement, completely agnostic of whatever process framework you’re using. I would much rather have a discussion about the work you’re doing and what blockers you’re hitting rather than discussing abstract concepts.

However, if you keep running into the same issues and blockers over and over again, it’s usually worth examining your workflows to find out if you’re actually applying the theory behind your framework to the actual work you’re doing. The concept of Agile specifically is not about the processes involved, but you need to know and understand the rules before you should feel comfortable breaking them.

Processes

I want to start with a quick overview of a few key terms to make sure everyone’s on the same page.

Other reasons processes fail

I will note that a lot of the reasons I will list below may also apply to other product management methodologies; however, I’m specifically limiting the scope to how they impact scrum teams.

Lack of product vision

I don’t want to lay the blame entirely on product owners for this issue - very often the problem is with how the role is designed and hired for. Product owners should be the final arbiters for product decisions. They should absolutely consult design, UX and customer service experts for their opinions, but the decisions ultimately lies with them.

Unfortunately, the breadth of skills required to be a good product owner are not in abundant supply, and product owners are, bafflingly, often considered afterthoughts at many organizations.

More than specific skills, though, product owners need to have a vision for what the product could be, as well as the flexibility to adapt that vision when new information comes in. Usually, this requires domain knowledge (that can be acquired, but needs to be done so systematically and quickly upon hiring), steadfastness of conviction and the ability to analyze data properly to understand what customers want.

Far too often product owners essentially turn into feature prioitizers, regurgitating nearly everything customers say they want and assigning a ranking to it. This often comes at the expense of both the product’s conceptual integrity as well as relationships with developers, who are supposed to be given problems to solve, not features to develop. This is the classic feature factory trap.

Mistake the rules for the reason

Far too often, people will adopt the ceremonies or trappings of scrum without actually accepting an agile mindset. This is where my favorite tagline, “that’s just waterfall with sprints” comes from.

If you’ve ever started a project by first projecting and planning how long it’s going to take you to deliver a given set of features, congratulations, you’re using waterfall.

To use scrum, you need to adopt the iterative mindset to how you view your product. If you’re developing Facebook, you don’t say, “we’re going to build a system that allows you to have an activity feed that shows posts from your friends, groups and advertisters, and have an instant messaging product, and ..”

Instead, you’d say, “we’re going to develop a platform that helps people connect to one another.” Then you’d figure out the greatest value you can add in one sprint (e.g., users can create profiles and upload their picture.). You know once you have profiles you’ll probably want the ability to post on others’ profiles, so that’s in the backlog.

That’s it. That’s the planning you do. Because once those releases get into customers’ hands, you’ll then have better ideas for how to deliver the next increment of value.

Simply because an organization has “sprints” and a “backlog” and do “retros” doesn’t mean its’ using scrum, it means it’s using the language of scrum.

Lack of discipline/iteration

Tacking on to the last point, not setting up your team for success in an agile environment can doom the product overall. Companies tend to like hiring more junior developers, because they’re cheaper, but not realizing that a junior developer is not just a senior developer working at 80% speed. Junior developers need to have mentoring and code reviews, and those things take time. If the schedule is not set up to allow for that necessary training and code quality checks to happen, the product will suffer overall.

Similarly, development teams are often kept at a starting remove from everyday users and their opinions/feedback. While I by no means advocate a direct open firehose of feedback, some organizations don’t ever let their devs see actual users using the product, which creates a horrible lack of feedback loop from a UX and product design perspective.

Properly investing in the team and the processes is essential to any organization, but especially one that uses scrum.

Lack of organizational shift

The last ancillary reason I want to talk about in terms of scrum failure is aligning the organization with the teams that are using scrum (we’re back to the law of network, here). Scrum does not just rely on the dev team buying in, it also requires the larger organization to at least respect the principles of scrum for the team.

The most common example of this I see is when the entire dev department is using scrum, but the CTO still feels (by virtue of their title) the ability to step in and make changes or contribute code or modify stories on a whim. Just because the CTO is the manager doesn’t mean they have full control over every decision. Removing the autonomy for the team messes with the fundamental principles of scrum, and usually indicates there will be other issues as well (and I guarantee that CTO will also be mad when the scrum is now unbalanced or work doesn’t get done, even though they’re the direct cause).

No. 1 reason scrum fails: It’s used for other purposes

By far, the biggest reason I see scrum failing to deliver is when the ceremonies or ideas or data generated by scrum gets used for something other than delivering value to the end users.

It’s completely understandable! Management broadly wants predictability, the ability to schedule a release months out so that marketing and sales can create content and be ready to go.

But that’s not how scrum works. Organizations are used to being able to dictate schedules for large releases of software all at once (via waterfall), and making dev deliver on those schedules. If you’re scheduling a featureset six months out, it’s almost guaranteed you’re not delivering in an agile manner.

Instead of marketing-driven development, why not flip the script and have development-driven marketing? There is absolutely no law of marketing that says you have to push a new feature the second it’s generally available. If the marketing team keeps up with what’s being planned a sprint in an advance, that means they’d typically have at least a full month of leadtime to prepare materials for release.

Rather than being schedulable, what dev teams should shoot for is reliability and dependability. If the dev team commits to solving an issue in a given sprint, it’d better be done within that sprint (within reason). If it’s not, it’s on the dev team to improve its process so the situation doesn’t happen again.

But why does scrum get pulled off track? Most often, it’s because data points in scrum get used to mean something else.

Estimates

The two hardest problems in computer science are estimates, naming things, and zero-based indexes. Estimates are notoriously difficult to get right, especially when developing new features. Estimates get inordinately more complex when we talk about story pointing.

Story points are a value assigned to a given story. They are supposed to be relative to other stories in the sprint - e.g., a 2 is bigger than a 1, or a medium is bigger than a small, whatever. Regardless of the scale you’re using, it is supposed to be a measure of complexity for the story for prioritization purposes only.

Unfortunately, what usually winds up happening is teams adopt some sort of translation scale (either direct or indirect), something like 1 = finish in an afternoon, 2 = finish in a day, 3 = multiple days, 5 = a week, etc. But then management wants to make sure everyone is pulling their fair share, so people are gently told that 10 is the expectation for the number of points they should complete in a two-week sprint, and now we are completely off the rails.

Story points are not time estimates. Full stop.

It’s not a contract, you’re not a traffic cop trying to make your quota. Story points are estimates of the complexity of a story for you to use in prioritization. That’s it.

I actually dislike measuring sprint velocity sprint-to-sprint, because I don’t think it’s helpful in most cases. It actually distorts the meaning of a sprint. Remember, sprints are supposed to be variable in length; if your increment of value is small, have a small sprint. But because sprint review and retro have to happen every second Friday, sprints have to be two weeks. Because the sprint is two weeks, now we have two separate focii, and the scrum methodology drifts further and further away.

Campbell’s law is one of my favorite axioms. Paraphrased, it states:

The more emphasis placed on a metric, the more those being measured will be incentivized to game it.

In the case above, if developers are told they should be getting 10 points per sprint, suddenly their focus is no longer on the customer. It’s now on the number of story points they have completed. They may be disincentivized to pick up larger stories, fearing they might get bogged down. They’re almost certainly going to overestimate the complexity of stories, because now underestimates mean they’re going to be penalized in terms of hitting their targets.

This is where what I call the Concilio Corollary (itself a play on the uncertainty principle) comes into play:

You change the outcome of development by measuring it.

It’s ultimately a question of incentives and focus. If you start needing to worry about metrics other than “delivering value to the user,” then your focus drifts from same. This especially comes into play when organizations worry about individual velocity.

I don’t believe in the practice of “putting stories down” or “pick up another story when slightly blocked.” If a developer is blocked, it’s on the scrum master and the rest of the team to help them get unblocked. But I absolutely understand the desire to do so if everybody’s expected to maintain a certain momentum, and other people letting their tasks lie to help you is detrimental to their productivity stats. How could we expect teamwork to flourish in such an environment?

So how do we measure productivity?

Short answer: don’t.

Long answer: Don’t measure “productivity” as if it’s a value that can be computed from a single number. Productivity on its own is useless.

I used to work at a college of medicine, and after a big website refresh they were all excited reporting how many pageviews the new site was getting. And it makes sense, because when we think of web analytics, we think page views and monthly visitors and time on site, all that good stuff.

Except … what’s the value of pageviews to a college? They’re not selling ads, where more views works out to more money. In fact, the entire point of the website was to get prospective students to apply. So rather than track “how many people looked at this site,” what they should have been doing was looking at “how many come to this site and then hit the ‘apply now’ button,” and comparing that to the previous incarnation.

First, you need to figure out what the metrics are being used for. There are any number of different reasons you might want to measure “productivity” on a development team. Some potential reasons include performance reviews, deciding who to lay off, justifying costs, figuring out where/whether to invest more, or fixing issues on the development team.

But each of those reasons has a completely different dataset you should be using to make that decision. If you’re talking about performance reviews, knowing the individual velocity of a developer is useless. If it’s a junior, taking on a 5-point story might be a huge accomplishment. If you’re looking at a principal or a senior, you might actually expected a lower velocity, because they’re spending more time pairing with other developers to mentor them or help them get unblocked.

Second, find the data that answers the question. When I worked at a newspaper, we used to have screens all over the place that showed how many pageviews specific articles were getting. Except, we didn’t sell ads based on total pageviews. We got paid a LOT of money to sell ads to people in our geographical area, and a pittance for everything else. A million pageviews usually meant we had gone viral, but most of those hits were essentially worthless to us. To properly track and incentivize for best return, we should have been tracking local pageviews as our primary metric.

Similarly, if you’re trying to justify costs for your development team, just throwing the sprint velocity out there as the number to look at might work at the beginning, but that now becomes the standard you’re measured against. And once you start having to maintain features or fix bugs, those numbers are going to go down (it’s almost always easier to complete a high-point new-feature story than a high-point maintenance story, simply because you don’t have to understand or worry about as much context).

There are a number of newer metrics that have been proposed as standards that dev teams should be using. I don’t have an inherent problem with most of these metrics, but I do want to caution not to just adopt them wholesale as a replacement for sprint velocity. Instead, carefully consider what you’re trying to use the data for, then select those metrics that provide that data. Those metrics are SPACE and DORA. Please note that these are not all individual metrics; some of them (such as “number of handoffs”) are team-based.

SPACE

• Satisfaction and well-being

◦ This involves developer satisfaction surveys, analyzing retention numbers, things of that nature. Try to quantify how your developers feel about their processes.

• Performance

◦ This might include some form of story points shipped, but would also include things like number and quality of code reviews.

• Activity

◦ Story points completed, frequency of deployments, code reviews completed, or amount of time spent coding vs. architecting, etc.

• Communication/collaboration

◦ Time spent pairing, writing documentation, slack responses, on-call/office hours

• Efficiency/flow

◦ Time to get code reviewed, number of handoffs, time between acceptance and deployment

DORA

DORA, or DevOps Research and Assessment, are mostly team-based metrics. They include:

• Frequency of deployments

• Time between acceptance and deployment

• How frequently deployments fail

• How long it takes to recover/restore from failed

Focus on impact

But all of these metrics should be secondary, as the primary purpose of a scrum team is to deliver value. Thus, the primary metrics should measure direct impact of work: How much value did we deliver to customers?

This can be difficult to ascertain! It requires a lot of setup and analysis around observability, but these are things that a properly focused scrum team should already be doing. When the dev team is handed a story for a new feature, one factor of that story should be success criterion: e.g., at least 10% of active users use this feature in the first 10 days. That measurement should be what matters most. And failing to meet that mark doesn’t mean the individual developer failed, it means some underlying assumption (whether it’s discoverability or user need) is flawed, and should be corrected for the next set of iterations.

It comes down to outcome-driven-development vs. feature-driven-development. In scrum, you should have autonomous teams working to build solutions that provide value to the customer. That also includes accountability for the decisions that were made, and a quick feedback loop coupled with iteration to ensure that quality is being delivered continuously.

TL;DR

In summation, these are the important bits:

• Buy in up and down the corporate stack - structure needs to at least enable the scrum team, not work against it

• Don’t estimate more than you need to, and relatively at that

• Know what you’re measuring and why

Now, I know individual developers are probably not in a position to take action at the level “stop using metrics for the wrong reasons.” That’s why I have a set of individual takeaways you can use.

• Great mindset for performance review

◦ I am a terrible self-promoter, but keeping in mind the value I was creating made it easy for me come promotion time to say, “this is definitively what I did and how I added value to the team.” It made it much easier for me than trying to remember what specific stories I had worked on or which specific ideas were mine.

• Push toward alignment

◦ Try to push your leaders into finding metrics that answer the questions they’re actually asking. You may not be able to get them to abandon sprint velocity right off the bat, but the more people see useful, actionable metrics the less they focus on useless ones.

• Try to champion customer value

◦ It’s what scrum is for, so using customer value as your North Star usually helps cut through confusion and disagreement.

• Get better at knowing what you know / don’t know

◦ This is literally the point of sprint retros, but sharing understanding of how the system works will help your whole team to improve the process and produce better software.

Since this post is long enough on its own, I also have a separate post from when I gave this talk in Michigan of questions people asked and my answers.

Beyond “clean” code: Focusing on practical (vs. aesthetic) aspects

#

I grew up on Clean Code, both the book and the concept. I strove for my code to be “clean,” and it was the standard against which I measured myself.

And I don’t think I was alone! Many of the programmers I’ve gotten to know over the years took a similar trajectory, venerating CC along with Code Complete and Pragmatic Programmer as the books everyone should read.

But along the way, “clean” started to take on a new meaning. It’s not just from the context of code, either; whether in interior design or architecture or print design, “clean” started to arise as a synonym for “minimalism.”

This was brought home to me when I was working with a junior developer a couple years ago. I refactored a component related to one we working on together to enable necessary functionality, and I was showing him the changes. This was a 200-line component, and he skimmed it about 45 seconds before saying “Nice, much cleaner.”

And it bugged me, but I wasn’t sure why. He was correct - it was cleaner, but it felt like that shouldn’t have been something he was accurately able to identify simply by glancing at it. Or at least, if that was the metric he was using, “clean” wasn’t cutting it.

Because the fact of the matter is you can’t judge the quality of code without reading it and understanding what it’s trying to do, especially without considering it in the context of its larger codebase. You can find signifiers (e.g., fewer lines of code, fewer methods in a class), but “terse” is not a direct synonym of “clean.” Sometimes less code is harder to understand or maintain than more code.

I wanted to find an approach, a rubric, that allowed for more specificity. When I get feedback, I much prefer hearing the specific aspects that are being praised or need work on - someone telling me “that code’s clean” or not isn’t particularly actionable.

So now I say code should be Comprehensible, Predictable and Maintainable. I liked those three elements because they’re important on their own, but also each builds on the others. You cannot have predictable and maintainable code unless it’s also comprehensible, for example.

Comprehensibility is important because we don’t all share the context - even if you’re the only person who’s ever going to read the code, the you of three weeks from now will have an entirely different set of issues you’re focusing on, and will not bring the same thoughts to bear when reasoning about the code. And, especially in a professional context, rare is the code that’s only ever read by one other person.

Predictability speaks to cohesion and replicability across your codebase. If I have a method load on a model responsible for pulling that object’s information from the database, all the other models should use load when pulling object info from the DB. Even though you could use get or loadFromDb or any number of terms that are still technically comprehensible, the predictability of using the same word to mean the same thing reduces overall cognitive load when reasoning about the application. If I have to keep track of which word means the action I’m trying to take based on which specific model I’m using, that’s a layer of mental overhead that’s doing nothing toward actually increasing the value or functionality of the software.

Maintainability is the sort of an extension of comprehensibility - how easy is it the code to change or fix down the road? Maintainability includes things like the “open to extension, closed to modification” principle from SOLID, but also things like comments (which we’ll get to, specifically, later on). Comprehensibility is focused on the “what” the code is doing, which often requires in-code context and clear naming. Maintainability on the other hand, focuses on the “why” - so that, if I need to modify it later on, I know what the intent of the method/class/variable was, and can adjust accordingly.

The single most important aspect of CPM code is naming things. Naming stuff right is hard. How we name things influences how we reason about them, how we classify them, and how others will perceive them. Because those names eventually evolve to carry meaning on their own, which can be influenced by outside contexts, and that whole messy ball of definition is what the next person is going to be using when they think about the thing.

I do believe most programmers intellectually know the importance of naming things, but it’s never given the proper level of respect and care its importance would suggest. Very rarely do I see code reviews that suggest renaming variables or methods to enhance clarity - basically, the rule is if it’s good enough that the reviewer understands it at that moment, that’s fine. I don’t think it is.

A class called User should contain all the methods related to the User model. This seems like an uncontroversial stance. But you have to consider that model in the context of its overall codebase. If there is (and there should be) also a class called Authorization in that codebase, there are already inferences we should be able to draw simply from the names of those two things.

We should assume User and Authorization are closely related; I would assume that some method in Authorization is going to be responsible for verifying that the user of the application is a User allowed to access parts of the application. I would assume these classes are fairly tightly coupled in some respects, and it would be difficult to use one without the other, in some respect.

Names provide signposts and architecture hints of the broader application, and the more attuned to them you are (as both a writer and reader of code), the more information will be able to be conveyed simply by paying attention to them.

If naming is the single most important aspect of CPM, the single most important aspect of naming things is consistency. I personally don’t care about most styling arguments (camelCase vs. snake_case, tabs vs. spaces, whatever). If there’s a style guide for your language or framework, my opinion is you should follow it as closely as possible, deviating only if there’s an actual significant benefit to doing so.

Following style conventions has the two advantages: allowing for easier interoperability of code from different sources, and enabling the use of linters and formatters.

Code is easier to share (both out to others and in from others) if they use same naming conventions and styles, because you’re not adding an extra layer of reasoning atop the code. If you have to remember that Library A uses camelCase for methods but Framework B uses snake_case, that’s however large a section of your brain that is focusing on something other than the logic of what the code is doing.

And enabling linters and formatters means there’s a whole section of code maintenance you no longer have to worry about - you can offload that work to the machine. Remember, computers exist to help us solve problems and offload processing. A deterministic set of rules that can be applied consistently is literally the class of problems computers are designed to handle.

Very broadly, my approach to subjective questions is: Be consistent. Anything that doesn’t directly impact comprehensibility is a subjective decision. Make a decision, set your linter or formatter, and never give another thought to it. Again, consistency is the most important aspect of naming.

But a critically under-appreciated aspect of naming is the context of the author. Everyone sort of assumes we all share the same context, in lots of ways. “Because we work on the same team/at the same company, the next developer will know the meaning of the class PayGrimples.” That may be very broadly true, in that they’ve probably heard of PayGrimples, but it doesn’t mean they share the same context.

A pop-culture example of this is pretty easy - think of the greatest spaceship pilot in the universe, one James Tiberius Kirk. Think about all his exploits, all the strange new worlds he’s discovered. Get a good picture of him in your head.

Which one did you pick? Was it The Original Series’ William Shatner? The new movies’ Chris Pine? Or was it Strange New Worlds’ Paul Wesley?

You weren’t wrong in whatever you picked. Any of those is a valid and correct answer. But if we were talking about Kirk in conversation, you likely would have asked to clarify which one I meant. If we hadn’t, we could talk about two entirely different versions of the same concept indefinitely until we hit upon a divergence point when one of us realized.

Code has that same issue, except whoever’s reading it can’t ask for that clarification. And they can only find out they’re thinking about a different version of the concept if they a) read and digest the code in its entirety before working on it, or b) introduce or uncover a bug in the course of changing it. So when we name things, we should strive for the utmost clarity.

⛔ Unclear without context

type User = {
	id: number;
	username: string;
	firstName: string;
	lastName: string;
	isActive: boolean;
}

The above is a very basic user model, most of whose properties are clear enough. Id, username, firstName and lastName are all pretty self-explanatory. But then we get to the boolean isActive.

This could mean any number of things in context. They include, but are not limited to:

All of those are things we may want to know about the user of any application, depending on what we’re trying to do. Even similar-sounding events with the same time horizon (logged in within the last 24 hours vs. authenticated activity in the last 24 hours) give us different information - I can infer the maximum age of the authentication token in the logged-in case, but without knowing the token exchange process, I cannot make the same inference for authenticated activity.

So why not just provide the meaning with the name?

✅ Clarity without context

type User = {
	id: number;
	username: string;
	firstName: string;
	lastName: string;
	loggedInPrevious24Hours: boolean;
}

Clarity comes through naming things explicitly. Ambiguity is the enemy of clarity, even when you assume the person reading the code should know something.

It’s reasonable to assume that the people reading your code are developers - that is, people familiar with coding concepts. Every other context (industry/domain, organization) is not a safe assumption. Therefore, if you have names or terms that are also used in coding, you should clarify the other meaning. (You should do this generally, as well, but specifically with programming-related terms.)

⛔ Ambiguity kills comprehension

class Class {}
class Post {} 

The word “class” is generally understanding in programming as an object-oriented prototype. Outside of programming, it could refer to a classroom of children; a classification system; a group of children in the same grade (e.g., junior class); or a social hierarchy (e.g., upper-class, lower-class).

Post is even worse, because it can be a verb or a noun even in a programming context. Blogs usually have posts, but you can also post content (or the HTTP verb, POST). Non-tech-wise, we have places to which you can be sent (“I’m being sent to our post in London”), referring to the mail system, or even structural support for fences.

✅ Specificity aids everyone

class Classroom {}
class BlogPost {}

All of this is important because being clear matters more than being concise or clever. After consistency, the most important aspect of naming is being descriptive. The name should describe what the code is doing (vs. why or how) - what a method is doing, or what purpose a variable serves.

For the most part, Classes should be nouns, because they’re describing their domain of influence. Methods should include verbs, because they’re performing actions. Variables should be nouns, reflective of whatever purpose they’re serving.

If you find yourself struggling with the length of your names of methods, variables or classes, that’s not a bad thing. It’s usually a sign you need to consider refactoring (more on this a bit later).

To the point of clarity, be sure to use properly spelled real words and names.

⛔ Abbreviations and shortcuts

class DateUtil {
  static function dateStrFrmo(date: Date): string { ... }
}

Humans have surprisingly good short- and medium-term recall around words and names. Using real words and names makes the concept easier for us to reason about, and easier to keep track of in our heads.

I took the example above from a GitHub code search. I think the original example may have been written by a native German speaker, because if we assume “Frmo” is supposed to be “From,” it’s using the German sentence structure that puts the verb at the end of the sentence. That makes sense! But if someone isn’t familiar with that sentence construction, the name of the method becomes functionally useless.

The misspelling part is important in two respects: one, it can introduce confusion (is it supposed to be “from” or ”form”?). The other is relying on the computer - searches, within the IDE or if you’re GREPing, are looking for specific terms. If it’s spelled wrong, it’s not going to get caught in the search.

✅ Use properly spelled real words and names

class DateUtil {
  static function getStringFromDate(date: Date): string { ... }
}

Here we’ve modified it so we essentially have an English sentence - get the string from the date. I know what’s being passed in (the date), and I know what’s coming out (the string), and I know overall what’s happening (I’m getting the string from the date).

Beyond naming, there is one other “big” rule that gets us to comprehensible, predictable and maintainable code, an old adage: “Keep it simple, sweetheart.” I’m not speaking to system complexity here - your overall architecture should be as complex as needed to do the job. It’s closer to SOLID’s single-responsibility principle, writ large: Every module, every class, every method, every variable should have one job.

To our earlier example of Users and Authorization, users will take care of the users while authorization handles auth. Neither of them should care about the internal workings of the other; Authorization just needs to know it can call User::load to return the user object.

At the method level, this is how we keep our names to a manageable length. You should be able to describe what the method in a very short sentence. If you need more length (or you leave out things it’s doing), it’s probably a sign that the method is trying to do too much.

Smaller methods enable reusability - if the method is only doing a specific thing, we are more likely to be able to use it somewhere else. If the method is doing multiple things, we’d likely need to add a parameter in the other cases where we want to use it, because we don’t want all of those things to happen all the time.

Keeping each method to a single task means we can decompose complex methods into multiple individual methods. This also makes it easier to read the code.

Literally just reading the names of methods allows us to infer what’s going on, divorced of context. For the example below, we would know from the file name this is Typescript, and I’ll give one hint that it’s frontend.

✅ Keep it simple, even for complex actions

function constructor() {
    this.assignElements();
    this.setInterval();
    this.getNewArt();
    this.listenForInstructions();
}

Initializing this class assigns elements and sets an interval (meaning there are actions that happen on a set schedule); then we get new art, and listen for instructions. Without even knowing the name of the class, we can pretty confidently assume this has to do with art, and that art gets changed frequently (hence the interval). But there also appears to be a manual interruption possible, with listen for instructions.

If we were debugging an issue related to keyboard commands, I would first look to listenForInstructions. If there’s an issue with art not showing up, I would check getNewArt.

Each method is narrowly scoped, even if a lot happens. Keeping things simple aids comprehension and predictability, but it’s also vital for maintainability. It makes it much easier to write tests.

We cannot confidently change code without tests. If we’re making modifications to code without tests, we can read, guess and hope that it won’t create any downstream issues, but unless we know exactly what should happen with a given method in all the ways it can be used, we cannot be certain of the impact of any change. A downstream issue is the definition of a regression; determining the output of a method in changing circumstances is the definition of a test. Thus why we test to avoid regressions.

A good unit test is like a science experiment - a hypothesis is proffered, and borne out or disproven through data, accounting for variables. In programming, variables are literally variables.

If we know exactly what our code will do, we have the flexibility to use it in different circumstances. That may sound tautological, but the confidence we know “exactly” what it will do comes through tests, not an internal sense of “I know what that function does." I would argue most bugs arise through either typos or incorrect assumptions. Most of the typo bugs are caught before release. Most of the insidious bugs that take forever to debug are because someone made an assumption along the way that you have to find and correct.

If all functions perform as we expect, integration issues are drastically reduced. Good unit testing reduces the amount of integration and regression testing you have to do. Maintenance overall becomes easier because we have solid bulwarks of functionality, rather than needing to reason through all possible eventualities fresh every time (or worse, assuming).

I’m not a huge believer in code coverage as a benchmark for quality. I think it can be helpful to have a minimal coverage requirement as you’re starting to remind yourself to write tests, but 100% coverage means absolutely nothing on its own. Quality is much more important than quantity when it comes to testing, especially that you’re testing the right things.

Keeping it simple also relates to abstractions. Code is a series of abstractions (unless you’re writing assembly, in which case, vaya con Dios), but I’m referring specifically to abstractions in the codebase that you write. The cardinal sin of object-oriented programming is a simple rule: “Don’t Repeat Yourself.” It’s not … bad advice, but neither is it a simple panacea we could automate away with, say, a linter or a formatter (or, god forbid, AI).

DRY is overemphasized, possibly because it’s such an easy heuristic to apply. “Hey this looks like other code” is easy to see at a glance, and if you just have an automatic reaction of “I shouldn’t repeat myself ever,” you’ll automatically push that logic up to single method that can be used in multiple places.

But deduplication requires an abstraction. In most cases, you’re not performing exactly the same logic in two places, but two minor variations (or the same logic on two different types of objects). Those variations then require you to include a parameter, to account for a slight branch.

Having that abstracted method hinders comprehensibility. Even if it’s easier/faster to read a one-line reference to the abstracted method, the actual logic being performed now happens out-of-sight.

I am much less concerned with duplication of code than I am making sure we find the right abstraction. Thus, I want to propose a different model for thinking about repetition, two rules (because again, simpler != terse) to replace the one DRY rule: we’ll call it the Concilio Corollary to the DRY rule, or the damp dyad.

  1. Don’t repeat yourself repeating yourself

  2. The wrong abstraction will cost you more than repetition

DRYRY is a little tongue-in-cheek, but essentially don’t worry about trying to find an abstraction until you’ve implemented similar logic at least three times. Twice is a coincidence, three times is a pattern. Once you’ve seen the code being used in three different places, you now have the context to know whether it’s a) actually doing the same work, and b) how to abstract it to work in different scenarios.

If you find yourself adding a parameter that changes the flow of logic in each scenario, it’s probably more correct to abstract only those small parts that are the same, and implement the particular logic in the context it’s being used. That’s how we find the right abstraction.

All of this is important because existing code has inertia. This is relevant whether you’re a more senior developer or just starting out in your career.

Those with less experience tend to be terrified to change existing code, and understandably so. That code already exists, it’s doing a job. Even if you’re going in to fix a bug, presumably that code was working well enough when it was written that no one noticed it. And no one wants to be the one to create an error, so the existing code is treated as something close to sacrosanct.

For more experienced developers, know that when you’re writing code you’re creating the building blocks of the application. You’re setting the patterns that other developers later will try to implement, because it’s “correct” and becomes that codebase’s style. Heck, that’s literally the predictability maxim - we want to it look similar when it does similar things. But that means if you’re writing the wrong abstraction in one place, its impact may not be limited to that single area.

And when a new case arises, the next developer has to decide (without the context of the person who originally wrote it) whether to modify the existing abstraction, or create a new one. But the old one is “correct” (again, in that exists), so it’s safer to just use that one. Or, worst case, use it as a template to create a new abstraction. In either case, a new paradigm is being created that needs to be tested and raises the overhead on maintenance, because now we have a separate logic branch.

Those are the big topics I wanted to hit. The rest of these recommendations are important, but lack an overall theme. The biggest of these I want to discuss is commenting.

Naming should be used so we know the “what” of code, comments should be used so we know the “why.” I am not referring to automated comments here (e.g., explanations for input parameters in the like in JSDoc), but rather qualitative comments. I would argue that, currently, most existing comments I see would be superfluous if proper naming conventions were used.

What I want to see in a comment is why a particular variable is a particular value, when it’s not clear from the existing context.

⛔ Don’t explain the what

const SOCIAL_MEDIA_CHARACTER_COUNT = 116;
// shortens title for social media sharing
export const getSocialShareText = (post: BlogPost) => {
	if (post.title.length =< SOCIAL_MEDIA_CHARACTER_COUNT) {
		return post.title;
	} else {
		return post.title.substr(0,SOCIAL_MEDIA_CHARACTER_COUNT);
	}
}

This a pretty typical example of what I see comments used for. We’ve used naming properly (the method gets the social share text, the constant is the character count we use for social media posts)j, so the comment “shortens title for social media sharing” is superfluous.

This method provides the social media content. The piece of information I don’t have about this code that I would like, both for comprehensibility and maintainability, is why the character count is 116.

The answer is that Twitter used to be the social media service with the shortest content length, 140 characters. Except that since we’re developing an app, we’re always including a URL, for which Twitter automatically generates a shortlink that takes up 23 characters (+ 1 for the space between content and link). 140-23-1 = 116.

That context does not exist within the application, and it’s not under our control. So we should include it in a comment, so that if that number changes (or something else becomes popular but has a shorter length limit, or we stop worrying about Twitter entirely), we know both from reading the code what this does, and it puts a signpost with the word “Twitter” in the comment so it can be found if we just do a search.

✅ Explain the “why”

// Twitter has shortest character limit (140); URL shortener is always 23 + space
const SOCIAL_MEDIA_CHARACTER_COUNT = 116;
export const getSocialShareText = (post: BlogPost) => {
	if (post.title.length =< SOCIAL_MEDIA_CHARACTER_COUNT) {
		return post.title + ' ' + post.url;
	} else {
		return post.title.substr(0,SOCIAL_MEDIA_CHARACTER_COUNT) + ' ' + post.url;
	}
}

The other thing to keep in mind about comments is that they’re a dependency just as much as code. If we do update that character count, we also need to update the comment explaining it, otherwise we’ve actively corrupted the context for the next person who has to make a change.

I used to say “never use ternaries,” but I’ve come around a bit. I now believe ternaries should be used only declaratively, with proper formatting.

✅ Use declarative ternaries, with formatting

const title = (postRequest['title']) 
			? postRequest['title'] 
			: '';

const title = postRequest['title'] || '';

Ternaries are short, concise, and difficult to reason about if they’re too complicated. When I say “declarative” ternaries, I mean “the value of a variable is one of two options, dependent upon a single condition.”

If you need to test multiple conditions, or if you have more than one variable changing as a result of a condition or set of conditions, don’t use ternaries. Use regular if-else statements. It’s easier to read and comprehend, and it’s easier to make changes down the road (more likely if already have multiple conditions or states).

And never nest ternaries.

The last bit is around testing, specifically standard library functions. A standard library function is one that comes packaged in with the programming language you’re using - think Math.round() for Javascript, or the above substring method on strings str.substr(0,3).

As a rule, you should not test the functionality of code you have no control over - if Chrome is shipping a bad Math.round(), there isn’t anything you can do about it (plus, if you go down that rabbit hole long enough you’ll eventually have to test that the heat death of the universe hasn’t yet happened). Standard library functions fit that description.

But sometimes you do you want to test a method that only uses standard library functionality - the reason is not that you’re testing that functionality, but rather that you’re arriving at the desired result.

We’ll use the social media text as the example. I will always assume substring is working properly until I get user reports, and even then the most I would do is forward them along. What I want to test for is the length of the string that is returned - does it meet my requirements (under 116)? I’m not testing the functionality, I’m including a flag to myself and future developers that this is the maximum length and, if someone modifies the functionality of the method, it should be flagged.

describe('getSocialMediaText restricts to Twitter length', ()=> {
	it('when title is less than length', () => {
		expect(getSocialMediaText(MockPostShortTitle).length =< 116)
	}),
	it('when the title is more than length', () => {
		expect(getSocialMediaText(MockPostLongTitle).length =< 116)
	})
});

If we were testing functionality, I would call the same constant in my test, because that’s what’s being used internally. But because I’m testing outcomes, I use an independent value. If someone changes the length without changing the test, they’ll get notified. They can at that point change the value used in the test, too, but the test has served its purpose - it notified someone when they violated my “why.”

TL;DR

Intersectiona11y: AI, accessibility and the future of work

#

Solutions come in all sizes. The problem in tech (and many other industries, I presume) is that our processes and workflows are structured in such a way that the solutions for a given problem tend to be clustered around the smaller side of the scale.

Consider any given bug. Reported (hopefully) by your QA team or, worst-case, by a customer in production, it points out a specific issue. You, the developer, are tasked with devising a solution. Now, in most shops you’ll be given the opportunity to work out the root cause, ensuring that whatever change you make will a) actually fix the problem, and b) not cause any other immediate problems.

And that makes sense, for the most part. Small issues have small solutions. The problem is when you don’t step back and take a bigger-picture view of the situation - do all of these disparate problems actually stem from a particular source? Very often, developers are not only encouraged but actually mandated to stick to whatever story they’re on, for fear of going out of scope.

While that might make sense from a top-down control perspective, that style of thinking tends to permeate a lot of the other work that gets done, even up to larger-scale issues. Diversity is left to HR, or to a diversity committee, to take care of. In many cases, how and where to include AI in an application is left up to individual departments or teams. Remote work, a topic extremely divisive of late, is being eliminated or limited left up to “manager discretion” rather than actually looking at the benefits and harms that are associated with it. A cause extremely close to my heart, accessibility, is frequently treated as an add-on or left up to a handful of specialists to implement (or, worse, a third-party plugin).

These things not only don’t have to, they shouldn’t be left up to small groups to implement or reason through. They should be baked-in to how your organization makes decisions, builds software and interacts with its people.

You need a holistic approach. I want to break these concepts out of silos. If we’re looking at a RACI chart, everyone is responsible for DEIB and accessibility. Everyone should be consulted and accountable for decisions about AI and remote work.

Now, I have a confession. I’m pretty sure it’s Steve Jobs’ Second Law of Product that any time you think you have an insight, you have to give it a fancy name. I am guilty of this as well.

I use the term “holistic tech” to talk about the convergence of these ideas. A lot of the specific things I’m talking about can be found in other systems or methodologies; I’m just trying to pull all the threads together so we can hopefully weave something useful about it. In the same way that responsive design was concerned with making sure you could use a product across all screen sizes, I want to make sure that (and here’s the subtitle) tech works for everybody.

I’m also gonna borrow some concepts from universal design. Universal design is the concept that, “the design and composition of an environment so that it can be accessed, understood and used to the greatest extent possible by all people regardless of their age, size, ability or disability.”

And last, we’ll also fold in some concepts of human-centered design. This, in a nutshell, is thinking beyond your optimal user story. Eric Meyer calls them “stress cases," as opposed to edge cases, where you consider the emotional, physical and mental state of your user, rather just concerning yourself with the state of your application.

But all of these, as implied with the word “design,” are focused primarily on product creation. And while I do want to incorporate that, it’s a part of how we work.

Basically, this whole idea boils down to a single word

EMPATHY

It’s about seeing other people as, well, people.

And it’s applicable up and down your company stack. It applies to your employees, your boss, your monetization strategy (specifically, not using dark patterns), and it’s especially about your communication, both within your organization and with your users.

As for product design, we’ll start with accessibility.

Very broadly, accessibility is concerned with making sure that everyone can access your content and product. On the web side of things, this typically is accomplished by trying to adhere to the Web Content Access Guidelines, or WCAG.

WCAG has four basic principles:

Now the interesting thing is, I don’t think many people would object to those principles in, well, principle. They seem pretty common-sensical? “I want people to be able to access my content” is a fairly unobjectionable statement. The problem is that most organizations don’t have a good sense for accessibility yet, so the projects are designed and budgeted without the specific accessibility implementations. Then, when it gets brought up, making the change would be “too expensive,” or it would “take too long.”

“And besides, it’s an insignificant part of our market anyway.” I cannot tell you how many times I’ve heard this argument. Whether it’s an intranet (“we don’t have that many disabled people working here”) or an internal training video (“there aren’t that many blind workers”) or a consumer-facing product (“we’re willing to live without that tiny part of the market”), there’s a sense that accessibility is only for a very small subset of the population.

My favorite group accessibility experiment is to ask people to raise their hand if they use an accommodation.

Then, I ask them to raise a hand if they wear glasses, contacts, or a hearing aid.Or if they don’t keep your monitor at full resolution (“less space,” on Macs). Or if they ever change their browser’s or IDE’s zoom level.

Those are all accessibility accommodations.

Because the truth of the matter is, we’re all just temporarily abled. I don’t ask for hands on this one don’t, but I’ll often ask if anyone’s ever bought something on eBay while drunk. Formally speaking, you are technically operating with a cognitive impairment when you bought that giant taco blanket on Amazon. And I’m willing to bet your fine motor skills weren’t quite up their usual par, either.

Or maybe you sprained your wrist, or broke a finger. That’s a loss of fine motor control that’s going to make it more difficult to operate the mouse, even if only for a few weeks. Or how about any kind of injury or chronic pain that makes it painful to sit in a chair for long periods? Willing to bet after 4 hours you’re not thinking as clearly or as quickly as you were during hour 1.

Some of these things, like neurodivergence or vision impairment or being paralyzed, can be permanent conditions. But just as many of them aren’t. And it’s important to keep that in mind, because even if your ideal user story is a 34-year-old soccer mom, chances are she’s going to have some sort of cognitive impairment (lack of sleep, stress about kids) or processing difference (trying to juggle multiple things at the same time) or fine motor skills (trying to use your mobile app on the sidelines during December) at some point. So ignoring accessibility doesn’t just disenfranchise the “small” portion of your users who are visibly permanently disabled, it’s making things more difficult for potentially all of your users at some point or another.

And as it turns out, adding accessibility features can actually grow your overall market share.

Imagine your first day at NewTube, the hottest new video app on the market. We’re looking to change the world … by letting people upload and watch videos. I don’t know, venture capital! Anyway, the number of humans on the internet is 5.19 billion, so that’s our addressable market. We don’t need the microscopic share that would come from adding accessibility features.

Or do we?

Standard accessibility features for videos include text transcripts of the words spoken aloud in the video. The primary intention behind these is to ensure that those with hearing impairments can still understand what’s going on in the video. In a past job, proper captions cost somewhere in the range of $20+ per minute of video, though some products such as YouTube now have AI autocaptioning that’s getting pretty good.

Another standard feature is an audio description track (and transcript). This is sort of like alt text for video – it describes the images that are being shown on the screen, in order to make that information comprehensible to someone with visual impairments.

My favorite example of this is the end scene from the movie Titanic. As a transcript, it looks like this:

[ music swells ]

ROSE: Uh!

[ splash ]

Audio description, on the other hand, would look something like this:

Present-day Rose walks to the bow of the research ship, which is deserted. Deep in thought, she climbs the railing and stares down at the water where the Titanic rests below. She opens one hand to reveal the Heart of the Ocean diamond. We flash back to 17-year-old Rose standing on the deck of the Carpathia, digging her hands into Cal’s overcoat and finding the diamond. Present day Rose shakes her head and, with a small gasp, sends the diamond to rest where it should have been some 80 years earlier.

I took some poetic license there, but that’s kind of the point of audio description – you’re not a court reporter transcribing what’s being said, you’re trying to convey the emotion and the story for those who can’t see the pictures. The transcript part isn’t technically a requirement, but since you typically have to write down the script for the AD track anyway, it tends to be included. To my knowledge, no one’s managed to get AI to do this work for them in any usable fashion.

Lastly, we have keyboard navigability. Being able to interact with and control the site just using a keyboard makes it easy for those without fine motor control (or who use screen readers) to easily find their way around.

Three features/feature sets. The first two are pretty expensive - we’ve either got to pay for or develop an AI service to write the transcriptions, or we have to make sure they’re available. Audio Descriptions are going to be a cost to us, regardless, and not a cheap one. Keyboard navigability could be built-in to the product, but it would be faster if we could just throw everything together in React and not have to worry about it.

How much of an impact could it have on our audience?

Well, though only 2-3 children out of 1000 are born with hearing impairment, by age 18 the percentage of Americans who complain of at least partial hearing loss rises to about 15%. So if we don’t have captions, we’d better hope all our videos are Fail compilations, or we’re going to see some steep drop-offs.

When it comes to vision, it’s even worse. Approximately a billion people in the world have a vision impairment that was not prevented or has not been addressed. Even assuming significant overlap with the hearing impairment group, we’ll use 750,000,000, for a total of 10.8 percent.

And for inability to use a mouse, we’ll look at “overall prevalence of adults with a month of musculoskeletal pain related to a repetitive stress injury,” which isn’t nearly a large enough category to include everyone who might be navigating by keyboard, but is at 4%.

Which leaves us 70% of our addressable market, or 3.63 billion.

Now obviously these numbers are not exact. We’re very back-of-the-napkin here, but I would also argue that a real-world scenario could just as easily see our percentages of accommodation-seekers go up as down. The number of temporary cases of all of these items, the fact that first-world countries have higher prevalence of RSI (though much better numbers for vision impairment) mean that this 70% number is probably not as far away from reality as we think.

And even beyond people who need those accommodations, what about those who simply want them?

My best friend watches TV with the captions on all the time because it’s easier for her to follow along, and she’s not alone. Netflix says 40% of global users watch with captions, to say nothing of public exhibitions like bars (where it’s often not legally permissible to have the sound on).

Transcripts/audio descriptions are often HUGE boons to SEO, because you’re capturing all your content in a written, easily search-indexable format.

And presumably you’ve used a video app on a TV. The app has already been designed to be used with directional arrows and an OK button - why not extend that to the desktop? You’ll notice the remote’s functionality is a subset of a keyboard, not a mouse. Boom, keyboard navigation.

So, to recap accessibility: Good for disabled users. Good for abled users. Good for business. And that’s the thing, taking a holistic approach to how we do tech should actually make everyone better off. It is the rising tide.

But let’s talk about the looming wave that overshadows us all. I speak, of course, of artificial intelligence. In the same way that software ate the world 15 years ago, and Bitcoin was going to replace all our dollars, artificial intelligence is going to eat all our software and all the dollars we software developers used to get paid.

I want to make clear up front that I am not an AI doomsayer. I don’t think we’re (necessarily) going to get Skynetted, and if we are it’s certainly not going to be ChatGPT. Artificial intelligence in its current form is not going to enslave us, but I do think large swaths of the population will become beholden to it – just not in the same way.

Similar to how algorithms were used in the 90s and 2000s to replace human decision-making, I think AI is going to be (ab)used in the same manner. We’ve all called in to a customer support line only to find that the human on the other end is little more than a conduit between “the system” and us, and the person can’t do anything more to affect the outcome than we can.

With AI, we’re just going to skip the pretense of the human and have the AI decipher what it thinks you said, attempt remedies within the limits of what it’s been programmed to allow, and then disconnect you. No humans (or, likely, actual support) involved.

Is that the worst? Maybe not in all cases. But it’s also, in a lot of cases, going to allow these organizations to skip what should be important work and just let the AI make decisions. I’m much less concerned about SkyNet than I am the Paperclip Maximizer.

The paperclip maximizer is a thought experiment proffered by Nick Bostrom in 2003. He postulated that an AI given a single instruction, “Make as many paperclips as possible,” would/should end with the destruction of the entire earth and all human life. The AI is not given any boundaries, and humans might switch the machine off (thus limiting the number of paperclips), so the AI will eventually eliminate humans. But even if the AI thinks us benign, at some point the AI consumes all matter on the earth aside from humans, and we are just so full of wonderfully bendable atoms that could be used for more paperclips.

The “thought processes” of generative AIs, as currently constructed, are inherently unknowable. We know the inputs, and we can see the outputs when we put in a prompt, but we can’t know what they’re going to say - that’s where the special sauce “thinking” comes in. We try to control this by introducing parameters, or guidelines, to those prompts to keep them in line.

And I know you might think, “Well, we’ll tell it not to harm humans. Or animals. Or disrupt the existing socio-political order. Or …” And that’s actually a separate angle to attack this problem - humans not giving the proper parameters. At a certain point though, if you have to control for the entire world and its infinite varieties of issues, isn’t it easier to just do the work yourself? We’ve already got a lackluster track record in regard to putting reliable guardrails around AI, as the Bing Image Generator’s output so thoughtfully proves.

One of the things computer nerds love to do more than anything is break new tech, and image generators are no exception. When it introduced a new image generation tool a while back, though Bing did restrict uses of the phrase “9/11” or “September 11,” it still allowed for image generations of “Spongebob flying an airliner into New York in 2000.” And of course, the most prominent image of New York in 2000 is likely going to include the World Trade Center.

Sure, Spongebob doing 9/11 is a brand hit to Nickelodeon and insulting to the victims’ families. But this is showing both failures - despite Bing’s overwhelming image consciousness that should have been baked into a model, the model thought it more important to generate this image than to not. And, separately, Bing failed to put proper safeguards into the system.

So yes, the paperclips are a hyperbolic hypothetical, but if there’s one thing that capitalism has taught us it’s that there are companies out there who care more about the next dollar than anything else.

Businesses large and small make decisions based on weighing costs versus expected benefits of a given option all the time. Famously, with the Ford Pinto, one of the analyses Ford conducted cited the overall cost of redesigning fuel safety systems vs. the general cost to society of the fatal car crashes that might be spared. Because, to Ford, individual deaths were not thought of as particularly tragic. They were just numbers. It does not seem unreasonable to assume AI systems will be misused by those who are unscrupulous in addition to those who are just oblivious.

In accessibility, most people think the cost of not being accessible is “well, how likely are we to get sued?” ignoring the benefits of people using the product more. With AI, this short-sighted calculus can come into play where “Oh, we’ll let the AI do it, and not have to pay a person!” Except, as we’ve pointed out, the AI probably isn’t very good and the cost comes in consumer goodwill.

And this doesn’t even touch things like source data bias, which is a huge issue in resume-reviewing AIs (whose datasets will cause the AI to be more likely to select for existing employees, exacerbating skewed hiring trends) and predictive policing algorithms (which exacerbate existing crime biases).

Don’t forget you can now convincingly generate human-sounding responses in astroturfing campaigns or review spoofing, or empower scammers previously held back by non-native English suddenly sounding like every corporate communication (because AI’s probably writing those communiques, too).

Remember the part where I said I’m not an AI doomsayer? I’m really not! I think AI can be used in a lot of unique and interesting applications to make things better. We just need to be more judicious about how we employ it, is all.

For example, in the medical field, there are numerous AI experiments around trying to find tumors from body scans; the AI is not notifying these people on its own, there are doctors who review flagged scans for closer examination. Or in drug trials, companies are using AI to imagine new shapes of proteins that will then have lots of trials and study before they’re ever put in a test subject.

Using AI to generate advice that is then examined by humans for robustness is a great application of the tool. And sure, if Amazon wants to use AI to suggest product recommendations, I guess go ahead. It can’t be any worse than its current system of, “Oh, you bought a refrigerator? I bet you also want to buy several more.”

But that “generation” word is a sticking point for me. To the point of the job applicant winnowing, I have no problem with using quantitative questions to weed out applicants (do you have x years of experience, boolean can you work in the US), but I would hesitate to let a black-box system make decisions even as small as who should be considered for hiring based on inherently unknowable qualifications (as would be the case with the application of actual AI versus just algorithmic sifting).

And finally, just limit the use of generated content in general. Reaching back into my accessibility bag for a minute, there’s a class of images that per spec don’t need alt text: Images that are “purely” decorative and not conveying information. The question I always ask in such cases is: If the image is really providing no value to the user, do you really need it?

The same would go for unedited generated content. If you’re sending a communication that can be wholly generated by a computer, do you really need to send it? We’re taking the idea of “this meeting could have been an email” even further down the stack: Could that email in fact just be a Slack message, or better yet a reaction emoji? Just because you can expand your one-sentence idea more easily with AI doesn’t you have to or even should.

There’s likely a place for generated content, but it’s not anywhere near where we’re using it for now, with AI-generated “news” articles or advertising campaigns. It’s like when we just tried to add accessibility “with a button” - you cannot just throw this stuff out there and hope it’s good enough.

And I would hope it would go without saying, but please don’t replace therapists or lawyers or any other human who considers ethics, empathy, common sense or other essentially human traits with AI.

This is along the same lines as “generate advice not decisions,” - if you need to talk to the AI in order to be comfortable sharing things with a live person, that makes total sense. But don’t use the AI as a 1:1 replacement for talking to a person, or getting legal advice.

AI recap: Good for advice, not decisions. Good for assisting people, not replacing them (it’s a tool, not the mechanic). It can be good for business.

Now, I think at this point you can pretty much guess what I’m gonna say about remote work. And that’s good! Both because this is already long enough and because “holistic tech” is supposed to be a framework, not just specific actionable items.

Remote work, of course, is the idea that you need not be physically present in a building in order to perform a job. Hybrid work is a mix of remote work with some time spent in the office. I’m not gonna try sell you hard on either option - but I will note that employees prefer flexibility and employers tend to enjoy the larger talent pool. But mostly, I want to talk about how to set up your organization for success in the event you choose one of them.

One of the issues when you have some people in the office and others who aren’t is the sense that employees in the office are prioritized above those who are remote. Some of this is understandable – if the company wants to incentivize people to come into the office by offering, for example, catered lunches once a week or something, I wouldn’t see that as something that those who aren’t attending are missing out on …. Unless they were hired as fully remote.

In my case, for example, company HQ is in Chicago; I live in Phoenix, Arizona. I was hired fully remote, and it would feel to me like I were a lesser class of employee if those in the Chicago area were regularly incentivized with free lunches when there’s no pragmatic way for me to partake. Luckily, our office uses a system where everyone gets the same amount of delivery credit when we have whole-office lunches, which allows all of us to feel included.

Beyond incentives, though, is the actual work being done, and this is where I think some teams struggle. Especially when it comes to meetings, the experience of the remote attendee is often an afterthought. This can take the forms of whiteboarding (literally writing on a whiteboard off-camera in the room), crosstalk or side discussions that aren’t in listening range of the microphone, or showing something on a screen physically that’s not present virtually.

It’s not just “don’t punish your remote team members for being remote,” you’re actually hurting the organization as a whole. Presumably every member of the team was hired with an eye to what they can bring to the table; excluding them, or not giving them the full information, hurts everyone involved.

And technological solutions for remote workers will benefit in-person workers as well! Talking into the microphone during meetings can help someone with cochlear implants hear better in the room just as much as it’ll help me sitting in my garage office 1200 miles away. Same goes for whiteboarding - having a Google Jam (is that where they’re called anymore? Bring back the Wave!) on their screen means my wife can actually follow along; if they have to read a whiteboard from even 14 feet away, they’ll lose track of what’s going on in the meeting.

Taking the time to plan for how the remote attendee’s experience helps everyone, and it’s not terribly difficult to do. You can even see it for yourself by simply attending the meeting from another room to give you perspective and help troubleshoot any issues. Part and parcel of this, of course, is investing in the tools necessary to make sure everyone can interact and collaborate on the same level.

It’s not all about managers/employers, though! Remote employees tend to think that remote work is just like being in the office, only they don’t have the commute. And while that’s true to some extent, there’s another crucial aspect that many of them are missing: Communication.

You have to communicate early and often when you’re remote for the simple reason that no one can come check up on you. No one can look over your shoulder to see if you’re struggling, no one knows intuitively what your workload looks like if you’re overloaded. Similarly, you don’t know what impacts your coworker’s commit is going to have unless you ask them. There are any number of tools and video sharing apps and all that, but the upshot is you actually have to make focused efforts to use them to make sure everyone’s rowing in the same direction.

Remote work: good for employees, good for employers. Good for business.

Finally, let’s talk diversity. Commonly abbreviated DEI, or DEIB, diversity, equity, inclusion and belonging has sort of morphed from “let’s make sure our workforce looks diverse” to “let’s make sure people of different backgrounds feel like they have a place here.”

And that’s because DEIB should be a culture, not an initiative. At the start, we talked about silos vs. intersectionality. This might start with a one-off committee, or an exec hire, but true DEIB is about your entire culture. Just like remote work can’t just be HR’s problem, and AI decisions shouldn’t be made solely by the finance team, DEIB needs to come from the entire organization.

I actually like the addition of the B to DEI because Belonging is a pretty good shorthand for what we’ve been discussing throughout. People who are temporarily or permanently disabled are provided the accommodations they need to succeed and thrive; programmers aren’t worried AI is going to be used to replace them, but instead given to them as a tool to increase their productivity. Remote workers feel like the company values them even in a different state.

DEIB should encompass all those things, but it can’t be left up to just a committee or an exec or even a department to account for it. It all falls on all of us.

And I specifically don’t want to leave out the traditional aspects of diversity, especially in tech culture. Minorities of all kinds – women, nonbinary folks, other gender identities, those of different sexual orientations, non-white racial backgrounds – are underrepresented in our industry, and it’s important that we keep up the work required to make sure that everyone is given the same access and opportunities.

It’s good for business, too! Having a diverse array of perspectives as you develop products will give you ideas or user stories or parameters a non-diverse group might never have thought of. We keep hearing stories about VR headsets that clearly weren’t designed for people with long hair, or facial recognition algorithms that only work for those with lighter skin tones. If your product serves everybody, your product will be used by more people. That’s basic math!

Recent court rulings have put a damper on what used to be the standard for diversity, a “quota” of either applicants or hires meeting certain criteria. And look, if your organization was hiring just to meet a metric, you didn’t have true diversity. Quotas don’t create a culture of inclusion, so them going away shouldn’t cause that culture to dissipate, either. Seek out diverse upstreams for your hiring pipeline, ensure you’re not just tapping the same sources. I promise you, that investment will provide a return.

Say it with me: DEIB is good for employees, good for employers, and it’s good for business.

TLDR: Have empathy. Make sure you consider all aspects of decisions before you make them, because very often taking the personhood of the other party into account is actually the best business move as well.

And with all of these, please note that when I say these are good for employees, good for employers and, especially, “good for business” requires these ideas to be executed well. Doing it right means taking as many of these factors into account as you can. This is where holistic tech comes in as our overarching concept.

Oreo theory of product integration

#

OK, we need to talk about OREOs … and how they impacted my view of product iteration.

(Sometimes I hate being a software developer.)

A package of space dunk Oreos

I’m sure you’ve seen the Cambrian explosion of Oreo flavors, the outer limits of which were brought home to me with Space Dunks - combining Oreos with Pop Rocks. (And yes, your mouth does fizz after eating them.)

Putting aside the wisdom or sanity of whoever dreamt up the idea in the first place, it’s clear that Oreo is innovating on its tried-and-true concept – but doing so without killing off its premier product. There is certainly some cannibalization of sales going on, but ultimately it doesn’t matter to Nabisco because a) regular Oreos are popular enough that you’ll never kill them off completely, and b) halo effect (your mom might really love PB oreos but your kid hates them, so you now you buy two bags instead of one!)

In software, we’re taught that the innovator’s dilemma tends to occur when you’re unwilling to sacrifice your big moneymaker in favor of something new, and someone else without that baggage comes along eats your cookies/lunch.

Why can’t you do both?

There are a number of different strategies you could employ, from a backend-compatible but disparate frontend offering (maybe with fewer features at a cheaper cost, or radically new UX). What about a faux startup with a small team and resources who can iterate on new ideas until they find what the market wants?

But the basic idea remains the same: Keep working away at the product that’s keeping you in the black, but don’t exclude experimentation and trying new approaches from your toolkit. Worst-case scenario, you still have the old workhorse powering through. In most cases, you’ll have some tepid-to-mild hits that diversify your revenue stream (and potentially eat at the profit margins of your competitors) and open new opportunities for growth.

And every once in a while you’ll strike gold, with a brand-new product that people love and might even supplant your tried-and-true Ol' Faithful.

The trick then is to not stop the ride, and keep rolling that innovation payoff over into the next new idea.

Just maybe leave Pop Rocks out of it.

AI is not magic, part 1033: Accessibility

#

You know it’s a good sign when the first thing I do after finishing an article is double-check whether the whole site is some sort of AI-generated spoof. The answer on this one was closer than you might like, but I do think it’s genuine.

Jakob Nielsen, UX expert, has apparently gone and swallowed the AI hype by unhinging his jaw, if the overall subjects of his Substack are to be believed. And that’s fine, people can have hobbies, but the man’s opinions are now coming after one of my passions, accessibility, and that cannot stand.

Very broadly, Nielsen says that digital accessibility is a failure, and we should just wait for AI to solve everything.

This gif pretty much sums up my thoughts after a first, second and third re-read.

A scene from Hot Fuzz, where Detective Andy leans down and says “What absolute horse shit!I got mad at literally the first actual sentence:

Accessibility has failed as a way to make computers usable for disabled users.

Nielsen’s rubric is an undefined “high productivity when performing tasks” and whether the design is “pleasant” or “enjoyable” to use. He then states, without any evidence whatsoever, that the accessibility movement has been a failure.

Accessibility has not failed disabled users, it has enabled tens of millions of people to access content, services and applications they otherwise would not have. To say it is has failed is to not even make perfect the enemy of the good; it’s to ignore all progress whatsoever.

The “decision” meme, with one button “A11y has helped tons of people” and the other “AI is the new hotness”I will be the first to stand in line to shout that we should be doing better; I am all for interfaces and technologies that help make content more accessible to more people. But this way of thinking skips over the array of accessible technology and innovations that have been developed that have made computers easier, faster and pleasant to use.

For a very easy example, look at audio description for video. Content that would have been completely inaccessible to someone with visual impairments (video with dialogue) can now be understood through the presentation of the same information in a different medium.

Or what about those with audio processing differences? They can use a similar technology (subtitles) to have the words that are being spoken aloud present on the video, so they more easily follow along.

There are literally hundreds, if not thousands of such ideas (small and large) that already exist and are making digital interfaces more accessible. Accessibility is by no means perfect, but it has succeeded already for untold millions of users.

The excuse

Nielsen tells us there are two reasons accessibility has failed: It’s expensive, and it’s doomed to create a substandard user experience. We’ll just tackle the first part for now, as the second part is basically just a strawman to set up his AI evangelism.

Accessibility is too expensive for most companies to be able to afford everything that’s needed with the current, clumsy implementation.

This line of reasoning is absolute nonsense. For starters, this assumes that accessibility is something separate from the actual product or design itself. It’s sort of like saying building a nav menu is too expensive for a company to afford - it’s a feature of the product. If you don’t have it, you don’t have a product.

Now, it is true that remediating accessibility issues in existing products can be expensive, but the problem there is not the expense or difficulty in making accessible products, it’s that it wasn’t baked into the design before you started.

It’s much more expensive to retrofit a building for earthquake safety after it’s built, but we still require that skyscrapers built in California not wiggle too much. And if the builders complain about the expense, the proper response is, “Then don’t build it.”

If you take an accessible-first approach (much like mobile-first design), your costs are not appreciably larger than ignoring it outright. And considering it’s a legal requirement for almost any public-facing entity in the US, Canada or EU, it is quite literally the cost of doing business.

A detour on alt text

As an aside, the above image is a good example of the difference between the usability approach and the accessibility approach to supporting disabled users. Many accessibility advocates would insist on an ALT text for the image, saying something like: “A stylized graphic with a bear in the center wearing a ranger hat. Above the bear, in large, rugged lettering, is the phrase “MAKE IT EASY.” The background depicts a forest with several pine trees and a textured, vintage-looking sky. The artwork has a retro feel, reminiscent of mid-century national park posters, and uses a limited color palette consisting of shades of green, brown, orange, and white.” (This is the text I got from ChatGPT when I asked it to write an ALT text for this image.)

On the other hand, I don’t want to slow down a blind user with a screen reader blabbering through that word salad. Yes, I could — and should — edit ChatGPT’s ALT text to be shorter, but even after editing, a description of the appearance of an illustration won’t be useful for task performance. I prefer to stick with the caption that says I made a poster with the UX slogan “Keep It Simple.”

The point of alt text is to provide a written description of visual indicators. It does NOT require you to describe in painstaking detail all of the visual information of the image in question. It DOES require you to convey the same idea or feeling you were getting across with the image.

If, in the above case, all that is required is the slogan, then you should not include the image on the page. You are explicitly saying that it is unimportant. My version of the alt text would be, “A stylized woodcut of a bear in a ranger hat evoking National Park posters sits over top of text reading “Make it easy.””

Sorry your AI sucks at generating alt text. Maybe you shouldn’t rely on it for accessibility because it true accessibility requires ascertaining intent and including context?

The easy fix

Lolz, no.

The “solution” Nielsen proposes should be no surprise: Just let AI do everything! Literally, in this case, he means “have the AI generate an entire user experience every time a user accesses your app,” an ability he thinks is no more than five years away. You know, just like how for the past 8 years full level 5 automated driving is no more than 2-3 years away.

Basically, the AI is given full access to your “data and features” and then cobbles together an interface for you. You as the designer get to choose “the rules and heuristics” the AI will apply, but other than that you’re out of luck.

This, to be frank, sounds terrible? The reason we have designers is to present information in a coherent and logical flow with a presentation that’s pleasing to the eye.

The first step is the AI will be … inferring? Guessing? Prompting you with a multiple choice quiz? Reading a preset list of disabilities that will be available to every “website” you visit?

It will then take that magic and somehow customize the layout to benefit you. Oddly, the two biggest issues that Nielsen writes about are font sizes and reading level; the first of which is already controllable in basically every text-based context (web, phone, computer), and the second of which requires corporations to take on faith that the AI can rewrite their content completely while maintaining any and all style and legal requirements. Not what I’d bet my company on, but sure.

But my biggest complaint about all of this is it fails the very thing Nielsen is claiming to solve: It’s almost certainly going to be a “substandard user experience!” Because it won’t be cohesive, there have literally been no thought into how it’s presented to me. We as a collective internet society got fed up with social media filter bubbles after about 5 years of prolonged use, and now everything I interact with is going to try to be intensely personalized?

Note how we just flat-out ignore any privacy concerns. I’m sure AI will fix it!

I really don’t hate AI

AI is moderately useful in some things, in specific cases, where humans can check the quality of its work. As I’ve noted previously, right now we have not come up with a single domain where AI seems to hit 100% of its quality markers.

But nobody’s managed to push past that last 10% in any domain. It always requires a human touch to get it “right.”

Maybe AI really will solve all of society’s ills in one fell swoop. But instead of trying to pivot our entire society around that one (unlikely) possibility, how about we actually work to make things better now?

More on this nonsense article

Implementing a share extension with SwiftUI

#

As part of my plan to spend more time bikeshedding building out my web presence than actually creating content, I wanted to build an iOS app that allowed me to share short snippets of text or photos to my blog. I’ve also always wanted to understand Swift generally and building an iOS app specifically, so it seemed like a nice little rabbit hole.

With the help of Swift UI Apprentice, getting a basic app that posted a content, headline and tags to my API wasn’t super difficult (at least, it works in the simulator. I’m not putting it on my phone until it’s more useful). I figured adding a share extension would be just as simple, with the real difficulty coming when it came time to posting the image to the server.

Boy was I wrong.

Apple’s documentation on Share Extensions (as I think they’re called? But honestly it’s hard to tell) is laughably bad, almost entirely referring to sharing things out from your app, and even the correct shitty docs haven’t been updated in it looks like 4+ years.

There are some useful posts out there, but most/all of them assume you’re using UIKit. Since I don’t trust Apple not to deprecate a framework they’ve clearly been dying to phase out for years, I wanted to stick to SwiftUI as much as I could. Plus, I don’t reallllly want to learn two paradigms to do the same thing. I have enough different references to keep in my head switching between languages.

Thank god for Oluwadamisi Pikuda, writing on Medium. His post is an excellent place to get a good grasp on the subject, and I highly suggest visiting it if you’re stuck. However, since Medium is a semi-paywalled content garden, I’m going to provide a cleanroom implementation here in case you cannot access it.

It’s important to note that the extension you’re creating is, from a storage and code perspective, a separate app. To the point that technically I think you could just publish a Share Extension, though I doubt Apple would allow it. That means if you want to share storage between your extension and your primary app, you’ll need to create an App Group to share containers. If you want to share code, you’ll need to create an embedded framework.

But once you have all that set up, you need to actually write the extension. Note that for this example we’re only going to be dealing with text shared from another app, with a UI so you can modify it. You’ll see where you can make modifications to work with other types.

You start by creating a new target (File -> New -> Target, then in the modal “Share Extension”).

A screenshot of the XCode menu selecting “File”, then “New,” then “Target…“The Xcode new target modal popover, with “Share Extension” selectedOnce you fill out the info, this will create a new directory with a UIKit Storyboard file (MainInterface), ViewController and plist. We’re not gonna use hardly any of this. Delete the Storyboard file. Then change your ViewController to use the UIViewController class. This is where we’ll define what the user sees when content is shared. The plist is where we define what can be passed to our share extension.

There are only two functions we’re concerned about in the ViewController — viewDidLoad() and close(). Close is going to be what closes the extension while viewDidLoad inits our code when the view is loaded into memory.

For close(), we just find the extensionContext and complete the request, which removes the view from memory.

viewDidLoad(), however, has to do more work. We call the super class function first, then we need to make sure we have access to the items that are been shared to us.

import SwiftUI

class ShareViewController: UIViewController {

    override func viewDidLoad() {
       super.viewDidLoad()
       
       // Ensure access to extensionItem and itemProvider
       guard
           let extensionItem = extensionContext?.inputItems.first as? NSExtensionItem,
           let itemProvider = extensionItem.attachments?.first else {
           self.close()
           return
       }
     }

   func close() {
       self.extensionContext?.completeRequest(returningItems: [], completionHandler: nil)
   }
}

Since again we’re only working with text in this case, we need to verify the items are the correct type (in this case, UTType.plaintext).

import UniformTypeIdentifiers
import SwiftUI

class ShareViewController: UIViewController {
    override func viewDidLoad() {
       ...
        
       let textDataType = UTType.plainText.identifier
       if itemProvider.hasItemConformingToTypeIdentifier(textDataType) {
       // Load the item from itemProvider
       itemProvider.loadItem(forTypeIdentifier: textDataType , options: nil) { (providedText, error) in
            if error != nil {
                self.close()
                return
            }
               if let text = providedText as? String {
                 // this is where we load our view
               } else {
                   self.close()
                   return
               }
        }
}

Next, let’s define our view! Create a new file, ShareViewExtension.swift. We are just editing text in here, so it’s pretty darn simple. We just need to make sure we add a close() function that calls NotificationCenter so we can close our extension from the controller.

import SwiftUI

struct ShareExtensionView: View {
    @State private var text: String
    
    init(text: String) {
        self.text = text
    }
    
    var body: some View {
        NavigationStack{
            VStack(spacing: 20){
                Text("Text")
                TextField("Text", text: $text, axis: .vertical)
                    .lineLimit(3...6)
                    .textFieldStyle(.roundedBorder)
                
                Button {
                    // TODO: Something with the text
                    self.close()
                } label: {
                    Text("Post")
                        .frame(maxWidth: .infinity)
                }
                .buttonStyle(.borderedProminent)
                
                Spacer()
            }
            .padding()
            .navigationTitle("Share Extension")
            .toolbar {
                Button("Cancel") {
                    self.close()
                }
            }
        }
    }
    
   // so we can close the whole extension
    func close() {
        NotificationCenter.default.post(name: NSNotification.Name("close"), object: nil)
    }
}

Back in our view controller, we import our SwiftUI view.

import UniformTypeIdentifiers
import SwiftUI

class ShareViewController: UIViewController {
    override func viewDidLoad() {
       ...
               if let text = providedText as? String {
                   DispatchQueue.main.async {
                       // host the SwiftUI view
                       let contentView = UIHostingController(rootView: ShareExtensionView(text: text))
                       self.addChild(contentView)
                       self.view.addSubview(contentView.view)
                       
                       // set up constraints
                       contentView.view.translatesAutoresizingMaskIntoConstraints = false
                       contentView.view.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
                       contentView.view.bottomAnchor.constraint (equalTo: self.view.bottomAnchor).isActive = true
                       contentView.view.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
                       contentView.view.rightAnchor.constraint (equalTo: self.view.rightAnchor).isActive = true
                   }
               } else {
                   self.close()
                   return
               }
     }
}

In that same function, we’ll also add an observer to listen for that close event, and call our close function.

NotificationCenter.default.addObserver(forName: NSNotification.Name("close"), object: nil, queue: nil) { _ in
   DispatchQueue.main.async {
      self.close()
   }
}

The last thing you need to do is register that your extension can handle Text. In your info.plist, you’ll want to add an NSExtensionAttributes dictionary with an NSExtensionActivtionSupportsText boolean set to true.

A screenshot of a plist file having accomplished the instructions in the post.You should be able to use this code as a foundation to accept different inputs and do different things. It’s a jumping-off point! Hope it helps.

Annual Autumnal anguish

#

It feels like summer’s finally over. It’s been pretty hot even through the majority of September, and the rains that came were either parts of thunderstorms or hurricane-driven, so they didn’t really feel like “fall” rain. Then yesterday I read about the fall foliage outlook, which makes it feel like fall … and it started raining.

The change in seasons is more than just a semantic difference for me. I always get a bit doleful this time of year because it signifies a pretty dark anniversary for me — the gut-check realization that things don’t always work out the way they’re supposed to. And it always coincides with the first rain of fall.

It was literally my first day at work. The first day of my first job right out of college, and I got a Facebook message from a high school friend I hadn’t spoken to in probably four years, asking for my phone number. He called me later, around 6 p.m.

I remember exactly where I was when I got the call, standing in an empty office, staring at the drops of rain as they rolled down the window. I remember walking home immediately after, lost in thought as I gazed at the trees that had just changed their colors.

My friend called me to tell me a relatively good acquaintance (the technical definition would be “person I was friendly toward who I never happened hang out with”), who I had gone to both high school and college with, had taken her own life. (I wrote an essay about that day some time ago, if you’d like to read it, but it’s much too long to even excerpt here.)

It was the first time I had really dealt with death of someone my own age after high school. Death is unexpected for the young, but at least sometimes it feels like it makes a perverse sort of sense: crazy accidents, car crashes, sudden medical emergencies … none of those really give off the “Well of course it happened that way” vibe, but at least there’s some logic behind it. In those cases, maybe there was a car involved, driving much too fast to stop. Maybe the rope broke when he/she went rock climbing, so nothing could be done.

But this? This felt more like typing something into the computer and having it just freeze up, completely unable to do anything except flash cryptic error messages that don’t actually help you fix the problem. Unexplained error. File not found. Connection unavailable.

It broke my heart, in a somewhat oblique way. I identified with her, as I had known her practically my entire life and even received the same scholarship to the same university 300 miles away from our hometown.

I felt responsible, like there was something, anything, I should have done to help. After it happened, I immediately resolved that I would do better by all the rest of my friends. I promised myself I would do a better job at keeping touch with them on Facebook (which, looking back on it, is like the bare minimum one can do and still be said to be “keeping up”), and making sure to call and visit and … of course it didn’t happen. In my defense, I was still living 300 miles away from the vast majority of them at the time (since increased to nearly 2,700), but the simple truth of the matter is you can’t keep up with everyone you’ve ever met, or even everyone you’ve ever called a friend. It’s just not possible to do that and have any other kind of life (up to and including eating, sleeping and working).

But there are things you can do. Things that I do. Little things. But I think they help — not just to mollify my own guilt, but I think they also might help the people I’m “keeping tabs on.” For example, when I see one of those cryptic depressed Facebook statuses (“Everything is SO HARD lately” or “UGH why can’t it just stop?!”), I don’t immediately dismiss them. I don’t necessarily jump into action right away, but I will keep an eye on things. I make sure there haven’t been a lot of those kinds of posts in a short span of time. If the number starts to worry me, I try to figure out if anyone else has been in touch with them — either through the comments or even something as stupid as the Likes.

If it seems like no one’s been reaching out, I make sure someone does. I try to be discreet about it — if it’s someone I don’t really talk to on a regular basis, I might try to go through a mutual friend or something, but if I can’t find anyone else I will make it awkward and just start chatting them up (via whatever means are available to me).

It may feel weird at first, but it’s completely worth it.

I think about these things all the time, but it gets especially bad around this time of year. When the first rain of fall comes (again, not a calendrical definition, more of an emotional one), I go over the whole thing, again and again. It brings back a little of what I felt that day, walking home from work, leaves crunching underfoot.

Autumn generally has a melancholy feel to it, what with leaves turning brown and falling back to earth. It may have been thematically appropriate from an aesthetic point of view, but it certainly didn’t make the experience any easier to get through. And it makes me all the more resolute to make sure I never have to endure the entirety of that feeling again.

I always try to make sure I write for a purpose, to make sure that I have a point. So let me just leave you with this: Live like you’re responsible for someone else. You don’t have to make sure everyone you know is always happy, you don’t have to be available every time the smallest thing in life goes wrong … but at the same time, make it known that you’re available for people when they truly need help.

In the grand scheme of things, being available for that kind of comfort, advice or help is an incredibly small portion of your time, and will be a minuscule part of your life — but it could be huge for that other person.

Why I can't have nice things

#

I broke my phone. Again.

It’s not all that surprising, really. I’ve lost any number of phones to what I consider “normal use” — and what my father dubs “horrendous neglect” — like dropping it or getting it wet. And for the non-normal usage … Can I really be blamed for a bus running over my phone?

(It was a flip phone; I was in college, I got off the bus with the phone flipped open, ready to text, whereupon it jumped [jumped! mind you] from my hands and flung itself under the bus. Likely out of envy of other, smarter phones, coupled with pity for me, stuck with it. You are missed, phone. Well, not so much missed. Vaguely remembered.)

This time, it again wasn’t my fault, except for the part where it broke as a direct result of my actions. I dropped the phone on my bed (as per usual), whereupon it rebounded onto the floor and struck, screen-first, against the spines of a tall stack of particularly weighty hardback books. When I turned it on, it did not. Well, the buttons lit up, but the screen just flashed blue lightning at me from the visible cracks in the screen. I thought it best to shut the stupid thing down before I Force-lightninged myself.

So I went to Craigslist and eBay, and eventually found an older smartphone Amazon had on sale for about $75. This is actually why I tend to shy away from the newest, most expensive tech — I’m afraid I’ll break it. The phone that fell under a bus was a flip phone back when flip phones weren’t really in style anymore. The phone I broke a few days ago was a creaking Android phone I got for $100. It ran Gingerbread, for cryin' out loud — for you non-techies, it was about as powerful as an original iPhone.

(OBLIGATORY NOTE TO MY EMPLOYERS: Things that are not mine, in the sense that I did not pay for, I am much more respectful of. I have never thrown [nor even lightly dropped] the shiny things I am given to play work with.)

Am I just unusually careless with my things, the broken litany not even a quarter-listed in the previous paragraph? Anecdotal evidence from Facebook would suggest I am, but only just. Think of how many times you’ve seen something to the effect of, “lost/broke my phone, so text me your number and your name so I know who you are.” I doubt most people go through phones quite as quickly as I do, but the churn rate is higher than the 2-year contract upgrade. Heck, even actual evidence suggests that 1/3rd of the populace has lost or damaged a phone, and 20 percent of the people reading this post have dropped one in the john (one being a phone; definitely don’t want an unclear antecedent with that phrasing).

I can’t find hard numbers on it, but I’d be willing to bet that more of those damaged phones are at the hands of the young, in this case meaning my generation and below. Those who are older tend to have a few things we young’uns don’t: patience. Perspective. Oh, yeah, and a healthy fear of technology.

Maybe there’s something to be said for the reverence with which most old people (here defined as anyone over the age of 35) treat their various gadgets, be they smartphones, tablets or even (shudder) feature phones.

Want to see it in action? Hand your mom an iPhone. I almost dare you. My mom rocked an Android for almost 8 months and got nothing but frustrations. When she finally caved into the peer pressure and bought the iProduct — despite having the aforementioned practice on a smartphone — I became the by-phone (my dad’s phone) tech support for two weeks while she figured out things like dialing a number, texting one person at a time (which I was more than happy to help with, given the texts I was getting that were meant for other people) and even figuring out how to shut it off properly.

It’s a truism at this point that a disconnect exists between so-called “digital natives” and the rest of the world (we’ll call them “normal people,” but only until we digital natives have a majority. Then WE can be normal [for once]), and I think it comes down to how technology is viewed.

Forgive the overarching generalizations below: They do not represent absolutely everyone in both cohorts, but I think they draw general outlines that most people match up with fairly well.

People who have seen new technology come into use view the technology only in terms of its functionality, a means to an end. Cellphones (and smartphones) are not their lifeline to life itself, they’re a means of communication. Sure, they’ll learn how to Facebook on the go, post Instagrams to Twitter and message their unruly teen to make sure he gets home before curfew, but if you took it away they’d still survive. They’ve got paper address books, landlines and actual (still digital, usually) cameras that aren’t grafted onto a phone.

I think most younger folks (present company included) treat a phone more as an appendage. Losing it is a lot like amputation, in that we can survive the trauma, but recovery involves actually having to go back and completely relearn how to do things.

Imagine you had to go without a cellphone or a tablet for six months, with no prior warning. How would you communicate with friends? How would you find a restaurant? How would your friends know that “Certain ppl need to lern to respect there bffs and not go behind they’re bak.” Some people wouldn’t even be able to do their jobs properly. (Journalists.)

Paradoxically, this overreliance on technology actually leads some of us treat it as a commodity. It’s certainly true in my case. I don’t really care what computer I’m using as long as it runs. I don’t really care what operating system my phone runs as long as it has Angry Birds. From a physicality standpoint, this non-attachment means I’m probably more wanton in my care than I should be (hence my perpetual progression of buying new phones) but, judging by their Facebook statuses, more of my friends take after me than do resemble my parents.

I don’t treat most gadgets like they’re shiny objects I’m worried might get scuffed. I treat them like books: I’m not going to go out of my way to destroy them, but bending the pages back or throwing it (literally) on a pile or the floor is perfectly acceptable, because I don’t really care if it gets beat up a little.

To me, technology is a tool, in that you use it to create other things — it just happens to quite often be a very expensive tool. But you’re supposed to use tools. Screwdrivers are meant to drive screws … to build a birdhouse. Paintbrushes are meant to brush paint … to make the birdhouse attractive to birds. Similarly, smartphones are meant to phone smarts … well, you know what i mean.

You’re not supposed to take it easy on tools. You’re supposed to use them hard, or at least as hard as you need to. And you just have to live with the fact that sometimes, even though you may be using it properly, a hammer will randomly have its head fly off and see the claw part embed itself in the wall about a foot to the right of your head (true story).

Though I bet a $100 hammer wouldn’t. (grumble)

Real-life ghost story

#

There’s always a van. The Scooby gang, ghost hunters by trade if not specifically by design, rolled around in the Mystery Machine. The Ghost Hunters from SyFy flit from haunt to haunt in their souped-up van — black, of course, with “TAPS” stenciled in yellow “COPS” lettering on the side. Even the land boat the Ghostbusters tore through New York City with bears far more resemblance to a modern-day van than a car.

Though you may question whether the contemporary investigators are aping the ghost hunters of their youth, the Whispering Spirits Paranormal Research Society pulled up to Farmington Daily Times building in the quiet northwest New Mexico hamlet in their very own van. It was (appropriately enough) Friday the 13th, with a nice big moon hanging in the sky to perfectly illuminate the aging but still functioning newspaper. It’s spooky business, poking around decaying buildings in the dark.

The motley crew that piled out for a night’s work wasn’t what you’d expect a group of ghost chasers to look like. They come in all shapes and sizes, all manner of hair colors and lack thereof, and range in age from 18 to well into Boomer territory.

Then again, if you really think about what real-life ghost hunting entails — a steadfast belief in the supernatural with an accompanying willingness to sacrifice your nights and weekends in pursuit of proving said logical improbability — they’re exactly what you should expect them to look like.

They began unloading their hard plastic cases filled with all sorts of electrical gizmos, some recognizable and some not, around 11 p.m. To a person, the only thing they had in common other than the uniform black T-shirts was a determination, a sense of purpose. They exuded a clear sense of order and efficiency as they transferred the boxes first to the ground, then inside. It almost bordered on urgency — though, since the investigation wasn’t set to begin until after midnight, it wasn’t quite clear why.

They all wore matching black T-shirts with the name of the society and a very pixelated vortex plastered on the back, but it was rare you’d confuse any of them for another.

Mel, the undisputed leader of the group — who never was referred to as such by the rest except in their complete obedience to his every order — stood distinguishable by his stocky, muscular stature, his reddish-blond beard and accompanying (though thinning) hair. He got started right away.

“We expect to find whatever we can,” he said, unpacking one of the six night-vision video cameras from where they lay in their custom-cut foam holes. He hands one of them to his wife, Krystal, one of the group’s co-founders, and has her run it from the flat-screen monitor they brought with to a prearranged point in the other room. “We’re doing a small investigation here, it’ll be about an hour, an hour and a half.”

The sheer amount of electronics the group carries along is somewhat staggering, especially considering the rather small area they’re investigating on this trip. A lunchroom and a small bullpen seem like fairly easy ground to cover, but Mel says the total cost of the equipment they have is pushing $4,000. It’s not hard to believe how expensive the equipment is. It’s just a little hard to believe that the people who run this nonprofit (they’re adamant about their IRS status) have nothing better to do with that kind of money.

Of course, it’s a little hard to understand what drives a person to do this sort of work in the first place. As people who believe in ghosts, they’re actually somewhat less equipped to deal with coming face-to-face with a spirit than a nonbeliever. A nonbeliever would be just as scared at a startling noise or a freaky coincidence, but logically they’d attribute it to just that — a coincidence. True believers, though, are prone to seeing specters around every corner. To them, that hard, bristly thing that brushes lightly against their left arm in the darkened room is out to get them — there’s no chance it’s just an upturned broom.

It all started with a cellphone. A smartphone, actually, the marvel of modern technology that carries a staggering amount of computing power in your hand. More than enough to solve the most intractable mathematical mysteries that stymied humans for generations. And it finds ghosts, apparently. Sometimes?

“We were messing around with an app on my phone, and it turned out to be fake, and we started wondering kind of a little bit more about the paranormal,” says the other co-founder, Natasha. By day Natasha works at a deli, but nighttime is when she can bring out her spiritual, supernatural side.

“We found another app on the Droid called the Ghost Radar, and I was curious as to how it worked because I couldn’t find anything on the Internet that said it was either fake or real,” chimed in Krystal, interrupting slightly. The two went to a local cemetery to test out the app, which instructed them to look for “Paul.”

It’s worth noting that, on the website for Ghost Radar, the company’s only comment on the app’s veracity is that it’s “as effective as an EMF detector or a KII.” Which is to say they either believe in it wholeheartedly, or think it’s a great way to transfer money from the gullible to their bank account.

Krystal, however, seemed to be convincing herself she believed.

“It was like leading us to it, I want to say, because we were looking for this person’s name and we couldn’t find a Paul, and it said, ‘Beyond,’ so we’re like, OK, so it’s on the other side. It wasn’t actually on the wall itself, it was on the ground, so we just kind of went from there and invested …”

“They were playing, basically,” interrupts Judy.

Judy is Mel’s mother, something of a skeptic and an utterly devout Christian. She got into the ghost-chasing game after Mel and Krystal kept out all hours of the night and asked her to babysit the kids. Judy doesn’t actually believe in ghosts, per se. She mostly tags along to help protect Mel and Krystal from the spirits they face, which Judy believes are all demons. She started asking to help them analyze the recorded evidence, and eventually worked her way up to a starting spot on the squad.

The investigation itself is actually the easiest part of the whole thing, if you can get over the whole “actively seeking out haunted places” thing. The part that Judy broke in through, the analyzing, is actually the most difficult piece — mostly because of the tedium. Hour upon hour of straining to look at grainy, black-and-white footage of something you just witnessed firsthand, all to find some — any — evidence of the supernatural. Since just about anything unusual can be ascribed to the supernatural, just about everything that happens has to be double-checked to rule out the presence of other beings.

Mel couldn’t give me a definite estimate as to the man-hours involved, but what he did come up with sounded exhaustively time-consuming.

“Probably two hours for every hour, reviewing just video,” he said. “It takes probably a couple of weeks to go over four hours worth of audio and video.”

The cameras, recorders and what can only be described as gadgets they carry with them could stun a small herd of high school AV nerds. Each investigative “team” of two people carries at least one personal digital audio recorder. There are also various electromagnetic field readers, something called a “ghost box” (an AM/FM radio that continually scans through frequencies, so as to create “white noise” that spirits can use to make themselves heard more easily) and of course the Ghost TiVo, the digital video recorder that captures of every frame of freaky footage they shoot on their stationary night-vision cameras.

Between the expense, the late hours, the hours (and days and weeks) annihilated by analyzing and the cringe factor that accompanies an adult describing his or herself unironically as a “ghost hunter,” it’s somewhat bewildering to comprehend why this dedicated — and any group of people that willfully sacrifices this kind of time and money deserves the designation “dedicated,” among others — group of people would do this kind of thing. From the variety of their answers, it’s clear there’s no category they can be slotted into, no on explanation that covers all of them.

Except, maybe — simply — that they like to do it.

“This is probably the best hobby we could ever come up with,” says one.

It’s time for the investigation to begin. First the entire group clears out to the back door, most to smoke, but ostensibly for the purpose of getting a neutral reading, of sorts. The sensors and video cameras can get a control reading — and maybe pick up some stray ghost bloopers before the spirits see the “ON AIR” light switch on.

The group also needs to let off some steam (slash smoke). This is the part of the play before the play, when the cast gathers backstage to let out the giggles, stretch and warm up their vocal chords. And, of course, pray for a good show.

Religion and ghost hunting don’t mix together well when you first throw them in the blender. Though you can (and Mel does) point to the Bible for evidence of evil entities on Earth, the prescribed method for dealing with them involves commanding them into the bodies of pigs and running them off the cliff.

Not only are there no big drop-offs present, we’re fresh out of pigs as well. This, however, does not deter the group.

“Basically, we stay in God’s word. If I have to take a Bible with me, I’ll take a bible with me. I preach God’s word,” says Mel. “There’s no guarantee that we can get rid of what’s there, but we do our best.”

Mel, Krystal, Judy and Shane (he’s the oil worker in his mid-20s with the tattoos and the leather vest that plunk him square in a moderate-to-rough motorcycle gang) are adamant about religion playing a huge role. Shane takes the same demonological hard line about spirits that Judy does, while both Krystal and Mel believe God protects them and their children against the spirits they counter. It might be the couple’s biggest worry, actually — unknowingly bringing a ghost home for a spooky reenactment of “Guess Who’s Coming To Dinner?”

Mel’s even had a sit-down with his pastor. Or two.

“He does not agree. He has an issue with me doing what I’m doing and my wife doing what she’s doing,” Mel recalls.

“He’s just real concerned with the Bible and what it says,” offers Krystal. “In there it says not to seek the spirits.”

After the invocation, the group heads back in and picks up their gear. Each two-person team has the aforementioned voice recorder as well as a walkie-talkie to facilitate to communication and rule out false positives. If one of the teams hears a weird noise, they’ll try to ascertain whether another group’s nearby before maintaining radio silence in the hopes of hearing it again. Similarly, if the group leader back at base sees something on the camera, he can instruct a team in the field to take a closer look.

The audio devices seem to be the easiest way to catch a ghost, though the reason is never fully explained. Mel tells me he can just sit in his backyard with the recorder and hear plenty of voices. This for some reason makes him think the method is more, as opposed to less, reliable.

In addition to the audio devices, Judy’s carrying around a garden-variety digital camera with the flash set to “accidentally staring directly at the porch light when your parents flip it on after the sun goes down.” The hope is that you can catch a spirit by surprise? Or something. That was never really spelled out to me, though Mel assured me 35mm film cameras do a much better job than the new-fangled digital ones.

Even ghosts can be Instamatic hipster snobs.

Natasha and Shane are exploring the lunchroom, where unspecified paranormal activity is rumored to have taken place. They carry both an EMF reader and the ghost box. Shane takes the EMF reader and basically runs it over every square inch of the cabinets, walls and as much of the ceiling he can reach, interrupting every so often with a desultory, “Are you there?”

Natasha, on the other hand, immediately takes a seat at the table, lays her cellphone and the ghost box down on the table, and turns on the squawk.

“Are you there?” she asks, though it’s more of a demand than a question. “Show yourself. Prove to me that you exist.”

This goes on for longer than you’d think tolerable. In the corner of the room sits one of the tethered night-vision cameras, its presence notable for the circle of small red LED lights that ring the lens, staring directly at us. It’s watching Natasha decry whatever spirits may be there as “cowards,” challenging them to prove her wrong.

One obliges.

As the ghost box flips through the frequencies, every so often you’ll be able to make out a word or a partial sentence that slips through a broadcaster’s lips.

“Did it say ‘press room’?” I ask at one point, pointing at the device even though we can’t really see each other.

Natasha confirms she heard it too. Her aggressive patter picks up in volume and intensity, but we don’t get much more in terms of aural confirmation.

But there is something strange going on. For some reason, every time the ghost box rolls through the 1300 AM range, you can hear a whine cycle up through different pitches. And when it gets to 1380 AM, it just … stops.

It stops scanning and hunkers down on some random Latin music station. Natasha says it’s never done that before. Shane agrees. When we set it to start scanning again, everything continues as normal. At least, until we hear the whine in the 1300s. And it stops. Again.

The group line is that they’re debunkers. Sometimes it’s the house settling, other times it’s simply in your imagination. They say their job is to go in, gather all the information possible and announce that the ghost was actually just Mr. Jenkins, the creepy real estate developer, all along.

“The main purpose of the group is to go in and debunk, to make sure that people aren’t seeing or hearing things that are naturally occurring,” says Judy.

That’s the spin on natural occurrences. When it comes to the supernatural — that no one spoke out against during the powwow we had before the investigation began — there are no human spirits wandering in search of a loved one or a great burger or a long-lost childhood sled.

Everything is demons. If you hear a voice that sounds like Grandma Lil or knows something only Uncle Jerry could know, that’s just a particularly crafty demon trying to trick you. Judy also believes in demonic possession — but they’re spirits of Hell, not spirits of people. Tricksy demons.

There’s a lot to debunk in this creaky old newspaper office, though one can’t really rule out the notion that one or more demons has passed through its halls posing as an editor or a sales rep. But there are plenty of clunks and groans when the air conditioner kicks on, at least twice an hour at random. And since the gigantic printing press used to be just on the other side of the wall, there’s a drop-basement that holds the leads and connections to enough juice to power at least one good-size Vegas hotel.

This is where some of the science comes in, the debunking. They’re a research society, see. It’s right in the name. And their studying is not limited to extraterrestrials and ghost stories; they also read up on common phenomena, and I’m sure the electrician-in-his-other-life has gotten through a technical manual or two. That, the technology and the scientific method the group applies to their investigations (two people to a team, so they have verification; constant communication to rule out false positives; and making sure everyone knows where everyone else is for the same reason) are the values the group holds highest.

But the power plant only explains the crazy readings we’re getting on one section of the wall with the EMF reader. We’ve still got this ghost box that’s spooking us all just a little bit with its whine and random-but-not-at-all-random stoppages. We run it through some tests.

“Try stopping it manually once we start hearing the whine,” I suggest. Natasha does so, and we both hear the whine skip up through the scale on each of the 1310, 1320 and 1330 AM stations.

“So the octave’s not tied to the frequency,” I offer, which sounds scientific-ish, at least to my ears.

Natasha nods. She then turns the scan back on, only to have it stop a few seconds later on the same station as before.

“OK, this is pretty weird.”

Natasha nods again.

We sit in silence as we let the box run through the same cycle two or three more times. Then we decide to experiment again, so Natasha picks up her phone and hits a button so we can get a better view at the ghost box.

Which proceeds to skip right on by 1380. No whine, either. The ghost is gone.

We’re both a little disappointed. She sets her phone back down so we can continue the hunt in darkness, which is apparently the group’s guess at spirits' preferred mood lighting. When the whine comes back and the box stops abruptly at 1380, Natasha gasps.

“Dammit. It’s my phone.”

She moves it away from the box, and we resume the investigation in silence.

Some level of skepticism should be present. As debunking performs a fairly vital part of paranormal investigating, at least for Whispering Spirits, you’d expect the group to be somewhat wary of what it finds. You’d expect each of them (or at least some of them) to examine things with a critical eye, always naysaying each other and operating on a basis of “normal until proven not.”

You’d also be wrong. Most of the debunking, it seems, falls to one man — Bobby.

“Bobby is very skeptical,” Natasha had told me earlier. “He is the one who does not believe.”

The concept was boggling. Why would a paranormal group carry around a skeptic on its roster? More to the point, who joins a group for the expressed purpose of not believing a word it says?

“I think it’s curiosity,” Bobby says. “I just like to prove ‘em wrong. Until they can prove me wrong.”

Bobby’s proved ‘em wrong on more than one occasion. Despite being very hard of hearing, the first thing he does when the group shows up on site is to check for any mitigating evidence — do the lights hum, is there a power plant behind that wall, what noises do you hear?

“Bobby’s very observant,” says Mel. “He’ll note everything in his head, and when it comes time to go over evidence, he remembers. He tries to debunk everything that we come up with, because we get excited. He tries to explain everything.”

Once, the group set up in an old graveyard. (Despite the ready abundance of dead bodies, nobody ever seems to haunt a new graveyard. Wrong atmosphere, maybe. Not the right aesthetics.) They had been wandering among the tombstones for a while, in the oldest section, running the ghost box.

“We were walking through there, and the radio come off with, ‘Scared,'” Mel recalls. “And we stopped and we said, ‘Don’t be scared of us, we’re here to help you’ … The girls come off with, ‘What do you have to be scared of?’ And it came through, ‘Reaper.'”

The electromagnetic spook set the scene perfectly. Armed with their digital camera, the group took a steady succession of pictures of some spooky-looking trees.

“We were shooting pictures, and you see the dark images of trees, and there’s the really dark image that looked really tall,” says Mel. “It looked like the Reaper.”

That one wound up being pretty easy for Bobby to debunk.

“It turned out to be me,” he says.

Bobby’s disbelief isn’t really disbelief, though — more like the suspension of belief. He says he truly wants to believe in ghosts and spirits — he just hasn’t had the opportunity yet.

At the very least, Bobby has to be a believer in belief, then, right? He’s actually had a spooky experience he couldn’t explain — a recorder he set down in a haunted basement recorded a disembodied voice growling, “Lucifer” about 10 seconds after he left a room. He has no explanation for it. But still he doesn’t believe.

“Every investigation, though, I go in hoping to find something that I can’t (explain) — that’s not me. And so far, I’ve been let down,” he says. “I wanna be a believer. And someday, I will be.”

The dark is scary, regardless of whether ghosts are present. By far the spookiest occurrence took place in the press building, where the team finished up after scouring the main building. There are no windows in the building’s deepest recesses, so the area where huge mountains of five-foot paper rolls are stored dims to the blackest of black with the lights off. So black you can’t even discern the movement of your hand as you wave it in front of your face.

Stephen seems like the most normal guy in the bunch. His partner, 18-year-old Kim, isn’t the opposite, but she’s closer to the other side of the spectrum than to his.

Stephen and Kim set up in a paper-roll canyon that stretched back to the cinderblock wall, towering some 20 feet overhead. Stephen aimed a red laser pointer at the wall opposite, down the length of the chasm, explaining it would be much easier for a spirit to cause a small, weak light flicker than to manifest into a form visible by flashlight or camera flash.

So we waited. In absolute darkness, with only the tiniest, most anemic of red beams shimmering along our sides, barely even visible on the far wall. Your mind starts to play tricks at that point, combining the extraordinarily low light with the sleep deprivation that comes from ghost hunting until well into the 4 a.m. hour.

Then I heard shuffling.

Officially, I was along as an observer, not an investigator. And yet, much like when I asked if anyone heard “press room” on the ghost box, I felt compelled to speak up when no one else did.

For I knew the stories of the press building. Of the suicidal press operator who jumped into the baler (which compresses plastic barrels, cardboard or human flesh and bones, if you ask it, into much smaller and compacter versions of those things) in order to commit suicide. He failed to notice that the baler had been emptied and wound up just being stuck for the weekend, but it’s still a bummer vibe to put out there.

I had heard of the full-bodied apparition of the ’70s press operator, still dressed in the proper garb, standing watch at the control panel one late night. And the barking dogs and growls heard over by the ink tanks when no other soul, man or beast, was supposed to be in the building.

“I hear feet shuffling,” I announced.

“You do?” asked Kim, surprised.

“Is anyone there?” I asked, directing my question toward the tiny point of light on the wall.

“Check the radio,” I instructed Stephen.

He did. “No,” came the response.

So we waited. Silence can seem oppressive in any situation, but in absolute darkness it’s downright suffocating. I strained my eyes, trying to see anything.

Then I noticed the slightest waver in my peripheral vision, right along the left wall of the canyon. The laser beam streamed down almost directly along the right side, so the movement I noticed was so slight I almost missed it.

“I see something,” I announced again, this time a little bit louder. I was, I admit, slightly scared. I scooted back away from the light, toward the cinderblocks. And I knew it wasn’t Bobby this time, because I had heard him breathing heavily and walking away a few minutes earlier.

“You hear shuffling?” asked Kim.

“No, I definitely see something. Turn on the light, turn on the light!” I finished, my voice getting slightly louder, higher and faster on every word. Stephen fumbled for the laser pointer, which was attached to a flashlight, flipped the light on and shone it on whatever was coming for us. I gaped at what I saw lurching out of the darkness.

I don’t know if Judy is right to be keeping an eye out for demons, or if Krystal’s prayers do keep the evil away from her home and family. I don’t know if Bobby’s skepticism is well founded, or if Shane is correct in his adamant belief of evil spirits trying to fool us. I don’t know what’s on the other side, reaching out to make a connection to the land of the living.

But that time, it was Mel.

In the end, it turned out the newspaper wasn’t terribly haunted. In the bullpen, where most of the spooky happenings had been reported, there were only two things to note before they went back to the tapes for analysis.

Judy managed to snap a photo of an “orb,” a large globe of light that appears in one frame of a photograph and doesn’t appear in any taken just before or just after. On the small screen of the digital camera, it definitely looks like an orb.

This was confirmed by one of the press workers, who exclaimed (multiple times) while looking at it, “Damn! You caught an orb!”

It’s not as interesting as expected, given their recitations of other investigations. In fact, their very first time out they visited a location they refer to only as “The Basement,” a literal hole-in-the-ground Mel had been told was haunted since he was a little kid.

“Growing up, all the kids used to talk about a lady that lived there that kidnapped kids back in the ’40s,” Mel recalled. After kidnapping them, locking them in cages and starving them for weeks, “she would take ‘em down to the pond and drown ‘em, if they were still alive. And she’d throw their bodies down a shaft.”

Of course, after a full investigation the team found there was no truth to this story. The woman merely had several citations for cruelty to animals to her name before she was “taken away.”

“She lit a horse on fire,” according to a neighbor Mel spoke with.

Then the house was demolished and some homeless guy took up residence, kicking all the drunken teenagers out and scaring them by re-enacting “The Blair Witch Project” (back when people would have gotten the reference) before himself getting taken away by police.

Despite the attempted suicide-by-crushing in the press room story, this was no basement. Yes, one team did have a strange encounter with a table in the bullpen area. They sat the recorder and themselves down at one of the tables in a corner of the room where a lot of disturbances (both spectrally and in the flesh) took place. There, when Stephen (Kim’s partner) knocked, a distinct rapping sound knocked right back.

“It’s very interesting. It was almost like it answered me, so that’s what makes me think it’s not coincidental,” Stephen recalls. “It knocked several times. I think it’s something more. I’m hoping.”

Kim, however, has no qualms about believing. Ghosts, spirits, demons, she’ll root for the existence of everything. And she’s even extra religious — though she grew up with her grandmother’s Christianity, the deli-worker-by-day also got to hear about the traditional Navajo creation story and myths.

“Yeah, I believe there’s a God, but I don’t believe, ‘Oh, you have to do this and be good,'” she says. “Traditional, they come from four worlds, and it’s … confusing, mainly. They talk about skin-walkers, bigfoots …”

Of course, as much as religions differ, they also come together in surprising ways. In the same way that Mel and Krystal worry about ghost hitchhikers, Kim’s dad employs his own religious cleansing for her ghostly doings.

“He believes that if I do something like this, then something’s going to follow me home,” she says. “He has to do a prayer with me, medicine man.”

Kim’s purpose for joining the group is the simplest, which is why it seems like the most honest.

“I just wanna find answers. To know if there really is another side,” she says. “You have to find something to believe in, and I want to believe in something.”

That may be why Kim appears to the most in tune with the supernatural. For the group’s recent (and as of yet, only) UFO outing, Kim was the only one it communicated with, it “only lik[ed]” her. And this investigation — which was her “first big one,” according to Krystal, as Kim is still technically training — she got a response in two different places, as opposed to most of the group’s none.

Did Kim’s search for answers influence her perceptions? Perhaps. Then again, it’s possible she’s just more attuned to the other side. Her grandmother told her the story of her grandfather, who was murdered before Kim was born. Every few years, her grandfather would visit her grandmother, telling her, “Good job.”

“And he’s telling her the next time he comes back, he’s going to take my grandma with him,” she says.

Kim also believes her grandfather is the voice in her head that restrains her from getting too angry or too upset, the voice that tells her, “Stop,” or “Don’t.”

“My grandma says that’s him protecting me. And that’s what I want to know, I want the answer to it,” she says. “I’m not all crazy about the idea of demons.”

The intricate weave of belief in ghosts and religion seems to at once make both perfect sense and none at all. Kim’s makes more sense than most, as she’s already trying to tie together two beliefs that don’t have any common threads — in fact, Christianity explicitly refutes much of traditional Navajo religion, If she can make those work, adding in ghosts just requires tweaking a few names.

The rest of the group, the devoutly religious, seems just as out of place on a paranormal investigative team as Bobby does. Are they just on the lookout for exorcism opportunities? Do they actually expect to see something? Do they really not see the parallelism of not believing in earthly spirits lingering after their physical life, but giving full credence to the notion that a heavenly spirit has total dominion over all?

“There’s proof that there’s a God. In history, and in the Bible itself,” Judy says. “So we’re guessing about spirits, we’re not guessing about God. We believe in God.”

In the end, if you ignore the somewhat muddled philosophies and jury-rigged beliefs, the group really does have one motivating idea. Kim is looking for answers. I don’t know if she’s finding any, but she’s found a group of people that give her something to do after work — breaking her out of a rut that she says started when she finished school. Bobby is looking for evidence that will permit him to believe. He hasn’t found it yet, but he still keeps coming along on investigations, sure that this one could actually provide the concrete solidity he needs. Mel, Krystal, Natasha, and who knows how many others are really just trying to find out what’s out there — and they find something, every investigation, whether the origin of the phenomenon is supernatural or perfectly ordinary.

And when you think about it, that’s pretty much what they’ve done so far. When they piled in and drove away that morning, they weren’t trying desperately to convince anyone they’d encountered the supernatural. They had a few things they were going to check, sure, but that’s just diligence — much like their other investigations. Despite the few “unexplained” occurrences such as the “Lucifer” recording, the group primarily spends its time finding weird stuff and then coming up with normal explanations for it.

Overall, their catalyzing agent is actually the same one that drives the original Scooby gang — getting to the truth. Demystifying the previously inexplicable.

Or, to use Judy’s words, “To help people. So they’re not afraid.”

Running roughshod

#

Note: This story was originally published in the Pacific Northwest Inlander.

15:00, Q1 – 156 yards to go

It’s an inauspicious setting to set a record. At opening kickoff at Joe Albi Stadium, the home team’s student section (Mead), celebrating Senior Night, looks anemic. The visiting team’s side is even worse.

Besides the actual game itself, the running subplot involves Gonzaga Prep’s standout running back Bishop Sankey, who entered the game with 3,782 career rushing yards, 155 behind the all-time Greater Spokane League record of 3,937. One could safely assume that Sankey, averaging 253 yards per game, would be able to surpass it.

Sankey runs it up the middle following a G-Prep interception on the first play of the game, spins to avoid a defender, keeps churning, breaks free and sprints down the field for a 56-yard touchdown.

14:32, Q1 • 100 yards to go

Sankey says he knew about the record before the game, but it wasn’t the most important thing on his mind.

“Each game, I just try to help my team as much as I can,” he says. “I’m just trying to get the longest runs I can, trying to score every time.”

It’s pretty clear to everyone — people in the stands, his coaches on the sidelines, the other team’s defense — that the best way for G-Prep to win is to put the ball in his hands. Even if you know what’s coming (and since Sankey had 41 carries en route to 359 yards, it wasn’t exactly a secret), it’s still really hard to bring him down.

Sankey’s picked up gains of four yards here, six yards there, in between giving the ball to other backs a few times and G-Prep airing it out. His second TD comes after he runs right, head-fakes and dips in and out of the defense before finding the goal line.

1:46, Q1 • 49 yards to go

It’s difficult to ascertain at first glance what exactly makes Sankey such a great runner. He’s fast, but not the fastest; he’s not particularly tall, at 5-foot-9, but he’s solidly built. Really, it’s a combination of things.

“His vision is great, his explosiveness, his power, is phenomenal. He’s got great balance,” says G-Prep’s head coach Dave McKenna. “I mean, everything’s pretty good.”

Sankey keeps whittling down the magic number: pounding it up the middle for 12 yards; dragging a player who’s caught his jersey for five yards before going down. Then, needing 7 yards to break the record, he sees a hole and dives through for an 8-yard gain.

5:21, Q2 • -1 yards to go

The record is announced over the PA system, and the fans give him a standing ovation. McKenna calls a timeout to talk things over.

“I just wanted to congratulate him and tell him it was a huge achievement, but it wasn’t about him — it was about his teammates as well. He understood that, and wanted to get the W,” McKenna says.

Sankey proves it by going out and scoring his third TD of the game on the next play. He got the next two yards, the score and another 201 yards, to boot. G-Prep won the game, and a spot in the playoffs, 35-21.

Even though Sankey’s on the verge of setting more marks, for most rushing yards in a single season at the GSL and state levels, he says he’s focused on something else: next week’s game against Ferris, ranked No. 4 in the state (G-Prep is No. 6). About setting records, he has one philosophy.

“I was just trying to take it each game, each carry at a time,” he says. “If it happens, it happens.”

[Latest technology] is [expensive / confusing / worrisome]

#

Hoo boy! As a [technology writer/reporter without a story idea/old person], I’ve seen my share of changes in life. But [new product] is about to completely alter [area in which new technology will have extremely slight impact].

I was at [public place] the other day when I saw a young person extricate [latest technological obsession] from her purse. Now, I don’t disparage [Generation X or newer] their technological revolutions, but it seems to me that [outdated technology people don’t use as much but is still prevalent] works just fine, for my purposes.

See, my generation, the [****any generation older than X, whose name invariably invokes a more positive connotation than more recent ones], we didn’t need your fancy new [latest technological obsession] for [arduous chore made easier by modern advancements, but still possible to perform “the hard way”]. We were happy as [animals commonly presumed to be in a constant state of rapture] with [old technology] — it may have taken longer, but that was the way we liked it.

You see, with the [fancy new technology], people aren’t able to [incidental advantage of old technology no one noticed/cared about until new technology]. Why, when we wanted to talk to one another, we just [verb for specific type of communication]-ed on our [technology two generations removed; old enough to be nostalgic about, but young enough to masquerade at least a passing interest in technological advancements].

[Obligatory reference to that goddamn Nicholas Carr article/book about about how the Internet is imploding our brains].

I don’t see why young people today feel the need to live their lives so quickly, or expensively. Sometimes, you just need to take the time to [verb indicating the activation of one of the senses] the [pages/roses/other noun that often evokes nostalgia or pleasure]. That’s why I refuse to buy [advanced technology]. I’m perfectly happy with [older technology that’s itself a vast improvement over how things “used to be done”] — the way things used to be [until a newer version of the advanced technology comes out and I can bitch about that while upgrading to the previous generation without seeming hypocritical].

One day, when [generation too young to have a name yet] grows up, they won’t remember the feel of [physical object being replaced by technology], or the joy of browsing [physical store replaced by Amazon, et. al] to spontaneously find [physical object]. Maybe it’s just me, but I don’t think being [verbified formation of name of new technology] necessarily means [pun-ish play on verbified name of thing being replaced by new technology].

See the inspiration for this guide here.

Small ball

#

This piece was originally published in the Pacific Northwest Inlander.

Minor league baseball. Even the name sounds so … inferior.“Minor league” has that connotation in today’s parlance: cut-rate. Second-fiddle.

Not good enough.

Most often, when people refer to something as “minor league,” it’s with the assumption that things aren’t ever going to get any better: a permanent state of mediocrity. When you’re actually referring to minor league baseball, though, there’s another word you should add to the end of the last definition: not good enough yet.

It’s an expression that certainly applies to this year’s Spokane Indians, both as individual players and the team as a whole. The Indians opened their season with a pair of four-game losing streaks split by an 8-1 win against the redundantly named Vancouver Canadians.

The reason for their struggles isn’t readily apparent, at least not after watching just one game. No one’s throwing the ball into the stands instead of hitting the cutoff man; the first baseman isn’t striding out to the batter’s box with his helmet on backwards. The troubles start and end with consistency.

“One night you’ll get pitching, but you don’t get hitting. The next night you’ll get defense, but we don’t get great pitching,” Manager Tim Hulett says. “You’ve got to put those things together.”

The Indians certainly have the roster to contend on any given night. Shortstop Jurickson Profar, a 17-year-old prospect out of Curacao, can hit, field and throw — but then, he wouldn’t be playing professional baseball if he couldn’t do that. Hulett says what sticks out are Profar’s game awareness and highly tuned instincts. Especially when you consider he’s only a teenager.

Big 6-foot-2 third baseman Mike Olt provides some power at the plate, says hitting coach Brian Dayette, and Olt backed that up by knocking in a double and a triple in his first three games. In addition to his offensive prowess, he’s also an asset in the field. “For a big guy, he’s got some great feet, some good hands, and he can make some really good plays,” Hulett says.

Pitching coach Justin Thompson mentions Chad Bell, Zack Osborne and Jimmy Reyes as promising arms to watch. Though the trio has combined for zero wins and two losses thus far, Thompson still sees their upside.

“Once we get those guys stretched out and get their pitch count up, I think we’re going to contend,” says Thompson.

Whether pitcher or position player, the most important thing a minor-league player (assuming there are no gaping flaws in their fundamentals) gets out of a season is experience. The more innings they play, the more chances they have to further their development. But when looking at the feeder-system nature of the minor leagues, there would seem to be two conflicting forces driving a given team: getting wins and developing players.

Hulett doesn’t see it that way. “Our focus is on developing winning players, because I think [winning and developing players] go hand-in-hand,” he says. “It’s hard to develop a player who goes through your whole system [and who] loses at every level and then say, ‘Go win at the big-league level.’”

To a certain extent, using the term “minor league” in a derogatory tone makes sense even in a baseball context: As a whole, the team’s never really going to get all that much better. But that’s only because when the end of the season rolls around, the best players will be moving another rung up the ladder. The worst will find a different career.

And those who need a little more time will be back next year, ready to mix with another crop of guys starting out from scratch. They probably won’t be that good. At least, not yet.

The bonds that restrain us

#
Oh! I have the slipped the surly bonds of Earth — Put out my hand and touched the Face of God
"High Flight," John G. Magee Jr.
There is a fifth dimension beyond that which is known to man. It is a dimension as vast as space and as timeless as infinity. It is the middle ground between light and shadow, between science and superstition, and it lies between the pit of man's fears and the summit of his knowledge. This is the dimension of imagination. It is an area which we call the Twilight Zone.
*The Twilight Zone,* Rod Serling

Space flights didn’t use to have apexes. An apex is the top or highest part of something; in reference to flight, it describes the point where the craft is farthest away from the hard, unforgiving ground below. Airliners have an apex of about 40,000 feet over the earth, zipping along until they come to their point of destination, where they touch gently back down on the runway.

Space was different. When you reached the edge of outer space, it made no more sense to refer to your flight in relation to earth than it does to imagine our galaxy as a geocentric one. What is up when there is no gravity? What is down when you can look up and see the earth?

Even in reference to shuttles, which merely orbit the earth, the word “apex” seems inadequate. Using 5.6 million pounds of thrust, the gleaming white planes blasted into and out of the atmosphere riding the back of a rollicking red rocket en route to low orbit, high orbit or even the moon. For eons, man stared out into space (sometimes thinking it was God, other times thinking it filled with vermicious Knids) and wondered. The shuttle stood as the preeminent example of man matching up against nature. Not defeating it, mind you (see Titanic, The, for reasons why one should not think oneself above Mother Nature). But able to meet it on its own terms, to work together to harness the capability of man and prove ourselves not limited by constraints of time, energy or — finally — gravity.

As Discovery whisked away into the sky over Florida this afternoon on its final voyage, it signaled an end. Not an end to space flight, or technological advances, or (metaphorically or literally) even reaching for the stars. It signaled an end to an age of exploration, of adventure. It’s an end of an era in which we thought there was still more to find out.

Think about it. I’m not claiming that there aren’t still many (innumerable) scientific advances to be made, gadgets to be invented and boundaries to be pushed. But it does seem like the grand experiment, the drive to achieve a symbolic victory for humanity, rather than for country or group, does seem to have reached the end of its line.

Where once Houston and Cape Canaveral stood as the gateways to space, now there are “commercial spaceports” (or at least, very badly thought-out plans for them). We’re not sending up publicly-funded vehicles in order to further scientific exploration, we’re equipping wide-body 747s with harnesses and padding so the obscenely wealthy can feel the effects of barfing on a multiple-hundreds-of-thousands-of-dollars plane ride, in 30-second intervals.

It’s not a symptom, but a side-effect, perhaps, of a society that seems to have turned from once noble — or merely not-shallow — goals. Where once people strove to became famous by displaying a talent or being the best at something, now they strive be famous for … being famous. The superficiality that has infected our culture is seeping into what formerly were the bastions of rationality and solid principles; look no further than Climate-gate, or the fact that controversy constantly swirls around scientific theories manufactured because of “difference of opinions,” or those who insist that the function of government is to lavish money upon the already wealthy at the expense of those who need help the most.

This is, undoubtedly, a rosy-colored view of the causes of history, but it’s a clear-eyed look at the effects. Man untethered himself from the earth at Kitty Hawk, Man turned a weapon of unimaginable destruction at Nagasaki into a source of energy. And man wrenched himself free from terra firma and set himself down on another celestial body, for no other reason than he could.

I do not intend for this to be a eulogy for our collective exploratory nature, though it very well may serve as such. We seem to be set on a track that takes us further and further away from collective achievement and points squarely in the direction of personal accomplishment. This is not a plea to save the space program or pour more money into NASA. I don’t know the feasibility of building new shuttles; I don’t know the future. Nor, at this moment, do I particularly care to contemplate it.

Instead, I sat outside after work last night and looked up at the stars, just imagining what it was like. I sat watching the liftoff on the biggest TV I could find, trying to comprehend what it means to have multiple times the force of gravity strain to keep your body on the earth, but through the collective intelligence of generations rip yourself away.

Those who went before us soared so majestically they rendered the word we use to mean the highest altitude, apex, meaningless. How far up are we now meant to go? I can only hope that we, as a generation, as a society, as a species, follow their example: Don’t worry about how high we can make it. Think instead in terms of how to redefine what it means to fly altogether.

Hello, Seattle

#

Last month, I was pleasantly surprised to discover I had quite a bit of vacation time racked up at work. Once we passed through the busy season, I took the first opportunity to use it. I decided to take an entire week off and go camping - much to the surprise of nearly everyone I told.

Apparently, mine is not an “outdoorsy” dispositon.

Originally, the plan was to head to southern Idaho or Montana. After thinking about it further (and checking the state of my finances), I overruled that decision in favor of a campground we own a lot on in Western Washington. Adjacent to Mt. Pilchuck, itself nestled in the foothills of the Cascades, it seemed like a good place to get away from everything. Plus, I could take two or three days to venture up to Canada and make sure it was still there.

For the better part of four hours, I raced the clouds and the rain across the state. It was only upon arriving in Seattle that I realized they had separated, flanked and beaten me. Outsmarted by the weather yet again.

Thus it was rain, light hail and barely functional windshield wipers that greeted me as I drove into Seattle, Owl City pumping through the speakers. Though it’s only been less than six months since I last laid eyes upon the Emerald City, it seemed like considerably longer. Whenever I used to cross the I-90 bridge, it used to feel like coming home, even though I’ve never lived in Seattle and haven’t even had an address on the west side of the state in five years. Apparently, that’s starting to catch up with me on a psychological level.

There exists in all of us a struggle between two people - the “ideal” self one aspires to be and the person who truly lives at any given moment. It is not a very “solvable” problem, in that the only way to do so is to stop growing as a human being. Sometimes, the difference between the two is vast. Whereas you might have been dreaming all your life of growing up to be a hot-shot lawyer defending the rights of the downtrodden, you may instead find yourself working a low-paying job as a social worker.

There’s nothing inherently wrong or bad about the choices you’ve made in your life; they’re just different than the ones you expected to make. Very rarely do things in life go exactly according to plan, but for most people these slight diversions don’t seem large enough to alter the over-arching narrative they’ve constructed for their life. It’s only a slight hiccup, after all. It’s not until months or years later that everything hits them at once, that they’re not where they expected to be, that the path they previously envisioned laying out before them in fact forked quite some time ago.

My realization was nothing so consequential or monumental as that. But as I drove around Seattle, looking for a place to park and walking around a bit, I realized that my vision of myself was drastically different than the one I pictured in my head.

Ever since I moved to Idaho, I’ve joked that I never actually admit that fact; I always just say I live in Eastern Washington. As with all jokes, there’s a small kernel of truth at the center. In reality, I never even traveled to the eastern half of Washington state until I was 17. Aside from the superficial political difference, the western and eastern halves of the state always seemed to be two completely different places.

The west side was urbane, modern and contemporary. Even if you didn’t live in Seattle, it was the place you identified with - and not just when people asked where you were from (“near Seattle” is the answer given by those who live anywhere north of Vancouver, south of Canada and east of the Cascades. It’s just easier).

The east, by contrast, moved at a slower pace. Though not all farmers, theirs was a simpler way of life, not nearly so crowded or developed. They had Spokane, which was okay as small to medium cities go, but nothing to write home about.

I’ve always considered myself to be “from the west side,” with everything that entails. During college, I always pictured myself moving back at some point after my sojourn out East, picking up exactly where I left off. But as I tried to navigate through the ridiculously narrow roads, try to navigate without being able to see anything more than the streets and the enormous buildings that rose up all around me, I noticed that - at the very least - I am woefully out of practice for west side living.

Yet at the same time, I felt a pull in the opposite direction, the other half of the dichotomy asserting itself. I still missed just walking around in the rain. I still missed being in a city where you could look up and see buildings towering over you. I still missed the culture that comes with having a million people in the same area. But instead of being the primary thoughts I was having, they were instead dancing on the periphery, secondary.

This reprioritization actually came as somewhat of a shock, despite having lived almost 8 months in Coeur d’Alene and the four and a half years prior in the small hamlet of Pullman. Obviously I don’t take this as a sign I’ll settle down in CdA forever or never move back to Western Washington, but it does come as something of a shock to realize fundamental aspects of your character are far different than you had expected.

Helluva way to start a vacation.

Extra-ordinary powers

#

Everyone wants to be special. Everyone wants to have that one thing they’re the best it, what they’re known for - in many cases, what defines them as a person. I am not everyone. I accept the fact that I am good at a lot of things and the best at none just as I accept that I know a little bit about damn near everything, but am an expert in practically nothing.

This scattershot approach to life works for me, and I do not question it. But this is not to say that I am ordinary. Far from it, as everyone who has ever met me (and most people who have only heard of me) will readily tell you. This, however, extends primarily to my towering height, outsized wit, and/or spot-on impression of Sir Lawrence Olivier.

It’s amusing what people will believe when you present them with a secret identity.

That’s right. I - and, I suspect, many others - possess secret superpowers that ordinary mortals would exhibit polite interest learning about. It’s always a struggle, trying to keep the lid on my innate gifts, but I’ve managed to keep them under wraps for quite some time. I only bring them into the open now to encourage others to shed the mask they have been living behind, and reveal their true selves to the world.

It is with this high-minded ideal in mind that I present this list of my Perfectly Ordinary Superpowers. Each POS on its own is powerful and frightening, but you shouldn’t be alarmed. I am no more dangerous than any other 6'7" rage-filled Irish giant you might cross paths with, but keep in mind that if you should wrong me, things could some become very … uncomfortable for you (largely as a result of this first power, but still).

Super Awkward

We’ve all met awkward people before. Whether it’s the painfully cheesy guy who’s convinced he’s the most hilarious thing since sliced bread or simply the loner girl who’s perfected the piercing stare without ever mentioning a word to anyone else, they exist all around us.

Rank amateurs, says I.

I possess the unique ability to turn any situation excruciatingly awkward at the drop of a hat. It can be as simple as dumping Diet Pepsi all over my khakis when I first meet someone, or as silly as saying the wrong thing (“Who could possibly like x?” I boom as part of a joke, to which I invariably get “I like x," seeping acidly from another’s lips in return). Regardless, it as a skill as of yet unmatched by anyone I’ve met. Though, to be fair, were I to square off against another who powers in the same range as mine, it would be a distressing meeting for everyone in the general vicinity.

Super Reflexes

We’re not talking about whacking my knees with tiny rubber hammers. I’m taking reflexes here, people, like hearing your boss walk down the hall to ask you to work over the weekend and being quick enough to duck under your desk and silently roll out the door.

Granted, a vast majority of the situations where I call upon my reflexes are in fact of my own making, but my sloth-like speed and aging bovine-eqsue grace have proven themselves time and time again. Two quick examples:

As I walk down store aisles, there’s a large amount of kinetic energy that needs to be stopped if, say, a small (stupid) child decides to cut in front of me and I’m barely paying attention. I’ve yet to trample any young’uns, but my quick movement usually requires half-throwing myself at shelves. This action causes an equal and opposite reaction of products leaping off the shelves in some sort of retail suicide attempt. On one occasion, I slammed into a shelf of clocks with my back and felt them wobble. I automatically reached my hand up and pinned one against my back in mid-air. holding it there.

An elderly female clerk, who watched the whole thing, stared at me as I tried to catch my breath and feel around to get a good grip on the clock. She scowled at me. “I know it fell, where is it?” she demanded. “Trapped between my hand and my back. Gimme a second,” I responded loftily. Only my deft hands saved that timepiece from shattering on the unclean floor, doomed forever to the “clearance bin” for maladjusted products.

Similarly, during high school I went to a McDonald’s while on a basketball trip. Being a mere (where the value of “mere” is six feet, three inches) freshman at the time, I obediently stood in the back of the line while the older players ordered and received their food. When I finally got mine, the box of fries for some reason stood on its two little “feet” about an inch away from the tray’s left front lip. A senior tried to squeeze down the same narrow aisle as me, so I maneuvered to the side to let her pass. She still accidentally bumped me, causing the fries to tip over and hurtle toward the ground. Without even thinking, I reached with my right hand (hanging onto the tray with my left) over the breadth/depth of the tray, grabbing and arresting the fries mid-fall. I lost a total of three fries that day.

Super Sleep

Technically, this isn’t the ability to sleep so much as the ability to wake, but “Super Awakening” just doesn’t have the same ring. Besides, my powers, my names.

I have no practical need for an alarm clock. I currently roll out of bed with nary but my cell phone to wake me, but even its (hilarious) ringtone alarm remains largely superfluous, serving only to elicit small chuckle as I roll over to turn it off, completely awake.

That’s right. I don’t need technology to tell me when it’s time to get up. My body takes care of that on its own. Unless I’m incapacitated (read: stone drunk) or already sleep-deprived the night before, I can wake up within five minutes of whatever time I want to. Suck it, Circadian rhythms. Your internal clock has nothing on mine. And we’re not even talking about waking up an hour early and having to keep checking the time, or even doing it on a daily basis at the exact same time. I can set my internal alarm early, late - it matters not. I may not be the most chipper person in the world, but I rather suspect that has more to do with my refusal to drink coffee than anything else.

Consider yourself warned, citizens. Prior knowledge of the existence of my superpowers implies a waiver on your part regarding any damages you may sustain from my exercise of them. One day, you just might wake up … but I’ll already be ready.

Nonfiction

#

Once six o’clock — my tenth hour of work — rolled around, I figured it was okay to take a call. It wasn’t as if work was particularly difficult, being my first day and all, or even that I was busy. The last hour and half or so had been spent waiting on someone else to finish up. Until that point, I felt somewhat uncomfortable taking a personal call on the job. Now? Probably in the clear.

Around noon, I had checked Facebook and saw a note from an old high school friend who I hadn’t spoken to in years. Under the subject heading, “Hey…”, the rather cryptic message read, “You should call me today. It’s important. Anytime after 1:00. My number is (###) ###-####.”

With the office to myself, I decided to give him a call. I really couldn’t fathom the reason he wanted me to call; I assumed there was some sort of party being planned, or some celebration in the offing.

When he picked up, the first thing he asked me was if I had heard about Rachel. I wasn’t quite sure what he meant. We were the same age, having attended the same school from kindergarten right up through college. We were both in band, we had a number of activities and classes that overlapped, and I was fairly certain I had seen her at a barbecue two days before graduating college, about three months prior.

“No,” I replied honestly. I hadn’t really heard anything beyond the vagaries absorbed through Facebook. Things like extracurricular activities, internships and the like. When I heard who the call was in reference to, I kind of assumed she had done something major. Maybe she won some national award? Unsure as to why this required informing me, I really wasn’t sure what to expect. I certainly wasn’t ready to hear the news.

“Dead?…” I stammered. “How? What happened?” My mind raced through any number of scenarios: car crashes, plane crashes, muggings …

“She killed herself.”

“Oh.”

Several seconds passed in silence.

“Wow.”

“Yeah.”

“Damn.”

“Yeah.”

He related how our band director heard the news, then instructed old students in the area to get ahold of those who might not have heard. Apparently, there was to be a memorial service held on Friday or Saturday. Would I be able to make it?

It was Tuesday. Literally my first week, my first day on the job. I hadn’t even filled out my W-4 yet. I had just finished getting my new apartment ready, and hadn’t even gotten my furniture out of storage. I was sleeping on an air mattress on the floor of my living room. Not to mention I now lived in another state, an additional 90 miles on top of the 250 miles I put between me and my hometown during college.

“If it’s on Saturday, I’ll absolutely be there. I probably can’t if it’s on Friday.”

We caught up a bit, then, about where our lives had taken us after high school, but I wasn’t paying a whole lot of attention. My mind just kept repeating what he had said, over and over. Finally, after wishing each other well, we hung up.

Rachel and I had our share of run-ins over the years. It wasn’t adversarial or anything like that. But from a very young age, both of us were culled from the herd as “smart kids.” Smart kids, in a school district like ours, were expected to do a lot. We were both taken out of classes for the “gifted” program in elementary school, sat next to each other in the “honors” classes in middle school, and frequented the same courses a year ahead of when we were supposed to in high school.

Smart kids aren’t the ones who wind up dead before they hit 30 – at least, not without a good reason. We can be victims of violent crime, sure. But it’s the other people in high school, the ones who don’t go anywhere, they’re the ones you read about in the newspaper. The obituary section is for the kid who never cared, who never tried; he’s the one who was caught stalking and trying to rape a teenager not a year and half after he graduated high school.

Not us.

I recalled a recognition luncheon, for a scholarship we both received. I hadn’t seen her there, but apparently my father ran into her father at some point, and they spoke. My dad told me that Rachel and her sister had apparently talked about me quite a bit. We were always at the head of the class, and whenever I would get a higher score on a test, they would return home and complain about it. I had never known this, but I always felt a certain sense of rivalry with them—and I lost just as often as I won.

I really didn’t know what to do at that point. I just stood in my office and stared at the Starbucks across the street. Standing 350 miles away from where everything was happening, where I felt I should be, I definitely felt lost.

My fingers played with my phone. I had to call someone, find someone I could share the news with. Problem was, I didn’t really keep in touch with anyone from high school. I kept in regular contact with two people: one I worked with, Dale, and one I went to school with, Mallory. Dale lived 15 miles away from my hometown; and besides, he was a guy—not the sort of person you talk to about these things. Mallory moved around a lot as a kid, only settling in Arlington her sophomore year. She didn’t really have the same connection with everyone, and talked to even fewer of them than I did.

I called Mallory.

I told her the news rather abruptly, and she was understandably shocked. She was probably more worried about me, as I kept stuttering, rushing through my sentences and trailing off. I felt bad about just dumping it on her without pretense, but how do you prepare someone for that sort of thing? “Hey, so you know how Michael Jackson died? Well, you’re never gonna believe this, but …”

There didn’t seem to be an appropriate segue.

We talked about how strange it was, how Rachel was the last person you’d ever expect to do something like that. I didn’t know much about her situation. I knew she had graduated and landed a pretty swank internship over the summer. I assumed she was still with the company, or looking for something else to do. Having just extricated myself from the pits of unemployment, I knew how difficult such a process could be, but it didn’t seem that overwhelming.

We talked for about 45 minutes, and she graciously told me I could crash at her place on Friday night if there was going to be a service on Saturday. She made me promise to keep in touch with her during the week, and we said good-bye.

I left work about half an hour later and walked to my apartment. I checked the mail, took off my shoes, sat down in front of my computer, and generally went about my business.

But in the back of my mind, thoughts were still festering. They strayed from the somber to the downright petty. I felt curiosity about what caused her to do it. Sadness and grief for Rachel’s family, who I didn’t know particularly well but had run into over the years. I particularly sympathized for Rachel’s twin sister—I couldn’t fathom how she felt. I wondered what was going to happen if I went to the funeral, and how I could possibly afford another trip to the Westside—considering I hadn’t gotten paid and had just finished buying everything for my new apartment.

As I struggled to force myself to fall asleep, my main focus was on the line of questioning Mallory kept up during our conversation.

“Why are you going to the service?” she asked. It wasn’t demanding, she honestly didn’t know why I would drive the six-plus hours just to attend a service for someone who I wasn’t very close to.

I started to speak, but hesitated. Truth be told, my reaction had been more gut instinct than anything else. No long-term planning guided my decision. I just said I would go.

“I feel a sense of obligation,” I finally decided upon.

“Obligation? Why would you be obligated to go to a funeral? It’s not like anyone’s going to look down on you for not making the trip,” she replied with infuriating logic.

“It’s not an obligation to them,” I answered. “It’s not for the people who are going to attend, it’s not even for the family… It’s for her. When you go to school with someone for that long, when you’re around them that much… You just have to, you know?”

She gave what can only be described as a verbal nod of assent, clearly unconvinced.

“What’s your earliest memory?” I asked.

“I don’t know. Probably something with my family, when I was a real little kid. Why?” she responded.

“I guess it kind of explains why I’m going,” I said. “My earliest memory, the very first thing I can remember, involves Rachel.”

“ It was in second grade, and she was wearing her glasses to school for the very first time. I can see her clearly, sitting there in Mrs. Webb’s class, and she is just bawling because she’s afraid she’s going to be teased.”

I fell silent for a moment.

“That’s why I feel obligated to go. My very first memory includes her. A lot of my high school memories from band include her. I even remember in middle school honors, we held weekly competitions where the winner would get to move either their or someone else’s seat, and one week I moved her. I don’t remember why, I don’t even remember where … but I know it was her.”

“Okay,” Mallory said after a pause. “That kinda makes sense.”

“Yeah,” I said. Not really, I thought.

They planned the service to be held in the performing arts center at the high school. This was actually going to be my first trip back to my hometown in at least three years, and the first time since the month after graduation I was going to see a sizable number of people I knew.

In another of many firsts, it was the first time I had seen the performing arts center, as it was built a year or two after I graduated. When I walked in the front doors, the first two people I saw were signing the guest book. One was my best friend throughout most of high school, with whom I had a falling-out with during junior year. The other was a mutual female friend.

I actually didn’t recognize him. I thought I knew who he was, but enough doubt remained in my mind to prevent initiating conversation for fear of being mistaken. It turned out not to matter, as the girl embraced me as soon as she saw me, calling me by a nickname I hadn’t heard in four and a half years.

As I made my way into the theater (and yes, it felt very strange walking into a theater for a memorial service), I saw grown-up versions of the kids I had known. Some of them were instantly recognizable, though only in two cases had they not aged a day. Others might as well have been ethereal phantoms from the 19th century, for all the familiar they seemed.

The crowd only half-filled the auditorium, with a clear physical delineation between those who knew her, and those who knew of her. I sat with the latter group, farther away from the stage.

Whether for good or bad, this was not the first memorial service I attended for a high school classmate who committed suicide. A boy involved in my youth group had done the same thing during my freshman year, so I felt oddly prepared for the service.

The service part was a bit strange, at least to me. I had never attended a Catholic memorial service, so I was a little overwhelmed by the iconography and rituals. Other than that, it seemed a normal (if such things can have a “normal”) memorial. The priest—for whatever reason—told us Rachel had been studying for her master’s at UW, and simply become overwhelmed by the pressures of life.

I was definitely not expecting the stories that came when they opened up the mic to the audience to share memories. The family went first, describing intimate moments most of us in the crowd were not privy to, but enjoyed for the love and warmth contained in the stories.

Then her kindergarten teacher stood up, describing how — even from that young age — she was bright, caring, and full of life. I was mildly surprised by this, as the woman who stood up was my kindergarten teacher as well. Apparently, our stories had been more intertwined than I thought.

Following that, a number of people affiliated with the college we both attended stood up and spoke of their remembrances. She had been a counselor who gave freshman tours, and a boy from her group related how personable she was. Another—who wasn’t even in her group—confirmed this. Members of the various student organizations she was involved in also spoke out, praising in her in the kindest possible terms.

By no means was I surprised that people would remember her in such a way, as it jibed perfectly with my own memories. What seemed strange about the whole thing was simply how much of her life had taken place after high school. A vast majority of the people in the audience knew her from her years in Arlington, yet there we were, hearing stories regarding things we never even thought about. Even I, who spent an additional four years at the same college, two of those at the student newspaper, didn’t know about them. Sure, some of the events sounded familiar — I knew what the tour group was, I knew the various organizations — but it still felt like hearing stories about a stranger.

As I imagine is the case with everyone, I had defined her in relationship to my own life. I don’t think this a terribly foreign concept. It’s a bit like playing peek-a-boo with a small child — once something’s gone out of their vision, they forget about it. In the same way, as people pass in and out of our lives, we are able to write their background stories only insofar as we know them. If you haven’t seen someone for a year, you can still pick up a friendship. But there are so many things, so many experiences they lived through, that you’ll never be able to truly comprehend. You’re left, instead, with a partial portrait — and I would imagine not a great many of them are ever completed.

Following the service, I reunited with a number of my favorite teachers and people from high school. A group of us hung out for a few hours, just as we used to. Then, just as I had driven back into my past, it was time to strike out again for the present.

Rachel still pops up in my thoughts every so often, though not nearly as much now as when it first happened. I’ll see a death notice while reading the news online, and that will get me thinking. Or her profile will pop in the “Mutual Friends” list when I’m randomly surfing Faceboook—that’s jarring, but not nearly as bad as the “you should reconnect” notifications that scared the absolute hell out of me.

But the strangest effect of all of this has to do with a song I hadn’t listened to in years. After getting my whole apartment set up, I went through and re-filled my iPod with a random assortment of music. While at work one day, about a week after the service, Vitamin C’s “Graduation (Friends Forever)” started to play. Even though the song was released in 2000, it nonetheless managed to ingrain itself as “the song” for every class from 2000-2005.

The opening lyrics go, “And so we talked all night about the rest of our lives/Where we’re gonna be when we turn 25/I keep thinking times will never change/Keep on thinking things will always be the same/But when we leave this year we won’t be coming back.”

The song doesn’t have the most beautiful melody. The lyrics are not terribly inspired. But for whatever reason, when I heard those words, I flat-out lost it.

I hurried to the bathroom, tears in my eyes, and haven’t been able to listen to the song since. I’m not sure I can. It’s the line, “Where we’re gonna be when we turn 25,” that gets me. When I hear it, I’m reminded of the simple but obvious fact that she’s not going to turn 25. The thought that, statistically, there will be probably others in my class who won’t turn 25 — maybe even me.

The second is stranger, though this time it has nothing to do with ephemeral pop culture. While it still holds true that I generally define the people I’ve known in terms of their entry into my consciousness, I also find myself spending greater amounts of times actively seeking them out. Where I previously just let those people go until they organically sprang back into my life (which, being 200+ miles away from most of them, didn’t happen often), I now go out of my way to at least think about them, check up on Facebook and see what they’re doing. Even though I do not see them any more often than before, their lives seem so much more relevant to me now, and thus their link more tangible.

I cannot, unfortunately, repeat the clichéd idea of the dead live on in the hearts of the living. I believe this sentiment denigrates the sanctity of death, shielding us from its permanence and functioning as an emotional crutch that allows denial and repression to linger on and strangle those left behind. Dead people have, in every respect, passed on. That does not, however, mean they did not have an impact while they were alive. What I will take away from Rachel are two things: the way in which my interactions with her shaped me (for the better, in every case I can think of), and the ability to pierce what previously seemed an impenetrable veil between the present and the past. I find myself much better able to comprehend others in their own right, rather than the imperfect refraction I saw when gazing through my personal perceptual prism.

Even though “Graduation” is skipped when I hit shuffle and barred from my iPod playlist, every time I hear it — or even when I’m reminded of it — I think about her, and what the entire experience meant to me. And once I’m ready and capable of hearing it without losing control, I hope it will signify a profound shift in my reaching out toward those friends who might once have fallen by the wayside.

One year in

#

As I sat down in the dark, empty newsroom, I was suddenly hit by a realization. I wasn’t going to blog about it, but I figure you’ve got to have some milestones in life.

As of right now, I will be starting on my second year of employment at the Evergreen.

Wow, it feels really weird to say that. I’m honestly shocked I’m still working here. Last summer, I was only working one job (computer repair, 20 hours a week), and was getting really bored. I saw a house ad looking for columnists, and seeing as how I love the sound of my own voice (figuratively, of course [or should I say, literarily]), I ventured down to the Murrow dungeon and grabbed an application.

It wasn’t the first time I considered working for the Evergreen (I had picked an app that spring but never bothered to fill it out), but it was the first time I actually turned my application in. I filled it out and turned it in on June 17th, and promptly thought nothing else about it.

On the 19th, I got a call from Kellie, the opinion editor at the time. She said to come on in for an interview on the 20th (a Wednesday). I was somewhat surprised it was so quick, but I figured I should have a sample ready to show her in case she wanted to see how I wrote. I did some research, looked up some quotes about WSU in the press recently, and wrote up a quick column.

When I went in, Kellie went over the basics with me, told me I was hired and asked when I could have my first column in by. It literally took about that long. I showed her my sample column, to which she made a few suggestions/edits and printed it. I remember walking between Murrow East & West staring at my watch around 4:30. Damn, I thought, I’m gonna be in the newspaper. And I didn’t have to get arrested or anything.

I didn’t even know columnists got paid at that point. I was perfectly willing to do it for funsies so I wouldn’t be so bored. I wrote about half a dozen columns, submitted my name at the end of the summer as someone willing to do it again in the fall, and dismissed it when I didn’t hear anything.

Then, on the Tuesday of Work Week (the week before school starts when all the sororities and fraternities clean/repair their houses), I got a call on my phone. It was Lisa, telling me the Evergreen needed an opinion editor and someone (I’m assuming it was Mel) had mentioned me as someone who was capable of handling it (translation to my ears: Your copy didn’t require too much work during the summer … but I showed them!).

I called her back and was invited to visit the newsroom the next day.

Well, I dutifully turned up and was immediately intimidated by all the people who were busily and purposefully going about their work. Clearly, these were people who knew what the hell they were doing. Being far too nervous to speak, I was lucky Lisa happened to be coming out of her office and introduced herself to me. She (along with Tor) pulled me into the office and closed the door, with Lisa behind the desk and Tor seated in the pink comfy chair. I don’t think Victor said much beyond quizzing me on some InDesign stuff, and it mostly consisted of Lisa couching everything in terms of language that implied I was taking the job, or else (it was a masterful job of persuasion). That was pretty much it. The next thing I knew Lisa led me outside the office, announced I was the opinion editor (I specifically remember Kaci yelling, “Finally!” or “Thank God!"), and off I went.

That was 10 months ago.

I still feel a little foolish typing in “deeditor” at the login screen every day, but I’ve mostly gotten over it. And … I’m in charge? I still haven’t stopped looking over at the editor’s office, expecting Brian or Lisa or Tor or somebody to walk out and tell me what to do or pointing out how to do something better. It’s always a bit of a jolt to realize how far away Tacoma, Spokane and the ‘Couv really are.

I won’t say every day working at the Ev is fun, because God knows there are those ridiculously frustrating days that make you feel all stabby. But I almost always feel better walking into the newsroom than I do any place else, and there aren’t many other locales that I can say that about.

And even though this summer’s provided its own set of ridiculous happenstance, I still feel we’re able to take whatever comes at us and keep on rolling. As long as there’s a passionate core group, this paper’s never going under. Thank god for the summer staff, by the way. They freaking rock, even if I never bother to tell them (because there’s always more work to be done).

I didn’t ever think I’d end up working as an editor (hell, I barely knew what an editor did) when I first applied for the Ev, and I certainly didn’t think I’d ever move out of opinion. Regardless, I can confidently say I’ve never once regretted any decision I made regarding working here.

Anyway, I wanted to make sure and thank everybody who helped me out along the way. Of course, by those people I mean all the other editors I’ve worked with (even including some who I never served under/with, but now wish I had) and even some of my writers (shudder), all of whom have helped me to get better at this thing as I go along, and I only hope I can help carry on the tradition. I’d list everybody individually, but the worst thing I can imagine is forgetting someone, so it’s gotta be a group thang.

In short, it’s been quite an eventful year for me. But as the saying goes, tomorrow’s another day. And damn, the day after that’s Sunday, which means another paper.

Better get to work.

How Sweet it is

#

At 4:27 p.m., Pullman shuts down. Classes are canceled, businesses will close and all eyes will be on the boys in red as they take on the boys in baby blue. Families will huddle around their televisions, office workers will huddle around their computer screens and thousands will stream into Beasley Coliseum to cheer on the Cougs with one voice.

At 4:27 p.m. in Seattle, a businessman in a sharply pressed suit will instruct his secretary he’s leaving early, pick up the Cougar hat he’s worn every day for the past 20 years from the coat rack and head on down to the nearest sports bar (he is a Cougar, after all). Once he walks in the door his eyes will be greeted with a sea of crimson, but he’ll walk right over to the first purple coat he sees and sit down next to him. Their only exchange will be mutual nods, but it doesn’t matter: Everyone’s rooting for the same team today.

At 5:27 p.m. in Phoenix, at 6:27 p.m. in Kansas and at 7:27 p.m. in New York City, Cougars will come out of the woodwork. Proudly displaying their crimson and gray, they’ll be keeping a sharp eye out all day long for fellow Cougs, and at the appointed hour they will gather ‘round CBS to watch a truly historic Cougar sports moment unfold.

At this point, it almost doesn’t even matter the Tar Heels are 3:1 odds to win the whole thing. Washington State, by contrast, is at 45:1.

But really, I think everyone’s pretty satisfied to get here. Anything after this is almost gratis. Look how far this team has come: 12-15 in 2004, 11-16 in 2005 to 26-8 the last two years, with a shot at win #27. Not to mention senior center Robbie Cowgill’s tie in the ASWSU election for District 7 senator. At this point, Glenn Johnson should probably watch his back; if Tony Bennett (or even Taylor Rochestie for that matter) ever gets it in his mind to run for mayor, I think he’d have a decent shot.

At this point, you can say only one thing to Weaver, Cowgill and Low: You did it. You’ve turned around a WSU program, long the laughingstock of the league, and brought it back to respectability. The Sweet 16 establishes the team as one of the truly elite in the nation. You don’t owe anything to the university, the fans, or indeed anyone but yourselves. Just know the hearts, minds and throats of thousands of Cougar fans all around the world will be following the ecstasy and misery that can only come from an NCAA tourney game.

A special note to Aron Baynes: It’s time now. It’s time to shed the immature, pouting game you’ve lapsed into for the past two seasons. Every time we see flashes of brilliance from you, it’s made all the worse when you revert back to hack-and-slash ticky-tack fouls. More than any other player on the court, you will decide this game. If everyone’s clicking but you, the Cougars cannot win. If you play the same stingy defense, do the fundamental things (boxing out, rebounding) and limit your fouls the way you have in the first two games, you will decide the outcome of this game. Hell, if you can do that, next year the feared center everyone worries about won’t be Tyler Hansborough or someone named Lopez; they’ll be worried about Aron Baynes.

There’s really nothing much left to say. For two hours, Cougar fans will experience something I would doubt many of them (everyone younger than 67) will be familiar with. They’ll cheer with every 3-pointer and grimace with actual physical pain at every failed defensive stop, right alongside the players in Charlotte. But when it’s all said and done, regardless of the outcome, WSU and yes the entire state of Washington, will stand proud, united.

Go Cougs.

While you were away

#

It’s always odd, walking the streets at night when everyone’s away. Without exception, by the end of the weekend before a break Pullman empties and I am left to fend for myself among the other rejects and townies. 2 a.m. is a sufficiently creepy time in and of itself. Now, it’s literally quiet enough to hear the buzzing of the electric lights in their faux-Victorian lampposts.

As I pad down the silent streets, a truly eerie sense surrounds me. On any normal night I’d be met by a motley assortment of groups and individuals in various stages of drunkenness. These encounters are always touchy, as inebriated Cougars range the full emotion gamut from happy to out-and-out vituperation.

This night is different. Though not quite empty, College Hill is for the most part devoid of humanity (in a literal sense as opposed to the usual metaphorical sense), making for an unusually uninterrupted walk. Somewhere around one of the new apartment complexes, I stumbled across a couple.

The male, anxious and most likely horny, is furiously attempting to work the lock on the door to his house, where presumably he will enjoin the female in relations - this is his plan at least. By contrast, the female is either stalling or unwilling to go inside, and is instead twirling around on the sidewalk singing various selections from The Wizard of Oz, if somewhat brokenly.

As I inch closer, she spies and points at me, saying “this girl knows what I’m talking about!” It’s unclear whether she’s saying it for the male’s benefit, mine or merely her own. She begins to sing again, and (somewhat enjoying silliness) I join her, though softly. She laughs, but I’m not entirely sure she even noticed.

She walks over to me, arm outstretched. “Do you want to be my scarecrow?” she asks with a smile that has just the faintest hint of sadness. She has to repeat it twice before I actually understand what she said. Looking into those dovish (albeit drunk) blue eyes, I don’t really feel as if I have a choice.

“Of course,” I reply, taking her arm. We skip off down the street, singing “Because, because, because, because …. because of the wonderful things he does,” laughing the whole way.

When we’ve gone about half a block, she collapses into giggles and pulls her arm away. After regaining her composure, she walks back over to me with a much happier smile on her face. She thanks me, and I attempt to shake her hand. She does so, then reconsiders and gives me a hug.

“You’re the best scarecrow ever,” she concludes.

I’ll probably never see her again, and the minimal impression she made on me is probably even less than the impression I made on her, at least on a personal level.

But then again, that’s not really the point, is it?