Popular Tags:

Welcome to the world of commercial software development!

2019/04/16 at 08:10

This reddit comment succinctly describes my experiences working in commercial software startups and, to a lesser degree, in established commercial software companies:

I’ve been in HCIT/Software for twenty years, and every time there was a major bug that caused a fiscal impact to the company when doing RCA, it always, 100% of the time happened because someone up on the food chain overwrote the decisions of the people who knew what the fuck they were doing.

I explained to him like this:

Salesman goes to a client and asks, “what will get you to buy this widget from me?”

Client replies “it has to do everything”

Salesman agrees.

Sales then delivers the requirement of everything to the product/project manager. PM then asks their team, “how long will it take to do all this?” The team will respond “eleventy years.”

PM goes back to sales to state it will take eleventy years, which of course isn’t good enough. PM asks sales then when do they need it by, which is always “immediately.”

PM goes back to their team, “What can you do by this date?” They respond with a much truncated list. PM provides it to Sales saying this is all they can deliver in that timeframe.

Sales then loses their shit, bitches to senior leadership if not all the way up to the C Levels, “We are gonna lose this huge ass sale because they cannot deliver everything by this date!”

So then the COO or SVP over development/production forces the team to just put out as much as they can by that date, so in order to do that and keep their jobs, corners are cut, QA is skimped, and you get a pile of widgets with an unacceptable defect percentage.

Then something breaks, everyone has to scramble to clean the mess, all the while the C Levels are blaming the development and operational teams and the sales guy is jerking off with the piles of cash from his commission and doesn’t give a shit, cause once the contract is signed it’s not his fucking problem anymore.

All the while the client really only wanted a widget that was affordable and worked.

Reflecting on my history as an amateur photographer

2019/04/13 at 07:42
Pentax MX SLR camera

Pentax MX SLR camera

Recently I’ve been reflecting on my history as an amateur photographer. I spent 1982-3 as a high school exchange student in Austria (for you German speakers, I really lived in a village called Großklein). Before I left, I decided that I wanted to buy myself a good camera. A friend had a Canon AE-1, which was the consumer-grade pinnacle of SLR technology at the time with shutter-priority auto-exposure. My dad, however, asked a professional photographer for camera buying advice, and he recommended a Pentax MX SLR camera. The only technology on the MX was a built-in light meter. As you manipulated shutter speed and aperture size, a row of LEDs along the bottom of the viewfinder indicated whether the light level was good (red – yellow – green – yellow – red).

Film photography had two big constraints that are unknown to digital photographers. The first is delayed gratification; you don’t get to see your photo until after the film is developed and printed–which was a matter of days at the very least (hence the eventual popularity of same-day photo processing). The other limitation was cost; there were three separate expenses related to film photography: the film itself, and the costs of developing the film and printing photos.

My maternal grandmother

Candid portrait of my maternal grandmother taken with my Pentax MX, 1982

The constraints of film photography with an all-manual camera forced me to really learn the basics of photography–the interaction of film speed, aperture size and shutter speed–and to become a disciplined shooter in order to get the shot that I wanted. Taking multiple photos with different settings was prohibitively expensive;  there were essentially no do-overs; and post-processing was expensive and limited only to professional photography.

I’ve been taking photographs with a digital SLR for well over a decade now, and post-processing gets easier all the time. Yet I remain a mediocre and ambivalent post-processor of my photos. I reflected on this recently and realized that this attitude is due to my long history with film photography: I still consider getting the photo to be 90% of photography, whereas photographers who grew up on digital consider post-editing a much larger and more important part of the process.

Katie and Duncan, 1984

Katie and Duncan, 1984

When I lived in Austria, I shot slide film mostly–it had better color and was somewhat cheaper since you didn’t get prints. All this reminds me that I still need to get my slides from that period scanned. I think I’ll work on that today.

It’s spring in Texas

2019/03/28 at 06:32

It’s a very good year for Texas wildflowers.

Texas Bluebonnet

Why do you take photos?

2019/01/12 at 12:34

I haven’t had any direct experience with someone who was trying to monetize their Instagram, Twitter or other social media feed with their photos, but I have certainly noticed a different motivation for taking photos among people who were brought up with social media. I’m old school. When I take photos, I’m interested in either preserving the memory for me and my loved ones or taking artistic photos. When many younger people take photos, their first motivation is how they think their photos will look to their social media contacts. I guess there’s nothing wrong with this motivation–assuming they don’t go to the lengths described in this comment from reddit–but it’s foreign to me:

My [relative] is definitely not a huge “influencer” but she has a pretty strong following and what she and her friends do is beyond bullshit and is like a continual eye-roll. Some great examples: buying books she will self-admittedly never open just to take photos with them, posing with somebody else’s Louis Vuitton luggage without asking them acting as if it was hers (it was left in the hallway of a hotel for some reason and they pounced on it to take photos before the owners came back out to get it), etc.
This year we were on another family vacation with her in [country] over [holiday] and it’s exhausting. The “photo shoots” are never ceasing, they happen all the time, she takes hundreds of photos a day and the whole group is supposed to wait for her. And the photo shoots become extremely rude (ie, she took a 6-7 minute “shoot” in a [place] once we were done eating that was blocking any of the [staff] from moving around the tiny place or [doing their job], I was so embarrassed I walked out). She hates her life pretty much and complained the entire vacation about how much she hated [the cities] but on her Instagram…[insert witty pun or hashtag based on the city and how much she loves it].

Any meal or museum or whatever she was on her phone updating and editing and filtering and airbrushing photos for a never-ending parade of Instagram Story updates. And on top of that she would demand (family ignored most of them thank God) to traverse across the cities to go to certain spaces or restaurants not because she wanted to experience the space, but because she wanted the photo. For example there was a restaurant in [city] she was dying to go to because they give you a balloon to hold while you wait and she thought it would make a fantastic Instagram story post. She couldn’t tell you what type of food this place served or what they were known for. She just wanted the photo. We denied the demand.

She’s totally lost touch with reality and lives her life on her feed. She has no ability to comprehend the enormous cognitive dissonance between what she is actually experiencing and how she portrays her life to her followers (like I said, she’d hate a meal because it wasn’t some basic American food but then act as if it was the best thing she’s ever eaten on Instagram). Or the fact that she is barely scraping by in life and most of the nice things in her life are gifts from my in-laws, but she portrays her life as this incredible luxurious parade of objects and spaces, and on wayyyy more than one occasion has tried to make a house or item look like hers when it is not. Not to mention there is not a shard of intellectual curiosity or personal passion left in her life at this point…every situation is assessed simply on “how will this make my feed look better/can this make my feed look better”. Places are not “experienced” they are just exploited for photos. The rest of the group would discuss the “place” itself (breakfast menu, painting, whatever) and she would only be able to talk strategy about how to photograph it and would seem genuinely confused when this wasn’t the priority for others as well (not our own photos mind you, but hers).

If you can’t tell I have strong feelings about this….


Oh, the memories

2018/09/12 at 07:39

Today, I ran across this web page touting the features of Microsoft FrontPage 98. Man, this brings back memories. My first job in software outside of computational linguistics was as a QA engineer on the development of AT&T’s Easy World Wide Web business web hosting service. In those early days of the web, AT&T’s assumption was that small business owners would pay $300/month to host their web site but develop the site themselves (In hindsight, that was a terrible assumption. As things settled down, web hosting became a nominal fee and sites were mostly designed by professional web designers). With this business model in mind, AT&T supported Microsoft FrontPage and NetObjects Fusion as WYSIWYG web development tools. AT&T’s service included a separate staging site for development with one-click deployment to production and unlimited telephone support (hence the high price).

Microsoft FrontPage 98 screenshot

Microsoft FrontPage 98 screenshot

FrontPage was widely hated due to its ugly templates, and that hate was justified. But it did so much more than that. It allowed you to create a web site structure automatically drag and drop  navigation to every page–navigation that was automatically updated when you added pages or changed the structure. Before this, you had to update every page individually (or use server side includes if you could program in PERL or shell). I learned to create individual page parts, e.g., banner, navigation, footer, etc, created a common template for all the pages in my site using those parts, and I could add pages, completely redo the look and feel (though the basic layout was limited to my template) of colors and images. It made managing web sites easy.

It also allowed the developer to include common interactive features such as hit counters, standard forms such as feedback forms and custom forms that either saved the posted results to a text file on the web server or emailed them to you. To be fair, these ‘bots,’ as they called them, required a web server running the FrontPage server extensions, but Microsoft supported extensions for its own IIS web server as well as other common web server software that ran at the time on UNIX and BSD systems (to be fair, the tool supported these other server architectures when Microsoft acquired it; if Microsoft had developed it themselves, I’m sure it would have only run with IIS).

You could edit your web pages in the WYSIWYG editor or edit the HTML directly, and what I found amazing at the time, you could switch between modes. If you added non-compliant HTML by hand, the editor didn’t complain about it and tried its best to display it as the browser would. Because HTML development was originally performed by hand without tools to validate the HTML, browsers and other tools had to be very tolerant of non-compliant HTML code.

I tested FrontPage support at AT&T and used it for several years for my own personal web development. This web site that I found brings back so many memories.

Usability improvement!

2018/06/21 at 07:45

A number of years ago, configurable light-up signs were installed along major highways in Texas, such as I-35 here in Austin. Among other uses, they would display real-time information about traffic, in this format:

[ Name of up coming intersection ]
[ X Minutes ]

for instance:

FM 734

I noted at the time that the usability of this information was terrible. If I’m not a local, there’s a very good chance that I have no idea how far away the upcoming intersection is, and even if I am familiar with it, I have to estimate how far away that is and then do the math myself about how bad traffic is (A separate usability issue is that the signs use numerical designations for roadways, not necessarily the commonly used names. In the example above, FM 734 in Austin is also called Parmer Lane, and I doubt very many people know its numerical designation).

I was pleased to see that in the last year or so, the signs were changed to read:

[ Name of up coming intersection ]
[ Y Miles ]
[ X Minutes ]

for instance:

FM 734

So, now a driver doesn’t need to know anything about the upcoming intersection; the miles and minutes are sufficient to understand the traffic flow. Somebody at the authority that manages these signs got the message and managed to make a change for the better. I guess they could have done the math for the drivers and added the average MPH, but this change is sufficient, I think.

Now if someone would only make it clearer at the upper/lower-deck split of I-35 in downtown Austin that both options will get you through Austin, my life would be complete. As it is, every day there are many drivers switching lanes at the very last second, presumably because it’s not clear to people driving through Austin that both options merge back up in a few miles.

Differing understandings of racism

2018/05/30 at 08:44

A couple of years ago, I learned the hard way that there are radically different operating definitions of racism in the US. Someone posted a link to an Austin-area news article to a local Facebook group. The article was about two robbery suspects who had been apprehended. The article included the mugshots of the suspects, and Facebook’s algorithm chose that photo to represent the link in the Facebook post. Both suspects were African-American.

The very first comment on the Facebook post was “thugs!” and several other comments weren’t much better. I naively decided to call out the first caller as politely as I could, so I replied “‘Thug’ is a racially charged term. It’s best to avoid it.” Oh. My. Goodness. I was not prepared for the responses. Hostility, name-calling, etc. But interestingly, the original commenter replied, “I can’t be racist. I’m Hispanic.”

I ended up deleting my comment and withdrawing from that group. But I learned an important lesson: I have a much different definition of racism than the other commenters in that group. This morning, I ran across a really good description of that difference:

The average Trump supporter is simultaneously racist and not racist at all, depending on your definition of racism. This is one example of the polarized philosophy that doesn’t just drive a wedge between the parties but actually makes productive discourse impossible, as both sides already start from a place of fundamentally different definitions and assumptions.

Conservatives–but more predominantly Trump-voting Republicans–come from an understanding that racism equals explicit actions that harm someone based on an explicit hate of their race. Slavery is racism, racially motivated violence is racism, and segregation was effectively the last racist actions of the U.S. government. Anything less, such as jokes or media depictions or off-color remarks, can’t be racist because it doesn’t literally hold a race back; moreover, people who complain about it are the “actual” racists because they’re the ones making a big deal over what is ostensibly nothing.

By contract, Democrats and progressives see racism as a much more nuanced issue that may take many forms. A progressive views a remark like Roseanne’s tweet as racist because–regardless of the intended comedy–it functions within a racist worldview, and the propagation of such views may cause harm indirectly. It’s a different sort of racism than slavery, sure, but Democrats don’t have a problem acknowledging the grey areas there and saying that even casual racism should be shunned on its own level.

So to even say that “X person/group is racist,” you need to understand that implicitly means different things to different people. Your average Trump supporter might be perfectly able to crack a joke about black people being monkeys while also wholeheartedly saying that s/he doesn’t participate in racism, and not have any cognitive dissonance there. It’s worsened by the fact that, at this point in our history, most Americans were educated to specifically not be racist, that racism is BAD, while also not being given much education on what actually constitutes racism or the indirect and implicit biases that constitute casual racism or institutional racism. As a result, everyone wants to say they’re not racist, and therefore everyone has carved out their own definition of racism so that they can personally avoid it and feel like they’ve “beaten” their own personal racism.

The real problem is that most people aren’t willing to say, “Oh shit, I harbor racism on some level,” and then work toward combating that. It’s much easier for liberals to say that conservatives are racist (and aren’t willing to admit it) and for conservatives to say that liberals are inventing racism (and therefore rekindling racial tensions). In reality, we need to acknowledge that we all have personal biases that we need to get over, and that it’s okay to acknowledge racism–on any level–when we see it, if for no other reason than to be critically discerning and self-aware.

While I do agree with the progressive idea that casual or joking racism is racism, and that we absolutely should acknowledge and shun those grey areas of prejudice, I also think it’s ultimately unhelpful to just say “Trump supporters are racist” because you’re asserting something that Trump supporters would flatly disagree with, as you likely don’t even define that term in the same way. The country has truly split into two realities at this point, and political discourse has devolved into a cacophony of those realities trying to exist in the same space without first establishing the ground rules of occupying said space.

This takes me back…

2018/05/06 at 15:50

I just searched Archive.org for snapshots of my domain www.aphids.com, which was for many years my small business with my friend Susan Brumbaugh. Below is the earliest snapshot of the web site, from January, 1998. That Aphids graphic was cutting edge at the time.


Running stats

2018/05/04 at 15:10


Runkeeper status

Runkeeper status

I’ve been a recreational runner since about age 18. I started tracking my runs via GPS in 2011, and since then I’ve run almost 5000 miles. I can extrapolate that I’ve run 15,000 – 20,000 in my lifetime. Last year, I decided I would run a half marathon this year for the first time in 13 years. My training late last year went really well, and I logged 960 miles last year. This past February, I ran the half-marathon and although I was much slower than thirteen years prior, I finished without any problems.

My goal for this year is to run at least 1,000 miles. It’s the first of May, and I’m already at 459 miles, so barring injury, illness or any other unforeseen circumstances that keep me from running this year, I’m on track to exceed that goal. Exciting!

Diet advice

2018/03/21 at 09:45

This interview contains a lot of delightfully non-dogmatic advice on eating. Some examples:

Should I eat whole-grain bread?
There’s a big difference between white bread and whole-grain bread, and you certainly don’t need to eat bread to have an optimal diet. But an optimal diet leaves room for good bread — whole grain especially — and we think good bread is one of life’s great pleasures. Eat it for that reason.


What kinds of foods do you think will help support weight loss?
Wholesome, whole, unprocessed plant foods in particular. And, any food you eat while riding in the Tour de France.