Geekery

Culture Starch: We Haven’t Grasped Complexity Yet

Sitting here, listenin’ to my playlist, thinking about temporality and how it relates to the kind of geekery I want to write and talk and teach and geek about. Over the last 10 years or so, the topics deriving from systems theory, from complexity theory, and so on, have wormed their way slowly into our mental frame. Just a little, just a little, but that’s how change works. And as I read the popular accounts, as well as the folk-theory …

Culture Starch: We Haven’t Grasped Complexity Yet Go to Post »

Plenty Of Guilt To Go Around

Who’s to blame? I notice how many folks seem to believe geeks are in charge of what software gets written in the world. When software is revealed to be immoral, I notice how reluctant they are to blame folks who are senior executives, boardmembers, or majority shareholders. The majority of working software developers who are adding code to projects are < 30yo. An actual current programmer is uncommon on the third floor and almost unheard of above that level. I …

Plenty Of Guilt To Go Around Go to Post »

TDD Pro-Tip: Stay Aware Of Testing Data

TDD Pro-Tip: I stay very aware of my testing context’s data, and specifically of what data is opaque and what data is transparent. Those terms, transparent and opaque, need a little explanation. Sometimes the code I’m testing doesn’t vary based on the entirety of its input. A trivial example, the function that validates the date of an order DOES NOT CARE what any other field in that order is or does. It only cares about the date field. I would …

TDD Pro-Tip: Stay Aware Of Testing Data Go to Post »

Refactoring Pro-Tip: Scanning Isn’t Just Fast Reading

Refactoring Pro-Tip: When I’m scanning, I’m not just reading fast, I’m feature-detecting, something the unconscious part of me is very good at doing, especially when the code helps. Part of the made, the making, and the maker as a guiding theme for me is the idea of "leaning in" to the strengths of my maker body and "leaning out" from its weaknesses. A trivial case: one reason TDD works so well for me is that the microtests give me a …

Refactoring Pro-Tip: Scanning Isn’t Just Fast Reading Go to Post »

Refactoring Pro-Tip: I Optimize Scannability, Then Readability, Then Writability

Refactoring Pro-Tip: I optimize my code for scannability, readability, and writeability in that order. I won’t argue my case in detail, there’s a video if you’d rather watch me make it instead of reading it, and I’ll just sketch the case briefly here in the muse. http://geepawhill.org/optimizing-a-program-and-programming/ When I’m coding, I notice that I spend significantly more time scanning the code than I do reading it, and significantly more time reading the code than I do writing it. So when …

Refactoring Pro-Tip: I Optimize Scannability, Then Readability, Then Writability Go to Post »

The Whole Geek: Geekery Is Just The Tip Of The Iceberg

A thing that happens to me a lot. I want to say, "Yeah, that’s not how that works," about some over-simple explanation, usually something around using inorganic reasoning about humans. But when I go there, I know we’re gonna go instantly to vast areas of study & insight that most folks aren’t comfortable with. And it’s exhausting, and I’ve limited energy. They see the exchange — they see all of human discourse as far as I can make out — …

The Whole Geek: Geekery Is Just The Tip Of The Iceberg Go to Post »

Refactoring Pro-Tip: Making Local Variables Maximally Local

Refactoring Pro-Tip: When I tackle a long method, the first thing I do is make my local variables maximally local. Consider this psuedo-code. It’s basic stuff, I’m betting virtually any geek can read it, but if not, lemme know. longMethod( int y ) { int x; x = 0; // … // IRRELEVANCY #0: 87 lines that neither read nor write x // … if( y == 17 ) { x = 1; } // … // IRRELEVANCY #1: 87 …

Refactoring Pro-Tip: Making Local Variables Maximally Local Go to Post »

Refactoring Pro-Tip: Naming, Isolation, and Noise-Filtering

Refactoring Pro-Tip: I use naming, isolation, and noise-filtering as strategies to keep the coder’s intention at my fingertips. (I’m actually jonesing to write some geeky material in this series, but I’ve got one more of these pesky abstract philosophy things before I can get there.) First, a silly line from a silly movie, Airplane, which makes for a good Friday night comedy if you want that. (Paraphrased from memory.) "There’s a problem in the cockpit." "The cockpit? What is it?" …

Refactoring Pro-Tip: Naming, Isolation, and Noise-Filtering Go to Post »

Refactoring Pro-Tip: Refactor to Enable Change

Refactoring Pro-Tip: The triggering events for refactoring vary, but the reason we refactor at all is the same each time, regardless of occasion: we refactor to enable change. The most obvious and direct occasion for a refactoring is this: I want to add new functionality and preserve old functionality, and it will be easier to add if I first schmoosh the old functionality around a little to make a little hole where the new stuff will fit. When I do …

Refactoring Pro-Tip: Refactor to Enable Change Go to Post »

Refactoring Pro-Tip: Terrible Code Doesn’t Mean Terrible People

Refactoring Pro-Tip: Terrible code is not a good excuse to be mean, because terrible code is not well-correlated with having been written by terrible people. Look, y’all, it’s me, here. I love a good rant as much as the next Old Testament prophet, surely you know this. But . . . but . . . When I work with a new team, a key element of what I do is figure out how to integrate my line of advice, which …

Refactoring Pro-Tip: Terrible Code Doesn’t Mean Terrible People Go to Post »

Scroll to Top