Farewell to bookmarklets

The Hypothesis web annotation system is a browser-based application that talks to an annotation server, finds annotations for the current page (if any), highlights the selections to which the annotations refer, and dispays them in a sidebar alongside the page. We load a fair bit of JavaScript to do our job, and in the olden days we would simply have relied on bookmarklets to activate that code.

But times change, and bookmarklets are mostly dead. They’re not all dead yet. I expect I’ll still be able to use simple ones, like pinboard.in‘s, for a long time to come. But a new security regime limits the scope of what bookmarklets can do, and is forcing developers to create browser extensions instead — extensions that must be created and deployed differently for each browser.

So the realm of web applications that extend the browser is now becoming as balkanized as the realm of mobile apps. Developers target the dominant platform first — currently, that’s Chrome — and then port their extensions to other browsers as and when they can.

There’s another way to add behavior to a web page, though. You can send the page through an intermediate server (a proxy) that injects that behavior as the bookmarklet or extension would do. The Hypothesis proxy is via.hypothes.is, and you can use it to activate annotation for any web page — including this one — like so:


The nice thing about this combo URL is that you can share the annotated page along with its annotation layer. Of course there are tradeoffs:

– Properly rewriting all the URLs in the proxied page is a tricky business.

– You can’t annotate pages behind paywalls (as you can with our bookmarklet and Chrome extension).

– You still need a way to activate the annotation layer for the current page. (You can use a bookmarklet to redirect to the proxy, but … sigh.)

The upshot is that we’re struggling to simplify the decision tree that Hypothesis users must traverse. You want to activate annotation for your current page? If in Chrome, install the extension, otherwise for Firefox or Safari or IE use the bookmarklet, unless the page enforces Content Security Policy, in which case use the proxy, unless the page is behind a paywall, in which case, sorry, you’re out of luck.

And that’s just for the desktop! Mobile browsers make things even crazier. I’m able to perform the gymnastics required to use the Hypothesis bookmarklet on my Windows Phone, on my iPhone, and (most acrobatically) on my Android tablet, and I really need to document those procedures, but it’s so depressing I’ve avoided doing so.

What seems most promising, for mobile browsers, is to add Hypothesis as an option that shows up when you ask to Share a web page. Activating annotation for the current page isn’t really Sharing, but the Share mechanism looks like the sanest way to redirect through the proxy, which in turn looks like the sanest way to activate the annotation layer in mobile browsers.

It looks reasonably straightforward to create an Android app that shows up when you Share a page and broadcasts the intent to view the proxied version of that page. Things look a bit more complex on iOS. Should there be a Safari-specific extension that redirects to the proxy? A system-wide Share extension that Chrome could also use? Both?

Of course activating Hypothesis on the mobile browser is only half the battle. As a sidebar-based app we manage pretty well on the desktop and large tablets, but are uncomfortable on smaller screens. If we’re routing through a proxy anyway, maybe the proxy should also do a Readability-style rewrite to simplify the page. We’re good at fuzzy anchoring and can anchor annotations to different representations of the “same” document.

There’s lots to do, and while bookmarklets will continue to help us do it, their era is over. Browsers are more standards-compliant than ever, which makes our mission to bring an annotation layer to the web easier than it would have been five or ten years ago. But browsers are now also less easily extensible and that’s a new challenge.

My last run

Here’s a picture of my last run.

I don’t mean last as in most recent. I mean last in my lifetime. What I thought was a groin pull a few years ago turns out to have been hip osteoarthritis.

So that sucks. It isn’t life-threatening. I am OK and will be better. It’s not breast cancer, or macular degeneration, or any number of worse things that friends and family have suffered through. I get that. But it’s going to be a hell of an adjustment for me. I’m an active person. I was always planning to be that guy who does mini-triathlons into his 80s. Turns out that wasn’t in the cards.

There’s a tendency to blame yourself. If only I hadn’t been a runner all those years. Or maybe if I hadn’t been a gymnast before that, and landed hard a bunch of times. But the orthopedic surgeon who will repair me, at some point, said no. It’s not your fault. Plenty of people run in their 80s. Some gene now being expressed says you’re not one of them.

I guess the strangest part of the experience is that I never located the problem in my hip. Or, actually, in both of them. Hip osteoarthritis can manifest as groin pain, so that’s what I told myself was happening — and only on the right side. Yeah, it shouldn’t go on for 3 years. Yeah, your quads shouldn’t hurt like hell after a run or a long hike. Yeah, you shouldn’t dramatically lose range of motion in your legs. Yeah, it shouldn’t keep you up at night.

But the brain is powerful. It enabled me to believe, for several years, that this was just one of those soft-tissue injuries I’ve worked through in the past. With stretching, and the right kind of exercise, I’d get through it, just like I always have.

Then I went to see Luann’s physical therapist and he leveled with me. This was 99% certain to be osteoarthritis. There was no other explanation for my symptoms. I feel bad for the PT because I went kinda ballistic on him. I knew he was right, and I started cursing like a sailor because I knew what it meant.

And suddenly things felt different. I began to visualize what was going on in my joints, and my subjective experience began to shift. A week later the orthopedic surgeon showed me the X-rays and that really clinched it. The balls in both of my ball-and-socket joints are deformed, it’ll get worse until I cry uncle and replace them. I’m feeling that now in a way I was denying for years.

The good news is that we live in a time when that’s possible. And that hips are way easier than knees. (Luann already replaced one, may face another.) And that we have health insurance. And that we’ve moved to a place where cycling — my best exercise at this point — is a year-round activity.

I don’t know if I’ll pull the trigger in a year, or two, or five. I’m guessing not longer than that. I took a 2-hour hike yesterday and I’m really feeling it today. That’ll only get worse. When they fix me I should be fine doing things like that.

But no more running, ever. I’ll adjust. But it’s hard to let go. And it’s hard to explain to Tuck. We brought him home in 2009, he was our first dog ever, and he got the job because he was the best of his siblings at running alongside me. Now he looks at me and wonders why we don’t do that anymore. Sorry, pal. Really wish we could.

Adventures in annotation

I just wrote my first blog post for Hypothesis, the web annotation startup I joined recently. In the post I talk about how a specific feature of the annotator — its ability to sync annotations across local and/or web-based copies of the same file — illustrates a general approach to working with copies of resources that may live in many places and answer to many names.

When I finished drafting the post I pinged Dan Whaley, founder of Hypothesis, to review it. Here’s the IRC chat transcript:

Jon: https://hypothes.is/?p=3705&preview=true

Dan: I'm annotating!

Jon: The preview URL?

Dan: :-)

I was a bit surprised. The preview URL was password-protected but annotations against it would not be, they’d show up in the public annotation stream. But hey, I’m all about transparency when appropriate, so bring it!

Over the next few minutes we traded annotations and I tweaked the post. Here’s a picture of Dan asking to add space around an element.

And then jgmac1106 jumped in.

That’s Greg McVerry, an enthusiastic user of Hypothesis. I’d been in touch with him earlier that day because he’d asked a question about local annotation of PDFs, we’d conversed, and I wrote the post partly to answer the question as broadly as possible. I couldn’t easily grant him access to the preview, but I’d sent him a copy of the post as an attachment. And suddenly there he was, contributing to the collaborative edit that Dan and I were doing. It was a nice surprise!

After I published the post I got another nice surprise. I had realized that the annotations on the preview would remain visible in Hypothesis. But when I cited it in an internal forum, Dan responded with the canonical WordPress URL, https://hypothes.is/blog/synchronizing-annotations-between-local-and-remote-pdfs/, and when I loaded that into a tab where Hypothesis was active, all the preview annotations were intact.

It took me a minute to realize how that was possible. A WordPress preview URL knows the eventual URL at which a post will appear, and encodes it in the HEAD section of the HTML document like so:

<link rel=”canonical” href=”https://hypothes.is/blog/synchronizing-annotations-between-local-and-remote-pdfs/”&gt;

When the Hypothesis service receives an annotation for the preview URL that declares a canonical URL, it remembers both as aliases of one another. That is, of course, exactly the point I was making in the post.

We hadn’t planned on this but, as a result, you can see the chatter that preceded publication of the post, as well as chatter since, through the lens of Hypothesis, at either the preview URL or the published URL.

Note that you don’t need to install the Hypothesis extension, or use the bookmarklet, to load Hypothesis on our blog, because it’s already embedded there. You only need to activate Hypothesis as shown here (click to play the mini-screencast).

I haven’t thought through all the collaborative possibilites this will enable, but it sure makes my spidey sense tingle.

Annotating the web: my new job

I’m delighted to announce that I’ll start a new job tomorrow, as product manager for Hypothesis. We’re a small team chartered to build open annotation software for the web. We expect it will be useful in many domains, including education, science, journalism, and government.

Some of you who know me in one or another of those contexts will be hearing from me in coming weeks. I’ll want to know how you annotate the web now, what you need annotation software to be, and how we can work together to meet that need.

I’ve long imagined a standards-based annotation layer for the web. Now’s my chance to help make it real. Exciting! If you’d like to get involved, ping judell at hypothes.is.

Can Santa Rosa become a city that thinks like the web?

I want cities to connect the dots between open government, web literacy, and citizen engagement. And I want to help the city I live in do that. For many years that city was Keene, NH, and while I can point to a few successes I can’t say that Keene is now a great model of the kinds of web-mediated engagement I envision.

Now that I live in Santa Rosa, I’ll try to help my new city connect those dots. The timing is fortuitous. In the wake of the 2013 Andy Lopez shooting Santa Rosa’s then-mayor Scott Bartley appointed an Open Government Task Force. The charter was:

…to develop a report that will inform the community about the current status of open and transparent government practice in the City of Santa Rosa; to review the exceptions, limitations and restrictions imposed by State or Federal law or Constitution; and to present options for improvement or additional best practices that the Mayor and City Council may wish to consider.

The final report, happily, takes a holistic view that encompasses not only government transparency but also citizen engagement. That’s the area in which I think I can help.

In The Church of One Tree: A civic parable I looked at how government and citizens interacted on a couple of issues, and explored some ways in which better web literacy could have improved those interactions.

Today the Press Democrat ran my editorial, Open government is a two-way street, which distills the pitch down to 600 words.

Can Santa Rosa become a city that thinks like the web? It seems genuinely to want that. If so, I’m here to help!

Remembering Bob Stout

A couple of years ago I wrote about recovering from an injury. At the time I thought it started as a pulled muscle that cascaded when my determination to keep running and cycling led me to compensate with various misalignments. The physical therapists I saw at the time agreed, so when the acute phase died down we worked on restoring the range of motion I’d lost in my right leg. I recovered some, but not all, of that range, and eased back into hiking, and then running and cycling.

Things haven’t felt right since, though. I’ve never regained my full range of motion in that leg, and I’ve been feeling a lot of discomfort in both quads as well as in the right groin where the initial problem began.

When I talk about full range of motion I mean something different from what most people mean. Take a look at this young man doing front stalders on the horizontal bar. Think about the leg and hip flexibility required to do that. In high school and in college I used to do stalders. Since then I never lived near a gym where I could swing on a high bar, though it’s something I still dream about, could do, and would do if there were a gym that had the gear and would let me use it.

It’s natural to assume that only a young person can be that flexible. Not so. There have been a few role models in my life who have shown me what’s physically possible in later life, and one of them was Bob Stout. In 1952 he was a U.S. Olympic gymnast. In 1972, when I was getting into the sport as a 15-year-old, he worked out with my high-school team and showed us that a man then in his late forties could still hold an iron cross on rings (something I could never do), swing high bar, and demonstrate the full hip extension required for the stalder. As far as I know he was still doing those things when he died at age 56, of a heart attack, while jogging.

I am 58. Until recently I could also reach nearly that same hip extension. Then, after the incident a couple of years ago, my flexibility diminished by a lot. The hypothesis I hope will prove true is that I got myself into a vicious cycle. An injury made it hard to stretch, so I avoided stretching, which made stretching even harder. Ditto for squatting. I’ve been avoiding it because it was uncomfortable, that made it even more uncomfortable.

The hypothesis I am afraid will prove true was suggested by a physical therapist I saw last week. He thinks I have osteoarthritis of the hip. If he’s right, I’m looking at no more running, reduced hiking, lots of pain management in order to maintain activities like hiking and cycling, and joint replacement at some point. I guess the X-ray will tell the tale, and that won’t be for a few weeks. Meanwhile, it’s suddenly a high priority to maximize strength and flexibility. Whatever the state of my hip joint(s) turns out to be, those will be key assets.

I know how to maintain those assets. I don’t know what the limits of recovery are, once muscle has been allowed to atrophy and connective tissue to tighten. So, I’m doing that experiment now. I’ve seen noticeable improvements just in the past few days. I have no idea how far I’ll get, but I’m grateful to Bob Stout for his inspiring example.

On getting paid (or not) to write

Danielle Lee writes the Urban Scientist blog for Scientific American. In 2013 she wrote a post about an ugly incident in which she was invited to write for Biology Online, asked about payment, declined the offer when she learned there would be none, and was called a whore. Scientific American took down the post an hour after it was published, late on a Friday, and then restored it the following Monday after verifying DNLee’s claim. The Biology Online editor’s name-calling was horrific. But his email also included a lesser insult:

You will enjoy a great deal of exposure from our 1.6 million monthly visitors.

I heard the same thing from Wired a few years ago, when I was invited to write an online column. They weren’t paying. But I was otherwise employed, I missed writing for a wider audience than my blog attracts, and I bought the claim that appearances on Wired.com’s home page would yield useful visibility, feedback, and engagement.

It didn’t work out that way. That was the loneliest writing gig I’ve ever had. On-site comments were few and far between. And reaction elsewhere — on Twitter, in the blogosphere — was anemic as well. I felt like I was talking to myself in an empty room while, below in the engine room, machines were talking to other machines, spinning page counters unconnected to any real audience.

Now I’m writing for InfoWorld again, and it’s a much more pleasant experience. That’s partly because InfoWorld does pay contributors. It’s not a living. The world has changed since I left InfoWorld 8 years ago, when there was still a print magazine. But there’s a real exchange of value.

As important to me, if not more important, is the connection to an audience. With InfoWorld I’m feeling that connection again. I can see conversations forming around my columns and features, and those conversations lead me to new ideas. That’s a dynamic I cherish.

Could I still earn a fulltime living writing about technology? Probably not, and I’m sometimes wistful about that. It’s something I do really well; arguably it’s my strongest talent. But the world’s supply of creative talent far exceeds the commercial demand for it. The vast majority of writers, artists, and musicians need day jobs. That can be a good thing. In my writerly niche it certainly is.

The kind of technology journalism I’ve practiced didn’t exist until BYTE came along in the 70s. Like all the tech publications that followed, we faced a dilemma. Do you hire practitioners who can learn to write? Or do you hire journalists who can learn about technology?

The best answer, of course, was (and is): Hire practitioners who are also reporters and writers. Then make sure they keep developing their practical knowledge and skills. At BYTE, and then at InfoWorld the first time around, I was blessed with the opportunity to do that. Such opportunity may not come again. That’s OK. I need to be able to deliver value in other ways too. Doing so will keep me from devolving into a pundit.

What’s not OK is writing for commercial publications that don’t pay. If there’s no market for something I want to write, I’ll put it here instead of on Medium or Facebook or some other site that earns in the currency of dollars but pays in the currency of (presumptive) attention.