Monday links moving to another site

Hi folks – hope you’re having a good Friday! I’ve decided to consolidate the tech things I’m doing onto my other site, Useful & Clever, which is where I was putting some of the fun projects I’m working on. There’s a little more to this move that I’ll share later, but if you’re a long time reader of this site, add Useful & Clever to your RSS reader or wherever you get the blog. Ping me on Twitter if you have any questions or concerns.

You’ll notice that I’ll be migrating the existing Monday Links posts to U&C over the day.

Time Should Fade (Almost) Everything…

Update: There aren’t APIs for most of the services that I’d want to use here, so I’m putting this project on pause for now. I’ll probably hack something together for my own use, but trying to turn this into a service doesn’t seem possible given API usage guidelines from these services.

I posted the following to Twitter the other day:

So, if all goes according to plan, all of my Twitter history up to yesterday-ish will be deleted, and I will have setup some code (that I control) that will delete everything older than 7 days on an ongoing basis.

I used to believe that everything posted on the Internet should stay, forever. I’m not so sure that is true. Published for public consumption, forever? Beginning to doubt that for most normal humans…

In the near future (weeks hopefully), I’m going to start automatically hiding old photos, blog posts, everything except those that seem really worthwhile to keep up indefinitely. I’m working on the rules still, curious what people think are good rules.

I’m almost certain that corporate social media policies, especially for public facing employees, should strongly recommend services that do the same – either delete or tighten up permissions after a window of time on public posts (And anything on FB)…

So, in short – you’re only going to see ~7 days of old tweets on my Twitter account. This post is about how I’m setting that up.

The short term hack

Twitter makes this hard (though I think this is unintentional). Specifically, they make it hard to access anything more than the last 3200 tweets in your account via the API. So, getting your account down to just the last 7 days ends up requiring two bits of software:

  1. Find a way to delete tweets older than my most recent 3200.
  2. Setup a process that watches my twitter feed regularly and deletes tweets older than 7 (or whatever) days.

Deleting all of my tweets

I decided I would delete all of my tweets to begin with. If twitter offered a native “archive” or unpublish option, a la Instagram, I may not have deleted everything. But they don’t, so this was my only option to start with a clean slate.[footnote]I didn’t feel too bad about this, because I had an out. As part of this process, I had to download my official twitter data archive, which has everything. On top of that, I use a bookmarking service called Pinboard that has a feature that copies all my tweets and makes them searchable, privately, just for me. (It does require the paid archive feature in order to get the full text of the tweet. Otherwise it only stores a truncated version of the text.)[/footnote]

I found a small script someone wrote on Github, forked it, and then modified it quite significantly. The script and instructions are on my Github account. You’ll need to be comfortable at the command line if you want to use it. It’s rough, and I offer no guarantees that it will run smoothly for you. Also, keep in mind – it will delete all of your tweets, and there is no undo. Keep your backup archive safe, and make sure this is what you want: delete everything.

To get around the 3200 tweet API issue mentioned above, the script uses the tweets.js file that comes in the data backup from Twitter, so the good thing is that you’re basically forced to download the backup to use the utility. That file contains the IDs for all of your tweets (among other things), which is all we need to issue the delete command for that tweet.

The ongoing culling of my older tweets

Again, I started with someone else’s code. I found a nice little project written in Go that leveraged AWS Lambda to run the little bot. I used this project as a chance to brush up on my Cloud Formation skills, as well. My fork, with CloudFormation templates, is on my Github account as well. There’s even a handy “Launch Stack” button if you want to set it up on your own AWS account.

The bot runs every few hours, looks for tweets in my account older than the interval I’ve configured, currently set at 7 days, and deletes them if it finds anything. It’s all pretty simple.

Making this a thing

As I started working through this, I starting thinking about enabling this for the other social media services I use. I don’t know why everything, from Flickr to Pinboard don’t offer ephemerality as a feature. If the feature is offered, it should be the default. As I mentioned at the start, I don’t believe we, as people, are prepared for a world with total recall of our every utterance. My thoughts on this are complicated[footnote]For example, I’m not in favor of the right-to-be-forgotten laws even as I want services to offer that capability on the individual service level…[/footnote], but suffice to say, I am going to build tools that allow me to manage my social media presence following these guidelines.

I mentioned this to a few folks, and got a few enthusiastic “I want that for my account!” comments. So, I’m going to spin this up as a side project and see what I can cobble together. If you take a look at the code I linked to above, it’s very simplistic – fine for a single account, but not the best for a real service.

The other aspect of this I’m working on is governance. I don’t want to do this as a business – that’s not a goal. What I do want is a service that has a strong privacy stance, that offers high trust to folks that use it. One of the reasons I didn’t use the public services that are out there is that their business model is unclear.[footnote]I do think the popular ones, like TweetDelete, seem like fine options. That one, for example, is owned by a hosting company that doesn’t seem to need the revenue from a tweet deletion service.[/footnote]

I am hoping to use this as an experiment in a cooperative form of governance for an online service, one where any charges are transparently used to maintain the service, where the source code is available for people to review, and where users can have some sort of assurance that the code that is released is the code that the hosted service is actually running. These seem like interesting problems regardless of the service being offered.

Because naming things is easily the most important and most fun part of any project (seriously, I have so many domain names!), I’ve decided to call this the Time Fades Project. A placeholder page is all that’s over there, but stay tuned for more.

If you have any interest in this sort of governance topic, or in contributing to the service, or in what a good set of default rules are for these sorts of ephemeral behaviors (I expect this will need to be different for different social networks), please get in touch.

I Deactivated My Facebook Profile

Just as a public service announcement: I deactivated my Facebook account to see what it’s like to not have a Facebook account. I suspect I’m going to run into places where it’s impossible not to have one, but let’s see what it’s like.

Over the past year, especially since the 2016 election, I find Facebook… exhausting. Mentally, it’s draining. Lots of debate, lots of echoes, and mental noise in my life that I don’t really need. In January, I deleted the app from my phone to see what that was like.

While it wasn’t a major factor, after the Cambridge Analytica stuff and yet another “Facebook abused it’s access to your phone” tidbit coming out, I’m also just kinda done trusting their engineers.

If you want to keep up with the kids, friend me on Flickr or Instagram[footnote]Yes, I know it’s owned by Facebook…[/footnote]. If you want to keep up with my news posts, follow me on Twitter. If you want to just ignore me, I’m cool with that, too. 🙂

I’m contemplating starting a project with a friend or two to replace the most valuable (to me) function of FB – as a clearinghouse for keeping up with your friends & family. More on that once work quiets down a little. Lots of ideas on how to structure that as a side project…

E Pluribus Unum

The motto of the United States is not, in fact, “Fuck you, I got mine.” It was, and should have remained, “E Pluribus Unum” — out of many, one. We’re all Americans. We all deserve the blessings this country can provide. This one is willing to pay his taxes for the benefit of the many.

Source: John Scalzi (read the whole thing)

We hold these truths to be self-evident…

Like many of you who vehemently opposed a Trump presidency, I’ve been walking around in a bit of a stunned stupor these last few days. I’m gathering my thoughts on what I want to do next, and how I can do the most I can to help bring about a more respectful world. There has to be a better way for us to talk to each other, and a better way to be humans to each other.

Until then, I’ve been reflecting on what I know:

  1. I know I can’t comprehend running away, even though given my current work experience, I could probably easily find a job overseas. I also can’t see disengaging, Garrison Keillor, “Let them deal with it” style. I love my country too much, and I know evil flourishes only when good people do nothing.

  2. I know most Trump voters aren’t KKK style racists. Thus, I don’t blame Trump voters en masse for the racism and bigotry that’s emerging (and sure to get worse) or think they’re all racists.

  3. I know that many of non-racist, non-sexist Trump voters seem blind to the limitations of their own experiences and the biases that creates. I hope that the these voters recognize the real fear that many minorities are feeling after the election. It is real. There are real fears here informed by real violence happening right now, real fears caused by un-American behavior.

  4. I know that we, as a society, seem to be lacking in basic empathy these days. We are too willing to believe people we disagree with are stupid or blind or ignorant. Please try to approach your fellow Americans with an open mind and an willingness to understand their perspective. You don’t need to agree – but it’s better than assuming they’re idiots or stupid for being scared. I try to assume people are acting in good faith until they prove they aren’t.

  5. I know that Facebook and Twitter have fed a lot of the divisiveness this election cycle, no matter what Mark Zuckerberg says, or what picture Jack Dorsey paints about his own beliefs. We don’t all need to agree, but we do need to agree on a common set of facts and some shared truths. We can and should interpret those according to our own beliefs and our own perspectives, but we can’t disagree on whether gravity works or that 2+2=4. For a lot of reasons, we have receded into echo chambers, and we need to do something about it (or it will get a lot worse).

  6. I know the Democratic party as it stands doesn’t work the way I want it to anymore. We need to help the party evolve, possibly by working outside the party. Tea Partiers organized. Folks that have an alternative need to do the same.

  7. I know I need to engage more. More at the local level. More at the state level. And then maybe at the federal level. The question in front of me is, “How?”

That’s the question that will preoccupy me until we move back home. I’ll probably not write anything else until then. I won’t be able to help but retweet the odd Trump item on Twitter, but I’m going to dial back on social media, read and follow what he does, and talk offline to friends and family. It’s time to get to work.

Barack Obama And Doris Kearns Goodwin: The Ultimate Exit Interview

But I tell you what, though. [Long pause.] I’m named Barack Hussein Obama. I’m African-American. And I’ve been elected twice to this office with the majorities of the American people. So something is working.

Vanity Fair

Wonderful interview with President Obama. Such a decent man with a deep appreciation for America and its history. We’re going to miss him, even the folks that hate him right now.

Rethinking the Work-Life Equation

Workers in the experimental group were told they could work wherever, and whenever, they chose so long as projects were completed on time and goals were met; the new emphasis would be on results rather than on the number of hours spent in the office.

NY Times

From Humble Beginnings: the NFL vs. eSports

By most accounts, American Football[footnote]… hey, I’m overseas now, have to distinguish! 🙂 [/footnote] started out with humble beginnings: a college sport that branched off association football (rugby) that spawned a bunch of disorganized professional organizations that eventually coalesced into the NFL and the college football behemoths we know about today.

The game started in the mid 1800s. The first professional game was in the 1890s, with the first player getting a secret single game contract that paid him $500 (a staggering $13,000 in 2016 dollars). By 1920, what would be the NFL was born. Players were averaging a few thousand dollars a year ($27K in 2016 dollars) by the 30s and often took second jobs to make ends meet. By the 70s, the modern game and the college game began to take the form we see today. The rest you know: Billions of dollars and a billion fans watching for it’s marquee event.


In the late 90s, a new genre of competition now called MOBAs (multiplayer online battle arena) came to be. Derived from a popular real time strategy game, Starcraft, it has since spawned a growing industry of games in that genre. A few games, League of Legends (LoL) and Dota 2, have tournaments with million dollar prizes. They have college clubs around the world, including at a few you may have heard of. They even have their own doping problems.


ESPN streamed a Dota 2 tournament in 2015 and even broadcast a MOBA on ESPN2 last year. Hard core sports fans were less than impressed.

I admit, I also was a little confused why a game I personally had never heard of, let alone played, was worth broadcasting on TV. Being me, that meant I started doing my research: learned about big prizes and huge audiences, read about the massive popularity of eSports in Korea, and looked at the games themselves.

That these games are the popular tournament ones makes sense to me. I used to love RTS games back in the day[footnote]I was a decent Starcraft player in my youth, and related titles like Warcraft III and Command and Conquer are still some of my favorite games. And wow, I didn’t realize C&C was still being released…[/footnote]. These RTS games are the predecessor to LoL, Dota 2, and Vainglory. MOBAs still share a lot in common with their ancestors. These games are a mix of:

  • pure reflex and physical skill
  • complex strategy carried out on a deceptively simple field
  • clear, easy to understand objectives

Actually, kind of like the NFL.

In other words, if you don’t play, you can still tell what’s going on at a basic level (kill the other team, take an objective). But if you play… wow, there are layers to unfold and strategies to debate and technique to admire.

I don’t play Dota or LoL, which is why a single Dota 2 broadcast couldn’t keep my attention for the whole event. I thought it was cool, recognized the RTS heritage, and basically went back to watching sports.


One day, I picked up Vainglory. It’s a free MOBA for iOS which was featured during an Apple event. I dove in and immediately was hooked. I wrote about Vainglory (indirectly) last year. At that time, I had been playing the game frequently for months, so now (except for a couple month hiatus around the birth of my daughter) I’ve been playing this game for over a year. I literally play a round most nights before I head to bed.

I’m naturally competitive, and so naturally I want to be good at this game… Which is when the whole thing finally clicked.

In the Twitch post, I likened watching Twitch to the Golf Network. Boring if you’re not a golfer, but a great source of tips and help if you are. This is true of the entire community around video gaming now. For example, I’ve been watching videos on YouTube like BenTimm1’s videos to learn strategy and tactics. Tournaments are often streamed on, so that’s another good resource.

Vainglory also has televised tournaments in Korea. The Vainglory IPL is broadcast on OGN, “a South Korean cable television channel that specializes in broadcasting video game-related content and eSports matches.” Here’s one of their broadcasts of a Vainglory IPL final:

Those are pretty good production values, which isn’t very surprising given the popularity of eSports in Korea. You can see a huge improvement, though, as each subsequent tournament is streamed. There’s a big improvement in the commentary, for example, even from the Vainglory World Invitational final, which took place right before the IPL tournament embedded above.

It’s important to note that this is for Vainglory, a relative newcomer to the MOBA and eSports world. Take everything I’ve said above and amplify it for LoL or Dota 2. This is a shot from Wikipedia of the Dota 2 finals crowd in Seattle:

By User:DarthBotto, CC BY-SA 3.0,
By User:DarthBotto, CC BY-SA 3.0,


While the Great Depression hurt the growth of the NFL, it did provide one benefit: it convinced otherwise respectable men to turn to football as a primary source of income. These were college educated men, disproportionately from white collar families who probably would’ve pursued other opportunities. This raised the talent level, making the league stronger and likely creating a feedback loop[footnote]I didn’t find too many sources aside from that one book (which I only have the Google excerpts for – it’s out of print, it seems). The draft came to be toward the end of the Depression and pre-WWII, which could correlate. It’s unclear (to me, right now) if the draft initially was because of an abundance of potential players or a way to entice players in. Worth doing more reading around this.[/footnote].

Vainglory, my favorite, is still small, paying out 10s of thousands for their grand prizes. Dota 2 has much higher payouts and an enormous prize pool. LoL is further along in their growth, and their tournaments provide a sense of where things are going. Riot Games, makers of League of Legends, provides salaries for their tournament players along with travel stipends. Make the choice to leap into professional eSports easier and the talent should follow.

All of that combined makes being a professional “League of Legends” player a viable career opportunity. This helps the game reach its full potential, because we want to avoid our pro players coming under financial stress and having to hold down part-time jobs. We want to make it so being a pro player is a completely viable career opportunity.

Riot Games’ CEO, Brandon Beck

It’s still not huge money. With sponsors involved, some of these players are making a decent living, even if they need to also have a side job. Kind of like the early NFL.


The big MOBAs are growing the infrastructure around eSports in a way that points to a sustainable future. There are campus organizations forming along with amateur associations. There’s also more mainstream acceptance of gaming thanks to smartphones, and thus a bigger potential audience. The choice to play competitively is getting easier to make for players. Those trends just need to continue in the same direction, and eSports could be a huge thing. Maybe… kind of like the NFL.

Master & Dynamic MW60 Headphones – Bluetooth headphones that live up to the hype

So, I may have a headphone problem the way some people have shoe problems.[footnote]though my wife swears I have a shoe problem, too…[/footnote] It’s not quite as bad as what I see with hard core audiophiles, but still, it’s bad.

Headphone addiction is kind of like they way people get hooked on adrenaline sports. You just need to get a taste, that first moment when a pair of headphones make you sit up and go, “whoa!”

For me, it first started with the first pair of headphones that really drove consistent bass (remember Sony’s Mega Bass? I totally got sucked into that hype). Eventually I grew up, realized that there was a lot more going on aside from the bass, even for EDM or whatever. The real a-ha moment came with a pair of Etymotic ER-4Ps that I still own to this day. They are my reference for great mid & treble response. Their only drawback is their bass response. It’s good, but not great, especially for tracks that really need solid bass response.

Still, I have so many “whoa” moments with these headphones. I’ll be listening to music I’ve listened to a hundred times with other headphones and I’ll just hear some detail that will pull me out of whatever I’m doing. “Whoa, what was that?” I’ll just stop & listen. It might just be the brush of fingers on a guitar, the bite of a bow on strings, or individual instruments that seem to merge together on other headphones.

The problem with the Etys is that they are IEMs – in ear monitors, or what everyone else calls earbuds. They go into the ear canal, creating a seal. The quality of the seal affects bass response. That adds a variable on top of the 4Ps flat response. So, while they feel exceptionally clear, sometimes I want to feel the sub-bass thump of an EDM track or the bass line of a hip hop track. They just showed me what was possible, but I knew there had to be better. Beyond that, IEMs aren’t as comfortable for long sessions, and they’re not interruption friendly (can’t just drop them to my neck). Plus, no mic or playback controls on these, either.

So when I returned to ESPN, knowing I’d be working in an office again [footnote]I really miss working at home sometimes… being able to crank a pair of desktop speakers is pretty nice.[/footnote], I started looking for over ear, closed headphones. I’ve used a pair of Sennheiser HD-280s (which I also love) at work since I moved to CT, through 4 different companies, but they are finally falling apart. Besides, they aren’t very portable nor do they have controls for play/pause/skip or a mic for calls. So, I began searching for a good desktop pair that also had phone controls and great, “whoa!” inducing sound.

One caveat – I’m not an audiophile, I don’t have golden ears, so while I aspire to own something truly crazy like the HiFiMan HE6’s[footnote]… which require a higher end amp to drive them, probably another $500-1000 on top of the price of the headphones…[/footnote], I’ve generally stayed around the $300 mark (or less). For me, headphones are less about an ideal sound and more about clarity. I want them to show me something new about my music while staying very close to what the artist heard in the studio.

I’ve gone through my share of headphones. I tried the Sennheiser Momentums, knowing I like Sennheiser’s sound, but returned them due to fit issues (ear cups were too small for me). I bought a pair of PSB-M4U1s based on reviews at Marco Arment’s site and The Wirecutter. Those were the pair I was using daily until recently.

Though the reviews were great, for my taste I found the PSB’s a tiny bit bass heavy and a little muddy in the mids and muted in the treble. Good all around sound, I like them, but I had very few “whoa!” moments. Maybe even zero… I can’t remember any right now. They’re also huge, at the outside edge of portable.

So I’ve been keeping an eye out for a new pair. This winter, I decided to get myself a gift, the Master & Dynamic MW60 Wireless headphones.

I found out about them from a bunch of press reviews around the launch, all of which were uniformly positive: The Next Web, Wired, Engadget, the Verge. Basically, a great sounding Bluetooth headphone with a unique design and a listening profile that matches my tastes.

The main criticism is their cost. These are expensive, luxury headphones but they live up to the luxury end of the deal. The materials are amazing. The construction is solid. The earcups are so soft and just plain pleasant to wear that I’m happy to wear them for long stretches.

They’re also Bluetooth headphones, with the tradeoffs that implies: requires charging, can have interference, and requires codec support on your playback device.

I’m not concerned about charging. The MW60 have a built-in Li-Ion battery, and charge using a micro-USB cable. I have yet to run down the battery, and I’ve gone a few days without charging at times. They claim 16 hours of use between charges. They can also fall back to corded use.

On the interference front, I’ve had nearly zero issues. The MW60s have much better range and reception than most Bluetooth headphones owing to their iPhone 4-like external antenna design. Like the iPhone 4, though, you can touch the antenna or brush it accidentally and cause the signal to drop out. I’ve had a few blips now and then, but not enough to get me to switch to corded use (a cord is included, can be used instead of BT). It is awesome, however, to not have to deal with the cord anymore and to still have really good sound.

To maintain sound quality over Bluetooth, the MW60s support aptX, so you have that available if your phone or other playback device supports it. iPhones do not support aptX, but not to fret. Apple chooses to send AAC audio over Bluetooth, which the MW60 supports (I confirmed w/ Master & Dynamic before ordering). Depending on who you ask, the quality is comparable to aptX.

As I mentioned, my sound preferences tend toward the more balanced side of things. The MW60 delivers on that, with a slightly bumped bass response. That’s pretty much perfect for me.

There are a few things I would improve. The button controls for play/skip/previous could use a rethink. The buttons have several functions overloaded in unique (to me) ways. The headphones have 3 buttons, but they don’t map to the typical 3 button remotes on other headphones. The Apple earbuds, Bose QC-25’s and my PSBs all use the main play/pause button as a skip/previous button: single tap play/pause, double tap skip, triple tap previous. The MW60 uses long presses on the volume buttons as skip/previous buttons. It introduces a delay in the skip process – basically, I want to go to the next track, but I have to wait. I also can’t skip quickly because each skip is a press, wait, press, wait, etc…

One other smaller gripe: I wish the included cord was a mic + remote cord. It’s nice to have the ability to go corded for long calls, especially in the car, and to know that I can move the mic closer if it’s particularly noisy.

These are all ultimately small issues. My only real regret is not getting the brown leather version. I ordered the black pair, as all my other headphones are black, but almost immediately regretted it, too late to change the order, though. I’ll live though. They’re still amazing to look at. Just not as striking as the brown leather.

I haven’t yet mentioned the price, but they’re expensive (MSRP is $549). There is a lot of competition in this price range. Other reviews have suggested the Bang & Olufsen BeoPlay H7, the B&W P5s, or the Sennheiser Momentum 2.0 as alternatives. Those are cheaper and many have a noise-canceling option at a similar price point. I haven’t tried any of those, to be honest. I’ll admit that this purchase was at least 50% driven by the design of the headphones[footnote]Though, I did research Master & Dynamic’s previous releases to make sure I would like the sound and they lived up to the reviews. The MW60 are based on the wired MH40, which have a longer review history. For example, check out Head-Fi’s reviews of them.[/footnote] I’m glad I took a chance on this.

Overall, I would recommend these if you like the look of the headphones, are OK with the tradeoffs around Bluetooth (which, IMHO are minimal with this or any high-end modern set), and are looking for a luxury item. There are better value picks out there, but this pair is gorgeous.

One year later with the Twelve South SurfacePad

A year ago, I wrote that the Twelve South SurfacePad was my favorite iPhone case. After a year, I’m still very happy I bought the case. I love knowing that I can leave the house with just my phone knowing I have the two most important cards with it.[footnote]Interestingly, in the US, that’s my driver’s license and main credit card. In India, I just carry two credit cards since I don’t have a valid driver’s license.[/footnote] I thought it would be worth following up on two aspects a year into using this case based on the most common questions I saw in reviews while buying the case.

The biggest question was around one of the marquee features: can it be moved/removed without residue and while still remaining effective?

For me, I ran into a snag, but was able to get it off and onto a new iPhone successfully. The snag has to do with how the adhesive is made. It’s basically attached as a sheet to the insider of the leather. As I started pulling the case off the phone, the adhesive sheet started separating from the case and sticking to the phone. I just stopped when I noticed that, made sure I got the adhesive off, and then made sure to peel by pulling the adhesive & leather. The adhesive stayed intact as a sheet, still attached to the case, once I got the first edge pulled off. I had no problem after that. No residue on the old phone, too.

I then reattached it to the new phone. So far, it feels snug, I can dangle the phone by the case and the adhesive doesn’t seem to budge at all. I’m pretty happy.

The second question was around how the leather would age. Leather darkens and can stiffen as it ages, especially something like a phone case that’s always in my hand or in a pocket.

It has definitely darkened, and I’m debating whether to get a new case for this reason. I do like the darker red, but I’m going to get some leather cleaner and see if I can brighten it up.

The slots that hold the cards still hold the cards well, but they do slide around a tiny bit. I have one card that’s heavier, made of a faux metal material, that does want to slide out if I shake the case. That may seem contrived, but I do jog with the phone in my hand, which does worry me a little (I check to make sure the phone is right side up as I begin.

I’ve included a photo below that shows the case back when I bought it, the case now, and the back of the old phone. The phone photo was taken without any cleaning or other work – just the case removed. Click on it for a larger view.

Even with the wear, I’m really happy with the case.