April 2021

Context And Immersion: 1 of N

I got to the cigar lounge today, ate a pretzel from the gas station (shoot me, they’re delicious) and YET AGAIN didn’t know what, if anything I was going to write about. I had it in my head that I was actually going to work on a programming project that’s been kicking around in my head. But once I set up I was still undecided.

I pulled up youtube and tried to decide between my writing playlist and my programming playlist.

I opened a new document and, after diddling around a bit I started typing and before too long my brain was turned, presumably in no small part by my soundtrack, to thoughts of programming style and technique. I got an image in my head of the past and just started writing about that.

Fair enough.

Music (or, well, a soundtrack) while writing serves a couple/few purposes, not the least of which is to drown out my surroundings. That’s less important at home than it is in the cigar lounge, to be sure. But it still serves the purpose. The strange creaks and machine noises inside the house are about the same as living in the three-dimensional middle of an apartment building in amplitude and variety. Add the birds and the rain and, pleasant as it is, they all serve as a distraction from my already tenuous ability to focus at ALL.

When I’m writing code, fiction, or journaling, I need to tune my surroundings as much as I reasonably can to the…mental environment of what I’m trying to produce. In the case of programming it’s just a general silence, some simple repetative music that can syphon off some of the brain cycles that seem to deem it their responsibility to look for and seize on to distractions.

It’s really amazing to me how much that kind of mental context, applied from outside can change not only the style but even the topic of my work.


A soundtrack really sets my mental context in a variety of ways:

  • It sets up the ritual of work:
  • – Picking a soundtrack and hitting ‘play’ is the beginning of work for me. Aside from the content of what it is I’m listening to or the type of work I’m doing, the act itself is the intentional beginning of the session. I pause over that ‘play’ button more than a little sometimes when I’m just not ready to begin. When I sit down at the cigar lounge even I put my headphones in and tend to dick around on twitter for a bit before I get rolling and, as I said above, I vascilate somewhat over what it is I’m going to work on before I settle in to something.
  • – As a function of habit, the sound itself is the mental cue that’s now been burned more or less into something akin to muscle memory that gets my brain going on a task. Even when I’m trying out a new track or compilation, my brain knows what’s going on when I start listening to a certain kind of music.
  • It sets my mind to the project at hand:
  • – One level deeper than that it does more or less the same thing to my headspace. Pulling up nearly anything in my programming playlist (which tends to be full of several-hour compilations of mixed ambient tracks of one kind or another) has approximately the same effect as pulling out all my project notes, spreading them out on the desk, and giving them a good review. My brain snaps in to the context of the project. Interesting though that I hadn’t thought of it that way ’til I typed that. How much better would that context be set if I LITERALLY brought out my project notes and laid them out in addition to setting up the mental cue through music?


Reading, I find, does something similar. It’s VERY rare (usually in cases only of literary fiction) that I can read something to which my mind does not react with a flurry of ideas of things to either write about or work on. Take yesterday’s example of “The Mental Game Of Writing” for instance. Now that’s a bit of a gimme as it’s ABOUT performing the task and how to wrangle your mind and emotions into the right space for writing, setting up one (of a preumed infinite) way of approaching the task of working on a writing project and “being a writer.”

It’s as true of fiction as it is of instructional and informational texts. I mean sure, reading a book on self-improvement, trading or programming is the mental equivalent of adding tools to my toolbox and I’m immediately trying to figure out how best to USE those tools.

Fiction, or other narrative, usually has a similar effect: It becomes something I’m immersed in and if it has any relation to something I’m working on my brain starts almost immediately trying to draw from it and map ideas into my own work.

I’m not…real intentional about taking advantage of this. But it occurs to me that I should be. Maybe a more concerted effort to read with an ideas notebook handy to write things down that tickle my imagination, in contrast to a Commonplace Book, which is for capturing ideas that strike me independent of their utility elsewhere. I suppose it might be like a lyricist’s notebook of ideas.

Again, something I’m going to have to give some thought to.


When I started this I was thinking in terms of background music. But my mind has wandered around a bit and I think there’s another piece.

Physical context makes of course just as much difference. My morning habit is to pour myself out of bed and sorta shuffle in to my office where I turn on the computer before heading to the bathroom for a shower, then I come back and sit down and screw around a bit because I don’t, by default, have any of the aforementioned contextual cues in place.

Well…my washer and dryer are down in the basement/workshop.

Whenever I go downstairs to get my laundry I can’t help but stop and look around my shop and again, even though it’s a disaster, my brain is flooded, an absolute victim of the physical context of being in the shop. All the furniture, jig, blacksmithing, welding, and other projects that have been kicking around in my head for the last ten or twenty years come straight to the front of my mind.

It’s clear to me, writing this, that there’s some really awesome opportunities that I haven’t taken advantage of yet.

But right now I’m torn between neatening this up a bit and heading over because Bible Study starts in a bit and people are starting to drift in.

So I’m just going to hit post and call this “1 of N” and continue it when I get home.


Teddy Bear Programming

[Note: This is going to diverge into the world of programmers. But stick with it. I’m not going to get super technical and I think there’s something there for the civilians.]

A long long time ago in a galaxy far far away I was a Wall Street programmer for a firm that spent a LOT of money and energy on training its developers. Every year they’d get a consultant in for a week to sit and meet with developers in large groups then do one on one sessions with them to train them up in Extreme Programming, a subclass of the iterative development methodologies known by their umbrella term of “Agile Development.”

XP as it’s colloquially known, is comprised of a bunch of small practices that lead the development and project stakeholders through an iterative process of “something close to organically” building software with minimal surprises.

For a “normal” developer these practices represent such a massive culture shift that it’s a truly Herculean, if not Sisyphean, task to actually get these things to stick. In my brief experience it’s effectively impossible. But SOME programmers pick up SOME of the practices, take them back to their desks and hang on to them when the afterglow of hanging out with Really Smart People fades.

ONE of these practices is “Pair Programming.”

Pair Programming is exactly what it sounds like: When working, work with a partner at the same computer. DO this for a few hours at a time, then rotate partners. Now this flies in the face of the core reason most programmers are programmers. It’s awful.

It was my first year at this firm (of…I think 4) and Mike Hill was the one who came in for a week. We were sitting in a conference room, about 15 of us and he was going on about Pair Programming and how they developed and dialed it in.

I’m not going to try and quote him because it’s about 14 years ago and there’s a zero percent chance I’m going to get even close. BUT what he said was that they experimented with time spans for optimum “session lengths” that what they found was that, down to about an hour and a half or so, the SHORTER the duration of the sessions the more productive people were.

What they finally realized and, like quite a lot of what Mike Hill had to say, just hit my head like a tuning fork was that it wasn’t so much the work itself that caused the lion’s share of the benefit (though the accountability of sharing the experience by working very closely with someone else was critical) came from the context switching itself.

Imagine you’re working on SOMEthing creative, doesn’t matter what at all, in this style.

You get in to work, slate out your tasks for the day and you’re joined by someone else. Maybe you’re playing host, maybe they are. Six of one. You have to describe to that person exactly what’s going on, what has been going on, and what you’re planning on accomplishing.

The very act of having that discussion forces you to share that knowledge with someone else, WHICH in turn requires you go through the act of clarifying it for yourself as well.

So you clearly define the problems you’re working on and the steps you intend to take to solve them in discussion with someone who’s going to have their own take on the situation.

Now, an hour and a half goes by and the bell rings (or whatever) and you rotate. Whatever you’ve accomplished and your new position in the problem you now have to discuss with someone else.

Over (very little) time this keeps you from getting too far afield and keeps everybody more or less on the same evolving page as you work.

Now by the end of the day having bopped around the office all day like this you know exactly what everybody is working on and how they’re doing it.

It’s amazing, prevents the siloing of work and keeps fresh ideas flowing back and forth between all the little sub-projects.

I’d love to apply this to my personal creative pursuits and, in some small regard that’s what I’m doing here, constraining myself to accountability by forcing myself to describe what my brain is up to.

But to really do that properly you have to let go of ownership of the projects entirely and just share them across a universe of people with whom you are participating in the endeavor.

That’s…not gonna work for me. I’m not bringing people in or letting go of ownership of my creative pursuits. That might be a strategic failure, as I’m sure I could get a tremendous amount of work done in a tiny fraction of the time if I did. But no, not happening. Yeah I may condescend to sub-contract out work. But there’s no room in my life for that kind of partnering.

Although…now that I think that through another step or two, I COULD see the benefits of working with someone else on our individual projects, maintaining ownership, and throwing my effort in on a small collective of people to get them all done. A kind of Master Mind Programming group. Huh. That might bear thinking on some.

Instead what I do is talk to myself as if I’m having a conversation with someone else. I have white boards and black boards in my kitchen and office (and I’m building more because I just don’t have enough) and I walk around pretending I’m describing what I’m working on to an audience that’s…just not there.

I’m convinced my neighbors think I have someone shackled to a wall that they can’t see.

It’s a tremendously useful practice. I try to remind myself whenever I get stuck on a problem, to push the chair back and just start talking about what it is I’m trying to do, what I’m running up against and why it’s a problem and…inevitably my brain fills in the other half of the conversation with something I hadn’t thought of.

It’s pretty freaky.

But it works. The trick is figuring out how to make it work better.

The Mental Game Of The Mental Game Of Writing

So this is funny. I’ve been a bit tough getting going today so in a huff I eventually just went to my library, spent ten minutes agonizing over what to read, then picked up “The Mental Game Of Writing” by James Scott Bell. It’s a little volume, ’bout a quarter inch thick.

It falls into this strange category of “I’ve no memory of reading this but…I’ve got a good feeling about it” which USUALLY means I’ve read it entirely. That used to happen to me a lot with programming books. I’d be standing in a Barnes & Noble in Manhattan (don’t get me started about the shitty selections in the ones down here in Tennessee. I swear one day I’m just going to spend 4 days in New York JUST to spend them in the flagship store in Union Square and the uptown one with all the great financial programming books) and I’d pick up some arcane programming tome and I’d immediately “have a great feeling about it” only to buy it, bring it home, and put it…right next to the copy I’d bought a few months earlier. Ah well.

I had a 3×5 card tucked in as a bookmark at about page 35 or so, but as I’d no memory of the thing I just pulled it, stuffed it in the back of the book and started from the beginning.

It’s a gorgeous day out and it was raining. Perfect reading weather (he writes.)

I cracked the book open and got a few pages in before realizing that I had…underlines and margin notes in the first few pages. Huh. Well, okay. I guess that bookmark was actually in there for a reason.

By the time I was a couple dozen pages in I was getting nine kinds of fired up and was frustrated that I’d sat down to read, feeling instead that I should get to the task of putting SOMEthing down on “paper.”

I don’t want to do a treatment of the book here. Maybe I’ll do a book-report post on it at some point. It’s pretty helpful, on point, and information dense. But that wasn’t my point. I just thought it was hilarious that, at page 35 or so, I took the 3×5 card out of the back, slid it in and…before closing it I thumbed through the rest.

Yeah I’d scribbled notes and underlines throughout the whole thing. But the most recent time I’d gotten inspired by the reading and abandoned it a few dozen pages in to go actually PUT some words down.

At the exact same point in the book that I did just now. (And no, THIS doesn’t count. This was just a twitter thread that was getting a bit windy so I decided to write it all out and post it instead.)

Things are funny.

EDIT: 20 minutes later. I’ve forgotten ENTIRELY what I was fired up about, what I was going to write about and everything about it, and I’ve gotten sucked back in to the memosphere, posting goofy pictures of inspirational quotes on backgrounds of people drinking, because that shit is hilarious.

BUT, unwilling to accept defeat I’m taking that damned book and marching BACK outside and I’m going to start from the beginning again…and take some notes.

Effusive Praise

Before you read this (because I know WHO is going to read this) understand that I understand this: This is my problem. It’s not your problem. It’s something I’m working on unravelling.

I’m gonna go with: This is just how I was raised.

I am very suspicious of praise. It never sits well with me.

There are a couple reasons I suppose. Either:

  • I don’t believe it’s accurate.
  • I don’t believe it’s honest.

Or, you know, both. They’ve got about 80% overlap.

The third possibility, that it’s simply an honest appraisal of something I’ve done or said is so rare that it’s generally not worth considering. Though I’ve noticed over the last few months that I’m more open to the idea that someone actually means what they say.

This all came up somewhat starkly back in the days after I posted the original 9/11 account. People just gush about it. It always made me physically flinch. I couldn’t figure out what the hell was WRONG with these people. But they kept coming out of the woodwork, unrelated to each other, seeking me out to tell me how much it touched them or how they cried when they read it or…whatever. It’s all just…too naked an expression of emotion for me to tolerate. (Which is a post for another time.)

The easiest thing to disregard is people who are inclined to praise others overmuch as a social tool. Even when they think they’re being honest there’s a disingenuous quality about it. To quote Syndrome “If everybody’s special, then no one is.”

Unconditional praise, for instance, is worse than valueless. It’s a manipulation tool and has no honesty to it. This is the kind of thing that shows up most commonly (in my experience) in family: “I’ll support you no matter what you do.” Well, that means your support means absolutely nothing. Not only that but I have to disregard every positive word you say since it’s not based on anything honest.

When you grow up in that kind of environment what you learn is that praise is at best meaningless and at worst a manipulation.

I’m not sure what that does to a person’s ability to self-assess, since I only ever experienced one schema and don’t know what anything different would have been like.

As an adult you can consider your past and its effect on your development, but you really don’t get to complain about it after you’re about 19 years old. Your life and your mental health is your responsibility, not anyone else’s.

But sometimes it takes a couple decades of self-examination to catch yourself in certain modes of behavior before you can even be aware of them well enough to start trying to unravel where they came from.

The temptation to tap out and abdicate your responsibility for your own behaviors and feelings to the gravitational well of your upbringing is almost too great to escape. BUT…once you get into the habit it gets easier and easier.

In that case you have to build up not only your own assessment of your skills and attributes, but the underlying framework for establishing the criteria itself. What constitutes something good? What’s the metric? Well… with no external criteria you can trust the only sure measure you can rely on is comparison of yourself with yourself previously. You can only really trust the vector of improvement, since it’s unarguable. No matter how badly you suck at something the truth of improvement is a simple naked thing. Sure sometimes you need to back away and get some perspective. But if you can DO that then you can see the improvement for what it is.

So with that in place my brain returns to external expressions of praise…

There are a couple people and a couple situations where I understand they’re being honest, but that’s usually downstream of the realization that they aren’t overly free with such praise.

For instance I’ve been working on a 3d printing project over the last couple weeks. It’s…not something I’ve designed. I’m just printing the thing. But I think it’s really cool, so I brought my first failure and my first moderate success to the cigar lounge. (I’m a big believer in sharing my failures as often as my successes.) The reaction I got was really weird. I expected “Dude that’s cool!” and the like. Instead I got “Man, you did this? I’m impressed.” So I felt compelled to remind people that it’s not…my design. I’m just printing the thing. They wouldn’t be dissuaded, attributing the thing to me rather than the guys on the internet who did all the work. There were a couple guys who got it right. But it was really strange.

Writing’s a big one for me since I’ve front-loaded so much importance on it. I get compliments on some of my writing from all over the place. Frankly I just don’t understand it. But that’s neither here nor there. Sometimes I get globally effusive praise. But sometimes it’s sparing. There’s one internet friend I’ve had for something dangerously close to 20 years. (Good GOD that’s actually true.) The Queen of Arts has mostly retired from the internet I think. Good for her frankly. The internet isn’t real life. She posted a commment on something I posted a month or so ago that I’m still glowing from.

The net effect (aforementioned and a couple very sparse examples aside) is that I just about never believe people when they say I write well.

Oh I’m better than I was a month ago, six months ago, a couple years ago. I’ve made pretty good on my promise from a few months ago to be more intentional about what I post. And I’m not nearly as good as I’m going to be, improving as I am in fits and starts. But generally I feel like people are blowing smoke up my ass. There’ll be more on this in another post on a more general topic I’m mulling over in my head.

The trick is to understand the place from which praise comes. It can be a simple reaction to something you’ve done, which is usually fine. But the more global the praise the more suspicious I think you should be. “I really love the way you phrased that” is tough to find fault with. “Dude you’re just such a great writer” is something I can’t help but find suspect.

Sure the sentiment is usually honest. If I think someone’s overtly blowing sunshine up my ass consistently I generally rid myself of them pretty quickly. I’ve got stories upon stories of people doing so and how I’ve (eventually) dealt with them. (Usually quietly, sometimes loudly, always definitively.)

Maybe I’m just too damned Machiavellian about the whole affair.

But I suspect something else is going on in my head.

What’s. All. This. Then.

Well last week I became near terminally annoyed with the repetition and demeanor of my posts of late. So, in a flash I decided to delete a bunch, going back a couple years. It was frustrating as hell to watch myself spin around in tight little circles.

The train of thought kinda went like this:

“Shades of gray aside, it’s just the same nonsense over and over again. Why the hell should anyone, even me, give a shit?”

So I went through the post archive, selected about…oh hell I want to say 20-30 posts from the last 3 years and just bulk trashed them.

Now for the fun/awful part: I came in to the cigar lounge a couple days later and sunk into a deep funk because without the fig leaf of posting what I write while I’m sitting here, I really don’t have much motivation to sit and write. It was really bad. A couple people had suggested (as I ranted about it on twitter, because I have the social media habits of the average teenage girl apparently) that it might be related to a massive carb intake.

I hadn’t realized I was QUITE that low carb but on some reflection it actually scans.

Either way I decided over the last couple days that the purge was a mistake. So I tried to restore everything but, after a bunch of nonsense I realized that the posts (which had been in wordpress’s trash bin) restored with new publish dates. So they’re now all KINDS of out of order. Well, fuck. So I think what I’m going to do is re-purge the last couple/few dozen posts completely, then restore from a backup. Worst that’ll happen is that I’ll end up with the same situation again.

So…by the time you’re reading this I’ll be done with whatever screwing around I’ve done.

It’s really making me want to bump up the priority on my own blog software (really just static website generation code.

Anyway I had a couple things I wanted to write about today so I’m going to post this mental effluvia and get on with it. I think I’m gonna end up with a few short posts today. But it’s 1:00 and I’ve got 5 hours before the guys get here so we’ll see how that goes.

Just Keep Swimming

“We cannot solve our problems with the same thinking we used when we created them.” – Albert Einstein

Writing at the cigar lounge for a few hours a couple times a week just doesn’t cut it. It doesn’t. It’s too damned easy for me to get out of the swing of things in the interim. I end up spending more time just working on my own head to reestablish the writing habit than I do actually just putting down what I could put down.

It wasn’t like this for the first few months. A couple/few days a week was quite enough to keep it coming.

I think…now that I think about it yet again, if perhaps from a slightly different angle, that what’s going on is that I’m expecting more from myself.

When I started writing like this (in this particular incarnation, which I mark as having started back in September or so) I’d sit here and agonize a bit because there’s a bunch of bullshit on my mind. I have to write through the bullshit to get down to the good stuff.

So I do, I write the bullshit out (the Same Old Post that really just has a hundred permutations on this site) and by the time I’m done THAT I’m down in to actual thinking. Cool!

A few days later I come back here, get all set up and yeah, there’s a little bit of crap on the top of my head, but I get through that in short-enough order, then back to actual writing. Cool!

Then I get into the groove where I’m excited about actually thinking anything at all, in stark contrast to the kind of reactive surface nonsense that seems to rip through my mind most of the time.

But now it’s…what…seven or eight months since I’ve started doing this and the hole is narrow and deep, but the sides keep falling in. Part of me is still just excited that I’ve gotten to any depth at all. But I’m growing increasingly frustrated (again) by the fact that I’m not really coming up (out) with anything new at all.

So I think back to the beginning and have to work pretty hard to remind myself that I really am just operating from a much higher baseline than I was back a few months ago.

As I go farther/deeper/higher the measure of what constitutes “the cruft” that gets in the way between sessions gets more stringent. I now seem to have the same amount of nonsense in the way, but it’s what I’ll call “deeper nonsense.” What six months ago would have counted for an interesting insight is now something that’s such banal horseshit that it’s barely worth getting to.

But it’s really only now that I’ve noticed that it’s my standards that have changed. I’ve been spending the last few months going over the same thing again and again because six months ago it’s what passed for actual thinking.

Then I hit post and am chronically unsatisfied because the feeling of progression isn’t quite so naked. It’s like the weight loss I’ve experienced (over what’s notably the exact same span of time) except for the fact that I get on the scale every day and see the change over time.

With weight loss I can measure in a very concrete and precise way what my actions and subsequent accomplishments are. I write down a list of what I eat and I write down how much I weigh every day so there’s really no arguing with it.

The analogous task with my writing would be to reread everything I’ve written up until now every morning and see the progression over time. Well that’s not exactly practical. I do spend more time than I used to think was strictly healthy rereading my old writings. But I’ve slacked off of that practice a bit as it used to be really just indulgent self-congratulatory crap. (This leads quite naturally into yet another discussion of why I want to keep my writings in a wiki with tag clouds and such, so that I can see at a more simple glance what the progression is across posts. But I’m not going to do that here. Or, well, now.)

So I really don’t have a metric against which to measure thinking and writing progress aside from some nebulous feeling that it’s just the same thing over and over again.

The funny thing about this is that what triggered this realization (albeit on a 24 hour fuse) was the programming session I had yesterday.

I’ve been working on a pretty complex piece of software and yesterday I got sick of my code base the way it was and started it again from scratch. This may sound extreme to a non or novice programmer but it really isn’t. What happens with that kind of thing over time is that you design a piece of software the way you think it should work then start plugging away on features and tests. Over time it takes something close to the shape you had in your head. But with the introduction of things you hadn’t thought through all the way warts and abnormalities start to appear, infecting the design with considerations that just hadn’t come up.

I realized as I was plugging away, having gotten through the rote task of setting up things in minutes that had previously taken me months, that NOW I was actually thinking. I was advancing the ball down the field on the larger time horizon.

I had to get the horseshit out of the way. But yesterday’s horseshit was the advanced thinking of six months ago.

Once I had that groundwork laid out (coded to the point where the idea was locked down) I was free to think about it in far more interesting terms. That is to say far more deeply.

So I carried yesterday’s realization forward to today and realized that the reason I feel so damned dissatisfied with my efforts here at the cigar lounge was because my standards had changed so damned much that the old successes just weren’t enough, even as I was engaging in only the old behaviors.

The challenge of moving forward is always the same, no matter where you are in the line. You can either decide to push yourself or you can backslide. There’s no stasis to be found anywhere.

So while this blurt of words feels quite like every other damned one I’ve had in the last six months, I can zoom out and see that it’s actually different.

  • It does represent (or at least include) a new realization, however poorly expressed.
  • I wrote over 2000 words and didn’t post it, instead spending an hour and a half (and counting) cutting out paragraphs and sections I enjoy quite a bit because they had at best a tangential relationship to the point, rearranging and rewording the rest.
  • While it still feels like a surface-level rant, I can see the larger point just around the next bend, beyond a couple/few more ideas I have to crystalize into words and get out of the way; to, in essence, make them yesterday’s ideas.
  • Word count is…while not irrelevant, certainly a trivial concern. In September it took some serious bleeding to get a thousand words out. Now two or three isn’t even really something I notice until I look down and nod.
  • There’s less fucking whining. Seriously. The fact that no one’s called me out on that garbage is amazing to me.
  • I don’t feel the need to congratulate myself overmuch. (A bit. But not overmuch.)

So what are the next steps?

  • Write outside the cigar lounge more.
  • Let the words take me where they will. I’ve avoided getting too deep on some things because my audience has expanded. But if there’s something the posts of a couple weeks ago taught me, it’s that The Good Stuff is expensive to write.
  • As a corollary: Worry less about how things are received and more poignantly what the backlash might be. Just don’t be a jackass intentionally.

It takes some courage to go deeper, especially in the realm of self examination, because your identity is on the line. Yet that is exactly what is called for.

The feeling of being someplace and looking ahead to the difficulties and rewards of the work you need to undertake always feels the same, even once you’ve progressed towards or even through those rewards. You can’t rest on your laurels, especially if they were granted by other people. You need to intentionally push and stretch, to “cut away more dead wood” as Peterson says, to progress.

To keep yourself on the path you need a way to measure the progress you’ve made. It’s tough with something like writing, especially this kind of self-absorbed journal based writing.

Maybe there’s an end to it, a point where I’m actually getting to the point where I’m marginally satisfied with it all. I don’t see it. But that’s okay.

It’s the progression that is the success.

HHC: Config Refactor

I’ve had the HugeHonkinConsole set up to derive its configuration information from the place where it’s executed, which is…convenient in a sense, but really a pain in the ass long-term. With multiple versions of the code in the source tree and deployed on different machines, it creates this strange split of data repositories that’s not reasonable to keep track of.

So today’s task is to take the configuration class (which I’ve taken to calling Environment) and add a filename to the constructor so that it can optionally populate the internal configuration dictionary from that instead of just deriving all the file locations and such from argv[0], scriptroot() and such.

With what should prove to be a truly trivial change (yadda yadda “contact with the enemy” notwithstanding) I’ll gain a massive amount of flexibility.

The original code is dead simple because it just doesn’t need to do much at all. In fact, here’s the important bits of the source file (allow for some shitty wordpress code formatting.):

-— Environment.py

import socket
import os
import sys

class Environment:
def __init__(self):
    self.env = dict()


def populate_environment(self):

    # Independent (system derived) values
    self.env['hostname']   = self._gethostname()
    self.env['scriptroot'] = self._getscriptroot()

    # Derived values
    self.env['dataroot'] = self._get_data_path()

def _gethostname(self):
    return socket.gethostname().lower()

def _getscriptroot(self):
    return os.path.dirname(os.path.realpath(sys.argv[0]))

def _get_data_path(self):
    return self.env['scriptroot'] + '/data/'


It’s really not rocket surgery. A couple system methods to grab the current host name, local run location, and build a config entry or two off of that.

Now I don’t want to change anything that’s IN there because I’ve got a bunch of nonsense that’s relying on it, simple as it is. So I’m really just going to add a couple lines of code to the constructor and a single new method and I…THINK it’ll be done.

So the constructor now looks like this:

def __init__(self,filename=None):
    self.env = dict()


    if filename:
        self.env['config_file'] = filename

It takes an optional new argument, the configuration filename and only changes behavior if it’s been provided. That, insofar as it goes, guarantees it won’t break any existing code.

Now let’s take a look at the new load_config_file method.


def load_config_file(self,filename):
    fh = open(filename,'r')
    config = json.load(fh)
    self.env = config


As you can see there’s almost nothing in there.

  • Open a file
  • Pass the file handle to json.load
  • take the result and assign it to the internal ‘env’ dictionary
  • close the file.

Now…this presumes a fair bit. It’s definitely “happy path” code.

  • The file needs to exist or the code will unceremoniously die.
  • The file needs to be well formed json or the code will unceremoniously die.
  • The implicit assumption is that the json file contains a top-level dictionary with the keys and values we want.

But I’m going to be manually writing the json file. So the danger is really so low as to be nonexistent. Also, you should really only capture errors you can do something about. If this code blows up on a bad json file, I don’t want it doing anything else. Die with an error message. Once these blocks of functionality are out and running on all kinds of different machines with the possibility of complex errors and auto-distributed configuration changes (because why not?) then I may want a more sophisticated error reporting system. But there’s no reason to engineer it to be more resilient than that at this stage. It works or it dies.

So great! I can now wire this in by passing a configuration file name in at the very beginning when the Environment object is created and I’ll be done. Now I just have to go write the config file.

Well…no I don’t. Not really.

Let’s add another method to the same class for shits and giggles:


def save_config_file(self,filename):
    fh = open(filename,'w')


That saves whatever’s in the current object’s ‘self.env’ dictionary to a well formatted json file.

So NOW I just drop to the command line and interactively execute the following:

> import environment
> env = environment.Environment()
> env.save_config_file(‘foo.json’)
> quit()

There. Now there’s a config file named foo.json with the default parameters already there. It clears up any issues I might have with how to format the file, what parameters need to be fulfilled, and how I can add more. I’ll take the system-specific values out, certainly. But it makes for a great little template.

By putting the configuration, all the magic constants in one single location, then abstracting that information into an external file I’ve taken total control of how the code behaves. The environment object is available all over the code base, so if I need something that looks like a constant or a conceivably configurable parameter, I can just add it to the json file and it will be automatically picked up and populated into the environment object and I can start using it.

Nothing else has to change.

Now here’s an idea: Since I have access to the system routines that tell me exactly where this code is being executed from, I COULD add code that says “IF this Environment object was created with no configuration file name, go to the root directory of this application and look for a file named ‘config.json’ and load that if it’s there.” THEN I wouldn’t even have to specify a filename. I wouldn’t have to change a single line of code outside that file in order to have it start picking up the new config file.

It’s tempting. But I’m not inclined to do it, and here’s why.

Fast forward six months (or, you know, three hours. Because that’s how this stuff happens.) I’m plugging away on something and suddenly the code just dies. Now let’s say the configuration file has been renamed or moved or something.

Think about what the diagnostic process looks will look like, because there’s no way I’ll remember I actually had the Environment module figure out the name of the config file on its own. So the first thing I’ll do is open the main script file and look there. It creates an environment object with no parameters. So now I have to go spelunking through the code to see what and where it gets that filename from. I’ll have to reread the constructor (once I’ve even gotten there) to come up with what the problem must be.

The added convenience of not requiring an explicit filename is outweighed by the forensic overhead that will (not might, will) be required to diagnose a config issue.

WITH the explicit filename in the top-level of the code I’d open that file, see the config filename sitting there, then go look at that file, assuming the Environment class code to be essentially stable. Then I’d far more quickly get to the actual issue.

Coding for simplicity isn’t just about removing lines of code and cleaning up the boundaries of responsibility, it’s about anticipating future maintenance load and understanding the long-term costs of “simplicity.”

So yeah. I’m not going to do that.

and then there’s THIS asshole

So, people who don’t know me think I’m nice. It’s among many things I think are absolutely fascinating. The disjunction between the reality of who I am and how I’m treated is just stunning.

Oh I try. I try to pull in the right direction, to ‘behave the way someone nice would behave.’ But it’s really just that, most of the time.

I fight constantly against my actual nature to try and treat people well, do the right thing, leave places better than I found them, be gregarious, not always tell stories where I think I’m the hero, to be solicitous of the opinion and stories other people are excited to share, enjoy other peoples’ successes, help them with their failings and quandaries without being invasive; to ask for nothing in return.

But I’m a rank failure. I can play the game here and there. I have random moments where I actually come off as a good person. But all in all I’m a truly venomous judgemental narcissistic egomaniacal shithead.

People repeatedly treat me as if I were a good person, whatever the shit that actually means.

But people see what they want to see, clearly.

So I’m invited to social gatherings. People seem friendly and sometimes actually excited when I walk in the room. I get smiles and waves, politely smartass playful bantering comments.

I’ve overheard waitresses say “I know he’s in your section, but can I wait on Mike?” And I know it’s because I’m a heavy tipper.

I’ve been accepted into this social group at the cigar lounge by a bunch of people who clearly just don’t know any better.

Yesterday I got a text message from one of the guys at the cigar lounge, who included only one other people from the group, celebrating a personal success of his and inviting us to come hang out with him to enjoy some bourbon and a cigar to celebrate. I think I actually fist-pumped and cheered out loud at his news. It felt good but then I realized that he just doesn’t know what a jackass he’s dealing with. Or possibly just a wrong number. Either way.

Just now I shut down twitter for an hour, trying to keep myself from the distraction and ended up on facebook, where I posted some stuff about the cigars I’ve been smoking here at the cigar lounge, as well as chiming in on a couple of their posts about new cigars. Well, the proprietor came back here to my high-top holding a Fuente asking if I’d smoked that one in particular.

“This one?” I took it and examined the label which looked subtly different from other Fuente labels. “I…don’t THINK so.”

“Well you can only get those in stores. Here. That’s from me. Thanks for posting.” He…gave me a cigar? Really?

“Hey thanks man! I appreciate it. I just lit an Ashton but I’ll smoke this next!” Poor guy. He just doesn’t understand I’m actually a complete dick.

But then there are Cigargoyle, BostonActress, BlackCatsAndPoppies, Flixology, and the rest of them. All fooled, completely. I suppose they can be forgiven since I only know them on the internet. I mean how could they possibly?

I went to Johnathan’s last Friday and one of the guys who works there but was off came over and hung out at my table for a few hours and talked. I kept waiting for the people he was waiting for to show up or the few minutes he was killing sitting there to expire before he moved on to what he was really there for.

Over those couple hours we were sitting there a bunch of people pulled up to the bar got out and greeted me warmly. I only recognized about half of them. “Hey man how’ve you been! Nice to see you back in your seat. What’ve you been up to? Your hair’s gotten REALLY long. Looks good. Wish I had that much to grow out.” No idea who they were, like I say, about half the time. I’m still not sure who the hell they thought I was.

So many people in my life just…so wrong…so bad at reading people.

I mean…it’s the only thing that makes any sense.


Full And Well Rested

That “Sleep When Hungry, Eat When Tired” post I put up a couple days ago has gotten me thinking. (It’s been a long time since I’ve considered writing more the result of thinking than the cause of it.)

Cigargoyle read it on his nightcap that night and as he read it I realized that it didn’t…quite have the gravitas that I thought it would as I was writing it. By which I really only mean that I could have gone much farther than I did.

No no, this isn’t going to be an attempt to correct that. It was just something I found interesting.

The thing I’ve been thinking about, which I couldn’t (but feel like I should) have considered is that articulating those things which have been kicking around in my head in some nebulous form clearly, if insufficiently, resulted in a net clarity that was far beyond my intention.

I’ve known this was going to happen to some extent. But even a bit under 48 hours later I’ve been able to clearly recalibrate a lot of things by asking myself if they contribute to a best case or worst case day.

Some of that may be the “manic” energy of the upswing I’m prone to; those “today is the first day of the rest of my life and I’m going to do everything right from now on” type moments that generally accompany an empty stomach and a bunch of caffeine. Usually those are good for a couple days of frenetic positivity that ends in a

But it doesn’t feel like that. It feels nice and clear.

It’s weird. I’m really not used to feeling nice and clear about anything. My brain is a thousand screaming demons vying for dominance.

In the time since I’ve spent a bit of time listing out my pending projects (I like to do that from scratch now and again rather than just going back to my ever-growing list of projects and ideas. It helps filter them out.) and asking myself what the value is in each of them.

For instance: I’ve “felt I should” get on top of modern javascript programming technologies for a while. So I’ve got a bucket of (free) courses on udemy that I’ve been following along with to learn React and other frameworks. On the blackboard in my kitchen is (or, was) “Finish the course.” I set about yesterday going back in to it for an hour before realizing: It’s crap. That nonsense is all nonsense. Yeah there’s a reason to learn to write javascript/html5/css. But those goofy tools people have created seem to exist primarily so that a novice programmer can avoid learning how to actually use the tools. So I realized it was a goal that wasn’t worth accomplishing. I deleted the entire source tree, uninstalled node and erased that line on my blackboard, replacing it (for now) with “Fuck the course.”

Felt good to cut away dead weight.

I have a couple other projects that received similar treatment.

Then my mind bent to some of the weirder stuff I’ve been working on: The raspberry pi internet radio, the cyberdeck (I haven’t mentioned that more than in passing here. But it’s a neat project.) I thought “Do these pull in the right direction or are they a waste of creatie energy.”

I came to “there are projects worth pursuing merely for the love of them, even if they never leave the prototype stage to see if I’m actually interested enough to pursue the field further” so those two in particular stayed.

I didn’t get rid of as much as I thought I was going to with that process (though I’ve yet to go spelunking into my software projects, which are legion.) But the increased clarity of understanding what it was I intended to get out of them, why I was really doing them, made them all the more valuable.

It’s only a couple days. But this is really the kind of thing I’ve been looking for. Taking an ideal and backing out from that to trying to bring those things to fruition.

It’s almost like Jordan Peterson was right.

Who knew?

Sleep When Hungry, Eat When Tired

Or…something like that.

[Note: This is gonna seem pretty maudlin at the beginning. Stick with it.]

My moment by moment “eat when tired, sleep when hungry” day would look something like this:

Wake up and put on my bathrobe, trudging over the dirty clothes on my floor, into the kitchen where I grab two slices of pizza from the counter, having ordered one the night before and eating about 3/4 of it, along with a coke. Dick around on twitter and reddit in my bathrobe while going through my list of video games on Steam/Epic/etc before picking one and spending a few hours grabbing cheap dopamine hits on easy mode, playing games I’ve played hundreds of hours of.

I imagine at some point, maybe 3 or 4 in the afternoon, I’d condescend to put on actual clothes and head to a bar (IF I was feeling particularly motivated/social) where I’d get ripping drunk, smoke a couple cigars, be the life of the party, eat bar food (probably a pizza) then drive home, where I’d spend the evening, erm… “sacrificing the contents of my gut to Johann the White” before taking a couple electrolyte tablets and drinking a gatorade to mitigate the aforementioned self-destruction then passing the fuck out.

Rinse, repeat.

That’s not a life.

Fast forward that about 6-9 months: I’m 260 pounds, maybe 280. Maybe I’ve downgraded to size 42 stretchy walmart jeans. I’d have a couple dozen new self-help books still in boxes sitting around my computer. I’d rarely get up before noon because I don’t go to bed before 4-5 in the morning. I’d blame that on “being a night owl” which, when coupled with considering the day over at 6-7 in the evening would be a not-terribly complicated justification for dodging the awareness that I wouldn’t be accomplishing anything “during the day” except sleep.

Now, it would be far FAR worse even than that. But there are only so many details of that life envisioned that I’m going to put down here. Sprinkle that with listening to depressing music, porn, drinking alone, and damn near any vice you can come up with.

Fast forward that a couple/few years and that ends exactly one way: A bullet to the brain. Maybe there are a couple years in the middle where I “progress” to really hard drugs first. But that’s absolutely how it ends.

I could say that’s “unthinkable” but it’s really not. Not at all. (I mean, obviously, duh.)

None of that is an option.

And all this talk about purpose and drive, these projects and pursuits are, in no small part, attempts primarily to stave that shit off.

All this gives the wrong impression, I’m sure. There’s no real danger of this happening. But it does serve as a nominally complete answer to the “Dude, why do you torture yourself?” question. The answer is “I don’t.” What I’m doing is exactly NOT torturing myself.

I’m trying to make the switch to positive pressure pulling me towards the life I WANT to lead, rather than avoiding the life I don’t want to lead.

So what about the other side of the equation? What does a day from my optimal life vision look like? Fascinatingly I’m FAR more hesitant to post about that.

What a fascinating realization. I’m going to write it out, but not…in its complete form.

But what does that say? It suggests quite starkly that the courage required to dream of an optimal life is far greater than that required to admit how badly things can go if I merely take my hands off the wheel.

IS it so simple that dreaming/fantasizing of an ideal life is hard because it sets a standard that I might not reach, indeed almost certainly won’t? Is it just a matter of feeling like I’d be setting myself up for disappointment? It seems a little pat, but that doesn’t mean it’s not dead on.

So to stake out the ideal, to plant that flag in the distance and say “yes, let’s get as close as I possibly can to that and…even though I’ll necessarily fall short the pursuit of that goal itself makes for a life well lived” is… fuck it’s REQUIRED.

There are two other things I feel I need to cover for this to be complete, even as an outline.

1) Enumeration of my ideal self and my ideal day. They’re as inseparable as they are separate. One really presumes the other, so they collapse into one readily.

2) How do I live today, as a distance from both of those points, near as I can figure.

It’s hard not to feel that this all comes down to this. I’m wary of grand pronouncements since a head of steam produces its own righteousness and righteousness, positive or negative, just feels good. Then I look back on them in more sober moments and roll my eyes a bit. There’s very little in this life that’s quite as intoxicating as Righteous Rage after all.


The alarm on my phone rings at 7:30. I pad around the bed for my phone and, through pretty much closed eyes I shut it off. But it does begin the process of waking me up. I spend an hour in a hypnogogic haze before actually waking up.

Without much of an agenda I pad to the bathroom, retrieve my bathrobe and go turn on the computer, then back to the bathroom where I stare at the scale, sometimes walk away for a couple minutes, not REAL excited about the coming accusation on how I’ve spent the previous day. But before too long I make my way back in and get on the scale. (Today it’s 203, marking a couple days of consistent improvement after the whipsaw incurred by last week’s 4 day fast.)

There are never any big surprises. Sometimes it feels good. Sometimes it feels bad, affirming how I spent the previous day.

I head back to my office and write down my weight on the whiteboard. Red if it’s higher, black if it’s the same, green if it’s lighter, blue if it’s a new low.

Shower and get dressed regardless of what the day holds. I walk to the kitchen and get a water or a diet soda, grab a dizzying handful of morning supplements and swallow those.

Usually without an agenda I go get caught up on email, twitter, and reddit. That lasts a bit longer than I’d like. But it’s not usually out of control.

If it’s not a Tuesday or Thursday I pick a project (contingent upon the weather) I either head downstairs or open youtube to kick off my programming playlist and work with…admittedly limited intensity on whatever it is that I’ve decided deserves my attention that day. Usually until the hunger drives me absolutely bananas, at which point I head to the fridge.

The afternoon tends to go pretty slow as I plug away on whatever it is I’m working on. If a project is close to fruition (or if I’ve figured out how to partition my workload such that I have well-defined stopping points) then I can grind away pretty well.

I usually end up working on a couple things and satisfy my One Rule for a successful day: A day isn’t a success unless I’ve created something. It can be software, hardware, a reasonably complex foodstuff of some kind. Something. The metric by which I measure short term success is by acts of creation. (The trick is stringing those together. But that’s a different issue.)

As I go back and forth around the house I stop with relative frequence and do half a dozen chin-ups or maybe a couple pull-ups at the bar in my office door. Not a lot. Not enough. But more than I could do a couple months ago, which was…a half.

Sometimes I snack overmuch, generally in inverse proportion to how motivated I am by whatever project I’ve got kicking around.

Things come up and get in the way. I let myself get distracted quite a lot more than I’d like.

By 5 and 6 o’clock I’m frequently staring at the clock, again, that’s if I’m not hyper-engaged in whatever I’d decided to work on.

Eventually I’ll tap out and kick off Steam and pick a game to play for a couple hours leading up to 10:00.

If it IS a Tuesday or Thursday I spend some time cleaning up my laptop and making sure I have everything I’m going to need for a day at the cigar lounge before heading out at about 10:45-11:15, depending. A stop at a store if necessary first then I come in here, set all my toys up and open a Q10 window or start working on a software project, depending on where my motivation takes me. Empty stomach and a few cigars with water and/or diet soda makes for a great clarity of mind, so I get a metric shitton done before Bible Study begins (6:30 on Tuesdays, 4:00 on Thursdays.) During that time I usually end up putting a couple posts up on the blog, even if I do write a bunch of code I’ll almost always end up penning some words as well.

Afterwards I’ll either head over to Johnathan’s for a salad or just head home to grab something to eat quickly before I catch Cigargoyle’s night cap (Sunday through Thursday.) That’ll go from 10 to 11 at night and I’ll pick back up and play something again for an hour.

I grab my big notebook and write down some bullet-list items about the day including what I’ve eaten (broad brush) and what I did during the day. Sometimes I’ll cap it off with a note about how I feel about the day. That’s usually if I have an extremely good or extremely bad day. Otherwise the kind of day I’ve had is self-evident from what I’ve written.

Then I’ll head to bed and… well… I’ll pull out my iPad and play the dailies in Raid: Shadow Legends (a fun little game) while working on a sudoku or two on my phone. Yeah, screens in bed is a bad idea. But meh.

Then I pass the hell out.

Rinse, repeat.

That’s what I’ll call my median day. They’re good. There’s a lack of long-term goals there, to be sure. But they’re productive. Sometimes they’re just “busy” and sometimes I just fuck off online for hours and hours, having nothing pushing at me hard enough to stay focused on. Some days I’ll jam so much caffeine in my head that I can’t focus on shit. Other days I’ll jam so little caffeine in my head that I can’t focus on shit. Then there are the others ;).

The sanitized version of my ideal day doesn’t differ as much from my normal day as I’d expected.

I actually get up at 7:30 and get a quick workout in before hitting the scale (because why not optimize?)

Check to see if there’s anything that’s happened overnight that requires immediate attention and schedule/plan those additions to my day.

That aside, the day’s projects planned, perhaps in to pomodoros or some similar time-blocking scheme I hit the ground running, maybe spending a few minutes getting caught up on social media, maybe just not.

Work until a late-ish lunch (of something reasonable), after which I do an hour or two of reading.

Then I do some more project work that may even be product work.

A quick shower, get dressed (up) and head out for a nice dinner date or drinks, cigars, something social.

I come home (or…since I’m talking about ideals…WE come home) and, well…you do the math.

Somewhere in there is a session where I plan the goals of the next day. But I’m not sure where that slots.

I want my projects to be aiming towards larger goals, my day to be a bit more tightly structured. I want deadlines on my projects. I want to be able to assess and abandon ideas that don’t make any damned sense. I want to explore things I’d never considered and spend my days stretching my boundries, physical, mental, and spiritual.

When I reread this a couple times I’m struck by my lack of imagination in “my ideal day.” I’m pretty okay with that really. It’s my considered opinion that much the way I need to get the crap out of my head before I can get down to real writing (I deleted a thousand plus words of rambling at the front end of this) I need to do the same thing with my day to day life before I can really see what it is that I can imagine, what I’m really driving towards. I’ll flesh it out, I’m sure. It’s a good baseline.

That’s fine and I suspect to be expected. Other kinds of wild speculations would just be silly without the clarity afforded by taking the first several steps on that path.

So, a couple things:

  • I currently don’t institute the level of discipline I need to accomplish that kind of day.
  • My projects are all over the place and I notice that I’ve avoided any real description of WHERE I want those things to lead. They break down into a few categories really. But that’s neither here nor there.

Local focus necessarily occults long-term planning. Time dilation is an amazing tool. But it can be used to distract. You’ve got to have the long-term goals set before you can safely zoom in to a tractable time horizon. I’ve thought that keeping my focus on the immediate would help clear the deck for longer term progress. But I think I’ve been thinking about that just exactly backwards.

SO… Goals:

  • Married (kids? I’m about to turn 52. I may have missed that boat.)
  • Fit
  • Smarter
  • Fucking Rich
    and maybe
  • Published. But frankly I’m not so married to that as people wish I was.

Let’s see where I can take that, shall we?