Looking for writing-related posts? Check out my new writing blog, www.larrykollar.com!
Showing posts with label work. Show all posts
Showing posts with label work. Show all posts

Wednesday, November 02, 2022 1 comment

Adventures of a #techcomm geek: Still I look to find a reason

A future project—I plan to start on it in earnest early next year—is requiring a specific set of “reset reason codes.” The codes, and their meanings, are described in MULPI (a standard specification in the industry I work in)… at least, so said the ticket the developers are using to track this piece of the melange that makes up modern communication devices. I had a PDF copy of MULPI on my work system already, and once I realized the spec said “initialization reason” where my co-workers used the more direct “reset reason,” I found the table in section C.1.3.6. Hey, it’s only 887 pages.

Needle in a haystack

Besides it being a table—I hate tables, in general—I found two glaring issues:

  • I wanted the number in the left column, not the right
  • The table did not describe the conditions that would cause the reset
The latter was a matter of searching the PDF on initialization reason, but first I wanted to reverse the columns in that table. Copying the table out of the PDF, and pasting into a terminal window, gave me one line per cell:
Initialization Reason
Initialization Code
POWER-ON
1
T17_LOST-SYNC
2
ALL_US_FAILED
3
BAD_DHCP_ACK
4
etc
Once again, I had a textual nail, and I reached for my hammer: awk. Redirecting the lines into a junk file (literally called junk), I decided to create tab-delimited output with the column order reversed:
awk '{getline num; print num "\t" $0; next}' junk
Mirabile dictu, it worked the first time! The getline function does a sort of look-ahead, grabbing the next line of input before the normal awk loop can get to it. So it’s pretty easy to grab two lines, print them in reverse order, and move on to the next pair.

“Oh,” I then thought, “I should have made it a Markdown table.” Rather than start over, I just piped the output of the first awk script into another one:
awk '{getline num; print num "\t" $0; next}' junk | \
awk 'BEGIN {FS="\t"} NR==2 {print "|-----|-----|"} \
   {print "|", $1, "|", $2, "|"}'
Once again, first time was the charm! This “long pipeline of short awk scripts” approach does make debugging easier, especially if you don’t have to do any debugging. If you’re not familiar with awk, let me pretty up that second script to make it easier to follow:
BEGIN {
    FS="\t"
}

NR==2 {
    print "|-----|-----|"
}

{
    print "|", $1, "|", $2, "|"
}
The BEGIN block gets executed before the script reads its first line of input. In this case, it sets the field separator (the character or regular expression that breaks a line into fields) to the tab character.

The block beginning with NR==2 applies only to the second line of input (NR = “record number” or line number). In this case, it prints a Markdown separator (between table heading and body) before processing the second line… remember, awk takes each pattern/action pair in order. Since there is no next statement, it falls through to the default action.

The last block is the default action, since it has no pattern to trigger its use. It puts Markdown table call separators on each end of the line, and between the two fields. The commas insert the output field separator (a space, by default). I could get the same result with:
print "| " $1 " | " $2 " |"
So I copied the Markdown-formatted table from the terminal window and pasted it into a text editor. From there, adding a third column was easy. Not so easy, or at least somewhat more tedious, was searching the PDF for “initialization reason” and adding the conditions triggering each reason code to the table. In some cases, there are multiple issues for a particular reason. In two cases, there was nothing in the spec at all about the reason code. Fortunately, I was familiar with one of the causes and the other was straightforward.

The Markdown has been converted to DITA, and is now waiting for the project to get started in earnest. And it won’t be bugging me to deal with it over the next couple months.

Monday, September 05, 2022 No comments

Adventures of a #techcomm Geek: Go API chapter 2, “No ReST for the weary” (edit#2)

Image source: openclipart.org

Last time I had to deal with an API, it was pulling a vendor’s documentation into our own system. Now, I have to document our own APIs.

OpenAPI, formerly known as Swagger, is quite popular in the ReST API universe these days. And why not? One source builds a website, the hooks, documentation, and everything. At least online. If you want to provide a PDF document describing the API, though, there’s a little more to it.

  • First, all those definition and summary strings need some attention. Where developers involve the technical writers in the process makes a huge difference in effort (at least on the writer side).
  • Second, there’s more to documenting an API call than the definition and summary strings. There are path variables, query variables, examples, and the list goes on.

Fortunately, there are several utilities that extract documentation from an OpenAPI file. For my purposes, Widdershins works best—it produces a complete Markdown file—although it’s nowhere near ideal.

  • One issue was definitely not the fault of the tool. The developers told me of a dozen categories (or tags in OpenAPI parlance) that didn’t need to be documented for customers. Widdershins groups all API calls with the same tag under the same section, and that helps a lot.
  • The second issue could be either Widdershins or my personal preference. I didn’t like the order that Widdershins presented data for each method. There were some other minor issues as well.

I had a big wad of text that was my nail, and awk once again is my hammer. I started pounding. I did consider using a YAML parser for a brief time, but realized Widdershins did a lot of busy work for me. It actually does a pretty good job of building a Markdown document, describing all the method calls and schemas. If only there was a way to fix the presentation order, it would be perfect.

My first goal was to reshuffle the internal sections of each method to get them in the order I wanted. Deleting the unneeded groups, I reasoned, was a one-time thing that I could deal with myself.

My script worked the first time, but scrambled a bunch of things on the second attempt. Worse, doing the search-and-delete on those unneeded sections took more time and care than I’d anticipated. I needed a re-think.

Fortunately, a Computerphile interview with Brian Kernighan (the “K” in awk) came around, right when I needed it. It gave me… if not the key to my problem, a map to the key. In a nutshell, Dr. Kernighan advocates against large, monolithic awk scripts. His 1986 paper Tools for Printing Indexes describes his approach as:

…a long pipeline of short awk scripts. This structure makes the programs easy to adapt or augment to meet the special requirements that arise in many indexes.  

This approach can also be easier to debug, as you can replace the pipeline with temporary files and verify that the output of one stage is correct before feeding it to the next stage. Each stage refines the input further.

So I split the monolithic script into two medium-size scripts:

  • Stage 1a (weed) fixes headings, weeds out unneeded HTML markup (mostly <a name="x"/> tags), and gets rid of those unneeded sections. Having less cleanup already makes this approach worth the effort.
  • Stage 1b (shuffle) re-orders the remaining method descriptions. I learned that the input order is important for making this work; so if future versions of Widdershins move things around, it could break the script and I would need to fix it again.

It takes maybe a second to process the raw Markdown through both stages under Cygwin, which is noticeably slower than a shell under a native POSIX system. I expect my 8 year old iMac would be nearly instantaneous.

Now that I’ve cracked the code, so to speak, more stages are coming.

  • Stage 2 throws out the schema definitions that none of the remaining methods refer to. A pair of scripts identify which schemas needed to be kept, then weeds out the others.
  • Stage 3 fixes cross-references (mostly to schemas). The monolithic Markdown file uses a URL of the form #schemaxyz. Since the ultimate goal is to split the single Markdown file into topics, those URLs need to point to the eventual file name instead. A trio of scripts create file names that correspond to the URLs, replace the original #xyz name with the file name, then shuffle the schema’s description to the top of the topic.

These stages take another second to process… so 13,000 lines of YAML to monolithic Markdown file is about two seconds. The mdsplit script, that splits the methods and schemas into topics and builds a Lightweight DITA (LwDITA) bookmap, takes less than ten seconds to complete. So I’m now at the point where it’s easier to regenerate the entire document if I run into a scripting issue, instead of pushing through the problem. Uplifting the LwDITA to full DITA takes maybe a minute. After the uplift, another script fixes the extensions, changing .md to .dita, and fixing the cross-references.

At this point, I can focus on adding value: adding metadata, grouping related schema definitions, and the like. If I need to regenerate this thing again, I need only run the shell scripts that conduct the Geek Chorus.

Going forward, I’ll need to be able to compare versions, so I can replace topics with actual content changes, or add new topics. At that point, I could hand things off and intervene only when the input changes enough to make a difference. Or, we might decide to ditch the PDF entirely, and that would make things far easier on everyone.

Techcomm geeks never worry about automating themselves out of a job, by the way. There’s always a new presentation format, or new source document formats, or many new ways to streamline workflows. Handing off a system is a triumph; it means we have more time to focus on the next thing.

Edited 5 Sep: I didn’t realize I’d pasted this out of Logseq before going through it and fixing some things. Now we’re up to date.

Edited 7 Sep: All the tweaks have been made, and I now have a turnkey system.

Tuesday, May 24, 2022 No comments

AJ, office buddy

One thing about working at home, you don’t have so many distractions. But sometimes, the wife has to go do something on the farm while she also has AJ through the weekdays (while Daughter Dearest is teaching). So that means AJ comes upstairs on occasion, to hang out with Granddad while he’s working.

AJ has figured out the whole office deal from watching me. The “console” space heater I used to keep my legs warm through the winter became her “desk,” and she has a stool for a chair.

I haven’t even finished breakfast,
and I have to answer this email!

Sometimes, she takes the call.

Hello. Yes, this is Tech Support.

And if I get out of my chair, for more than a second, guess what happens?

You call that information architecture? Jeez. Here, let me fix it.

The school year wraps up this week. That means DD will be home, and AJ won’t be around. But Charlie will likely be my substitute office buddy through the summer.

Who are your office buddies? Comments are open—give us some links!

Monday, February 01, 2021 No comments

Adventures of a #techcomm geek: Go API

Image source: openclipart.org
A couple weeks ago, I got an email from a product manager:

Can you convert these API documents to our format?

Attached were three Weird documents. I let my manager know about the request; he told me to make sure we had rights (the documents were from an OEM, we’re marketing a re-badged version of their product), and to loop in the other writer on this product.

I looped in the other writer, who used to sit right across from me when we had those quaint “office” and “commute” things. While both of us thought it might be best to do it the “right” way—that is, convert the docs to DITA and publish them through our CCMS—we both figured replacing logos and changing names would be good enough.

We both expected the other to pick it up, I suppose, and I was doing other things. The upshot was, I forgot to ping him about it. So Monday came around, and nothing had happened. I groaned at the prospect of using Weird for something more than a two-page HOWTO document, then thought about the scripts I wrote for pulling in documentation through Markdown. “If it becomes too much of a hairball to clean up,” I told myself, “I can always replace the logos and change the product names.”

As it turns out, Markdown is quite adequate for API documentation. There was some cleanup involved, but not as much as I had feared. Global search and replace took care of a lot of it. Most of the manual cleanup was the same kind of thing anyone does when bringing someone else’s documentation into their system—improving topic titles, adding boilerplate… you know the drill. It took about a day to knock the three documents (total of 600 pages, give or take) into shape, and another day to tweak things.

I went ahead and fed the bookmaps to our transform. It was only after I got a decent-looking PDF that I realized: all the topics were still in Markdown. In retrospect, that wasn’t too surprising: the toolkit converts those topics to DITA (temporarily) before processing them. Markdown is a lot easier to deal with when you’re doing cleanup stuff anyway, and I finished that before doing the uplift.

So by Wednesday evening, I was ready to upload the converted documents into the CCMS. The upload tool is more finicky than Morris the cat, and it uncovered a couple more cleanup issues. I resolved those Thursday morning, and we now have clean DITA in the system.

And yay, I didn’t have to touch Weird!

By the way, the conversion scripts are on Github. Just in case you need to do something like this.

Wednesday, October 21, 2020 No comments

Adventures of a #techcomm geek: Constants Aren't, Variables Won't

DITA-OT logo
One of the advantages of having a DITA-based workflow for technical writing is for translation. During the acquisition binge that ended with us being on the “bought” end, we picked up a product with a fairly strong retail presence. You’ve probably seen those products in Best Buy and similar places, and maybe even bought one to upgrade your home network. (No, I’m not going into details, because I don’t write documentation for that line… mostly.)

But, as usual, I digress. Retail products, or not-retail products that are supplied to the end-user, need to have localized documentation—that is, not just in the native language, but using country-specific idioms (although this might go a little too far). And, to help with consistency, things like notes or cautions use canned strings.

The DITA Open Toolkit (DITA-OT) PDF plugin provides a pretty good list of canned “variable” strings for a bunch of different languages, including languages with non-Latin glyphs. Of course, we added to that list… somewhat. I put quotes on “variables” because I don't know why they call them variables; they are basically language-specific constants. Local Idiom, I suppose.

Fast-forward a couple years, to the disease-ridden hellscape that most refer to as “2020.” A year ago, one of the point people for translations sat two aisles down from me, on those days we weren’t both working from home. We would have hashed half of this out in person, before roping in a bunch of other people in a long email chain. (Don't get me wrong, working remote is da bomb, and I hope they don’t expect me to do time in the office in the future… but it had the occasional upside.)

Anyway, this was the first Brazilian Portuguese translation we had done in a while, and weird things were happening. My initial guess—that we had provided updated strings for only a subset of languages (mostly French and German)—turned out to be correct, when I started poking around in the source. I remembered working on a script to parse the XML-based “variable” files to build a spreadsheet, so we could easily see what needed updating. Turns out, I had either given up or got pulled away after the script was less than a quarter-baked (let alone half). I beamed my brain power at the cursed XSLT file, and it finally turned brown and gave me the output I wanted: name[tab]value.

Now I was halfway there. I had tab-delimited files for each language, now I just needed to coalesce them into a single (again, tab-delimited) file. As I’m fond of saying, when I want to process a big wad of text, awk is how I hammer my nails… and I started pounding.

Since I had an anchor point—the “variable” names that were constant for each language—it was a Small Matter of Programming. Knowing that English (en) was the most complete language helped; I used it as a touchpoint for all the other languages. After a few fits and starts, the script produced the output I needed and I imported it into Excel. Blank cells that needed values, I highlighted in dark red. Things I needed to personally tweak here and there got yellow highlighting. I hid rows that didn’t need attention (some were complete across the board, others we don’t use), and sent it to the rest of the team.

Just to be complete, I finished the day embedding the XSLT and awk scripts inside a shell script (and tested the results). If I need to do this again, and I probably will, I can do it in a matter of minutes instead of spending an entire day on it.

I deliberately formatted the spreadsheet so I can export changes to TSV (tab-separated values) and write another script to rebuild the language “variables” if I feel it’s necessary. It’s always good to anticipate future requests and be ready for them.

Wednesday, September 30, 2020 1 comment

Taking a break

When I last talked about my remote workspace, I was adding a 40" monitor. So I got rhythm, I got music I have good lighting, lots (but never enough) of screen real estate, powered speakers I connect to my phone for music and conference calls… but not all was perfect in my homemade remote worker’s paradise.

We replaced the kitchen island a while back, and the old one is upstairs. I thought about using it as a makeshift standing desk, but that didn't materialize. Worse, it was a tight squeeze between the island and the big monitor, and Charlie banged his head on the corner of the monitor more than once when coming to visit. The only natural light is from a narrow gable, and that was partly blocked by the window A/C unit.

Mason’s fall break ran from Thursday through today, so I took the days off as well, hoping to camp down at the pond again. But with Beta coming for the weekend, bringing about two inches of rain, we decided to stay home. We tackled some of the stuff upstairs, making a little more room. I looked at the gable window, with the A/C blocking a good third of the incoming natural light, and looked at the island.

As Gru would say: “Light bulllllb.”

With an anxious Mason holding up the window, I pulled the A/C out of the window… and immediately got a bath from rainwater not quite drained out of the unit. I also found a few slits in my fingertips, compliments of my wrapping them too far around the back, but toilet paper and pressure took care of that. I borrowed a lid from a large storage tub to put the unit on as I carried it out to the garage to finish draining.

With the collected rainwater down to a few drips, I hucked the A/C out to what was once Studio FAR, but became the wife’s personal storage dump a while back. There was also a tall dorm fridge out there, plugged in but empty, so I unplugged it and carried it into the garage for a quick cleanup. There were a few drips of who-knows-what inside, but the ice buildup needed more than a couple disinfectant wipes to deal with. I got a blow dryer and started melting the ice while pulling at it with my fingers. It took maybe 20 minutes to defrost, and I dried it off and hucked it upstairs. Of course, the island + fridge were about one inch wider than the gable, but the gable outlet is switched anyway. I parked the fridge in front of the island and plugged it into a non-switched outlet.

With the break area ready, I began accessorizing. First came the coffee grinder and espresso maker from downstairs, along with the loose coffee sitting in freezers (and a pint of half&half). I ordered a 0.5l electric kettle, and a French press of nominally the same capacity, and they arrived over the weekend.

So everything was ready to go this morning, when I went back to work. That’s when I found the French press's idea of “0.5 liter” includes neither coffee nor the plunger. OK, so now I know to not fill the kettle quite full. This afternoon, I made a cappuccino for my 3pm power-up.

There will certainly be some other tweaks to the workspace, especially around the exercise equipment. But this is a big step forward. I can look out the window while I’m making coffee, and I don’t have to go back downstairs (with its potential distractions) unless I forget to bring a coffee cup along.

Tuesday, June 30, 2020 1 comment

Impending: screen tan

I’ve been plugging along in my new work space for a couple of months, now. A couple weekends ago, while taking some time off, I did turn the light fixture 90° as threatened, and my gorgeous face is now lit up much better during videoconferences. :P

One thing that has chafed me about the homegrown workspace… I had two large monitors at work, side by side. At home, I had the laptop screen and a 17" NEC monitor that Solar gave me a few years ago. The work monitor mount was integrated with the cube/desk, and I didn’t have the time or inclination (at the time) to figure out what to do with them. I’ve made do, but wanted a little extra.

I am SO buying these socks for her.
Well… let me preface this by saying I’m not trying to criticize in any way. We all have our own ways of coping with the pandemic (not to mention The Boy checking out in August), and maybe her watching the Hallmark Channel for hours on end is healthier than me sitting at the computer and drinking myself stupid most nights.

Anyway, The Boy left us a 40" Sony TV. Wife wanted to upgrade our 32" Samsung for a while, and got someone to swap TVs for her when I was occupied doing something else (i.e. upstairs working). All well and good, except that the Sony’s HDMI2 input was boogered somehow. We used HDMI1 for the satellite connection, and #2 is the DVD player. We would see the DVD player's startup screen, then it would go black and not respond to pretty much anything but an input change.

Long-time readers know that the wife’s idea of troubleshooting is to go for the most expensive/time-consuming fix. Without my knowledge or input, which is fine if she used her own money, she bought another 40" TV. A Vizio, this time, which is fine. I don’t exactly trust Sony to keep its mitts out of my LAN. But I digress. There was something about a new wall-mount involved, and I dragged out the tools.

A while back, someone left a DeWalt driver/drill at the manor, with a 20V battery. I bought a charger and a spare for it, and I’ve used it for a couple of two-minute projects… then the parsonage’s back deck needed resurfacing. I brought it along, and it tore through that job like it was SARS-COV-2 tearing through immunocompromised lungs.

But I digress. The driver also made quick work of the wall-mount, and the Vizio was playing Hallmark movies in well less than an hour.

BIG screen!
That left me with an extra screen, a need for it, and a specific set of circumstances. The old wall-mount was great for the living room corner, but I needed something that went sideways from a wall, over my desk. Dragging out the measuring tape, I found that 18"-24" would give me plenty of clearance. Off to Amazon I went, quickly found a wall-mount arm with 24" of clearance, and ordered it. It arrived today, and I hucked it and the toolbag upstairs.

It took longer to mark the holes than to drill pilot holes, and to drive the bolts into the studs. It makes SUCH a huge difference to have good tools. In a manner of minutes, I hung the monitor on the mount, routed cables, and plugged everything together. The laptop’s dock has an HDMI connection, and I happened to have a stray cable laying around… presto, a humongous 1920x1080 monitor!

Maybe now that I have the hardware in place, the employer will spring for a 4K monitor… ha. I'm trying to decide whether to return the 17" NEC monitor to my bedroom desk. It might be useful for side jobs. After all, you can’t have too much screen real estate.

Friday, April 24, 2020 2 comments

Life and Work in the Time of Pandemic (part 4, workspaces)

Planet Georgia's sorry excuse for a governor partially lifted the shelter-in-place, starting today. That’s going to have consequences in late May, for sure. Nevertheless, we got an email from work that said, in effect, “yeah, we know, keep working at home.”

Things I needed to set up a workspace arrived this week, and I found some other necessities in the garage. So after I sent my reports this afternoon, I got to work. After clearing the space, I vacuumed the (horrid) carpet.

We’ve been using The Boy’s old room for storage for a while. Clearing out a corner wasn’t all that difficult, but lighting has always been an issue. The house is a Cape Cod, and the only window in each upstairs bedroom is in the gable. I ordered a 4-foot LED fixture and power cord, and mounted it on the sloped part of the ceiling. Plugging it in yielded plenty of light, enough for most of the rest of the room. I used an old wire shelf hanger hook to keep the cord up against the wall.

Now for the furnishings. Daughter Dearest’s old office chair was sitting in that corner, and I found an old typing desk in the detached garage. Of course, it was all the way to the back, and covered in stuff (including lots of dust and grime). Fortunately, it was light enough for me to lift and carry by myself, and I hucked it across the driveway before wiping it down. I really need to hit the metal parts with a wire brush and repaint it, but that can wait.

With the desk mostly cleaned up, I hucked it up the stairs and dropped it in place. I grabbed the bag of gear (dock, keyboard, mouse) that I got from the office back when they first told us to not come in, and took that upstairs. To my delight, there was also a power strip that I’d forgotten about. Finally, the laptop and my second monitor went on up to make the final connections.

Another garage find—a big monthly planner whiteboard—was the last piece. We have a little container of picture hanger hooks, and there was a length of wire as well. I put it together, and there was already in a screw in the wall at just the right height. Incidentally, it covers a bunch of marks, so it wins twice.

It’s not quite done yet, even if it’s usable as a workspace in its present state. I plan to put some hooks under the front of the desk to neaten up the cabling, for starters.

Longer term, the wife wants to replace all the carpeting in the room and paint the walls. When that happens, I plan to use whiteboard paint at least in that corner. Maybe I’ll replace the cord with house wiring, to get it out of the way.

Come Monday, I’ll be a lot more comfortable about turning video on for our many conference calls than I have been in the past. I could also put pithy messages like “Approvals needed ASAP” on the whiteboard behind me, to enhance my presence.

Wednesday, March 25, 2020 No comments

Life and Work in the Time of Pandemic (part 2, food)

Coronavirus (image credit: CDC, public domain)
Our “online learning” was extended through Spring Break, the first full week of April here, and they should probably close out the school year doing it. I suggested that to Daughter Dearest, and her response was “SHUT UP. SHUT UP.”

But whether we pull a Hong Kong and lift restrictions early (spoiler alert: it would be a Bad Move), or keep movement tamped down to prevent further spreading, the occasional grocery trip is a necessity. Maybe less necessary is occasional pickup from restaurants, although they might argue the “less necessary” part.

Restaurants are adjusting as well as they can, offering incentives like extra points for rewards programs or free delivery. Meanwhile, the wife and I have roughed out meal planning. We’re mostly digging meat out of our freezers, although we're short on ground beef and the hoarders (aka #covidiots) grabbed it all last weekend. Bread and milk are easier to find, now… both have a finite shelf life and hoarders might have a hard time using what they have before it spoils. Ground beef should soon be available as well, because even covidiots have only a finite amount of freezer space. (But they must be using all that toilet paper as mattresses.)

Meanwhile, the school system is still running the bus routes… except instead of dropping off kids in the afternoon, they drop off lunches in the late mornings. We don’t need the extra food, but they beg us to take it because we’re at the end of the route. Today, we got burgers. The kids eat whatever sandwiches are provided, but sometimes skip the veggies + ranch dip packages (add 1/4 tsp of onion powder to the ranch containers, instant chip dip). We’re going to cook the veggies for supper, if I keep my mitts out of them. Still, it’s starting to get overwhelming—we’re covered up with fruit, milk, juice, etc. We’ll need to make sure the neighbors get some of this if it continues.

Since the kids don’t drink all the milk, I have rediscovered the joy of drinking half-pints of chocolate milk from the carton. I have not yet tried my old trick of jabbing the side with a pencil, making a hole of the exact diameter of a straw; I could pressurize the carton and pump the milk into my mouth. One of my better memories of elementary school.

Fortunately, Charlie is expanding his protein sources, although he still strongly prefers his latest adoptions to be breaded and fried. Chicken nuggets (especially Chick-Fil-A) and fish sticks are winners. We thawed and baked a slab of salmon I had kicking around in the freezer earlier this week; the adults ate that, and Mason and Charlie gobbled several helpings of sticks. We got these corn dog bites, and Charlie ate half of one before he realized it wasn’t chicken, then ate the breading and left the mystery meat. Sometimes, it’s hard to tell the difference between picky and intelligent.

We have a few days of not-rain this week (yay!) so I’ll likely pull some ribs out of the freezer and smoke/grill them.

Monday, March 16, 2020 2 comments

Life and Work in the Time of Pandemic (part 1)

Coronavirus (image credit: CDC, public domain)
Local schools are on “online learning” this week (and I’m sure that will be extended). I started working from home last week, and we all got a “recommendation” from a manager to work at home through March 27 (again, it’ll probably be extended). Oddly enough, Charlie’s daycare (a Petri dish if I ever saw one) is remaining open. His therapy office is also open, but they’ve moved the waiting room out to the parking lot… in other words, wait in your car until your therapist comes out. Our little church has moved its sermons online (unfortunately, to the Book of Face, which I don’t use) for the duration.

You’re probably seeing the same things in your locale, and I’m not here to provide dry statistics. I’m going to journal the mostly self-isolated life in a rural area, in case someone else finds it interesting now or later on.

Long-time readers might remember FAR Future, a long blog-novel I wrote starting all the way back in 2007. Although the chronic energy shortages that the whole story is built around have yet to materialize, some of the things I wrote about have had eerie parallels in real life. One episode (written in Sep 2008) discusses a serious flu pandemic, with a 3%-5% mortality rate, breaking out in… December 2019. We’re not laboring under a junta, but the administration in real-life 2020 is every bit as incompetent as was the junta in FAR Future. The difference is, the fictional flu was like the 1918 pandemic, hitting young and healthy adults the hardest. This one goes (mostly) after the elderly. We also have the Internet, a find way to find information (and plenty of misinformation) about what’s happening.

Saturday was “run errands” day, so I combined the trips to limit time out and contacts. Charlie had horse therapy, and we needed both some groceries and a UPS battery. Other than that, we were in all weekend. Wife and I keep talking about meal planning, so we can order pickup from the local Kroger, but haven’t quite done it just yet. Today, she’s out with Charlie for therapy. I’m not sure he’ll go to daycare today. If he does, I might run to the office to grab a laptop dock and some notes, then pick him up on the way back.

These first few days of (mostly) shelter-in-place are very strange. It’s like a winter storm, except that all the utilities are working and the roads are even more clear than usual. Our crappy DSL is crappier than usual, what with all the school kids with Internet doing their work online (not to mention people like me, trying to work). Structure is going to be important… along those lines, Daughter Dearest forwarded me a suggested schedule for families. Modify as needed, but a little structure will make everyone's day go better:


Meanwhile, I have a minor cold. I’ve never been so glad to sneeze.

Thursday, June 27, 2019 2 comments

Adventures of a #techcomm Geek: A Cautionary Tale of an Acquisition

Pull up a chair, young’uns. Today, I bring you a tale from a time when years started with a 1. It was a technologically backward time, before email had yet to completely replace paper memos and USENET or BBSes were how most people “went online.” But the technology we had, we used well. It didn’t require LinkedIn to help empty out an office when things went to #3||.

The 80s were in our rearview, although its music lives on to this day, and the corporate merger and acquisition binge was starting to cool off. Still, buying and selling is the lifeblood of a corporation, and sometimes what they sell is pieces of themselves. So, on to this particular place. None of the players are around anymore, so let’s call it Don’t Care Anymore (DCA). It was a “coulda been” company—I’ve worked at a couple of them. DCA, with some vision and luck, coulda been Cisco. The founder held the (now expired) patent for statistical multiplexing, and they did good business building and selling serial port multiplexers. (Remember, this was a technologically backward time, when some people still had serial terminals on their desks).

But even then, Ethernet was beginning to worm its way out of the server rooms and developer offices, and into the office as a whole. There were competing networking technologies, most notably Token Ring (mainly in IBM shops), and Ethernet at the time required relatively expensive coaxial cable. Many companies still thought serial terminals connected to a VAX or IBM mainframe were adequate; some had PCs for word processing and spreadsheet software (“Lotus 1-2-3,” look it up, kiddies), but the PCs still had a serial connection. You see, networking applications like email, file sharing, and (for forward-looking companies) USENET were things that ran on mainframes.

There were some good ideas going on—the serial concentrators got an Ethernet card, and DCA bought a company making a T-1 transceiver (basically a really high-speed modem that could carry data, voice calls, or any combination). The developers were also working on what amounted to an Internet router. Had executive management given it more focus, things might have been different… but what they called “networking” was only one part of the company, and the execs considered it the unimportant (if original) part. They were focused on selling a hardware/software combo that allowed a PC to emulate an IBM3270 terminal. It was an amazingly high-margin product for the PC market, and the execs had little headspace for anything up-and-coming (despite handwriting on the wall, like a declining market for IBM mainframes and chipsets that would slash the cost of the hardware component to nearly nothing).

So, the execs found a buyer, and sold the networking division to another company. Let’s call that outfit Really-Moronic (R-M), for reasons that shall soon become obvious. Long story short: there was a lot of goodwill on our part, because we felt like we were actually wanted, and they threw it down a rathole.

You see, DCA had a pretty decent benefits package. The Boy and Daughter Dearest were both born when I worked there. Wife-unit was working as well, and her benefits were on par with mine. The upshot was, “childbirth” was covered at 80% for each of us. So one package picked up 80% of the bills, and the other got 80% of the remaining 20%… which meant a $10,000 hospital bill became $400 out of pocket.

It was a good thing we had our kids before the acquisition. R-M’s healthcare package, compared to DCA’s, was terrible. I ran the numbers, and it amounted to a 7% pay cut. It didn’t help that R-M’s VP of HR (are we choking on the acronyms yet?) both misled and outright lied to us about the benefits:

  • We got yearly bonuses at DCA. When asked about that, he replied “Sure, I get a bonus.” He neglected to mention that only management got bonuses. Deliberately misleading. So on top of the 7% pay cut on the healthcare front, we lost a bonus averaging another 7% per year.
  • Asked about the healthcare package, he replied “it’s comparable to yours.” An outright lie, unless he meant “our package looks terrible by comparison,” or management had a better package.
  • They moved our office to Dunwoody, claiming it was a more central location—another lie, they chose the office to avoid building out a computer room. One of the things people liked about DCA was that exurbia had little traffic. It was an easy commute. People moved nearby to take advantage of low(er) housing costs. Dunwoody added a good half-hour or more to the commute time, each way. We shared a high-rise with a couple other companies, including AT&T. Ma Bell’s kids were really nice people, who invited us to their company BBQs and the like. Having good corporate neighbors took some of the edge off the relocation, but certainly not enough to make up for the increased commute time.

The benefits disparity had to come up during the due diligence that any company has to do when they’re buying another company (or a large part of one). Did R-M think that people would just shrug and take a pay cut on top of the overt disrespect, especially the highly-talented engineers and support staff who do the magic that makes a tech company profitable? Did they really believe that skills aren’t transferable? Or were they so arrogant that they thought it wouldn’t matter?


A round of layoffs hit. One manager, told he had to cut one person in his department, laid himself off. After that, no layoffs were needed; the talent started draining out the door. R-M made a few half-hearted efforts to stem the outflow, paying out a token one-time bonus and hiking the raises to cover some of the difference in the benefits packages. But we were still taking a significant pay cut for a longer commute, and word got back that the new owners considered us “losers and whiners.” That, as you might imagine, did nothing positive on the goodwill front.

Our boss was the first of the documentation department to depart. The new boss was several hours away (by plane), which meant we mostly managed our own affairs. We became Resume Central for the rest of the office, in between our own job hunts and departures. After a few months of searching, I hooked up with a reputable contract house and spent about a year bouncing around from place to place. R-M sank like a stone, and nobody remembers them. Ironically, the parent company retooled and is an important customer of the place I work at now. DCA also disappeared, bought by a competitor who did a better job of understanding the changing landscape.

Moral of the story: employees aren't stupid. They recognize a significant pay cut when it happens, and they recognize a lack of respect. Combine that with a robust tech job market, and you might find money you spent on that big acquisition going down the drain… and taking you (and your CEO’s reputation) with it.

Thursday, February 28, 2019 No comments

Adventures of a #techcomm Geek: Info Architecture

In this adventure, we find that structure isn’t always structure. And sometimes, the structure jumps up and smacks you to get your attention. More geekiness follows…


Image: openclipart.org
As part of our conversion to DITA at work, I shuffled some things around in the huge manual I work on. I moved a huge wad of reference material into an appendix; other content can easily link to it when needed. But the reshuffling got me to take a look at the reference material.

Managed network devices, like the ones I usually write about for work, usually have a way to message the mothership about various issues. Examples include:


  • Hi, I’m online.
  • The power’s out here. I’m running on my battery.
  • Here’s some stats from the last connection.
  • One of my components just failed!


The messages aren’t that chatty, of course, and they often include some variable data. Some are more urgent than others, and might require some action by the network operators.

I had separate topics describing each message, and they came out of the conversion tool as concept topics—a lot more generic than I wanted. As I was trying to get everything done at once, I didn’t give it too much thought. Since the messages were reference material, they would be fine as references. I split them into sections (format, severity, cause, action), and moved on.

DITA to the rescue? Um… nope.


Later on, I came back to the messages. “There has to be a better way,” I thought. After all, the sections could get out of order, or end up with different titles—there’s all sorts of ways to be inconsistent with reference topics. My next thought was, “Hey, DITA has hundreds of elements, and its prime purpose is software documentation. There's probably an entire message domain waiting for me.”

In reality, there are three message-related elements in the entire ocean of DITA, and two of them are inline (<msgph> and <msgnum>). The third is <msgblock>, for tagging message output.

Ah, the joys of information architecture. Creating a message domain from scratch was a possibility, but would likely be a hard sell to the co-workers.


We’re in trouble(shooting) now


I gave a moment to the idea of using troubleshooting topics—then it hit me. A message has a condition (the message itself), a cause (why it was logged), and a solution (what to do about it). That’s exactly the structure of a troubleshooting topic!

The only sticky point was where to document the message format, and I quickly decided that was part of the condition. I used @outputclass="message" to tag the topics, and to have the transform use Format: instead of Condition: for the condition part. I converted a few to troubleshooting topics, and it worked as well as it seemed it would.

On to the next thing


Then yesterday, I got a meeting invite with an attachment, a follow-up to a discussion a few of us had last week. One of the groups in our far-flung department uses InDesign to produce actual printed deliverables (how quaint!). The fun part is, the page size is about 4 inches square—so it’s not a matter of tweaking our transform plugin; we need a whole new one.

But when I started looking at it, the structure almost leaped off the screen, despite a couple of misplaced pages. Each chapter contained a single task, and each step used one page for substeps and graphics. Having that revelation made the call go a lot faster and more smoothly, because it was one of those things that are obvious once you see it. I just happened to be the first one to see it.

So I did a conversion dance, involving lots of pixie dust: PDF → Word, then Pandoc converted that to Markdown. After some serious cleanup (and moving misplaced content where it belonged), I used a couple of scripts to break the Markdown file into topics and create a bookmap. DITA-OT gobbled up the bookmap and Markdown topics, and spit out DITA topics. Thus, I had a pilot book we can use as test data for the transform.

The InDesign users also have a couple more formats; one is close enough to a regular book that we’ll have them use the standard transform. The other is a folded four-panel sheet… that one is going to be interesting. I’m going to have to resist the temptation of blowing off documentation work for glorious coding.

Stay writing… until I geek again.

Wednesday, December 12, 2018 No comments

Adventures of a #techcomm Geek: Blurrier Image

In today’s installment of Life of a #techcomm Geek, we return to a subject that draws this geek like a moth to flame: file conversions. Hazardous, yet compelling. Lots of geeky stuff follows…


I’ve had this particular line in my Tines to-do list for a while. As part of our transition to a new documentation system, I and another writer handled the conversions. We had a high-end tool to help us out, although creating rules was a dicey proposition and the vendor ended up helping (we made tweaks where they could make an obvious difference, though).

In the most recent round, we got to the FrameMaker-based docs. Frame (as its users often nickname it) is unique in that it allows overlaying callouts and other graphic elements on top of images. This is a huge help for translating manuals, because the writers don’t have to maintain a separate set of graphics for each language. Anyway, since the new system isn’t FrameMaker, something else had to happen. The conversion system could be configured to either flatten the images (convert to a PNG, rasterizing the callouts) or create an SVG (Structured Vector Graphics). We chose the latter, thinking that since SVG is an XML format, the new system could maintain them easily.

We were wrong.

Long story shortened considerably, we eventually threw up our hands and decided to convert all the SVGs to “flattened” PNG files. The writers would keep the SVG files on their hard drives to make changes, then upload a new flattened PNG when needed. I wrote a script to do the deed; it crunched through hundreds of SVGs at about one per second, and updated all the links in the book to point to the new PNGs.

All well and good, until one of the writers went to publish. “The images look blurry,” she told me. Taking a look, she was obviously right. It took me about three seconds to figure out why.

You see, our SVG files have a width attribute, which was set to the width in the original FrameMaker files (a typical width is 576 pixels, which at 96dpi is 6 inches even). All well and good, but the original images run about 1200 pixels wide—so in essence, we were throwing away over ¾ of the image data when doing the conversion. No wonder it looked blurry! But we were all weary of messing with it by that point; I had written scripts that:

  • extracted embedded images from an SVG, converted them to PNG, then changed the link so the SVG referred to the file instead
  • went the other way, embedding images in an SVG
  • converted the entire mess to PNG in one swell fwoop

The documentation work that was my primary job function had been back-burner’ed for too long. I added an “investigate this further” item to my backlog list and got back to the bread-and-butter part of my job.

This week, I all but cleared a fairly long to-do list in three days, so I thought maybe I could give this thing another shot. A quick Google turned up some promising code on superuser.com; I divided the image width by the scaled-down width in one SVG, applied the script, and got a nice sharp image! The only problem with that is, it would take about 10 minutes to do each file by hand, and there are hundreds. A script is the only practical way to blast through all of them.

When I tackle a situation like this, I tend to use a shell script to drive awk, Perl, and XSLT scripts. Each has its strengths, and trying to force (say) XSLT to work some of awk or Perl’s string-processing magic is more trouble than it’s worth. And vice versa. So… XSLT to extract the file name and (scaled) width, awk to parse the output of file (a utility that returns the dimensions of an image file) and do the calculations, all wrapped up in a shell script to conduct the Geek Orchestra.

Of course, I ran out of time this afternoon to put the whole thing together, but I have all the sub-script logic down. I just need to score the symphony. That will likely take me to noon tomorrow, then I’ll be back to bugging people already bogged down with too much stuff to lend me their expertise.

I also achieved Inbox Zero at work today… and that’s a rant for another time.

Saturday, July 14, 2012 4 comments

2-4-6-8, Everyone Evacuate!

Yesterday morning, I’d set up the co-worker with my MacBook Pro because his Dozebox wouldn’t open the files he needed to work on. I had two things to do, and one of them I could do on my own Dozebox, so I hooked it up and got at it. Things were going well enough, when…

braap braap braap

The fire alarm went off. They were doing some testing on Thursday, so at first I didn’t think much of it. It goes off once in a while, and usually quits after a few seconds. But, a minute later, it was still going.

“Must be a fire drill,” I said, and meandered out the door without much further thought. We’d finally got some rain here on Planet Georgia, and it was threatening more, so I stayed under the overhang just outside the door. I thought, If they’re timing us to see how quickly we clear the building, we’re failing miserably. While there were a few dozen people in the back parking lot, there were more still toiling away at their desks.

After a few more minutes, the alarm was still going. I meandered over to the other end of the parking lot where the supervisor was standing. “Hear anything?” I asked him.

“Nope.” Others were joking about what it could have been; I assumed something in one of the labs started smoking.

Finally, someone stuck his head out the door. “All clear, you can come back in,” he said. We headed inside and started chatting about one of the projects I’m working on. We hadn’t been in for two minutes when another guy came by. “Everybody out! Again!” he said. Shortly after, I heard a fire truck approaching in full howl.

Something wasn’t right. I went to my desk to get my Kindle and umbrella, then went out the side to where my car was parked. There were a couple more of my co-workers, whom I joined after putting my stuff in the car (Daughter Dearest’s car, since mine’s in the shop for a power steering issue). That’s when word started getting around: a suspicious package was delivered to the Legal department, and it spilled some white powder.

Someone came from around the front, and said the fire truck was putting some people on the roof. “Why don’t they turn off the ventilation?” I asked. Nobody had a good idea why.

One of the upper managers came by. “We’re going to be out for two hours,” he said. “After that, they might let us back in.” It was 11:15—a little early for lunch, but I did have a 1pm conference call scheduled. I decided to hole up at Johnny’s Pizza for a couple hours, because they have wifi and it’s usually quiet. I could catch up on the world, get lunch, then do some writing-related things until it was time for the conference call. But at 12:30, one of my co-workers called and said we were locked out for the afternoon. Adapting was simple: I’d simply drive home and mostly listen on the conference call on the way. But my counterparts in Beaverton figured it was best to just reschedule, so I had a quiet drive with no distractions.

I came home, got on the VPN, and pulled up mail. “The substance was determined harmless,” said the email, “come on back in.” Fat chance. I took care of things at home.

At least I don’t have to worry about my work computers being contaminated. Beyond the one that’s already contaminated with the Microsoft operating system thing.

Monday, October 03, 2011 2 comments

Way Out West

Technically, this wasn't an “Escape from FAR Manor” — my employer has an office in Beaverton OR, and they wanted me to attend the Author-it training the writers out there were getting. Fortunately, we have something set up with a travel agency, and they took care of making the derangements (including changing my name on the plane tickets to match what’s on my driver’s license). It’s been like six years since I had to get on a plane, and several things have changed since then — like fees for just about everything including checked baggage. Since you’re allowed two carry-on bags (one luggage and one “personal item” such as a computer bag), I put my clothes in a soft-sided bag and loaded up the laptop bag with other things.

So Monday morning, I bolted out the door a little later than planned since I was trying to take care of a panic-mode glitch in one of Mrs. Fetched’s video projects — leaving behind the credit card I’d planned to use for incidentals such as the hotel room and rental car. Fortunately, I’d stopped for lunch just a little ways down the road and was able to call someone to bring it to me.

It’s difficult to find a non-stop flight from Atlanta to Portland, and nearly impossible to find one that fits the corporate travel budget, so I had an hour and a half layover in Chicago. O’Hare is undergoing a lot of reconstruction right now, so things are a little strange. For the first time in my experience, they rolled stairs up to the plane and we got off outside. Cool! Getting to the next gate took about a third of my layover time. It was going to be a long leg to Portland — around five hours — so I asked the guy at the United desk whether the inflight meal was worth paying for. “The food itself is okay,” he said, “but you don’t get very much.” He proceeded to suggest a place just down the hall that made great hot sandwiches, and I took his advice. It was an early supper, but it was going to be a long evening (made even longer by shifting three time zones west).

On the plane, I suddenly realized I’d left my crappy feature phone in the terminal. A flight attendant told me there was time for me to go grab it, but another one brought it in and asked if anyone had lost a phone. I was of two minds: 1) Whew! 2) Can’t get rid of it, it followed me onto the plane! I suspect if I’d left an iPhone behind, I’d have never seen it again. We left without further incident, and I spent the flight reading and listening to my iPod.

In Portland, the nice young woman at the Hertz rental counter gave me directions to the hotel — or rather, directions to the exit I needed to take. The hotel turned out to be a few blocks off the road, and I stumbled across our office while looking for it. I finally stopped and called the front desk and got directions. The room was labeled “kid-friendly” — it had a little table for kids to sit and draw or play board games, there were cute decorations all over… Mason would have loved it, but I had it all to myself.

Mason and Dutch
Mason and Dutch
For me, the high point of the trip was meeting Janet, a regular on Andi’s blog, and her husband Wayne. They lived just a few miles away, so we managed to get together the last evening I was there at a local Thai restaurant. They plied me with gifts for Mason (really cool folks!) and sent me back with most of the leftovers. I didn’t do much exploring other than that, just spent a lot of uninterrupted evening time writing. I pretty much stayed jet-lagged the entire week, waking up at 4am every morning.

The second-to-high point was the first leg of the trip home. The TSA people in Portland actually smile and talk to you; I asked one if there was a problem bringing my lunch through security. “No,” he said with a grin, “but you might have to share!” I didn’t have to, but there was plenty. The first leg of this trip was to Seattle, on Horizon/Alaska Air. Not only did they roll the staircases out like in Chicago, it was a twin turbo-prop! I hadn’t flown on a prop plane since college, in the days of North Central/Republic Airlines. More cool! They used two staircases, which made boarding a lot less congested than usual. We got in the air, and they brought beverages around. Including… free beer! I LOVE THIS AIRLINE! I did ask them if they planned to serve Atlanta any time soon (doesn’t sound like it, drat).

Finally, the long flight to Atlanta on Delta. And here was a surprise: every leg, both ways, was on a different plane. The Boeing 757 was easily the most cramped from a passenger standpoint, while still being the largest. Even the Bombardier prop-job was more comfortable. I read a lot, catnapped, and generally endured until we landed. Delta’s gone downhill in a lot of ways in the last 20 years.

With the unresolved jet-lag, at least I didn’t have to readjust when I got home.

Thursday, November 12, 2009 8 comments

Never a Dull Moment

Mason sleeping on my robeMason is cruising right along, development-wise… and slobbering like he’s cutting teeth already. He’s also started fighting sleep through the day — if he can manage, he’ll get by on 20-minute catnaps through the day and he can get pretty cranky when he can’t keep going. He stayed awake when I took him out in the stroller with Snippet this afternoon… and we got about half the walk done. I had to carry him for the last stretch; he didn’t conk out and snooze this time. Sometimes I can prop him up on a couple pillows and get a little keyboarding done, but that only lasts 10 minutes tops. [EDIT: That's my robe he's sleeping on. Snippet had his laundry in the crib.]

So… remember The Boy’s little incident back in February? They’d continued to put off his court date, and he managed to miss the one he was supposed to attend on Monday. The court doesn’t have much of a sense of humor concerning those things, and they came by the manor looking for him Tuesday afternoon then yanked him off the factory floor that evening. The real killer was, if he had bothered to remember and show up, there’s a pretty good chance they would have dropped the charges and he would have been shut of the whole sordid mess. Now, he’s sitting in the clink in Historic Forsyth County until his (rather expensive) lawyer that Mrs. Fetched found for him can get him out. I just hope he’ll have a job to return to, so he can pay the lawyer.

Working at home yesterday (and today), Mrs. Fetched and I had to run to the chiro-cracker late in the morning. I jumped in the car; she said “When did you spill gasoline on yourself?”

“I didn’t,” I said, smelling my shirt. “I haven’t handled gas since Friday.”

Coming out of the chiro-cracker, we smelled gas again and I opened the trunk. It did smell quite a bit. “You must have spilled some gas when you were helping that woman get her car started Friday night.” (She ran out of gas in the turn lane, ahead of me… better to carry her a few hundred yards than let her risk her life trying to cross GA400 in the dark.) I guess that was possible, so we zipped over to Zaxby’s. The lawyer called her just as we were getting out, and I walked over to the building to get out of the parking lot… and saw gas dripping underneath the car. Fortunately, I had the mechanic’s number in my phone, so I called and made sure we could bring the car in after lunch. As it turns out, we didn’t make it… ran out of gas less than two miles short of the turn into his shop. Mrs. Fetched called the tow service and we got it over there. Turned out a rat chewed the fuel line — just more proof that reality is stranger than fiction at FAR Manor. I hope that little so&so poisoned itself! This was familiar territory… the shower fix that turned into a water leak last month was the product of a rat chewing the water line. The plumber left us the affected piece as a souvenir (which Mrs. Fetched tossed before I had a chance to get a picture) and a note saying we did a really nice job on the shower.

So Snippet has been here since Tuesday. She and DoubleRed have been getting on each others’ nerves, until finally DoubleRed started growling at Snippet this afternoon while I was trying to work. Snippet said, “I’m leaving now,” and walked out of the room; DoubleRed slammed her door open and stormed into the kitchen. I yelled at them both to cool it, and they kept it down until they were finally able to work out their differences. At least I assume they did; they’ve been fairly cordial and even slightly chummy since then. At least DoubleRed has gone somewhere for the evening… maybe if they don’t see each other much they can keep up the happy babble.

Work also picked a fine week to go ka-boom, and taught me that not all schedule slips are a positive “development” for me. A major project that was supposed to be done by the end of the month is now sliding out to the end of December… but with a major re-think about the feature set. So out with half the stuff I’ve done with it to date, in with whatever is going to go in (I’m supposed to get a high-level list Real Soon Now). This is turning into one of those things that suck all the oxygen out of the other projects — both hardware and software — going on; my boss is telling his boss that pretty much everything else I’m doing has to be pushed out. Vacations are being canceled, and I was planning to burn the 7 days I’m not officially allowed to carry over at Thanksgiving and Christmas. That too has been worked out… with any luck, I’ll take two weeks at the end of January and spend it in Florida. Sitting on the beach, 500+ miles from FAR Manor and the office, sounds like just the thing.

Wednesday, October 21, 2009 2 comments

Pink Laptops and Other Oddities

Work, as always, is work. I’ve been stumping to get a change into a new set of products that will make life easier on the people who have to set the things up, and it looks like it’s going to happen, yay! We have some outside people developing a part of the product that’s not really our core competence, and they came from Taiwan this week to sit down with various folks and get a better idea of what we expect. The young woman was carrying around this hot pink gator skin laptop which, like the proverbial train wreck, you just can’t take your eyes away from.

She was kind enough to let me get pictures:

ASUS S6, pink leather, open ASUS S6, pink leather, closed


Turns out it’s an ASUS S6 “pink leather” model. I figured something looking like that would sell only in Taiwan or Japan, but target.com carries it and it’s out of stock… I guess there’s a lot of middle school girls who have their dream computer. The pictures just don’t do justice to the massive pinkitude of this tiny computer. They call it leather, but it looks more like faux alligator skin, or at least the skin of some kind of reptile. To me, “leather” comes off something that looks more like this:

Cows

Cow → milk → baby…
Mason returned to the manor yesterday, along with Snippet. The latter is gone, supposedly doing laundry at her place, but Mason is still here. He’s fighting sleep right now, but last night he’d get a bellyful of formula then go to sleep… but “sleeping” doesn’t really describe it. It was like he’d gone completely boneless. He’s pulled that on us a couple of times this evening, but wakes up 10 minutes later. He was rockin’ and rollin’ for a little while, having a good time… but I think Mrs. Fetched has finally gotten him to give up and snooze.

I promised oddities… here’s a good one. Barnes & Noble have released their own e-book reader, called the Nook. And, of course, it has instantly earned the moniker Nook e-book reader (say it fast). While I’ve said before that e-book readers won’t take off until they can be purchased for $19.95 from the drugstore checkout display (you need $259 for a Nook e-reader), I might be interested in a Nook e-book…

But is that as odd as a toad that throws itself down a mountainside and rolls away from predators?

Reality, as always, is stranger than fiction.

Tuesday, April 14, 2009 11 comments

Random Grumbles

The feed truck came late last night, so no cannibal chickens this go-around. Whew!

Came home from work, no dinner as usual… even though Mrs. Fetched said she was going to fix something. Maybe we’ll eat at home tomorrow.

We didn’t find out until Sunday night, but some time after the Easter service, DoubleRed checked herself into the hospital and was diagnosed with diabetes. We started seeing some warning signs Thursday or Friday evening, and mentioned it to her then. Her glucose reading was somewhere north of 600… really bad, but not coma-inducing bad. I told her last night that she should get together with The Boy to learn everything she shouldn’t do.

This morning at work, I got another email of the “this cable is the wrong color again” variety. I’m sure the seagull manager behind the last two installments of Programmers. Argh. is directing his people to nitpick everything at every opportunity, and I was getting rather exercised… then he followed up with “and the part number is wrong,” which actually defused me. You see, I’d explicitly requested that part number and edited it in when I got it, so I knew at that point he was looking at the wrong version. I told him as much, and included the right docs with a “here they are again” (since I sent them last week). Then my new boss got a query, and asked me if it was fixed; I told him the same thing and didn’t hear from him after that. I know I’m getting older, because I’m getting ever less patient with this kind of crap.

Taxes are done, woo-hoo! We have a far too large refund coming back this year, because Mrs. Fetched didn’t bring in a lot with her video stuff, and Daughter Dearest contributed mightily by both capsizing her mom’s farm truck and bringing in a large tuition credit. The refund will mostly go to covering her college expenses for next year.

Well… I should have said our taxes are done: Mrs. Fetched volunteered me to do a bunch of other peoples’ as well… including Jimmy Last-Minute, who did better last year but has gone right back to dumping a bunch of incomplete info on me at the 11th hour. I printed him out an extension form for him to sign in the morning, with a list of info I needed (and an admonishment to get it to me sooner next year). The Evil Twins’ parents are another, but they know they’re on the hook for an extension anyway and theirs should be fairly simple.

If it wasn’t already bed time, I’d have another beer.

Tuesday, March 24, 2009 11 comments

Polls, Jobs, and Other Incidentals

Submerged stumpIf you hadn’t noticed yet, I’ve put a poll in the sidebar (just below my picture)… just curious to see what comes back. Lurkers, regulars, drive-bys, please go hit a checkbox or three and then feel free to expand on your thoughts in a comment here. I’m going to let it run through the end of March.

The Boy… are you sitting down? … got a JOB!!! In (wait for it… wait for it) a poultry processing plant. ROFL — we can’t get away from the dang chickens, can we? He had his first day of training today, one more tomorrow, then he’ll be working the night shift. His job entails hosing down the equipment to keep it clean & mostly sterile… think of The Boy in waterproofs next time you eat chicken, OK?

Meanwhile, things got a little weird at my job today. It really started last week, I suspect, when I was working at home shooting some pix for a new product and found that the mounting holes were spaced ¾ inch too far apart. There was a scramble to fix that problem, especially since time is running out, and the payback came this morning. First, a picture on a quick install guide (for a different product) said “750” instead of “760” — which might have been an issue, if the text in question was large enough to see on the printed version without a very strong magnifying glass. They had to open the PDF and zoom waaayyyy in to see it… and of course, this was suddenly a critical item. Also critical, after not being even noticed for about a year, is that the picture of the yellow Ethernet cable is “too green.” I ended up borrowing DoubleRed’s desktop PC to use for the “connect to computer” shots… of course, it doesn’t have an Ethernet card, but I was able to stick a card in and make it look right. I’m pretty sure this was Revenge of the Engineers… they have their little freak-out dance they do when things get tight, and I don’t have to watch Dancing with the Stars because I see this performance all too often.

We’re supposed to talk with the dean of the music department tomorrow. Daughter Dearest is planning to transfer to the college just up the road next year, and the dean wants to try talking us out of it. There have been some issues… the dorm rooms have been plagued with mold (absolute hell on a music major), and the food has been somewhat short of edible at times as DD claims to have found a loogy in the salad once. Quite frankly, we would expect better from a private college with a good reputation. At least we’ll be able to afford next year.

The SXSW festival has their entire musical showcase available on BitTorrent. It’s a 6GB load, in three parts, and you’ll have to wade through it to find what you like. The torrents are organized only by artist, so you have to slog through it all. I’m still listening to part 1 (while helping to re-seed all three parts). At least I got my ratio back over 1.0 now. Fortunately, I’m fairly easy to please, so I’ve been throwing every tenth song or so into iTunes for further listening. Sometimes, a tune I’m not fond of at first will grow on me; sometimes, the opposite happens.

After I brought Big V home from the hospital on Saturday, she went right back in first thing Sunday. She may have a heart issue or a blockage; either way, it ain’t a good thing. At least she escaped the last hospital with her foot still attached. I just hope she starts doing a better job of taking care of herself. She’s getting on Mrs. Fetched’s nerves, big-time, so she isn’t in that bad of shape.

Mrs. Fetched’s mom planted four rows of potatoes today… sounds like we’ll be picking them up by the tractor bucket-load again this year. I’ve got to start my yellow pear tomatoes and get some spinach planted. And I need to plant myself in the bed…

Wednesday, March 18, 2009 8 comments

Violets and Business Models

While I was working at home today, Mrs. Fetched had a client in for some video work. Ironically enough, this client makes (wait for it) poultry processing equipment. I had to take a gadget out to the studio for a little shooting, and noticed the wild violets were once again springing up all over the yard (clicking the photo will give you something larger than life):

White wild violet

Going back inside, I reminded Mrs. Fetched to tell the client that I did product photography for my day job… gotta make these Shiny Things earn their keep, after all. I’d started a blog post about a month ago called “Musings on Photography and Copyrights,” but never got much farther than the title. Technology has dealt a serious blow to photography as a profession these days…
  • $1500 will buy you a pro-level (or at least prosumer) DSLR and the essentials — the barriers to entry have never been lower. But the only photo I ever sold, I took with my late lamented PowerShot (which cost about $300).

  • Digital photography itself has all but wiped out the darkroom. As an old friend of mine (who now shoots weddings) told me, “I used to spend a lot of time in the darkroom, now I spend it all in Photoshop.”

  • Scanners and computers have wrecked the traditional photographer’s business model. People are going to scan their portraits and print copies — it doesn’t matter (to them) if the copy isn’t quite as good, they’ve been trained to not care about quality. And their attitude toward copyright is something like, “I paid some hundreds of bucks for this, it’s mine!”

The guy with the medium-format camera and the account with a commercial film processing facility are still around, but their niche is truly a niche these days. Of course, there are always the people who work for Sports Illustrated or Time; major media will always need skilled photographers, even if they end up becoming web-only publications sooner or later.

The business model of the independent photographer has taken a mortal blow. But perhaps a new business model might work.

One facet could be summed up as “Photography and” or even "and Photography” — in other words, photography becomes a part of the business… and not necessarily the primary part. As I mentioned, I already take product photos as part of my technical writing job. It was something that needed to be done, and I learned how to do them well with basic equipment. But even if photography is secondary, it can provide a competitive edge to the business — if the client needs a good photo, there’s no need to contract with another person who might also take your primary work too.

The whole copyright issue needs to be addressed. With no negatives, digital photography might be best approached as a “work for hire,” the same way technical writing contractors work. Ideally, both you and your customer would hold joint ownership — the customer can fling a copy into Photoshop and mash it up or whatever, while you can license it as a stock shot or use it as part of your portfolio. To get people interested in your work to begin with, consider placing a few good shots under a Creative Commons Attribution license: this allows other people to use them (and spread them around) while you get credit for your work. You might as well make this whole file sharing culture work for you, right?

Of course, I might be completely off base. But this is part of my backup plan in case my day job goes away.

LinkWithin

Related Posts Plugin for WordPress, Blogger...