Cleaning up after a twitter hack, with Unix

My twitter account got hacked. I needed a way to bulk unfollow the 700 accounts I was now following. I installed the command line twitter client twidge and used a little shell-fu to unfollow 20 accounts at a time

I then looped it automatically with the watch command, resulting in

This unfollowed the newest accounts first, so I was able to catch it before it unfollowed the accounts I really care about.


Here’s how we created PurpleMarker and how you can too

  1. Learn from our mistakes by following the instructions below
  2. Install Drupal 7 via easiest method available, i.e. Softaculous
    1. Mind Drupal’s helpful warnings to stop from leaving open security holes
  3. Install CiviCRM module in Drupal
    1. create a separate database for CiviCRM specific data.
    2. install dependencies as necessary: Chaos Tools, Views
  4. Install Sunlight integration (Drupal module)
    2. apply for Sunlight Foundation API key
  5. Enable lookup of CiviCRM contacts by Congressional District
  6. Enable CiviCRM Mapping and Geocoding
  7. Import your Contacts
  8. Famaliarize yourself with the immense capabilities of CiviCRM

Easy Budgeting Trick

The easiest way to save money is to trick yourself into thinking you have less than you do, and saving the difference. Any time you think you have money, you’re liable to think you can spend it.

This trick is based on the quirkiness of the calendar. If you get paid every other week, then it’s easy to assume that you get two paychecks per month, and you can base your budgets on that. The truth is that there are 52 weeks in a year and you’re only assuming there’s 48. So in fact twice a year you’ll have a month with 3 paychecks. If you can save these two entire checks, that puts you at a 7.7% savings rate, or even higher if you have your retirement contributions or other savings automatically deducted.


Ideas for the Kitchen of the Future

Most of these ideas could be combined into a unit that would basically resemble ceiling-mounted track lighting. Each “light” would be able to aim itself and would contain some of the following modules.

  • Kinect-like cameras analyze volume of vessels and their contents
    • This camera could track your actions to a degree
  • Projectors project lines on inside of vessels to show you how much of an ingredient to add
  • Voice controlled “assistant” (read Siri) walks you through recipes, responds to:
    • “How much flour do I add?”
    • “What do I do next?”
    • “The chicken is in the oven. Set the timer”
    • Assists in timing multiple recipes to be completed at the same time.
  • UV light reveals unclean surfaces
  • UV light used to sanitize surfaces (maybe just when no one’s in the kitchen)
  • IR thermometer measures temperatures, which are then projected onto the cooking surface
  • Sensors smell for burning (I now realize this is basically a smoke detector but I think we could do better if we designed a new gadget around this use case.)
  • Camera to upload photos of food to social media for bragging rights.
  • Cameras to record video of cooking process for tutorials or to capture entertaining mistakes.

The nice thing about this track lighting unit is that it’s relatively easily retrofittable into an existing kitchen and doesn’t require you to toss existing gadgets. A major flaw I’ve noticed in futurology is the temptation to assume that you can start from scratch. But the way things really work is that technology creeps forward by maintaining a degree of backwards compatibility. Products that require large investments don’t succeed in the market. Also the modularity of this design is nice because some technologies will reach marketability before others.

Besides this device, every surface would be a scale, especially stove-top burners and including oven racks.

Cooking appliances could be programmed by temperature vs. time graphs which would be downloadable from the internet and allow different temperatures over the course of cooking, and adapt to the temperature of the food (like microwaves already do) and also the weight of the food.

I think the sort of assistance this provides allows the cook to feel like they still have ownership of the cooking process, as opposed to more automation based technologies that can rob one of that satisfaction. I’m reminded of the story of the boxed cake mix that failed when it only required the baker to add water, but was successful when it required the addition of an egg (although for that I think you must also factor in the distrust of the artificialness of a product that used to require perishable ingredients and is now made to be shelf-stable).

While it is a notoriously hard problem to do image analysis to figure out what the ingredients are that you are working with, I think it would be fairly easy to tell the system “I’m measuring the flour” and then it would just have to track the location of the measuring cup. If it can do this, it can track your progress through a recipe and warn you if you do things out of order or forget a step. This would be one of the hardest things to get right because people hate being condescended to by technology.


Subscribe to feed in Digg Reader URL and bookmarklet

An easy way to subscribe to RSS feeds in a feed reader is to use a browser extension, such as the RSS Subscription Extension (By Google) to grab the embedded RSS feed from the page. To configure this or other extensions requires a URL that normally looks like

Where %s gets replaced with the feed URL to be added.

Digg Reader doesn’t explicitly advertise their URL for this but when you are adding a feed, it takes you to

So you can just use that when configuring the above extension at its settings page.

Here’s a bookmarklet if you prefer. Just drag it to your bookmark bar. You can also use it by navigating to the bookmarklet link from your address bar while on the page you want to subscribe to.

HT: Matt Cutts


Social News Ideas

Lately I’ve been using reddit, Hacker News, Digg, Slashdot and the app Zite to guide my web browsing. One thing I’ve noticed is how these sources use different algorithms to decide how to rank stories. Specifically reddit allows users to both upvote and downvote stories while most other places only allow upvoting.

The justification for not having downvotes I believe is to protect unpopular opinions. It’s not that the idea of downvotes came later, because some subreddits have chosen to disable downvoting. It seems to me that there is good reason to protect the minority from the tyranny of the majority. At the same time, if I want to deny the existence of certain celebrities, I should be able to block them from my feed. Considering both of these concerns, I believe that I’ve come up with a compromise.

Upvotes are global, downvotes are local

What does this mean? The function of upvotes would remain the same but the function of downvotes would change. How can downvotes do anything if they don’t affect other users? I believe reddit could go at least two routes with this. One is to implement a Bayesian spam filter. When I downvote something it would consider the words used in the content, and, probably out of necessity, the comments of a post so that it would learn that I want to pretend that I’ve never even heard of Kim Kardashian and that she’s a collective hallucination of people I hate.

The other route would be to use a personalization algorithm somewhat like takes in a record of all the music you listen to, then matches you up with people who have similar taste. It then recommends to each of you the music that the other person listens to that you don’t. Reddit could do the same for content based on your upvotes and downvotes. This could even be used to show you content from subs you don’t subscribe to.

Killing reposts

Another idea I have to improve social news is to add to it one of the key features of RSS readers. That is the de-duplication of content. Good jokes can cycle through reddit multiple times since, as the saying goes, “If I haven’t seen it, it’s news to me.” The solution would be for each user to have a record of what they click through, and to have all new content filtered against that record and karma decay, which detects reposts. This wouldn’t discourage reposts, since it wouldn’t automatically downvote them. In fact it would encourage them since it would hide them from people who would want to downvote them. This is actually great since it would allow good content to makes its way to new generations of users. You could even disable filtering of content you yourself upvoted so that you can be reminded of it when it comes around again. I would call this feature or the software that implemented it Riposte.

Shared responsibility

This idea was suggested to me by a friend of mine. It addresses the issue that the “Knights of r/new” have (perhaps undue) influence over what makes it to the top of reddit by filtering content when it is most vulnerable to being hidden via downvotes. The solution is to make browsing r/new a responsibility of all users by peppering new content randomly among the front page. I believe this issue may have also been addressed by hiding the vote count for young content, giving it at least a second chance before being hidden. This solution though addresses the issue of a selection bias being created by the “Knights of r/new”

Trial by jury

After reading Clay Shirky’s blog post A Group Is Its Own Worst Enemy, I was thinking about the issue of moderation among online communities.

Geoff Cohen has a great observation about this. He said “The likelihood that any unmoderated group will eventually get into a flame-war about whether or not to have a moderator approaches one as time increases.”

I think though that this creates a false dichotomy. I believe you can have moderation without moderators. I draw from my anarchist leanings here. You can have society without leaders if you have real democracy. By democracy in this case, I’m not suggesting that all users vote on all decisions of moderation. I think that is impractical. I’m suggesting demarchy. It could be a modified demarchy where user selection isn’t truly random. I think it would be a good idea to ensure in each trial by jury that there are jurors that have a substantial amount of seniority. We also might want to throw in some “professional” jurors, by which I mean some that are self-selected. Whether or not consensus or a certain amount of majority is necessary could be up to debate and may depend on the severity of the infraction in question.


Clinkle speculation

I came across this article on Business Insider about the mysterious and mysteriously successful payment startup Clinkle. They haven’t announced publicly what their innovation is, but based on the promise of the app to replace cash and their ambiguous skeumorphic design, here is my guess at how Clinkle works. I believe it amounts to a decentralized social ATM.

Use Case

You, the Clinkle user, need to pay for something in meatspace, but you have only your phone and no cash or cards.

  1. You refer to your app to find a nearby Clinkle user, who is discovered via geolocation. 
  2. Through the app, you proposition that user for a trade: their cash or the use of their payment card in exchange for a transfer of funds from your Clinkle account to theirs. Presumably a fee is added to make the transaction worthwhile for the cash/card holder.
  3. The other Clinkle user either accepts or declines.

Playing with the idea

  • This creates the an opportunity to become a human ATM, an Automated Teller Man, potentially for substantial profit.
  • This can bestow double benefits on users with rewards credit cards.
  • This can be used to buy drugs. The transaction would go through as a cash transaction, but instead of handing over cash, the dealer would just hand over the goods. There’s some plausible deniability, but at some point I would think patterns would emerge.
  • This could be used for money laundering.
  • If Clinkle is to be trusted, this could be used to stay otherwise off the grid. I thought about this with Edward Snowden. In his flight, he would benefit greatly from having friends to make his transactions for him.
  • A business could choose to accept Clinkle directly for their services.
  • Alternatively the business could function as an ATM.
  • In order to accept payment directly, a business might be required to offer ATM services or debit-like cash back services where you would combine an ATM withdrawal with a purchase. That would help seed users. Also it would help businesses who get in a lot of cash and have to pay for armored cars to pick it up.
  • BitCoin tie-in?

A design question: should the additional (in)convenience fee be set or negotiable? A negotiable one would ensure that there’s always someone available for the transaction if you really need it. A fixed one would perhaps prevent the cashless person from feeling taken advantage of. Being able to advertise your own minimum/maximum rates might smooth things out. It’s really a chicken and egg problem. But ATMs set a reasonable anchor for the price so it would probably end up in that ballpark. I’m leaning heavily towards a market solution. People for whom large fees are worth while will encourage competition which will bring down prices. Also this is where some of that seed money could go. Clinkle could take care of or subsidize fees early on.

Potential big problem

This might lead to some people carrying around large amounts of cash. They would be vulnerable to be discovered through the app and robbed. The service could keep logs of user locations and transactions so that the robber would be traceable. I’m sure there’d be a way to work around this, though.


Mobile Site Desktop Launcher

Facebook used to have a lightweight version at that was designed to be used on desktops with 56kbps connection speeds. You can imagine that that was quite the narrow use case, so it’s no surprise that they discontinued it. But it was nice to have as it was much less cluttered than their regular homepage.

I found myself lamenting the loss of one day when I navigated to the mobile site on my desktop. I was just as fast. It would be a viable replacement if not for the fact that it stretched all content to the full width of the browser.

Today this idea coalesced and I realized that it might be nice to have a desktop homepage that consisted of multiple columns of mobile sites. It would be sort of like iGoogle, but better in a lot of ways.

I mocked this up with iframes and here’s the result.

Screenshot from 2013-06-06 13:51:31

iframes are not a great way to do this. I think the most proper way would be with Web Components, which were announced at the most recent Google I/O.

Contact me if you’re interested in this. As it is I just wanted a proof of concept. I don’t see this as something I would use myself.


Android vs. iOS usage

ReadWriteWeb has an article today trying to explain how iOS usage is so much higher than Android usage despite Android having a much larger install base. The article speculates but to me the reason is clear.

It’s because iDevices are more expensive. Only more dedicated users are willing to pay the premium. Marginal users are more likely to buy the cheaprer hardware. They’re the users for whom a $200 tablet is worth it but a $600 one is out of the question. They’re the users who are more likely to let that unsatisfying slow resistive touch-screened no-name device gather dust. If you drop half a grand on an iPad you don’t ignore it.

As for apps downloads and sales, Android, by its philosophy, tends to attract more technical users for whom it would be a personal failing to pay for something when they could get for free.

It’s like going to a prostitute. Why should I pay, when if I apply myself, maybe I could get it for free? -George Costanza, Seinfeld

Android users are the Georges of mobile users. Therefore they spend less on apps. Therefore developers that are chasing dollars develop for iOS.