Scratch That

So, BBEdit 10 has a special, persistent “scratchpad” file, same as Emacs has a scratch buffer, and I have found it useful. I think it’s newish, but I spent some time away from BBEdit for a while there and cannot say. It occupies a place in my head well away from “file I want to save for all time” or “something that ought to go in Evernote,” but somewhere Sticky Notes lack adequate text processing power.  It’s more like “I need to curl down this RSS feed and see what it says, and I want to navigate it with relative ease, compared to the scroll back area of a terminal.”

BBEdit has also long had a command line utility to get stuff from the shell into a new BBEdit file. It goes like this:

$ ls | bbedit

and you get the output into a new window. 

If you hate those output files coming into the world marked as modified, BBEdit has your back:

$ ls | bbedit –clean

So with the –clean argument you can close the file without getting nagged about it. 

But I don’t usually want much of anything I’m passing into BBEdit to last very long, and it looks like BareBones thought about that, too:

$ ls | bbedit --scratchpad

One thing the scratchpad can’t do is take “Save As,” which makes sense, since that’d mean the version you were working on would no longer be the persistent scratchpad, but something else. I’ve mapped the menu item “Save a Copy …” to control-opt-s, in case I ever get it in my head that I need a permanent copy of the scratchpad.

… or, you know, just keep the power tools in the garage where I can find them

Nick Bradbury: Screw the Power Users:

At first I built FeedDemon as though my customers were geeks like me, since that was what I was used to. Power users were happy with all the features and all the options, but the extra baggage made it harder for less technical people to use the product. It scared them away.

So with each new version I tried to simplify the user interface, and dropped features & options that complicated the product. FeedDemon became more popular as a result, but you’d never know it if you visited my online support forums.

I’d come out with new versions that I thought dramatically improved the product, only to find my forums filled with complaints from power users who wanted the return of some obscure option, or were upset that I wasn’t adding the geeky features they wanted.

Sales went up, but positive feedback went down. I had built FeedDemon with the wrong customer in mind, and I paid for it by spending a ton of time defending each release.

I have no idea what the Windows scripting world is like, so it may be Nick Bradbury had no good choices here, but in the Mac world, at least, there’s a way to give power users lots of good features in return for a bit of the gumption Power Users are always bragging they have anyhow: Build out the scripting dictionary and maybe add a few Automator hooks. 

Take NetNewsWire, which has (or at least had, haven’t looked lately) a pretty robust scripting dictionary. Almost anything anyone could want to do with that app’s basic components (feeds and news items) is down in that dictionary. I was a content NNW user for years because things I wanted to do with it that were not immediately available from a menu (e.g. sending a news item to Instapaper), were easily available with a simple script. And NNW also supports Automator, which takes a lot of the programming out of problems you might want to solve with it.

One of the worst sins of the GNOME project back in the early GNOME 2 days wasn’t that they set out to simplify GNOME, it’s that in the process of simplifying, they took away the traditional places their more sophisticated users could go to extend and modify the environment. One of the relative strengths of OS X, believe it or not, is that a lot of the choices Apple makes that are bad for its more sophisticated users are still exposed for correction through the defaults interface

In other words, it doesn’t have to be a zero sum game between “newbies” and “power users,” and probably shouldn’t be. Power users are a pain in the ass, but a lot of them are also natural helpers if they happen to be in earshot of someone who could use some help. As newbies stumble into situations where they’d like to do something the app doesn’t expose in the UI up front, making the app scriptable or configurable behind the scenes  increases the chances that you get to retain a customer who’d otherwise decide they outgrew you and keep your power users happy.

A good example of this dynamic is Evernote, which has user forums full of people identifying gaps in the up-front interface and power users who have a script handy to help out with those gaps. I get a steady trickle of traffic from those forums thanks to a three-year-old post I wrote about converting Apple’s notes to Evernote notes, which is the sort of problem no developer wants to solve right there in the menus of an app, but that plenty of people interested in a better note-taking solution will want to solve right away if they’ve been using another product for long. People have been searching for that post several times a day for the last three years. It’s an established issue a number of users have, there’s a solution available that won’t confuse or bother anybody who wasn’t looking for it, and that solution’s presence has probably encouraged people to go ahead and move to Evernote’s paid service from something that just came with their computer. 


Stand in the Place Where You Work, Revisited

A follow up to the previous post Stand in the Place Where You Work, some reporting on my experience with a standing desk after a month of use.

It has been about ten months since I first wrote about my standing desk (an Ikea Fredrik) and how it was working out for me. At the time, a good four weeks of use seemed like a reasonable assessment period: The ‘net is full of people who have built or bought standing desks and then made blogging about their “experience” practically the first thing they do at their new standing desk. That is ridiculous, and if search engines were really any good, you’d be able to formulate searches like this:

standing desk -"anyone who's been using it for less than a month"

And, as I’ve learned, thinking you have anything to say about it after even a month is probably wrong. Think of it like taking up running, poorly:

If your lungs are good, you might be able to run a long distance the first time you try, without any proper stretching or preparation. It might hurt a little, you might get a stitch in your side, and you’ll have to adapt to the shortness of breath; but if you knuckle down and keep at it, you might be able to run pretty far. After that first time, your body will have something to say about it, and you won’t run that far again for a while unless you rest and learn how to do it better.

Same, I think, with a standing desk: Your body will take a little time to manifest symptoms of its unhappiness with the new regime.

In my case, it took about three months for things to get really uncomfortable, thanks mostly to my hips. As near as I can figure, the small stool I bought to sit at my desk when I needed a rest from standing was a bit too narrow to sit on for long. I took to dangling my left leg off to the side and the right over the front. Over time, my left hip started getting stiff from being angled and extended like that, and that got uncomfortable. Not enough to make me quit, but enough that I noticed it places I didn’t want to notice it, like when I was out on a walk on a Sunday afternoon, having not been at my desk for almost two days.

I stuck with it, though, through fall and into winter. Before the holidays I tried upgrading my little stool to a drafting chair, but the drafting chair couldn’t go up quite high enough and introduced a new set of complaints from my shoulders and upper back. After a few more fitful attempts to get comfortable, I came back from the holidays, tore the desk apart and rebuilt it in its standard sitting desk configuration, and settled back in to a life of sitting.

Sitting Rebound

The thing that’s bad about sitting at a desk, as near as I’ve been able to tell from reading, isn’t exactly merely sitting: It’s sitting for long, uninterrupted periods. Because I’d been pretty uncomfortable in my standing desk arrangement, I took to sitting in a comfortable desk chair again with a vengeance. For a few weeks, it was awesome, because without any little aches and pains or nagging discomfort, I could just strap in and focus for hours on end. After a few weeks of that, I started getting dizzy and uncomfortable in a “swimmy feeling in my head” sort of way. I’d be working along, suddenly feel a little spacey or fuzzy, and the only way to fix it seemed to be to get up and walk around a lot. So … I knew that, right? Sitting for long periods was bad, I’d been doing it more because suddenly I was so comfortable again, so I needed to stop. I didn’t really get the timing of those breaks down, though, and I seemed to become more susceptible to the spins any time I was sitting. Especially if I had a lot of caffeine.

So, one Sunday afternoon Al and Ben and I were out driving around to go pick up a new chair for the (former) t.v. room. We stopped for coffee, I drank mine a little fast, and got a crazy spinning headrush as we sat parked at a red light. I shrugged it off, got on with my day (making sure to take a walk when we got home) and went back to work the next day. Early in the afternoon, the spins and feeling of discombobulation came back, but this time accompanied by a creeping feeling of numbness in my left arm. Maybe it was from bad posture (Mondays are big phone call days for me, and I use a speaker phone with Skype, and would sometimes lean on my chair arms). Still, after feeling weird the day before and feeling out of sorts enough to snap at a coworker during a call, and remembering that a friend and neighbor had ended up in the hospital after an episode began with “weird numbness in arm,” I decided to call Al and have her take me to the doctor.

Al wasn’t willing to settle on the doctor: She wanted me in the ER. So we drove to the Kaiser ER, I was quickly admitted, and then taken into a room and hooked up to a bunch of gear that indicated my blood pressure was pretty normal (initially, it went higher as they hooked me up to more machines that go *bing*). I was also pretty badly dehydrated. But all the tests showed that my heart was fine and that nothing major seemed to be going on. I was prescribed some blood pressure medication, told to get some tests done then follow up with my regular doctor, and sent home.

I got the tests done, went in to see my doctor, and was told to halve my dose of the blood pressure meds since my blood pressure dropped to below normal on them. He told me if I wanted to go back to a standing desk, that was fine, but that the real point was to get up and walk around now and then. Remembering to get up and walk around, though, remembering to do anything, is really hard for me. So I spent a few more days at a sitting desk, went through minor occurrences of “I feel weird, I need to stand up,” and decided I’d rather figure out how to work standing again.

So the Fredrik was torn down once more, and reborn as a standing desk. I spent some more time looking for a drafting chair that was the right height and width, added that to the mix, and things have been a lot better for the last couple of months. Working from a default of standing and occasionally hopping up on a comfortable stool is a workable routine: My hips aren’t bothering me, I don’t get the “sat too long” out of sorts feeling.

Help Me Find Podcasts

I’ve taken to going for a 30 minute walk each morning, and I’ve made walking a bigger part of my life in general: I don’t drive or bike to the grocery store when I can take the time to walk and  on the days I go out for lunch I prefer to walk. I like having something to listen to while I’m doing that. It really doesn’t need to be — and I’d prefer it not be — music. I can listen to as much music as I want, as loudly as I want, all day long. I’d prefer it be spoken word. I don’t have nearly as much time as I’d like to listen to other people talking about stuff. I don’t have a job that allows me to absorb an idea while I’m otherwise occupied, and I don’t have a commute. At home, when I’m not working, I don’t want to sequester myself away from Al & Ben during the time we have together as a family.

Currently, I just time-shift NPR programs: On the Media, This American Life, Fresh Air, Philosophy Talk. I wouldn’t mind adding a few more to my list. Maybe you can help me. Here’s what I’d like:

Engaging subject matter:  For me, that’s probably philosophy, politics, media, film and mixed martial arts. Not professional tech (e.g. web development, programming) and definitely not consumer tech (e.g. gadgets, Apple products). 

Tight format: I’ve tried to listen to “dudes hanging around” podcasts, and they don’t work for me. One of the reasons most of my listening is still very much “repackaged professionally prepared content from NPR” is that i can count on the format: Intro, quick plea for money, on to the first guest. I’ve only got 30 minutes here. I want to spend it well, not listening to digital water cooler talk. Unless it’s digital water cooler talk from really fascinating people.

Production values: Doesn’t have to be perfect, but if the show is an ongoing series of decent-sounding host and echoey, unreliable Skype call-ins, that’s just more wasted time. 

So … that’s it. That’s what I’m after. Can you help?

The Great Room Reshuffle and Powerline Ethernet

So, the Great Room Migration of ’12 is pretty much over today: I paid Ben $5 to finish the tedious task of moving his stuff out of his old room and into The Room Formerly Known as the TV Room, and that’s that: He’s got a bigger room, we’ve got a new guest room, and the t.v. is down on the ground floor, where the person who built the house (and stuck a cable jack over the fireplace/tv plinth) intended.

We’re ahead of plan by about 5 years. When we first moved here we decided to put our t.v. in one of the larger four upstairs bedrooms. We liked the idea of keeping the t.v. out of the house’s socializing area, and the upstairs t.v. room was sort of cozy. Ben got one of the smaller rooms (with a loft, to give back some floor space). But in the process of shifting things around over the past few months, we decided it might be a little more comfortable to just move the t.v. back downstairs. It’s not like we plan to let the t.v. interrupt guests, and Ben was getting tired of his loft. So instead of waiting until he was in middle school to move his room around, we went ahead and got him a regular bed and moved him around.

The biggest complication turned out to be our network. With the t.v. upstairs, our four connected devices (a Roku, AppleTV, Blu-Ray and Wii) were all within 20 feet of the Airport Extreme in my office. Everything moved along pretty quickly, most importantly the Plex channel running on the Roku, which connects us to any digital entertainment stored on my iMac that I don’t feel like running through Handbrake to stream over the Apple TV.

Once we moved everything downstairs, things went south pretty quickly.

My office, where the Airport Extreme lives, is upstairs and on the opposite end of the house from the t.v. and all the attached devices. The first few things we tried to watch on the Roku (Netflix, Hulu or Plex) had a lot of problems: It took forever for content to load, there were periodic minute-long hangs because of rebuffering, and sometimes the Roku just reported that it couldn’t load whatever I was trying to watch. An AppleTV movie rental stopped about three minutes in and took another several minutes to rebuffer. That took me by surprise because Wi-Fi performance downstairs has always been good enough for laptops, iPads and iPhones. YouTube was sometimes a little balky, but the iPhone YouTube app has always seemed sort of flakey, even in good network conditions.

I think some of the problem is the sheer proliferation of neighboring 2.4GHz networks: Depending on when I look, I never see fewer than three nearby networks, and sometimes see as many as ten. When we had everything upstairs, the devices that could support the 5GHz connections an Airport Extreme can provide profited from the lower interference of the 5GHz band, and the devices that couldn’t were just close enough. Once we moved everything to the opposite end of the house, it probably made some neighboring networks loom a little larger.

I went into fix-it mode. I took an 802.11n Airport Express and put it between the Airport Extreme and the living room. There’s an outlet right at the top of the stairs that represents a spot about a third of the way between the office and living room (and on the living room side of a dogleg in upstairs layout). That worked out a little better, but there were still problems: The house is a little too large and twisty for a single WAP to cover the entire premises well enough to stream HD video, but not too large to keep devices from ignoring a relay in favor of the primary base station, so periodically one of the devices would pick up the Airport Extreme, ignore the Airport Express (as reported by Apple’s Airport Utility), and we’d be back to rebuffering and long load times. I might have been able to address some of that by turning the power on the Airport Extreme down to 50 percent, but I had a suspicion that the latency of connecting through a relay would still cause problems. And like I said, we have a lot of neighboring networks no matter what.

My next thought was to run some Ethernet cable along the side of the house, from my office and down to the living room. Doing it right, though — drilling the holes, using conduit, getting cable that wouldn’t degrade during the occasional freeze, grounding it all — seemed like more work than I felt like dealing with. Internal cabling was a possibility (our garage shares a floor or wall with all the rooms involved in this situation, so it would have been pretty easy to drill a few holes and run cables between rooms), but that also seemed like a lot of work, and I didn’t want to end up running internal conduit to hide the CAT5 cable.

So I printed out a few coupons from Best Buy I’ve been holding on to and went out and bought a Powerline Ethernet kit by Netgear. I made the purchase as an experiment, being careful to keep the packaging and tape the receipt to the inside flap of the box, because I’ve read a few reviews over the years (I’m positive we covered it when I was running Practically Networked) but I’ve never had a situation where Wi-Fi wasn’t good enough.

I brought the kit home, plugged one of the two little wall warts into the wall by the t.v and one into the wall by the Airport Extreme (which has a gigabit switch) in the office. The devices are supposed to be able to provide gigabit speeds over house electrical wiring, but the LED speed gauges they provide suggest they’re not operating up to their full potential in our house. That makes sense to me: They’re not on the same fuse and they’re at distant ends of the house from each other. I plugged the Airport Express into the downstairs box, set it up to share the home network over its own SSID, and ran speed tests with from both my laptop and iPhone. As near as I could tell, I was getting 15Mbps download speeds over Wi-Fi via a 20Mbps cable connection. Since the Roku needs a 3Mbps connection to stream HD video and the Plex server’s max 720p connection speed is 4Mbps (8 for 1080i), I’m sort of over-provisioned from a digital media standpoint. Since there’s nothing downstairs that’s storing or moving large files in chunks (as opposed to streaming them from Plex on the iMac), we’re in pretty good shape.

The final step was to take the Airport Express down and drop a four-port gigabit switch I’ve had in the closet behind the t.v., cabling it to the Powerline Ethernet adapter, Apple TV and Roku. Now video content from Plex is loading almost instantly, and video via Hulu or Netflix has very little buffering time. The Roku has always displayed an initial softness when streaming HD video, but that’s become shorter (and buffering time is down, too). The iPhones, iPad and laptops all work as well as they ever did for everything else.

So, mark me down as a pretty happy Powerline Ethernet customer. It solved our problem without the need to drill holes or run more cable. It isn’t performing at the ideal advertised speeds, but it is providing four or five times the bandwidth necessary to stream HD video, and it provides a stable connection that’s not prone to interference from neighboring phones and networks.

It’s Just Gravity

I was not aware that you have to log into Google+ to read “public” posts. This is bullshit, Google. Good bye.

— Oliver Reichenstein

I once spoke with someone who maintained Google isn’t “just an advertising company” because its assorted services were just too good and too smart to exist if there were no other reason for them besides ad sales. I thought that was naive rubbish at the time I heard it, but it was naive rubbish that made me a little sad because it would be nice to believe that Google was a real Wonka factory of good things driven by nothing more than love and a certain dwarvish passion for artisanal software excellence that put the end user first*.

In my heart of hearts, I would like it if Google had invented some sort of commercial anti-gravity device that would let it float there, just above the dirt. That’s sort of what it felt like in Google’s first few years: Good search results with ads that weren’t intrusive, good webmail with ads that didn’t distract you from the task of managing your mail. A good RSS reader that didn’t distract you from the content. Nobody else had seemed to figure that stuff out. It was immensely satisfying to watch incumbents flail around and fall down in the face of quality and care.

And now there’s Google+, which I admire a lot compared to every other social networking service, and I’ve cringed a little each time Google’s done something sort of tone-deaf or hamfisted with it, but also bristled a little when each ham-fisted or tone-deaf thing becomes the nugget of more ridiculous “Google’s being evil after all!” commentary from people who don’t exist to do anything besides have opinions about whatever.

Making you log into Google+ to read public posts? That’s not evil (and I’m not saying Oliver Reichenstein thinks it’s evil, either). It’s just crappy and sort of lame, and it’s happening because Google can’t bring itself to lie about the numbers Google+ is generating. But it also needs them to be higher, so it pulls stuff like that, knowing a largely negligent tech press will relate the numbers without making an effort at context. That contextless numbers game will inflate Google+ into a genuine force in social networking instead of what might well just be a ghost town propped up less by real people who are using it to share than institutional and quasi-institutional presences who are pumping content into it because they show up at every new thing determined to be a first mover.

So, there wasn’t an anti-gravity device. Or if there was, it wasn’t ever built to sustain the weight of Google in 2012. So Google’s hem has touched the dirt and the company looks a little smaller every day.

It’s just gravity.

* I know … I know … “I’m the product.”

Stand in the Place Where You Work

Some notes on adopting a standing desk for my home office. Maybe an odd entry because I started writing it several weeks ago, just after installing it and now I’m circling back because I didn’t want to do the whole “I got this standing desk and it’s been awesome for, like, 30 minutes now!” thing.

Read the rest of this entry »

New Polack Trailer

Jim’s released a new trailer for his movie about Polack jokes:

I got to see it while he was still editing and really enjoyed it. Since it premiered at Dallas Video Fest, it’s played at a few other locations, including a screening for Pixar. I’m looking forward to seeing it again if it comes through Portland.

Split Reading

Regarding my July tech purge, about which I wrote:

“So today I’m going to experiment with eliminating all of it from my RSS reader and Google News page except the professionally mandated stuff (which is a pretty narrow field) and maybe a few security update sites. Consumer tech, though? Gone. If it’s not something I use, I don’t want to read about it. If it is something I use, I don’t need a columnist telling me what to think about it. If I need to know something, I’ll just go looking. Passively setting up trawls and then sifting through whatever gets caught up in a few keyword searches or catches the fancy of tech bloggers is for the birds.”

I kept to that for a while — right up until around the end of November — then started discovering some consumer tech stuff was creeping back in. Less gadget/hardware (though there was a little of that) and more Web/online.

The default place to put that kind of thing is in my RSS reader, so that’s where that stuff went as it found its way back in. But the list of things I want to be distracted by during the day is still pretty narrow, so having those things in my RSS reader wasn’t a good place for them.

So I ended up taking a lot of those things right back out, then hunting them down in a form I could consume via Flipboard, which is a really lovely app for the iPad that takes Twitter (and more recently RSS) feeds and wraps them in a magazine-like format you can flip through. (Follow the link and look at the video for an idea of how it works.)

For the professional/don’t mind seeing come by during the day stuff, I’ve got a desktop RSS reader with companion apps for the iPhone and iPad. For the stuff I don’t want to catch my eye as easily during the work day, I’ve got Flipboard. When I call it a day in my office, the work stuff pretty much stays in the office, but the things that are more personal are there on the iPad, which is the only computing device I touch after 6 p.m.

One of the nice things about Flipboard is that it will use Twitter lists as well as vanilla Twitter feeds, and that’s caused me to start using Twitter more and more the way everyone else has been using it for a while now: Rather than following hundreds and hundreds of people and institutions, I keep my follow list sort of slim, but have added bunches and bunches of sources to assorted Twitter lists that I subscribe to with Flipboard. I treat Flipboard as a mostly optional reading experience. Something more to be browsed than closely read. It doesn’t nag about how many unread items I have, which is fine because nothing in there (with one set of exceptions) is anything I really need to read. Since it’s easy to flip past stuff that’s not interesting, I feel a little better disposed to outlets that were annoying the hell out of me when they were mixed in with the stuff I really need to think about during the day.

I could use the many canned lists that are (ugh) curated by assorted Web luminaries, but I’ve found those lists are much better as starting points to be raided for good sources and stripped of assorted a-lister cronies and other annoyances. Cruising Twitter profiles for “more like this” lists is pretty fruitful, too.

I also use Twitter lists for the tweetsonae of friends who’ve got commercial or promotional feeds that run parallel to their personal Twitter feeds. It’s a good way to keep out the double (and triple) posts, continue to be open to retweeting or absorbing the promotional stuff (as a good friend should be), and cut down on the workday distractions.

Ballpark Digest Relaunched

Ballpark Digest

The new Ballpark Digest went live today.

This job was pretty similar to the Arena Digest relaunch, and involved a lot of the same tasks.

There were over 2,500 legacy articles that needed to be imported this time around, and preserving their search engine placement was a little more important because the site was pretty well indexed. I had to pick up one new trick, too:

Not having any legacy i.d. numbers to work with during the import, I ended up having to figure out the legacy URLs on my own. I knew the article were, at least, in the proper order, so at the beginning of the import data, the second article in the list had an i.d. of “2”, the tenth in the list had an i.d. of “10”, etc. Unfortunately, that 1-1 mapping broke down the first time an article was published then taken down, because my import data didn’t note missing articles. By the time I got to the 2,000th article, the relationship between import row and legacy i.d. was off by a pretty substantial amount.

I grabbed the RBing gem and automated the process of searching by article title and using the URL I got back to figure out the article’s old i.d. and URL. That didn’t work perfectly, because there were some gaps in Bing’s indexation of the site. So I had to write a second script that ran down the list of articles and looked at each i.d., applying the following algorithm:

  • If the article i.d. was one greater than the i.d. of the article before it, and one less than the i.d. of the article after it, I assumed it was o.k.

  • If the article i.d. didn’t match the above criteria, but the i.d. of the article after it was two greater than the i.d. of the article before it, I assumed the real page for that article had failed to be indexed, and I assigned it an i.d between those of the articles on either side of the sequence.

  • If the article i.d. didn’t meet either of those criteria, I flagged it for review.

Most of the time, the ones that were flagged for review were part of a streak of articles that hadn’t been indexed properly to begin with, so the best result Bing could produce was an easily recognizable archive page URL. It was easy to consult the list and see sequences like this:

  • 453

  • 454

  • archive URL

  • archive URL

  • archive URL

  • archive URL

  • 459

Clearly the third through sixth articles in the list had to be 455, 456, 457 and 458. I felt a little guilty for not taking the time to work out a way to do that programatically, but there were only three or four sequences like that so I sucked it up. There were also a few sequences where there was no discerning the proper sequence, but that list totaled fewer than 15.

Once all the i.d.’s were straightened out, I wrote a script to generate the redirects, and plopped it into the site .htaccess.

© Michael Hall, licensed under a Creative Commons Attribution-ShareAlike 3.0 United States license.