Tuesday, October 29, 2013

Enforce Your Western Bacon Cheeseburger

This is a track I made years ago, when I lived in Santa Fe, New Mexico. The style is a kind of Warp Records ambient techno vibe, like Speedy J, Autechre in a gentle mood, or Black Dog / B12. With the exception of a sample at the end, I made the entire thing on a Korg ER-1 as a kind of challenge, to see how many different sounds and textures I could get from it.

The sample begins at about 4:15. It's fun.

"It Feels As If It's Reading My Mind"

Wearable head-mounted camera reads your brainwaves and records whatever you're seeing if it estimates your interest level meets arbitrary 60% threshold.

Tuesday, October 22, 2013

New D&B Track: Maximum Bass

Wednesday, October 16, 2013

Saturday, October 12, 2013

New eBook: Software As A Disservice - Fixing A Broken Rails App

I wrote a new (e)book, called Software As A Disservice: Fixing A Broken Rails App. It's a caffeine-fueled foray into fixing legacy code. I wrote it partly because I have some Rails students who I'm training, and I wanted to show them the difference between bad Rails code and good Rails code. I also wrote it because I was a little bit outraged by somebody else's ebook.

I started with this open source Rails app, an allegedly good example of a subscription site using Stripe. The "allegedly good" part, btw, is not alleged by Stripe, but by the app's author, who also sells a subscription (using the app itself) to a site with tutorials on how to build Rails apps, including an ebook about building the subscription site app in the first place.

It's a wonderfully meta business model, and I love how it involves giving code away for free. But the code is, in my opinion, awful, and anybody who used it as an example of how to build Rails apps would be misled about how Rails apps should be architected and how Rails code should look. In my opinion, this app does you a serious disservice if you take it at face value, so I called my book Software As A Disservice.

In this book, I take this app's open source code, and work hard to make it suck less.

The book itself is only about 120 pages, which only gave me enough space to make significant progress in both re-architecting and refactoring the User model. If you've refactored and/or re-architected a bunch of legacy Rails sites already, you might not learn anything; this is probably not the book for you. You should buy this if you're new to Rails, and you want to understand the difference between good Rails code and bad Rails code.

Caveat: this book is full of foul language. One chapter is called "Why The User Model Is Fucked." There are also garish, violent, and sexual metaphors involving raccoons, bananas, anal sex, dangerous machinery, weapons, and tentacles. There's probably other disturbing and/or inappropriate stuff that I forgot about, and it's entirely possible that a reasonable person could read this book and worry about my mental health. However, as long as you learn something about writing good Rails apps in the process, I can basically live with that.

The book's crazy like that because I wanted it to be funny, I wanted it to be candid, and I wanted it to feel kind of live and real-time. I wrote it while fixing the app in question, and if you think it's possible to fix legacy code without swearing a lot, you're either some supernatural entity of the holy variety yourself, or you're fucking dreaming. Anyway, the benefit of the "live and real-time" factor is that the book's annotated with git commit hashes, so you can go through the code, do a git checkout xyz12345 to explore the code at every stage in the process, and/or see exactly how the code changes from moment to moment with git diff.

The book's only in PDF format; I've upgraded my toolchain to make mobi and epub output possible as well, but it won't be ready for a little while longer. I'm going to release both this book and Rails As She Is Spoke in Kindle format for sure, but epub format remains a maybe, and I'm not sure how many of my other books will also get converted. Anyway, Software As A Disservice is 122 pages long, it's aimed for newbie to intermediate Rails devs, and it's $23.

To buy Software As A Disservice: Fixing A Broken Rails App for $23:

To promote it, I'm also selling a bundle of Software As A Disservice along with my other two Rails books, Rails As She Is Spoke and Unfuck A Monorail For Great Justice. That's $61; the total to buy those books individually is $101. So you save exactly $40 if you buy the bundle.

To buy the bundle and save $40:

Wednesday, October 9, 2013

iOS Fucked Up My Brain

True story: I used to be pretty good about inbox zero. Then I started using iPhones and iPads. The email apps sucked compared to Gmail, so I got in the habit of leaving stuff in my iOS inboxes until I could go into Gmail on the web and clean them up. Then I got bad at inbox zero. Today I absolutely suck at inbox zero.

I also used to be great at browser tabs. I never left them open all day, never had more than three or four at any given time. I suck at that too now, and again I blame not only myself, but also iOS.

I'm dragging my feet on iOS 7 -- I don't want to deal with it until they've worked out the kinks, and really I don't ever want to deal with its text-only "buttons" ever in my life -- but previously, Safari on the iPhone has defaulted to opening your Bookmarks menu when you launch it without a URL already open. I found this behavior incredibly annoying, so I got in the habit of keeping URLs open. For obvious reasons, I wanted URLs that loaded quickly.

For years, the fastest-loading URL which sprang to my mind was my own mini-app, Hacker Newspaper, because it had a tiny DOM and zero dynamic elements. So I got in the habit of having that open in iOS at all times. Then I wrote another mini-app which loaded even faster, an hourly tracker for the Bitcoin exchange rate, and I got in the habit of having that constantly open on iOS instead. This habit made me a little money, but I didn't really want to be constantly aware of the Bitcoin exchange rate, and the Hacker Newspaper habit changed me in a terrible way. I read Hacker Newspaper all the time now. I used to only look at Hacker News when my own blog posts were on the front page.

Long story short, iOS fucked up my organizational habits through design fail -- and iOS is consistently regarded as one of the absolutely best-designed technology products available. As another example, some Palm Pilot users in the late 90s allegedly experienced weird personality change effects as a consequence of the Palm Pilot's writing system, which had users change their handwriting for the Palm Pilot, since that was easier than handwriting recognition. (Sorry, the obviously-needed citation's been lost to the mists of time.)

Interaction design has huge consequences, because interaction design is behavior design, and a lot of the behavior it governs is mental behavior like thinking, planning, and sorting. Among others, the sci-fi author Charlie Stross and the sociologist Amber Case have described various types of software as systems for externalizing consciousness, identity, and memory. While sci-fi's been forecasting the criminalization of specific thoughts since at least George Orwell, thoughtcrime is still at least a specialized problem. I don't think any science fiction author successfully predicted the aggravating ubiquity of thoughtfail.

This is, in my opinion, the strongest argument for seeing Unix and basic coding skills as fundamental required literacy today. As prostheses for memory and identity, computers are too useful not to use, but if you don't know how to craft your own code which gives you a UX which matches the way you think, you're doomed to matching the way you think to the available tools, and even the best available tools basically suck. Interaction design is not only incredibly hard to do well, it's also incredibly idiosyncratic.