In the recent months, I have been working with @calebhailey.com to develop a new kind of workflow for posting to the Internet. Traditional social media has problems with content ownership, but what they get right is the user experience. 
 It is trivial to open up Twitter or Instagram or Facebook or LinkedIn or any number of other sites using their mobile app and make a quick post hit send and…
Key Words and Phrases : documentation, knowledge sharing, engineering culture, technical writing, user experience (UX), product culture 
 Background 
 For those of you familiar with my community and professional work—as a co-founder and organizer of the Write The Docs conference (2013-2015), as an outspoken advocate for documentation, and as the Technical Lead (TL) of Twitter's internal…
Further Discussion 
 While writing these articles, I asked my coworker Greg Poulos ( @gregpoo ) to take a pass at proofreading/editing. He had some good feedback and questions, which I thought I should tack onto the end of this series of posts. 
 NOTE: This is the third article of a three-part series. The first part discusses strategy while the second part explains how to grow a TechDocs…
How to Grow a TechDocs Team 
 Getting a handle on technical documentation is an essential part of any software project, yet this fact seems to get forgotten by most companies during their staffing discussions. Rarely does a tech startup co-founder think to hire a technical writer as part of their initial engineering team. Many companies do not even have a single dedicated person on…

 In companies that have large engineering teams, a dedicated technical documentation organization is a necessary function. Our industry's understanding of the role of documentation, both as engineers and technical writers, has shifted its focus over the last decade. 
 - Troy Howard, Contemporary TechDocs 
 
 Yeah, I just quoted myself. That's the least of my worries. My bigger…
In a previous article I discussed the need for a data driven approach to TechDocs. This article will discuss one possible documentation metric: Total Time Reading (TTR). 

In companies that have large engineering teams, a dedicated technical documentation organization is a necessary function. Our industry's understanding of the role of documentation, both as engineers and technical writers, has shifted its focus over the last decade. 

I have a personal confession to make. For many years, I claimed that the famed Eagles song, " Take it Easy " was actually a song by Lynyrd Skynyrd . I was quite sure of it. 

I used to spend a lot on booze. Now I spend a lot supporting grass-roots activism. You can too. 
 For #FridayDonation , give as much to your local cause as you do your local bar. 

Bret Victor is one of my favourite thinkers. One of the few people who deserves the oft-chuckled-at title of "thought leader". 
 In his talk Inventing on Principle , Bret described how he, and many other influential figures, have been guided by a driving principle, unique to the individual, which when applied to a variety of situations, led them to improve and innovate upon the status quo . He…
If you're just starting out with Docker , it's super easy to follow the examples, get started and run a few things. However, moving to the next step, making your own Dockerfiles, can be a bit confusing. One of the more common points of confusion seems to be: 
 
 Where are my Docker images stored? 
 
 - Everyone 

There are times when a productive person finds themselves overwhelmed with work. You'll look around and proclaim "there's no end to this" as your sense of priority fails you, switching from task to task without completing any of them. You spend too much time on simple or unimportant things. You get frustrated easily and can feel the blue smoke coming out of your ears, longing to escape the…
Haruki Murakami is a wonderful writer. I recently came across this story online, but the version I was reading was the result of a terrible OCR job full of distracting artifacts. 
 So I decided to edit it, fix all the weird OCRness and turn it into a markdown Gist. You can now read it through the lovely tool, Gist.io . 
 Here's the finished version: 
 Man Eating Cats by Haruki Murakami…
Recently, at AppFog, we encountered a series of abusive users attempting to cause havoc by flooding UDP. 
 Some basic iptables settings can prevent this kind of thing from happening. 

Simple untar script that does the obvious thing and creates a directory named after the tar file, then extracts a tar in that directory. This is a handy to install in user scope to augment tar. 


 The more reliable the network becomes, the more that systems will take it for granted and the more catastrophic system failures will be. 
 
 - Troy Howard 

In our little corner of downtown Portland, good coffee isn't hard to find. We've got some amazing options within only a few blocks of our office . Nonetheless I was very excited for the opening of new Barista location about 1/2 a block away. So excited, that I took a field trip with a bunch of my coworkers to go check it out. 

Joining AppFog back in February became my first time working for a company using Github private repositories for source control. My previous gig used Bitbucket and Mercurial , which we migrated to from self-hosted SVN , which we migrated to from SourceGear Vault , which we migrated to from Visual Source Safe ... etc. That's how things go at a 12-year-old company, I guess. 
 As a startup,…

 These days the world is abuzz with talk of cloud computing. Many of the more experienced developers out there chuckle at the term cloud computing. No one seems to know what cloud computing is , exactly, but everyone seems to be talking about it, offering services around it and has a great new idea for how to revolutionize something using it. 


 Some Reflection On Node.js 
 Node.js is a strange beast. It's a technology that might just be worth the hype surrounding it. In this day an age, when everyone expects ‘viral' to be part of their marketing campaign, when something actually does become popular rapidly and ends up with a bunch of people talking about it, it's easy to discount the validity of the hype. Especially when it's…
Chuck Norris vs Shift 
 It's my second to last day at discover-e Legal before moving on to AppFog and it's probably the most important day of the year for the company. 


 The trouble begins with a design philosophy that equates "more options" with "greater freedom"... In my experience, the instruments and tools that endure (because they are loved by their users) have limited options. 
 
 - Brian Eno in Wired Magazine, 1999 

Let me start by saying I'm a Google fanboy and a half. I love that company and use all their products. My life revolves around my Nexus One and it's deep and tight integration with Google's stack which is my extremely large clustered brain-annex that's constantly available with a few taps of my touchscreen. 
 Google is awesome and great and I love them to death. That said, they are wrong about…
Someone asked in the Lucene.Net mailing list about implementing something similar to SOLR's copy-fields. 
 Here's a basic example of how to do something like that in a Lucene.Net Index. 

The topic of implementing IDisposable within Lucene.Net comes up a lot. While I'm all for it, there are reasons why it hasn't be done yet. 
 This is an alternative technique that allows using Dispose without implementing IDisposable directly. 


 During the course of my work, I use a hex editor a lot. 
 Specifically, I use a hex editor mostly for reverse engineering binary file formats that have no documentation or for fixing corrupted files, and what not. One thing that I've always wanted, was some way to view the binary contents as structured data. Like "Starting at this byte offset, consider the next four bytes to be an…
When I was a kid (7 years old) I got my first computer. At that time, using a computer meant programming a computer. 
 My Commodore vic20 didn't have a storage device when I got it (I got a tape drive later on). So, if you turned it off, the in-memory program was gone. You had to type it in again the next time you started up the computer. 
 

No, I'm not about to wax poetic about the deep ontological issues raised in The Matrix, or speak meaningfully about how transient the modern world of communication is and how the artifacts of our lifetime have become ephemeral such that our posterity will not be able to remember us, even if they wanted to. 
 Instead I'm going to post a code snippet that solves an annoying little scenario that…
I had the need to detect wether or not a given string (in .Net/C#) was unicode or not.. Specifically filenames. I had a situation where a filename might be passed to me, that could possibly contain unicode. If it DID contained unicode characters, I needed to run GetShortPathName and get the 8.3 filename for the file, before passing it into a legacy component that couldn't handle unicode names...…
Well, as much as I hate to admit it, I was recently working on VB6 application that uses Office COM automation. It needed to have Word and Excel do a few things while the main application waited. 

Instead of doing a college survey and asking a bunch of probing questions about the lives of twenty-somethings, there's an easier way to get information about your current culture. Just look at CultureInfo.CurrentCulture . 

Recently someone had a problem where they had some massive control block full of if statements looking at a string, dispatching one of a variety of functions. The if block was massive. Hundreds of if statements, hundreds of magic strings. 
 Interestingly all the functions had the same signature...
So not that long ago, someone posted a question asking how to deal with a certain situation. The situation is such that there is a network file stream coming from somewhere, that has certain data you want to keep, and certain data you don't want to keep. Control blocks, extra header information, weirdo protocols, too much data coming back from an API, etc... 
 My suggestion was to create a…
So, recently I needed to make an application that allowed a user to enter an arbitrary SQL query, and elsewhere in the UI I needed to display a drop-down with the fields that this arbitrary query returned. This poses a small problem. 

As usual, WinForms GUI programming is a terrible PIA. Even worse is the flagship of all controls the great beast known as the DataGridView. Working with the DataGridView bends your mind like offensive cutlery at Uri Geller’s dinner table. 

BlackBox - A simple puzzle game where you shoot rays of light into a black box, and determine the location of atoms inside the box based on the entry and exit points of the ray. 
 Seriously addicting. 
 Here is a Wiki article about it and an online-playable Flash version . 

So, you may have found yourself building a nice user-friendly, somewhat complicated Windows Forms application, that had lots of drop-down menus and right click context menus, and what not.. You may have naively assumed that you could share your menu items, so that you have a consistent set of options, icons, and more importantly event handlers for a particular menu item or set of menu items. 

If, you find yourself in the unfortunate position of having a dynamically created Gridview control in your ASP.NET page AND needing to handle the SelectedIndexChanged event... as I was, you may find yourself banging your head against the monitor trying to understand why the event isn't getting fired.