Quick programmer tips

Refactoring poor designs. It's good to accumulate technical debt since it's often after the fact that you can really see the best design. Do not try to design too much up front, unless you're designing an API!

From Short 10 items work-efficiency recipe (via nono, un garçon très bien, qui ne blog plus T_T).

Rails rumble 2012

What? A team? pffft!

This year, after asking on the developers' mailing-list at AF83, and not getting any positive reply, I decided to participate to my first Rails Rumble. The timing of this year's Rumble was terrible for France. Two important conferences are happening over there, namely OSDC.fr, and the Open World Forum. Two activities in which my French co-workers are heavily involved with. Ergo, no co-workies for me.

I could not let this event pass (again) without trying, plus there were like 500 slots for teams, I'd just snag one. So I went for it solo, using Rails Rumble as an excuse to boot a little project of mine.

Scratch your own itch

I'm a big user of RSS, and its atomic variants. Working remotely has made this habit worse. I consume news from France, friends, tech blogs, web comics, and work through RSS.

To stalk efficiently all my co-workers, I'm subscribed to a bunch of feeds generated by various apps we use at AF83 (Github, Gitweb, Trac, Dropbox, a bunch of trojans installed here and there). Typically, my morning routine starts by opening newsbeuter and mutt to have a look at what's been done, checking also e-mail notifications from a few other Trello boards... Of course, if I plan to have a productive morning, I'll just skip all this, but that's another story. :)

The thing is, I'd rather have all the work-related news, and notifications, aggregated in a nice timeline: they would form a personal news stream. I could filter and search on this. I'd like the possibility to setup groups, and tags, and {mail,SMS,tweet} notifications when it matters. In short, I want all the work-stuff in one place, and be able to manage the data stream easily. That's roughly put, my Rails Rumble project. I called it Rivus after 5 minutes of intense googling for names and synonyms of the concepts of timelines, streams, and... rivers. ^^;

All of that from scratch in 48 hours seemed a little ambitious to me. So instead, I planned my time to build the basis for this app, trying to ship a viable MVP... Which proved difficult, since what's been shipped needed at least 3-4 more hours of work to be called an MVP — which it got, but after the deadline. :(

Concluding

I wondered if keeping a log of 48 hours would be useful, and so the only log I have so far, is Git's. It's a little early to think of good lessons from this, but a few ideas came to my mind.

  • First, don't go solo. It's harder, and you'll need quite a lot of self-motivation and discipline to keep going.
  • Plan ahead, with paper and pen.
  • Keep it small. Don't plan to add 50% more features later if you're aiming for glory.
  • Learn how to setup a server stack, and deploy your application to it automatically, or have one person who knows it on your team. Starting from nothing, if you need more than an hour to setup your application online, then you're really doing it wrong.
  • Don't listen to your {girl,boy}friend when s-he offers to slip out for a while to have a drink, or see friends. I fell for it, twice: on the basis that time's precious, so I'd rather spend it with interesting people rather than my code editor. Not a wise plan if you want to finish on time though.
  • But do plan a few hours of distraction, you're supposed to be having fun. :)

All in all, I had a lot fun and learned a few things. For those who would be interested in hacking with me on this little (Rails) project, I plan to open-source the code in a few days on Github (once I overcome the shame of releasing code riddled with FIXMEs, and without a single line of test).

And that's about it for this evening, plus my Humble Ebook Bundle's waiting for me.

Stupid Gmail

Just had one of those weird flashback moments, while GMail tried to helpfully open a PDF obviously too heavy for its Google Docs's preview webapp.

The javascript is slow, the fonts are botched, overall it's almost like the original, but a lot uglier: the Google User Experience? And, unexpected, a memory from years ago when Steve Jobs presented the new super fast PDF reader in the latest release of Apple's OS X.

Everything's not a webapp, yet. Let's be thankful for that, and also f*ck you GMail.

Ghostrank logs every visited URL in clear

While debugging a rather strange encoding problem on Defora, I fired up Tamper-Data to have a clean log of the ongoing requests. Doing this, I also noticed that another add-on I use, namely Ghostery, was sending every page URI to their HTTP API. No big deal here, since this is part of the Ghostrank feature, and AFAIK you have to opt-in to activate it:

GhostRank sends anonymous statistical information about the trackers, ads, and other scripts that Ghostery encounters and the pages on which they're found. It does not make use of browser cookies or flash cookies and stores no unique information about the user (not even an IP address).

Ghostery uses this information to create panel data about the proliferation of these scripts and shares this data with the Ghostery community, companies interested in measuring their own activity and compliance with privacy standards across the web, and organizations dedicated to holding these companies accountable. GhostRank data is not used to target advertising and is never shared for that purpose. For more details on exactly what GhostRank collects, please visit our FAQ.

By participating in GhostRank, you're agreeing to become part of this anonymous panel and you're helping to support Ghostery as you browse the web.

Ghostery's great, I've been using it for a while, and Ghostrank looks innocent enough to activate it: I mean, it's a small waste of bandwidth compared to loading a handful of social buttons to Twitbook+. However Ghostery logs in plain HTTP every visited URL (be it through HTTP or HTTPS). This is rather unwelcome when you're accessing sites that are proposing HTTPS in an effort to protect your privacy.

HTTPS is a minimum when you're trying to collect anonymous data. What's more annoying here is that they do use HTTPS to send filter-updates, or load their main home page, but not to log your private data. So... meh.

Sample Ghostrank API call logged here for the curious.

GET http://l.ghostery.com/api/page/?d=www.defora.org%2F(...)
   Request Headers:
      Host[l.ghostery.com]
      User-Agent[Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[en-US,en;q=0.5]
      Accept-Encoding[gzip, deflate]
      DNT[1]
      Connection[keep-alive]
   Response Headers:
(...)

Rant over. :)

A few things I like in Mexico

I thought I'd try to post a series of posts on a few things that make me like the life here. Nothing pretentious. Let's start with what's on my desk at the moment...

Returnable bottles for a lot of things. From beers to coke:

Coke returnable glass bottle

On twitter slowly locking down its API

Twitter must have a lot of bored managers/directors sitting at their bad decisions board. The good thing is, maybe a few people will realize they're being used, and start looking at the alternatives.

IMHO good alternatives could look a lot like ADN, which is to say user-centric rather than ad-based (forget FB, G+, etc). It's so simple: caring about your users rather than squeeze revenue out of them through ads.

I used ADN as "good example" because it has gained quite a lot of attention lately. Attention means users, traction, kind words from TechCrunch, that kind of boring non-technical details... It is far from perfect though. The worse thing about it is that being based on user subscriptions makes it completely centralized. My inner geek is hurt. I want my Internets decentralized, with standardized, open protocols. As a matter of fact, technically, identi.ca would fit perfectly here. If only people (including its original owners) would stop thinking of it as "a Twitter clone"... People don't want copies of Twitter, they want Twitter. Make something new and different, or at least pretend it's different enough. Sure it's stupid, but aren't we too? Because it seems to work quite well for ADN.

BTW, I'm @ephoz on Twitter. ;)

Current status

Importing last 6 years of photos into Lightroom...

  • I should have done that sooner
  • I should have setup a decent 802.11n wifi router before starting the import... I should get one decent router anyway, the one my ISP rents me looks like a Wii and is a piece of shit.