Subscribe: 0xDECAFBAD
Added By: Feedage Forager Feedage Grade B rated
Language: English
blog  bookmarks  browser  code  don  feed  feeds  firefox  google  mozilla  new  news  people  reader  thing  things  time 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: 0xDECAFBAD


Updated: 2012-06-16T01:33:19+00:00


303 See Other


TL;DR: I'm switching to a new blog and a new domain, because 0xDECAFBAD is not my name and WordPress is stupidly simple.


This is probably the last post you'll see from me on this blog. End of an era, and all that. I think I'm going to leave this thing as it is, as a pile of static HTML with mostly-working 10-year-old URLs.

You'll probably see more from me, over at And, you can read more about my thoughts on the matter as well. Mainly, I think I missed the simplicity of WordPress, for a certain definition of simplicity.

That, and 0xDECAFBAD is not my name. It's a pun I thought was neat, about 12 years ago. I'm not giving up the domain, but I think maybe I should start doing more things with a domain that's closer to what I call myself online and off. Some people like using handles and psuedonyms, and I respect that, but 0xDECAFBAD was more of a place than a name and no one's ever called me that.

Well, you know, other than maybe in a context like "Hey, aren't you that decafbad guy?" But, it turns out that there's more than one person in the decafbad namespace, so I thought I might start drifting closer to the one my Mom gave me. I've grown to like it, despite some misgivings earlier in life.

Anyway, cry not for this blog, for it had a great run. Maybe I'll change my mind; maybe I'll redirect the feeds to the new place. Who knows?

Please Do Learn To Code


TL;DR: I think coding is an essential skill for modern humans surrounded by code and machines that run it. Please learn to code. I disagree with Jeff Atwood on "Please don't learn to code": The "everyone should learn to code" movement isn't just wrong because it falsely equates coding with essential life skills like reading, writing, and math. I wish. It is wrong in so many other ways. In fact, I do regard coding as an essential modern skill. Yes, right alongside reading, writing, and 'rithmatic. At least this part of the post had me nodding: I suppose I can support learning a tiny bit about programming just so you can recognize what code is, and when code might be an appropriate way to approach a problem you have. But I can also recognize plumbing problems when I see them without any particular training in the area. Visible pipes Luckily, pipes are not as occult as code. If you go into a basement or open the door under a sink, you can see them and follow where they go. That's some training, albeit informal or self-directed. I'm not sure how you'd get exposed to code in the same way: View Source in a browser used to be a decent start on the web, but that's less helpful lately. Code elsewhere has typically been hard to get at, Open Source notwithstanding. Still, I'd bet there are people in the world for whom running water comes from magic and drains into magic. Where magic means: "I never thought about it, never needed to, and am sometimes vaguely afraid of it." For that class of homeowner, the kitchen floods when the sink springs a leak, until an expert arrives. It's not the end of the world, and plenty of people get by just fine like that. But, I certainly wouldn't agree that "Please don't learn about pipes" is good advice in general. Learning by doing Admittedly, "learn to plumb" isn't the same as "learn about pipes". But, is there a difference between "learn to code" and "learn about code"? I don't think so. Like writing, code doesn't seem like a thing that's easy to learn about without doing it. When I write "coder", I generally mean this: Someone who is capable of encoding his or her intent and decision process into a form that can drive a CPU to perform tasks on his or her behalf. That's a very broad definition, but it implies a lot. First, you have to realize that you can make a CPU can do things on your behalf--it's okay, you won't break it. It's a tool made by humans and you as a human can understand it. Then, you need a notion of algorithmic thinking, in order to formulate your intent and reasoning in a form that a CPU can execute. These are not natural or intuitive things. I agree with that it's good to "recognize what code is, and when code might be an appropriate way to approach a problem". But, if you've never made a CPU do your bidding, it's easy to see it as a mysterious black box with a will of its own--possibly malicious or at least capricious. And, if you've never worked to force your thoughts into to the confoundingly literal and common senseless constraints of computer programming, it's hard to even imagine how code works. If you can't imagine how it works, how do you work it into your mental toolkit for getting things done? Learn to code, and a lot of other things get dragged into your head along the way. Who needs all these coders? And then, there were these bits from "Please Don't Learn to Code": It assumes that adding naive, novice, not-even-sure-they-like-this-whole-programming-thing coders to the workforce is a net positive for the world. It implies that there's a thin, easily permeable membrane between learning to program and getting paid to program professionally. This is looking at work from the wrong angle. It isn't about getting paid to program, so much as coding to be good at your job. I'm not talking about Java-heads who live all day in Eclipse. I'm talking about the Excel-head who used to rock VBA macros, who maybe just started playing with Google Apps Script. I have no idea how popular Google Apps Script might or might not be, but [...]

Social Media Cyborg


TL;DR: Since Google Reader lost it's sharing, I've decided to revisit my "social media strategy". I'm plugging lots of things into other things. I feel like maybe I should write about this stuff. Started diagramming all my social media flows on LucidChart. This is what I do for fun Since I've mentioned in a few places that I'm a weirdo, I thought I might spend some time explaining exactly what I mean by that. You see, one of my hobbies is turning myself into a human content filter for friends on the web. And, honestly, having my sharing habits shaken up by the Readerpocalypse makes it fun again. The image over to the right is an attempt I made to diagram some of my social media flow. It's incomplete, though: I'm a cheapsake and ran out of free objects in my diagram. So, I had to leave out at least a half-dozen more services and a dozen additional connections. (LucidChart is very nice, by the way.) In other words, is awesome In particular, I've finally spent some time with It's like Automator for the social web. It lets you define event triggers from one site that cause actions on another site. So, I've gone crazy and created a bunch of tasks that make things like the following possible: Pinboard bookmarks based on favorites from Twitter,, YouTube,, and my Kindle highlights. I'm turning my Pinboard account into both my personal social media archive and a Google Reader sharing replacement, and I don't even have to beg for new features at Pinboard. Tumblr photo posts based on Reddit up-votes, Flickr favorites, and Pinboard bookmarks tagged "to:tumblr". Since creating it, I've left my Tumblr almost entirely neglected—but now with, I can route almost every nifty image I find over to that thing. It's the right side of my outboard brain to the Pinboard left. Published items from from my private installation of Tiny Tiny RSS end up shared on Pinboard. This pretty much scratches my itch for feed reader sharing, since Google nixed those features from Reader. Starred items from tt-rss get sent to Instapaper, so I can read them on my Kindle later. If email delivery of documents start working, then I'll have a personal long-attention span newspaper delivered regularly to that gadget. Posts from Google+ get copied over to Facebook, because I don't want to pick sides. In fact, almost everything I do everywhere eventually ends up posted to Facebook, because I almost never post anything in person over there. I do have friends and family over there and respond to comments, though. What's the point? The important principle here is that I'm lazy. If there's a single button to click somewhere that expresses my happiness about a thing, I'd like to click it and have that happiness shared and archived elsewhere without me doing much (or anything) more. The scheme I have now feels pretty good for that, and does a huge amount to help. The other important thing is that I am at the center of these connections. I don't live entirely on any single service, and anything I care about is archived where I can easily grab it for backups or mashups. Should any particular service node in this web fail, I can probably do without, find an alternative, or build one myself. My goal is to eventually replace as many of these nodes as possible with self-hosted or at least Open Source derived services. (Though, of course, I'm also lazy and my friends are where they are. So, that goal will take awhile.) One more thing... I've got an idea for my next book simmering. And, since I've so far managed to write books about the major things I've done for fun, I feel I'd be remiss if I skipped this stuff. I mean, I sort of covered the same ground all in my first and second books, but things have progressed since then. What this means is that all the above feels like a warm up for the coding and prosing I'll need to do. I just need to get my shit together and carve out the time to make it happen. [...]

The Readerpocalypse, or Occupy Google Reader


TL;DR: Google gave Reader a face-lift and removed built-in following & sharing. In exchange, they added +1 buttons and ways to share to Google+. But, the changes seem to have removed most of the value from the service for me, so I'm moving on as I was invited to do. What happened? Almost a year ago, I wrote about how my habits had gotten less One of the main culprits that stole my sharing flow was Google Reader: I went from using a quick bookmarklet to an even quicker icon-click in my feed reader. That meant I left most things untagged, but I shared even more than before. Eventually, Google Reader released a bookmarklet for use off-site, which meant I started sharing everything everywhere to Reader. I also found a replacement for my old network in Google Reader's social features. I could follow people, and the stream of things they shared and annotated turned into a great source of news curated and pre-filtered by likeminded people. Well, as it turns out, Google's recent changes to Reader just removed all of the above. In exchange, they added a couple of buttons to +1 and share items to Google+, which streamlines things for them and encourages more use of the new service. As I wrote on Google+, the net result is nothing to stomp and shout about, but there's nothing there that makes me happier. As I played more, though, I came to realize that most of the value I derived from the service had evaporated. Item-centric vs People-centric, Efficiency vs Engagement There's a big difference between the way sharing happened on Google Reader, and the way it happens now on Google+. The best way I can think to explain is that the old way was item-centric and the new way is people-centric. In other words, people seem to be the dominant social objects in Google+, whereas Google Reader used to treat items that way. Before, we all gathered around the news. The headline and summary were primary, and our comments were collected after the item. The result was a de-duped stream of great news filtered through smart brains. Even if the people I followed never said a word, the fact that they'd clicked "share" was value enough. In fact, it was better that way most of the time, because we all got out of the way of each other and the news. This, by the way, is what I loved about and now It's anti-social networking. We can provide low-effort, intelligent inputs to build something useful for each other, but we're not there to assert a presence or distract each other from the things we each came to see. But now, that filtered news stream is gone. In its place, on a different site entirely, removed from the flow of feeding on news, is a highly-engaging flood of people babbling away, which occasionally includes repeated shares of things that have bubbled up during the day. What's wrong with that, for me? I don't want to wade through a heavily-padded, user-friendly flood of duplicated, echoed items. I don't want to engage with the people—at least, not when I'm in a mood to feed on news. I want to catch up on what's been put out into the infosphere already, and then start talking about it. The design of Google+—which has spilled over into the Google Reader face-lift—is about engagement and not fast & efficient processing of the day's news. Engagement in general puts a drag on the task—which for me is like a GTD, Inbox Zero, headline skimming, pattern recognition zen thing that might not be everyone's cup of tea. But, for all I know, avowed weirdo and info freako that I am, these changes may drive Google Reader growth through the roof for mainstream users. But, it's no longer a product for me. The changes in sharing have removed most of the value for me, because I no longer have the warp speed cruise through news that other people used to power for me. Circles point the wrong way One of the things Louis Gray touted about the new sharing features reads like so: In Reader’s previous sha[...]

Putting clouds in boxes for webdevs at Mozilla


TL;DR: At Mozilla, we're redoubling efforts to attract contributors. And, in the Webdev team, we're using virtual machines to make it even easier to get started hacking. It makes no sense to demand that a JavaScript ninja or a CSS artisan also be a Python-wielding sysadmin, so we're trying to build ready-baked VMs for our projects. Lieferung 3 by erix on Flickr Firefox is more than just a desktop browser, and Mozilla is more than just Firefox. An ever-growing mass of our code is going toward building web sites and services that build, ship, update, support, promote, augment, document, sync, share, identify, and report. (And I'm sure I'm missing a further cast of hundreds, here.) Sighting storm clouds on the horizon In other words, more and more of Mozilla is in the cloud. Unfortunately, many of these projects are really hard to get into as a contributor. It's often hard to find what needs doing in Bugzilla, and it's often hard to get the code up and running in a meaningful way without being both a bit of a sysadmin and a Mozilla insider. This is a huge problem. Although Mozilla has a core group of employees, we're not nearly enough to build all of these projects and pursue the mission on our own. We've gotten to where we are thanks to the volunteer efforts of thousands of contributors—and the only way we'll get where we want to go is through the efforts of thousands (or millions) more. The good news is that is feels like we're waking up to this problem and starting to get really serious about it. Sharing recipes for fluffy clouds For my part, I've spent idle time over the past few years trying to work out how to make webdev projects more accessible to new contributors. We've come a long way from the days of just uploading WordPress to an FTP server; these things come with a lot of moving parts nowadays, and the INSTALL.txt files run long and consume weekends. And so, they filter out all but the most dedicated (or masochistic) volunteers. For months, I spun my wheels playing with virtual machines and exporting appliances, doing a lot of things by hand. But then, earlier this year, I discovered both Vagrant and Puppet and had my mind blown. With those tools, I could share recipes for VMs right alongside my code. I would never have to set up a webdev environment for myself by hand again—all the fiddly bits of installation and configuration could be codified, checked into github, and flushed from my brain. But, the real magic is that I could share this stuff. So, future coworkers and collaborators could benefit from the same reproducible dev enviroments—never having wasted brainpower and weekends on an INSTALL.txt to begin with. This is a really big deal. I presented on it this past June at Open Source Bridge in Portland (slides). I've been talking myself blue about this stuff for months, in opposition to my usual serially enthuastic habits. But, it looks like I've infected my coworkers at Mozilla, because now we're talking about developing with Vagrant, Puppet, and Playdoh. No assembly required So, with Vagrant, Puppet, and Playdoh, we'll have projects that you can fire up with just a git clone and a vagrant up in a command line shell. Forget about MacPorts or Homebrew on Mac OS X, or whatever it is that people using Windows have to install. Take a bike ride or go to lunch, and you'll have a fully configured server running and source code ready for hacking. I think we can do better, though. For one, spinning up a fairly complex virtual machine from scratch with Vagrant and Puppet takes a long time and a lot of bandwidth. This can be sped up by packaging pre-built boxes. So, one improvement we can pursue is to spin up VMs with Vagrant as a part of our continual integration and deployment processes and package boxes for public download. These are also handy on a thumb drive for sharing at hack events and meetups. This still requires Vagrant and working with the command-line, though. Not everyone w[...]

Badger 2: Return of the Mustelidae


TL;DR: A year ago, I said I wanted to build a badging service for the Mozilla community, so we could all celebrate how awesome we all are. Well, I putzed around and didn't get far, so I'm starting over with something more immediately useful. (This is an awesome illustration by Sean Martell, used entirely without permission. I'll take it down if anyone gets mad.) Almost a year ago, I wrote about building a badging service for all of Mozilla. In a nutshell, I left the 2010 Mozilla Summit wanting to build a tool that empowered people to craft social objects representing achievement and gratitude, and give them to each other. Since then, I've played around with a prototype in Django with Pinax. But, I abandoned that thing due to getting super busy with the Firefox 4 release. It also didn't help that I was a Django newb and that I got caught up in screwing around with shiny things like Pinax and Lettuce and neglected the actual feature set. So now, finally, I'm picking the thread back up again. This time, with a little less ambition and a few more practical aims. Make something more useful right away While I have spent some dangerous time screwing around with shinies like Vagrant, Puppet, and Playdoh, I think I've gotten that mostly out of my system and have gotten down to work as of last night. Rather than build a Grand Central Station for badges, I've reset my goals to a progression of practical results: Build a reusable Django app that supports some basic use cases of creating and awarding badges to users. Add Activity Streams narrating badge claims Add support for PubSubHubbub with Badger activity streams Add a REST API, maybe with OAuth Accept badges for local users, via PuSH from external sites See what the Open Badges Project is up to, and how Badger can fit in with their goals. The idea here is to make Badger a practical, reusable, drop-in app for existing sites—preferably (but not necessarily) the Playdoh-flavored sites we're building at Mozilla. Then, incrementally and optionally empower a Badger-enabled site to become a badge hub by accepting reports of badge claims from other Badger-enabled sites. Take baby steps to federation So, for example, let's say we dropped Badger into a few sites like these:;; At first, Badger would just augment those sites with badging facilities for their respective user bases. That could fill some needs right away. Then, say we built a site that offered personal profiles to members of the Mozilla community. With the Activity Stream and PuSH augmentations, users could connect their profiles with each of the other Mozilla sites they use. That way, whenever they claim a badge out there, it gets delivered to their community profile. Why bother federating at all? If the only cross-site goal to build an all-in-one display case for badges on a community profile, I could just build JSON feeds and wrap them in a JS-based widget. In fact, a JSON-formatted Activity Stream will work nicely for that. Drop that into the profile page, and we're done. There are lots of reasons to federate. But, at least one thing not supported by this solution are meta-badges. That is, badges awarded for badges. Let's say you close 100 bugs on Bugzilla, answer 100 questions on SUMO, edit 100 pages of documentation on MDN, and author 100 add-ons. And, let's say you get badges on the respective sites for all of those activities. Well, now, I'd like to give you a badge on your community profile for being a Mozilla Superhero. I could just do that by hand, having observed all your greatness. But, I'd rather the system just do that automatically. If your community profile treated all your badges from your chosen affiliated sites as first-class citizens, then I could build the meta-badge trigger right there. Of course, I could also write a program that monitors badge feeds fr[...]

Five years


I proposed to her in front of the Max & Ermas where we'd had our first date. A year or so later, we got married. That was five years ago, this past Thursday. Over these past five years, my love has put up with a lot from me. To start with, she let me drag her across the country, away from friends and family, before we'd even gotten beach sand from our honeymoon out of the luggage. She let me chase a fantasy out West without even knowing where we'd live—and she was the one who found us a home while I got started at my Silicon Valley dream job. This has been the theme of our years together: Alexandra makes my life possible. She gives me so much happiness, support, and cares for me without question—for which I am entirely undeserving. I would be useless without her, and rediscover the fact of this on a daily basis. She enables and encourages me in so many ways, and I can only hope to return even a fraction of the favor. Alexandra is my best friend and closest confidant. I love her as deeply as on our wedding day, and that feeling just grows stronger every day. As an introvert, I get exahusted after a day around other people, and need a day alone to recharge. Alexandra is the only person I've met who can has the opposite effect on me—we recharge each other. Since we moved back to Michigan, making a home here has been the happiest time of my life. It's not life as I'd dreamed it would be—it's been better. And I owe it all to my gorgeous wife, Alexandra. Archived Comments groovecoder 2011-06-12T22:37:41 congrats man! kosso 2011-07-02T03:51:00 *sniff* tis a beautiful thang. i miss having a great woman aside me on my life adventures. i wish some people were more easily replaceable. but their beauty is, is that they can't be. oh well. onwards. alone. for now. [...]

Cutting the Cord (or: Bright House, you're fired)


TL;DR: Our cable company has offered poor support for our TiVo; cut our channels and allowed our service to degrade; mislead us about possible solutions; and finally wasted our time by sending a contractor to our home instead of a clued-in employee who could handle the issue. And, now that we're going to pursue other options for putting moving pictures on our television, they plan to charge us for cutting the cord. Since I've been looking to write here more, I've just been given a nice excuse to rant. Bright House has basically a local monopoly on cable TV here. So, we've been a customer of theirs for cable and internet over the past few years. This is the thing, though: We've spent a lot of money on a cable subscription. In exchange, I expect great and even proactive customer service. I guess I'm unreasonable, because instead we're expected to pay more for less and to accept hassles and up-selling instead of support—because they're almost literally the only game in town. But, other options are getting good enough and we can learn to do without. You see, we have a TiVo. We like our TiVo. We got one when the girl worked at the company, and we've never gone back. Having one is like living in the future. Yes, Bright House offers their own DVRs, but they're inferior products and we don't want one. So, as far as I'm concerned, Bright House is just a video supplier for our TiVo. Unfortunately, over the past year, they've done a crappy job. They're transitioning to Switched Digital Video, and that's something our TiVo doesn't support out of the box. As we eventually found out, there's a tuning adapter that could fix things. But, rather than tell us about that up front—and maybe offer to send us one as a part of their transition—they've instead sent us a series of letters listing channels we're going to lose because we rent CableCARDs. Since I've got better things to do than call the cable company, I put off contacting them. In the meantime, we lost channels as promised. Other channels not listed in the letters began to degrade and became unwatchable. Finally, I sent an email. A week or so later, they called and left me a voicemail, which described the installation fee and monthly rental rate of a tuning adapter. This, on top of what we already pay for CableCARDs and the underlying cable service itself. At that point, we were pretty annoyed. The cable bill was already high and new fees seemed to appear every month—and they wanted us to pay even more just to get what we'd originally signed up for. Yes, I understand that SDV will let them make more efficient use of resources and offer exciting new services and yadda yadda yadda—but, to me, it just looks like they're breaking the video feed into our TiVo and expect us to pay more to fix it. It's pretty shady and customer-hostile, this stuff. Oh wait: Didn't some of these guys get fined by the FCC for SDV hijinx not too long ago? So, rather than jump on getting a tuning adapter installed, I bought an antenna and went retro. It turns out there are over a dozen over-the-air HD channels in range. That might not sound like a lot, but you'd be surprised how much watchable stuff is packed into the major networks versus the other 1000 channels we got on digital cable. The theme here is free and good enough. True, some of those channels are a pain to tune in using a dinky little indoor antenna, reminicent of the "rabbit ears" days. But, for most of the past month, we got by pretty well. The TiVo works nicely with an antenna. It's a decent Netflix streamer, too. (Though, to be honest, the Xbox 360 works better, can get Hulu Plus, and plays videos from our network. TiVo really, really needs to catch up fast here.) Having given TV a trial without cable, we decided it was time to call Bright House back to sort out this TiVo thing, one way or another. Since I'm a proven procrasti[...]

Moved to Jekyll and Disqus


TL;DR: My blog is now produced by Jekyll, with comments hosted by Disqus. This blog has transitioned between a handful of publishing platforms - including Movable Type, blosxom, and Wordpress. Well, apparently, it's that time again. I've been toying with making a change again for a few years, and finally just got all the pieces together over the past week. This blog is now just a pile of static files produced by Jekyll, and the comments are now hosted by Disqus. This has a lot of interesting implications: I can neglect my server for long periods of time without worrying that my long-outdated copy of Wordpress has been exploited. Really, there's no reason for me to have a full-featured CMS running here. I could host my entire blog on Amazon S3 or something similar, and be more neglectful by reducing active code even further. The only crappy thing is that I don't think I can send directly to S3, and would need to redirect to a CNAME on a subdomain on I can edit my blog directly on GitHub and, assuming I get the webhooks set up, have my server rebuild the HTML automatically on a git push. I could probably use GitHub Pages and the Jekyll support there, but I suspect I'll be doing some Weird Things that they won't handle. (And probably for good reason.) Since Disqus has all my comments now, I can stop worrying about running that code on my server too. I'm a little antsy about putting that in the cloud, but the escape routes are well lit and I should be able to replace it easily if I need to. Self-hosted, JS-include-based comments is a project in my TODO list. My writing here is now all stored in individual text files, formatted with Markdown, annotated with YAML metadata, and subject to revision control under git. This combination feels like it has a lot of longevity and potential for survival even beyond this current experiment with Jekyll Writing, editing, and publishing entries here can now more closely match my daily reality of living in MacVim and git. It sounds lame, but the notion of swapping over to a Wordpress admin page and working in a browser textarea has often kept me from even starting a post. But, some things are broken, now: Fixed No more tag pages. I don't think very many humans visit these pages, but a lot of search engines do. Fixed No more tag feeds. I expect to hear about this soon, since this blog gets syndicated to Planet Mozilla via my "mozilla" tag feed. No more year / month archive pages or sidebar widget. Not sure how many people actually stroll down memory lane here on my blog, but I do have a gigantor huge list of all my posts evar, now. A general lack of contextual links to related posts and such. Turns out that running the LSI option on Jekyll is completely horrible. Regeneration seems less-than-happy in general, and I wish it did conditional regneration. That is, only produce the HTML for things that need it because dependencies have changed. No need to rebake the whole world just because I changed one file. The bright side is that there are solutions to all the broken things, and now I have something to tinker with again on my blog. So, let me know if anything else looks broken, and hopefully this will get me spewing some more words out onto this thing soon. Archived Comments Les Orchard 2011-06-08T17:45:54 Testing a comment here on my new post. bkclements 2011-06-08T17:59:01 Hi, did you happen to look at blogofile for similar functionality? I'm still trying to decide which way to  go. [...]

Further Jekyll notes


TL;DR: This is an in-progress entry, where I plan to collect some notes on how I've set up and am using Jekyll. I may call it "done" at some random point and publish it. I may even subsequently update it from time to time, after that. To speed up the authoring / previewing cycle on my laptop, I move all but this years' posts into a _posts_archived folder and don't commit the change. Kind of a pain; feels like I'm Doing It Wrong. Github Pages seems interesting, but I don't think it's right for me. My plugins don't run, so my tag pages aren't created. davedash has a different approach for this, though. I can't get the permalinks just the way I like them I'd have to set a CNAME in my DNS to point at a subdomain (ie., because I don't want to delegate my entire root domain over to GitHub. I would 100% totally use GitHub Pages for another project that I'm starting from scratch, though. Since related posts via LSI is such a bear, I may try doing something with tags. That is: take all the tags from a post; find the 5 latest posts for each tag; display the unique set of posts I want my permalinks to look like /2011/06/08/slug Not /2011/06/08/slug/ or /2011/06/08/slug.html Look, ma, no trailing slash! This is the way I've had my URLs for years, and I want to maintain my URLspace. And I also don't want every URL missing a trailing slash to get bounced with a 301 Moved Permanently to the equivalent with a trailing slash. That's bogus. So, I'm using the pretty permalinks setting, and I have this in my nginx config: if (-f $request_filename/index.html) { rewrite ^(.+)$ $1/index.html last; } Archived Comments fluffy 2011-06-09T04:55:35 I appreciate the notion behind the no-trailing-slash permalink (because really the only thing that should care about the specific format is the user-agent, and that's what content-type is for), but does that particular rule possibly wreak havoc on relative links? Or do you ever even use those anyway? I'm one of those few weirdos who actually does use relative links wherever possible, even on blog entries with a potentially weird URL (since I like uploading one-off images to the same directory as the published entry, and only having them visible "below the cut" as all the cool kids are calling "extended entry" these days). Michel Krämer 2011-08-17T19:19:29 Thanks for your tips. Did you have success with your custom approach for generating related posts? It would be quite cool, if you could share your plugin. Thanks, Michel Les Orchard 2011-08-17T19:44:18 Alas, I haven't gotten around to the related posts stuff, yet [...]

Pay phones and Firefox features


TL;DR: Pay phones have been disappearing, and so might some Firefox features. But, that's not necessarily a bad thing: Some features steal attention from others that are more important. Some could be spun off into add-ons, which are getting easier to make. Update: Feel free to comment on this blog post. But, if you feel strongly about these features, you might get a better discussion with more people on this thread from the newsgroup (in Google Groups). Phone Don't Work No More by Thomas Hawk When's the last time you used a pay phone? For me, it's been over a decade—which is about how long I've had a cell phone. As it turns out, pay phones have been disappearing for awhile now. Why? Because pay phones are expensive to keep in working order. If more and more people have wireless phones, it's less likely that any particular pay phone will result in value for the phone company. So what? The reason I'm thinking about this is that I'm troubled by a few bugs I ran into in Bugzilla: Remove support for microsummaries Remove smart bookmarks support Remove support for tagging bookmarks Get rid of livemark support Are these like pay phones? Each one requires engineering effort to keep working from release to release in Firefox. Some of them have issues in performance and functionality that could use some attention. And, the introduction of Firefox Sync, for example, introduces some new complexities in tracking changes. But, do any of these features provide enough value to justify continued attention? Microsummaries Ever heard of microsummaries? I have, and I thought they'd be neat. I installed a plugin on my blog to offer a microsummary, and I tried hacking them into Delicious at one point during a Hack Day. That was about 4 years ago, and I haven't thought about them much since. Sounds like a pay phone to me. Smart Bookmarks I always wondered how those out-of-box "Recently Bookmarked", "Recent Tags", and "Most Visited" folders worked in Firefox. Turns out that you can bookmark queries against the internal Places database as a persistent search folder. Seems pretty keen. But, I've been using Firefox for years and only just learned about this in the past month. The feature's not very exposed, and it's not obvious how to use it. In fact, the bug to remove it might list the clearest hints on using it. Seems like it might be a good feature to jettison into an add-on, like a pay phone to play with in your basement. Tagging Bookmarks This is a no-brainer for me: I like tagging my bookmarks. The problem is that I've exceeded 16,000 bookmarks. It's been years since any browser coped well with my corpus of bookmarks—that's one of the reasons I started really liking Delicious. However, tagging bookmarks in Firefox is kind of rough. The UI isn't awesome, and the database supporting it could use some work. Rather than improve things, though, bug 622047 proposes removing the functionality altogether. Here, I'm conflicted: I don't use tags in Firefox, because I don't use bookmarks in Firefox. If they worked better, I might use them. Instead, I use or a private Delicious clone of my own that copes with my scale—in fact, I got to this scale because those services handle it. So, usage data from me would support the feature's removal despite what I think I'd like to see. But, does my suspicion that I would use a feature justify someone else's time in making it better? I don't think I can ask for that with a straight face. Put another way, I could see how that pay phone they removed from the corner gas station could someday come in handy, but should I expect the phone company to keep it clear of graffiti until I come along with quarters? Livemarks Live Bookmarks (or Livemarks) are bookmark folders whose cont[...]

Introducing Fireriver, a River of News for Firefox 4


TL;DR: I have a history of building news aggregators. Now, I've built one as an addon for Firefox 4. This is Fireriver, an experimental add-on for Firefox 4. You can find the source code on GitHub. Fireriver uses Live Bookmarks to build a River of News in your browser. No unread counts, no 3-pane view like an email client. Just paddle down the page with the space bar or your scroll wheel. Organize the Live Bookmarks into folders to split things up into multiple rivers—which is not a strict River of News, per se. But, I like using them to focus on particular topics or priorities I happen to have time for. It also displays a more obvious notification when a site has a feed and lets you add a new Live Bookmark subscription to the Fireriver folder with one click. (I'm considering splitting this feature off into its own small add-on.) Of course, when I say experimental, I mean that this is my first Firefox add-on ever. I'm starting to use it daily, but I'm well-versed in nuking and rebuilding my Firefox profile. I haven't had to do that yet, but I'm expecting to have to do it eventually. I'll be pleasantly surprised if it turns out I haven't totally screwed something up. Other add-ons you may enjoy If you like the idea of this add-on, you may also enjoy these: OPML Support - I just used this to dump in 800 subscriptions from Google Reader Reliby - This lets you reload all Live Bookmarks on demand Feedly - A more "magazine" style news aggregator in the browser Feed Sidebar - Live Bookmarks in a sidebar LiveClick - Still under development for Firefox 4, but I liked this in 3.6 Archived Comments fluffy 2011-01-27T18:40:35 That looks like a pretty nice interface to Live Bookmarks, but it still has the inherent problem of not being nice and cloudy. Is there any provision for Live Bookmark synchronization? Of course, the other problem for me is that I prefer Chrome these days, and of course Chrome solves the sync issue by having nothing to sync to begin with. l.m.orchard 2011-01-27T20:58:53 Yeah, lack of clouds is the drawback here. There is a bit of a sync story, though. If you're using Firefox Sync, the Live Bookmark subscriptions will carry across machines along with the rest of your bookmarks. Also, I'm using history to hide items from display, and that is covered by sync too. I need to check, but I don't think items within the Live Bookmarks are sync'd, so each machine is on its own for doing the actual feed polling. I'm also thinking a bit about Brent Simmons' notions about thin-server RSS sync, and if it has a place in this thing. Google Reader sync might also be nice. And once I get my head wrapped around add-ons for Firefox on android, I might do a mobile version of this thing so that side of things is covered. [...]

What should be done about feeds in browsers?


TL;DR: Browsers need help doing a better job using feeds for discovery, aggregation, and publishing on the web to keep us from swimming into self-destructing lobster traps. Last week, I wrote some blog posts about Bug 578967, wherein the feed auto-discovery icon in Firefox 4 has been moved off the URL bar and hidden by default. I support that decision of the UX team, because that feed button is a slacker. And even if it does get used, I'm not a fan of what it does anyway. But, I've got lots more rattling around in my head about this stuff. What's the point of feeds? Feeds—that's RSS and Atom and maybe even JSON—let robots pull lots of stuff from a bunch of places and pile it all together in one spot for your perusal, analysis, and remixing pleasure. Feed readers and news aggregators do the surfing for you, so you don't have to. But, Twitter and Facebook and others have managed to make the people themselves all gather in one spot. So, to see what those people are saying and doing, you just have to go there—kind of like what feeds promised, right? Only, you go there rather than all that stuff coming here. The problem is, even if the logo says it loves you, the people who made it say that won't always stay in charge. And, someday, when whomever's left rides off into the sunset, you'll learn how much they didn't care about you in the end. vs For some people and some places, that's no big tragedy. It's just a party; you go home when it's over. You made memories, you hope to find some of those people again elsewhere. Pownce croaked, and so did Vox, but who cares? There's always Twitter next door for the afterparty. But, what if a world you lived in evaporated while you were on vacation elsewhere for the holidays? I guess you could say that was just a game and, again, who cares? What if Flickr went away just like that? People are not only partying there—they're leaving their visual memories at the coat check. Things are a little more real there, by some definitions thereof. What if you never swam into that lobster trap, though? What if your words and images and creations were borrowed and copied, but never wholly kept in someone else's bucket? What if Flickr were just like Google Search? That is, a collector and an index—but never the host—of photos and conversations? Feeds can help make that happen, but not by themselves. Do feeds belong in the browser? Well, yeah. Would sites like Twitter and Facebook have been as successful if feeds worked better in the browser? I think so. But, by working better, I don't just mean improvements to that funky blue thing that showed up in the location bar every now and then. No, I mean all of the following: Discovery — help me find and follow interesting people and things Aggregation — give me one spot where what I find and follow is delivered to me Publishing — enable me to post things where people (and their agents) can find and follow To me, this is where Twitter and Facebook are totally nailing it. But, much of this can happen in the browser, and I think more of it should. Projects like RockMelt and Flock have seemed promising to me in this context, but have yet to really thrill me. I don't think they go far enough. There is a point where the rubber (client) meets the road (server)—but that point can live so much farther down the stack than it does now. Mind you, I don't want a revival of Netscape Gold as such—but recall that "the first browser was an editor, it was a writer as well as a reader". We need some services and hosts out there as rendezvous points for our browsers and agents, but we really don't need any of those services to collapse into the next all-encompassing AOL-style singularity. There's money to be made [...]

How to use feed auto-discovery in Firefox 4


TL;DR: The feed button is not dead; it's just been sent to sing backup in Firefox 4 because it's not pulling its weight up front. This post discusses how you can still use feed auto-discovery, even restoring the icon to the toolbar with a few clicks and a drag. There's a brouhaha about Bug 578967, wherein the feed auto-discover icon in the Firefox 4 Beta has been hidden by default. Being a feed nerd, the author of a book on the stuff, and a Mozilla employee—I've got at least a few opinions. This post is one of several on this subject. Feeds are too ubiquitous to need an indicator Feeds are so successful and ubiquitous that it's simpler to assume every site has one, rather than keeping an un-lit indicator around to tell you when one's missing. So, Firefox 4 has an option in the bookmark menu to subscribe to the current page: The only indicator of a missing feed is that the menu item greys out. Since feeds are everywhere, you should feel comfortable reaching for that subscription menu whenever you like. Of course, this assumes that subscribing to a page falls into the same thought process as bookmarking it—but I don't think that's an unreasonable notion. On the other hand, if you didn't know that subscribing to a page was possible—or if you worry there might be people (ie. the potential readers of your feeds) who are in that position—this change may seem problematic. I don't think that's an unreasonable notion, either. But, I'll get back to that in a future post. The feed icon isn't dead, it's just hiding Even with the new bookmark menu item, the feed subscription button is still available and ready to return to your toolbar in the Firefox 4 Beta. First, right-click somewhere in the empty space of your Firefox 4 toolbar. Try somewhere after the tabs, or somewhere between the toolbar buttons. This is how it works on Windows, and this is what it looks like on my Mac: Click Customize, and you'll get a panel like this: This lets you customize which buttons and controls appear on the toolbar. If you scroll down in the panel, you'll see a "**Subscribe**" button. Drag that from the panel to a position in the toolbar, and you'll get a result like this: Click "**Done**", and your browser should end up like this: I took my browser screenshots with [Dave Winer's screenshot of the old Firefox feed icon]( for comparison. The result is different, but not radically so. It even enables and darkens when you visit a site with a feed: The main difference is that Dave's screenshot is the default in Firefox 3.6, whereas mine is the result of the last few screenshots of toolbar customization in Firefox 4 beta 9. That customization is easy, if you know it's possible—but the worry is, as they say: out of sight, out of mind. Archived Comments Felix Pleșoianu 2011-01-16T08:00:44 I have to take issue with some of your points, based on my personal experience. :) "Feeds are so successful and ubiquitous that it’s simpler to assume every site has one," Um, no. I follow a hundred webcomics, and while the situation has gotten better recently, many of them still don't have a feed. That's not unique to webcomics, either. Lack of a newsfeed is common enough that being able to tell at first glace is very useful. Heck, many people, even website owners, are ignorant of RSS. More about that in a moment. Besides, the feed button serves a second purpose, which is to allow easy access to the feed. Just as I don't want t[...]

What happened to feed auto-discovery in Firefox 4?


TL;DR: The feed button is not dead; it's just been sent to sing backup in Firefox 4 because it's not pulling its weight. This post talks about why things have changed. There's a brouhaha about Bug 578967, wherein the feed auto-discover icon in the Firefox 4 Beta has been hidden by default. Being a feed nerd, the author of a book on the stuff, and a Mozilla employee—I've got at least a few opinions. This post is one of several on this subject. Defaults are hard to pare down The feed icon still lives in the Firefox 4 Beta; it's just not there by default any more. But, if you look at the controls available in the toolbar customization panel, you'll notice a lot of things that don't show up by default—there are a lot of things in there, period. This is the dilemma for the Firefox User Experience team at Mozilla: Like it or not, one of the main themes of this next generation of browsers is minimalism—faster, smaller, less browser to get in the way of what you're browsing. Yet, at the same time, Firefox 4 has the features of Firefox 3.6 and more. You can't just cram it all in there, so what gets prime real estate by default? People say it's just a few pixels, that feed button—but is it so much more important than anything else that could go there? And before you answer, consider that not just for your personal use, but for the 100's of millions of people using Firefox. How do you check your own biases and make a decision on that scale? You could make an educated guess, make a gut check. A lot of brilliant design happens that way. You can also gather some telemetry from beta installs to see what people really use. Looking at a heatmap of clicks, the feed button is an absolute stinker. This isn't a random whim of the UX team—seriously, it's an order of magnitude less used than anything else in the toolbar (notice the one black spot): There have been comments dismissing the validity of that heatmap study. But, as far as I can tell, none of them really stick. So, for the sake of argument and a shorter blog post, let's assume barely anyone is using the feed icon and that it's not pulling its weight in this new age of browser minimalism. Keep in mind that Firefox isn't the only browser to deprioritize the feed button: Google Chrome doesn't even have a feed button at all, and for many people that's the gold standard for minimal browser UI: Serving the users Let's hammer on the point of disuse some more—what's the payoff for clicking that thing, anyway? +1 — You get an option to create a Live Bookmark, which is really handy for things like Bugzilla searches or light headline reading. (I like those so much that I tried building them on the server at Delicious once, but we never quite worked it out at scale.) 0 — You get a list of sites to which Firefox will delegate subscription, if you happen to have installed a content handler. Useful if you know what it's about; a mystery if you don't—not much more useful than a bookmarklet, to me. -1 — You get a plainly-styled version of what you were probably already looking at on a site, something I criticized back in 2006, like some are criticizing the feed icon change now. (At the time, I was working for a marketing company, and the change cost me days trying to incorporate branding in feeds on a client's site. I think we gave up after a bit, but I suspect that FeedBurner built a nice business routing around that change.) That's been status quo for years, and it's less than compelling—I've even had people ask me if they broke the page when the button was clicked on accident. So, given little reward for clicking that feed icon, pushing it into the background in its current[...]