Musings on Business and Tech

Category — miscellaneous

Is the Apple Developer Site Up?

I was sick of having to click two times to answer this question, so I made this.

Stack: Flask + Heroku

July 24, 2013   No Comments

Famous Last Tweets

About a year ago, my friend and colleague Michael McWatters tweeted, “Oh no, if I die at this moment, my last tweet will have been about Andrew Breitbart…must think of something else. Beauty, science, altruism!” I replied, “@mmcwatters That would be an interesting site to make: the last tweets of famous people.”

In the weeks and months that ensued, we made good on our promise and built the site, which Michael brilliantly named, “The Tweet Hereafter.”  As our lives become increasingly transparent on sites like Twitter and Facebook, we leave indelible marks on the Internet that can’t be erased once we die.

In March, 2012, conservative blowhard Andrew Breitbart famously sent an apologetic tweet less than an hour before he died of a heart attack. And now, a little less than a year later, beloved Olympian Oscar Pistorius has been arrested on suspicion of murdering his girlfriend Reeva Steenkamp, who just yesterday tweeted excitedly about her plans for Valentine’s Day.

We’ve been collecting tweets like this for over a year and have finally decided to publicize the site. The site is certainly morbid, sometimes interesting, quite often meaningless. But we hope it makes you think a little bit.

February 15, 2013   No Comments

Google Maps Bookmarklet Lets You Map Any Address on a Page

How often have you been on a site where you see an address but no map, and maybe not even a link to a map? I find this very annoying, so I created a little bookmarklet that solves the problem. To you use it, just highlight an address on a page and click the bookmarklet. You’ll be taken directly to Google Maps for that address. Easy enough.

Here’s the bookmarklet. To install it, just drag it up to your bookmarks bar!

Map It

May 4, 2012   No Comments

Rediscovered Images from 9/11

On September 11, 2001, my wife and I were woken at about 9:00 by her mother, who told us to turn on CNN. We were newlyweds, living in a studio apartment on the Lower East Side. As soon as we saw the burning towers on TV, we left our apartment and headed down to the street.

Looking southwest from Grand and Henry, we had a direct view of the World Trade Center. We stood for a while and watched in shared horror as the towers burned, and then fell. Apparently, I had my camera with me and was taking pictures–a fact that the enormity of the events had erased from my memory.

But I recently found the pictures I took that day, buried in a box in my house, and seeing them again took my breath away. Here they are, for posterity. (Click on any image to get the full-sized scan.)


April 21, 2012   2 Comments

This Piece of Technical Writing Has Been Written By Me

In my role as a business analyst at a software development shop I see a lot of technical writing, much of it terrible. For some reason, people whose job it is to be precise and logical often fail to do so when the language of expression is English, rather than Java. While the problems in technical writing are varied, the offense I most often see is overuse of the passive voice.

For those who don’t remember their junior high school grammar, passive voice is a grammatical construct in which the object of a sentence is repositioned as its subject. “Tom throws the ball” is active voice, while “The ball is thrown by Tom” is passive. The use of passive voice in itself is not grammatically incorrect, but it often weakens the clarity of the writing by obscuring who or what is doing the action in the sentence.

Technical writing is a veritable breeding ground for passive voice proliferation, in many cases because the actors in technical writing are not tangible. The actors are software code, or systems, or networks. My phone today popped up an alert that said, “The server cannot be reached.” Who exactly is the one not reaching the server? Is it the phone? Is it the app I was running? Is it me?

But just as a writer would avoid passive voice in “normal” English prose, so too should a technical writer avoid it in his work. Phrasing technical ideas in the passive voice dampens the agency of the thing doing the action, making it seem unfamiliar and disembodied. Technology does things. To render technology in the passive voice is to distort its power to create change.

This is especially evident when technical writing refers to error conditions, as in the case of the alert above. It’s almost as if the authors of the software were deflecting blame away from themselves with the message, “The server cannot be reached.” They could just as easily have said, “It’s not our fault that you can’t access this page. Talk to the dudes who run the server.” (People in IT love to blame the other guy, but that’s a story for a different post.)

It’s never that difficult to clean up language like this in one’s technical writing, but it often requires ascribing some degree of agency to to the technology. Instead of “The server cannot be reached,” one could write it as, “The application failed to reach the server,” or, “The application failed to connect to the server.” If English had a better indefinite subject pronoun, we could even write something like, “One cannot reach the server at this time.”

There are any number of solutions to the problem of passive voice in technical writing. The main thing is to be aware of the easy pitfall, and to think about technology more as an agent of change than as some hidden force behind the things we observe.

June 13, 2011   1 Comment

Forget the Oil Spill

The internet has been abuzz the last couple of days about some admittedly clever viral videos from Old Spice (yes, that Old Spice).

It got me thinking that there’s been a lot less buzz lately about the BP oil spill, which is coming up on its 90-day birthday and shows no signs of slowing down. And now the presidential commission appointed to investigate the spill is recommending that the moratorium on deepwater drilling be suspended.

Are we all so distracted and ADD-addled that we’ve already forgotten the magnitude of this disaster? And while we’re at it, what about improving the financial system–did we ever see that one through to its conclusion? Are there still wars going on in Iraq and Afghanistan?

So I wanted to see exactly how much we’ve lost interest in the oil spill vs. how distracted we are by funny deodorant videos. I think this chart of Twitter trends from says it all:

And here is a sad chart of the decline in Twitter mentions of the oil spill in the last 30 days:

Enhanced by Zemanta

July 15, 2010   No Comments

What Makes Two Pieces of Content Similar?

Thinking more about how to dampen the web’s echo chamber, I wrote a Python script that uses OpenCalais to come up with a “similarity score” for two web pages you feed it. The output I’m expecting is a basic “yes” or “no” that answers the question, “Are these two articles about the same thing?”

OpenCalais analyzes text and determines a list of topics the text is about, along with a relevance score for each. My script takes this report for the two pages, finds all the topics that overlap, sums and weights the relevance scores, and comes up with an overall similarity index.

This works fairly well, but produces some false positives for articles that are similar but not about exactly the same thing. For instance, this article about HP buying palm comes up as moderately similar to this Mashable review of the iPad 3G. This is probably because the HP article includes a snippet below the fold about the iPad. Granted, my script knows that these are not closely related, but in my mind they’re distantly related, and the iPad article that’s included on the same page as the HP article isn’t even a review of the iPad 3G as the Mashable article is.

So what refinements can I include that might be able to avoid false positives like this? It occurred to me that the headlines of closely similar articles are also closely similar. One idea I had is to run the headlines through OpenCalais as well, and sum and weight those along with the contextual analysis of the articles themselves. This might help to avoid the case above, but if one article’s headline is, hypothetically, “Apple iPad 3G Jailbreak Released” and the other’s is “Apple Releases iPad 3G,” OpenCalais might not be able to distinguish that these are in fact not closely similar. I could also skip OpenCalais and just do a count of overlapping words on the two headlines, but that probably won’t work in this case either.

But what if I apply that method to the whole of the article? Count the number of overlapping words in the two articles, with the exception of generic words like “this,” “that,” “is,” “was,” etc., and then use this analysis to increase or decrease the similarity score from above. This may work.

But all of this really begs the question: how do our minds do this, and so easily too? It’s an incredibly amazing, and completely ordinary, skill.

Reblog this post [with Zemanta]

May 11, 2010   2 Comments

Top 10 Most Annoying Brand Names

One of my big pet peeves is annoying brand names. But the worst kind are the portmanteau-like names that sound like they were created by an algorithm that mashes up two fanciful words to create some new pseudo-fanciful word. Here’s my top (or bottom?) ten most annoying brand names of this ilk:

10. Verizon – mashup of horizon and…vermin?
9. Truvia – no thanks, I’ll take sugar
8. Affinia – at least it’s not Infinia
7. Intrinsity – the quality or character of being intrinsic?
6. Infiniti – I’m sensing a pattern here
5. Advair – Advanced Air!
4. Altria – wow, this cigarette company is so altruistic now!
3. Accenture – Andersen Consulting paid $100 million for someone to think up this name
2. Abilify – there’s already a word for this: ‘enable’

And the number 1 most annoying brand name is….

1. Xfinity – an energy drink? a porn site? NO! eXtreme infinity!!

April 29, 2010   No Comments

Testing Twitter’s @Anywhere

I just set up Twitter’s @Anywhere on this site, so now I can get “hover cards” to automatically pop-up whenever I call out someone’s Twitter handle like this: @jamieforrest. Hover over my name and you’ll see a button to quickly follow me, along with a “more” link that gives you more details on my Twitter account and activity.

To kick things off, I’ll give you a list of my top 10 favorite tweeters, in no particular order:

  1. @marshallk
  2. @om
  3. @mashable
  4. @baratunde
  5. @waltmossberg
  6. @ev
  7. @timoreilly
  8. @jason
  9. @jperlow
  10. @cdixon

I may integrate some more @Anywhere features here down the road, as it seems like a pretty cool way to blend what’s on my blog with “what’s happening” on Twitter.

Related articles by Zemanta

Reblog this post [with Zemanta]

April 15, 2010   No Comments

Who Will Solve the Browser Plugin Problem?

Like Nathan Bowers, I’ve been feeling for the past year or so that Firefox has gotten “slow, bloated, and ‘high ceremony.'” But while Bowers uses this observation as a lesson on usability (which he is dead-right about), for me it’s also a study in the complicated dynamic between simplicity and flexibility.

One of the things that has always made Firefox a compelling browser has been the array of extensions available. But on the flip-side, trying to run too many of these at once can greatly impact the browser’s performance, and it only takes one bad add-on to ruin the party for everyone else. Extensions add a layer of complexity that makes the overall experience kind of annoying.

Because of this, I had switched to Google’s Chrome for a while, which was nice and fast and had a really simple, elegant UI. But was it so fast because it was simply more optimized than Firefox to run things like Javascript? Or was it just that I simply didn’t have any extensions installed yet? Hard to say, because at that point Chrome didn’t even support extensions.

Then as I continued to use Chrome, it started to do this weird thing where color palettes would suddenly change for no reason, which really bothered me. So I switched to Safari. Again, it was nice and fast, but I still kind of missed my old extensions. Where were Firebug and YSlow, AdBlock and HttpFox? I really missed having those handy, and I started to feel like it was worth the slowness of Firefox to have those tools at the ready.

Well, now Chrome supports extensions and perhaps they’ve fixed the color issues. Should I switch back again to give it a try? They still only have about one third to a half of the extensions that Firefox has. And what happens if I start trying to run a bunch of extensions in Chrome? Will it get slow as well? At least in Chrome if an extension causes a problem, it only kills the tab it’s running in but doesn’t cause the whole browser to come crashing down.

In any case, if Chrome hasn’t yet solved the browser plugin problem, then there’s still an opportunity out there for someone to crush everyone else in the browser space. My hunch is that you’d really need to lock down the extensions in order to contain their potential for damage–kind of like Apple does with iPhone apps. Is anyone working on this?

Reblog this post [with Zemanta]

March 23, 2010   No Comments