Effective restclient in Emacs

restclient is a major mode for Emacs that provides a simple, clear DSL for making REST API client requests and viewing the responses. I’ve found it very useful both when developing and testing API code, as well as when building clients that consume other APIs. It has numerous advantages over products like Postman since it uses clear syntax, can be operated entirely without a mouse, and is based purely on text, so it can be version controlled along with a project to document API call formats.

Read More »

Fingerprints are Usernames

The title of this post is borrowed from Dustin Kirkland’s blog, in which he discusses in some detail the issues with biometrics being used as a method of authentication. When Apple launched Touch ID on the iPhone and iPad, I was skeptical. Fingerprints are not equivalent to a password or PIN in three major ways: You leave fingerprints everywhere, including the device that uses them to authenticate you You can’t change fingerprints; if they’re compromised, there’s no recourse Fingerprints are something you are, rather than something you know When you move from a PIN to fingerprints for authentication, it’s important to understand these differences.

Read More »

How to use Let's Encrypt with Dreamhost

Background Today, Let’s Encrypt opened up a public beta test of their service that provides a highly automated mechanism for obtaining an SSL certificate. This is very exciting because it has the potential to usher in a new era of free, ubiquitous encrypted internet connections. Unfortunately, the default client requires things that may not be available on, for example, a shared host. That client needs to manipulate the server process, which requires root access, and also installs certificates directly on the machine.

Read More »

Visualizing Directed Graphs

Text-based formats are useful because they afford version-control, and therefore allow changes to tracked and diffed, even when many are contributing. When I’m thinking about responsibilities and collaborations within or among systems, I often find myself thinking in terms of some sort of directed graph. Often, it’s a simple model of how data flows through the components of the system. Paper and whiteboards are often the most readily available sources, but when the diagram will evolve and be refined over weeks, I seek a more malleable format.

Read More »

API Design Reading List

A colleague asked me if I had a good reading list for API design, since that’s part of my job these days. I did quite a bit of reading before I dug into doing design work, but never collected the best resources in one place. Until now! So, here are texts I’ve read that I would recommend familiarity with before setting out to design an HTTP API. RESTful Best Practices Todd Fredrich’s book RESTful Best Practices is a concise, free book filled with useful guidelines.

Read More »

Diving Into RSS

This post is designed for those that have decided RSS is something to look into, but aren’t sure where to start. Get a Feed Reader I’ll address potential reader demographics in turn. This is not intended as a survey of available software. Rather, these are my picks after using more than a dozen RSS readers over the years. My prime pick, Google Reader, is no longer with us, but two worthy successors takes its place if you’re looking for professionally hosted web-based readers.

Read More »

Why You Should Be Using RSS

RSS is a simple, easy technology that allows you to stop opening 30 tabs in your browser to check the news sites you care about. RSS unclogs your inbox of all the newsletters you subscribe to. RSS puts you in control. RSS is simple, distributed, ubiquitous, and free. You should be using it. But what is it? RSS is way for computers to read websites. Consider: much of the web is designed only for humans to read.

Read More »

Shortcomings of Canonical's Unity

In 2011, Canonical made Unity the default desktop environment for it’s market-leading distro Ubuntu. Unity has been in development since 2009, but remains the least sophisticated desktop environment available for Linux, and not only fails to innovate in any meaningful way, but represents a regression in the quality of software on Linux with respect to stability and configurability. As a result of Canonical’s insistence on using Unity (which was developed in-house at Canonical), entire Ubuntu spinoffs have been created with a goal of allowing users to easily avoid using Unity.

Read More »

Klout and a Broken Model of Internet Influence

Back in 2012, when I joined the startup scene in San Francisco, I was surprised to learn that so many took Klout seriously. They tracked their Klout rating over time, comparing it with others, and even had playful competitions to see who could increase their Klout score the most over a couple of months. When I first learned of Klout shortly after it came out, I didn’t think too much about it.

Read More »

How Broken is SHA-1?

Back in February 2005, SHA-1 was broken. The core of what “broken” means in this context is described very well by Bruce Schneier in his post announcing the attack: If you hashed 280 random messages, you’d find one pair that hashed to the same value. That’s the “brute force” way of finding collisions, and it depends solely on the length of the hash value. “Breaking” the hash function means being able to find collisions faster than that.

Read More »

Android and iOS Demographics

BusinessInsider posted an article a couple of days ago entitled GOOGLE’S DIRTY SECRET: Android Phones Are Basically Used As Dumbphones. I’ll ignore the linkbait title and just address the content (though I won’t be linking to the article). There is really one fact that forms the gist of the article. Here it is, in my words: As much as 80% of the smartphone market is Android-based, but roughly 80% of the purchasing on smartphones is from iOS devices.

Read More »

The Retro Gaming Fad

As 2012 draws to a close, I think its worth taking a look at retro gaming. Near the dawn of virtual reality and well into the teens for globally shared MMOs, it’s popular to be playing and making “retro” games. What I’ve noticed, though, is that this is only true so long as the games aren’t too retro. Real Retro GOG.com has given really good old titles new life, which is a good thing for everyone, as I see it.

Read More »

Developer Notebook: Installing Rebol

After more than 15 years of work as a closed source language, Carl Sassenrath has decided that Rebol 3 will be released as open source. The code was released a few days ago, so I decided it was time to check it out. Why is Rebol interesting? The Rebol manifesto is great. Any computer science purist would fall in love: It’s about language… the enabling technology behind all technologies. Love at first sight.

Read More »

Portals and Tiles: A Better User Interface

According to Wikipedia, Alan Kay introduced the desktop metaphor in 1970 when he was working at Xerox PARC. I think it has served us well because it has allowed novice computer users to approach computers in ways that were familiar to them using old tools: trash cans, file folders, filing cabinets, and pieces of paper. Programs themselves occupied the screen real estate in the same way a piece of paper occupied the space on a desk; programs appeared in windows that could be moved around and could overlap, just as their tree-based counterparts. Although we’ve all worked in offices that had all those things, I’d venture a guess that no one under 40 today has ever worked in an office without a computer. I assert that it’s time to retire the desktop metaphor in modern computing.

Read More »

Virtual Reality: Creating Immersion

The purpose of my last post was to explain one reason why, in 2012, virtual reality is more than a pipe dream. It was meant to preempt a reaction of “Well, they’ve been talking about 3D movies and photos for 20 years also, and we have only made modest progress on that front.” As a coworker said when he heard I was excited about virtual reality: “That sounds like the 90s.” If you hype a technology for 20 years and it doesn’t really go anywhere, people become jaded and give up. I’m writing this because I believe there is good reason to have hope. Virtual reality is real, and it is cool. Let me explain why.

This post is meant to get into more detail about the current challenges associated with virtual reality, and the state of the art. Almost everything I’m going to write about is sourced from John Carmack’s 2012 QuakeCon keynote, and the follow-up panel discussion with Michael Abrash (seminal FPS developer with John Carmack, now researching VR at Valve Software) and Palmer Luckey (VR headset enthusiast and founder of Oculus, the makers of the Rift VR headset due for release in 2013). These discussions are the most comprehensive treatment of the current state of VR I’ve seen or read anywhere, and they are extraordinarily timely.

Read More »

The VR Revolution Begins Now

Virtual Reality has been a geek dream for decades. If you haven’t been following closely, you might have missed the fact that all the technology needed to make it happen is here, right now. It’s not years off, it is being used right now, and it will be available to consumers in the coming months. To be honest, I haven’t been so excited for a gaming phenomenon since I rode my bike to Babbage’s to pay $6 for a few floppies that had Doom Shareware on them. How did this happen? After years of talk and marketing, we’ve made some modest inroads with 3D movies, and yet, all of a sudden, we have virtual reality. People are building it, and it is affordable.

Welcome to the desert of the real.

Read More »

Gollum: The Ultimate Personal Wiki

You may already know that this blog is powered by Octopress (it says so at the bottom), which is a Ruby-powered static site generator. In the course of my travels, I found a wiki written in Ruby as well, courtesy of the folks over at GitHub. The wiki is called Gollum, and it powers GitHub’s project pages.

Gollum is badass.

For one, it accepts a whole slew of markup formats, including Org Mode (via org-ruby), but also the usual suspects, including Markdown, Textile and Creole.

Read More »

The Power of Static

In the beginning, there were static web sites: sites that served documents, because that’s what the web was designed to do. Hyper text transfer protcol is document-oriented, as is the hyper text markup language. But the web became increasingly dynamic, with new sites requiring that documents be generated on-the-fly, which necessitated the use of databases. Weblogs came along, which are nothing if not document-oriented, but they tend to use dynamic technologies like databases anyway.

But there has been a trend lately towards blogs that are static. At first blush, a static blog, which is really nothing more than a collection of files in directories, seems inferior in most every way to its dynamic counterpart. {“Why would anyone use a static blog when engines like WordPress are so ubiquitous?”}

Read More »

Browser Extensibility Drives Utility

Since Chromium became available in the Crunchbang/Debian repositories, I’ve pretty much switched away from Firefox entirely. Lately, though, I’m coming to realize the shortcomings of Chromium. If you’re an Emacs user, or if you appreciate software with great extensibility, I’d assert that Firefox has more to offer than Chromium. In fact, Firefox is a bit like the spiritual successor to Emacs in the web browser world. A great example of that modularity is the Conkeror web browser, based on Mozilla’s XULRunner. It’s a neat piece of software, but this post is about Firefox itself, and how its extensibility provides its users with a better experience than Chromium’s model can.

Read More »

Federated Wikis

I just discovered Ward Cunningham’s Smallest Federated Wiki. It’s amazing that the man that first innovated the revolution in internet collaboration and sharing seems poised to do so again. Anyone who knows me can tell you how much I value the idea of federation on the web, whether it be social networks, chat, mail, version control, or wikis. Federation is, in my mind, without a doubt, both the past and the future of the web.

Read More »

Adopt Early, Adopt Often

I’ve written up some of my recent trials and tribulations with Ubuntu 11.10 on my ThinkPad. While that (not yet complete) saga is really about problems that are not easily solvable by the community, there are other problems that are, and it’s getting a bit frustrating.

The major new desktop environments are influencing the Linux desktop in harmful ways. In particular, I’m thinking of Gnome 3 (Gnome Shell), Unity (both 3D and 2D) and KDE 4. Here’s how they’re eroding the Linux desktop through their “adopt early, adopt often” methodology.

Read More »

Xtend's Disappointing Dependencies

The Eclipse Foundation announced yet-another-JVM-language called Xtend. I clicked on the article with the announcement out of curiosity, since I tend to like playing with new languages quite a bit, and have done most of my professional work under the JVM (Java, Scala and Clojure, with a bit of Jython). After looking through what they’re doing, I really like it. Xtend makes me excited to start a new project and try it out.

But, when I went to download Xtend, I was presented with an interesting requirement:

Read More »

The Dangerous Trend Towards Centralization

Gina Trapani shared a post from Brian Shih, who used to be a product manager for Google Reader. To provide some context, Google Reader has been the dominant RSS reader for just about six years, garnering an extremely strong but limited following (inherent in the genre; RSS is not used by the majority of web surfers).

Reader recently underwent a redesign. The majority of users evaluated it on its aesthetic merits, though users that made extensive use of keyboard shortcuts and for whom sharing was an integral part of the Google Reader experience noticed that the sharing functionality was altered significantly to bring the product more in line with Google Plus. As a result, the changes have impacted users to varying degrees. Some users simply don’t understand what the big deal is, others complain about the whitespace that is now more prevalent than ever, and yet others (myself among them) complain about the nerfed sharing functionality, especially that which is accessible via keyboard shortcuts. Because users use Google Reader differently, the changes have had varied impact on them.

This post isn’t about any of that.

Read More »

The Search for the Perfect News Aggregator

Today, Google announced the integration of Google Reader with Google Plus, a feature I’ve waited for since the announcement of Google Plus. The announcement was covered oddly in some circles, however, indicating that Google Reader would no longer be available as a stand-alone product, and rather as an integral part of Google Plus. While I believe this characterization is not completely accurate, it represents a significant shift for Reader, since Google Plus carries with it its own terms of use.

Before I go further, its worth explaining very briefly what Google Reader represents. For its most dedicated users (me among them), it is the gateway to the internet. Years ago, I found myself visiting dozens of sites per day to stay up-to-date on the issue that were important to me. The advent and relatively rapid adoption of RSS across the web was therefore vital to the development of a sustainable model of information consumption for those that drew their news from dozens or hundreds of sources. Reader represents the most advanced and streamlined experience for news aggregation available anywhere online, and offers unmatched social networking functionality by allowing users to share and comment on each others articles. It is a healthy, if little known, social network centered around real content and commentary, rather than mundane status postings (in my biased opinion).

Read More »