Archive for the ‘Uncategorized’ Category

27C3

Saturday, December 18th, 2010

I’m heading to 27C3 this year, but all the tickets appear to be sold out. If any blog readers happen to know how I could get a ticket, I’d greatly appreciate it if you could drop me a line.

Social services

Sunday, November 28th, 2010

Explaining the various new baubles of the internet to an iPhone-less visitor over Thanksgiving prompted me to put this taxonomy together. It’s somewhat unfairly (and perhaps meaninglessly) reductionist, but I was surprised by how neatly the services fit into this kind of ontology.

Service Primary element Feed-based Primarily mobile Subscription Default public Likes Comments Arbitrary restriction
Facebook Status update Yes No Symmetric No Yes Yes 5000 friends
Foursquare Check-in No Yes Symmetric No No No
Twitter Textual status update Yes Yes Asymmetric Yes No No 140 character updates
Instagram Photo Yes Yes Asymmetric Yes Yes Yes Square pictures
Path Photo Yes Yes Asymmetric No No No 50 friends
Quora Question answer Yes No Asymmetric Yes No Yes

Am I missing any important properties?

A good email client, please.

Monday, February 1st, 2010

Gmail proved that, despite the apparently high switching costs, a new webmail client can quickly get a lot of traction. There’s room now to do to Gmail what Gmail did to everything else. The replacement should have some concept of workflow (”archive, but remind me to respond tomorrow”, “send, and alert me if I don’t get a response within a few days”), some concept of teams and colleagues (allow threads to be shared as a first-class object, rather than flailing around with forwards and CC lines), be some way smart about mining the semi-structured mails going through the system (flight booking emails should be automatically annotated with .ics files), know something about prioritization (I like Twitter DMs because of the assumption that they’ll go to a mobile device. If I’ve sent more than 20 emails to someone, they should have the option of copying their mail to me as an SMS).

Potentially most powerfully of all, developers should be able create their own plug-ins that run on the server. There should be an agreement between plug-in developers and the webmail provider that creating a plug-in automatically grants a royalty-free perpetual irrevocable worldwide (etc.) license to the provider, and that the source code to any plug-in may be merged into the main product. Though plug-ins have niche appeal, this could be a good source of new features, and a strong competitive advantage. I’d just fix Gmail if I could.

I’d happily pay for any service that got this stuff right.

clean-downloads

Wednesday, December 9th, 2009

This has solved the eternal “there’s 3GB of stuff in my Downloads directory that I don’t feel comfortable deleting” problem for me:

$ crontab -l
0 * * * *   /Users/patrick/Binaries/clean-downloads
$ cat Binaries/clean-downloads
#!/bin/zsh
find ~/Downloads -maxdepth 1 -amin +720 -exec mv {} ~/.Trash \;

You have twelve hours to do something with whatever it is you downloaded, or it’ll end up in the Trash. I highly recommend it.

Undop

Saturday, August 15th, 2009

Like most internet users, I waste too much time on the web. Despite that, I’ve never had much luck with the apps that set out to solve this, like Freedom or RescueTime. They feel too heavy-handed. Instead, I want fairly repetitive and annoying prods that make wasting time less fun—the equivalent of small electric shocks, counterbalancing the Dopamine hits.

So here’s undop. Every time I visit a domain in ~/.bad_sites, it dims the display by 30%, gradually returning it to its previous brightness over the course of 30 seconds. It’s both an annoyance and a reminder. The effect is small enough that I don’t mind it on those occasions when I actually do want to read Twitter or Hacker News or whatever blog, but it’s jarring enough that I now subconsciously avoiding following links to them, and have mostly broken the check-for-new-stuff muscle memory.

Caveats: it only works with Safari on OS X. (Patches with support for other browsers welcome.) I’m guessing it might not be good for display backlights.

Facebook doesn’t want you to deactivate your account

Sunday, July 5th, 2009

Wikipedia app: Steven Troughton-Smith joins the crew

Thursday, January 1st, 2009

Steven Troughton-Smith is a very talented iPhone developer from Dublin, with a bunch of cool apps under his belt. His blog is full of useful iPhone tidbits (Using Dynamic Library Injection with the iPhone Simulator, On Speed, Development & Design).

Anyway, the cool news is that he’s now going to be spending some time hacking on the offline Wikipedia iPhone app. Stay tuned to see what cool features he cooks up.

Leopard and Back To My Mac tunnels

Thursday, December 4th, 2008

Back To My Mac seemed like a neat feature when Steve demoed it back at WWDC 07, but very little attention seems to have been paid to it since.

Remote NAT traversal for screen sharing and AFP is cool and all, but the most useful part is hardly mentioned anywhere: Back To My Mac can automatically establish on-the-fly tunnels to any machine with Back To My Mac enabled. You can just ssh foobar.joebloggs.members.mac.com, or curl something directly from the web server, or whatever. So long as you can make outgoing connections, it should work around any routers, firewalls, and other wrinkles in the network topology.

The catch is that it only works over IPv6. sshd on OS X has IPv6 enabled by default, as does Apache, but a lot of other stuff doesn’t.

I haven’t figured out how it works yet. It’s definitely not a straight IPv6 tunnel—the source IP of any connection is a private address (which kinda seems to defeat the purpose of using IPv6 in the first place). Any info or pointers appreciated.

Update: In the comments, JH points out that it’s not a private address, but an RFC 4193 unique local address.

Worth remembering

Monday, October 20th, 2008

Economic theory suggests that financial innovation must lead to failures. And, in particular, since successful innovations are hard to predict, the infrastructure necessary to support innovation needs to lag the innovations themselves, which increases the probability that controls will be insufficient at times to prevent breakdowns in governance mechanisms. Failures, however, do not lead to the conclusion that re-regulation will succeed in stemming future failures. Or that society will be better off with fewer freedoms. Although governments are able to regulate organisational forms, they are unable to regulate the services provided by competing entities, many yet to be born. Organisational forms change with financial innovations. Although functions of finance remain static and are similar in Africa, Asia, Europe and the United States, their provision is dynamic as entities attempt to profit by providing services at lower cost and greater benefit than competing alternatives.

—Myron Scholes (yeah, that Scholes), debating Joseph Stiglitz.

Pictures in a SLIME REPL

Saturday, June 21st, 2008

While working on some web analytics software a few weeks ago, I wrote a dirty hack to enable pictures in SLIME REPLs. The implementation is ugly, but I think the concept is neat:

You can grab the patch against CVS SLIME here.

Yanking pictures back into the REPL works fine too, so you can do something like (defparameter *my-chart* [picture-object]).

Sample usage:

(defparameter *flickr-url* "http://www.flickr.com/search/?q=~A&s=int")

(defun flickr-pic (search)
  (let ((html (drakma:http-request (format nil *flickr-url* search))))
    (cl-ppcre:register-groups-bind (url)
        ("photo_container.+img src=\"([^\"]+)\"" html)
      (swank:make-picture :url url :type 'jpeg))))

(flickr-pic "linux")

Update (22/06): To clarify in response to the reddit thread, this is a dirty proof-of-concept that resulted from an hour of hacking, and obviously shouldn’t be merged into mainline SLIME as it stands. See the slime-devel thread for the discussion surrounding it. With that said, it should be fairly straightforward to rework it as a saner contrib module.