An open letter to my mobile phone provider

Dear SimpleMobile Customer Service person,

Hi there!

As one of your customers, I have to ask: why can’t I pay my bill online with my Mac or my iPad? (Even though your site says Firefox ought to work, it doesn’t, at least on a Mac.)

Assuming your bill pay system isn’t made of magic, but a standard HTML form submitted over SSH, there cannot possibly be any good reason to lock out anybody who’s not using these two browsers on Windows. If your system is using something like ActiveX that won’t work on a non-Windows system, then your web development team are either a pack of raving idiots or actual time travelers from 1999 and you should fire them and hire me to build you something that actually works, and also explain to them as you hand them their final checks that there is no Web technology that works solely on IE and Firefox. If it works in Firefox, it works in Chrome, Safari, Mobile Safari, etc. Lots of crappy tech only works on IE, but most web developers avoid these technologies once they’ve progressed past, say, middle school.

In fact, the only technology that won’t work on Mobile Safari is Flash…and if your bill pay system uses Flash, you need to call security and have your web team escorted off the premises after being checked for weapons, because anyone who would do such a thing is clearly dangerously insane.

Whatever the convoluted and inevitably wrong explanation for this situation might be, the fact is that it’s pointless and irritating. I am not going to buy a PC and inflict the horrors of Windows on myself simply to pay my mobile phone bill. Instead, I have to actually go to the store and pay my bill…which sucks when the bill is due on a weekend and the store is closed. (You may ask: if you know your bill is due on a weekend, why not just pay on the preceding Friday? The answer is: I’m an American. Paying a bill even a day before it’s due is an act of wretched cowardice, fit only for Communists and probably French people.)

I suppose there might be some value to irritating one’s customers in this way, but I can’t imagine what it might be. I’m not an MBA or anything, but I’m fairly sure that needlessly antagonizing customers is usually considered a bad strategy. (Then again, you are a mobile phone company, and mobile phone companies give out big shiny awards for Maximum Customer Annoyance to each other at industry conferences.)

I also can’t imagine I’m the only customer with this problem. I suspect that I’m not the only customer who has contacted you about this. Let me assure you that when your customer service person goes down to the nerd dungeon and asks Bob the Web geek about it, and Bob hems and haws and says “Yeah, I can’t really change it, it’s based on the architecture of the server, it’s all J2EE” and then continues babbling geekspeak at you for ten minutes, well…Bob is lying. Trust me. I’ve been building websites since Bob was still trying to make his MySpace page look like The Matrix. I know this to be true, because if Bob knew as much as I did, he wouldn’t have thrown up this unnecessary and entirely annoying barrier to commerce.

So: please fix this problem. Let me pay my bill with cool computers. Also consider firing the fool who caused it and paying my extremely reasonable rates to have me fix it.

(I’m also posting this to my blog, in hopes that the prospect of being embarrassed in front of the seven people and also my mom who read it might drive you towards resolution.)

Cheers, Joshua Ellis

I need help with an algorithm

So I’m finally building out Stikki.me’s advertising system, and I’ve realized I might need some help with a geometric sorting algorithm.

Stikki’s advertising is geographically-based; an advertiser “sponsors” a location — most likely the real-world location of their business — with an ad, and users see that ad if they’re within a given radius of the location. The sponsor selects the radius, and pricing for the ad is based upon that radius. (The value of this sort of advertising, by the way, is that the advertiser knows that the user is within reasonable physical proximity of their business, and is therefore capable of patronizing it.)

So here’s what I have to do; when a Stikki user visits Stikki, their geolocation is passed (but not stored) to an AJAX script which returns the correct ads for that location, and that’s where my knowledge of geometric algorithms breaks down. I don’t know what the most elegant way to determine this is.

I’m currently using a two-pass approximate sorting scheme that looks something like this:

  • retrieve subset of all ads where ad’s latitude/longitude is within 5 kilometers of the user’s current position (5km being a wide enough radius to contain all possible current ads),
  • within this subset, calculate minimum and maximum lat/long for each ad based on ad’s lat/long +/- ad’s radius and see if user’s lat/long is within it. If so, return ad.

But I don’t know if this is the most efficient way to calculate this, especially if/when I begin to get larger numbers of ads — more than 1000, say.

This same geometric algorithm is used to determine if a user is in proximity to one of their “alert” stikkis as well.

Anybody have any practical suggestions/advice for this? I could spend the next few weeks learning about collision detection/sorting algorithms, but I’d rather get pointed in the right direction by somebody more versed in geometric algebra than I am.

A Letter To My Clients

This is a letter I just sent out to several companies and individuals I do web design/development subcontracting for. I thought it was worth posting here. I’m not particularly secretive about what I charge (or, as you’ll see, am going to be charging from now on) for websites, so I don’t think it’s inappropriate to put this here.

Some of you may think that there’s nothing here I shouldn’t have been doing years ago. I agree. The fact is that I have been very bad at business for a long time, and my desire to be helpful to people with small budgets for their web projects has ended up costing me a great deal of time and money. As I am a married man now, I can no longer afford to be “cool”. I have to be responsible.

——

Hi there folks!

You’re receiving this email because you’re one of the people I regularly do web design/development business with, and I’m announcing a few changes in my contracting policy.

Effective immediately, I will not be undertaking any website projects with a budget under $1000. This is non-negotiable. I may take on design projects (such as logo creation or non-production site design) for less, but this is the baseline for hiring/contracting me to make a website. In addition, I will require a minimum of one-third of the project’s fee to be paid up front, non-returnable, as a sign of good faith. This is also non-negotiable. I will also be providing scope of work documents for each project, to be signed by both the client (or the client’s representative, i.e. you) and myself, so that each party is clear about their own roles and responsibilities within the scope of the project. I will also require that any changes to the project during the course of the work be given to me in writing (via email, preferably) so that there are no misunderstandings or confusion about what needs to be accomplished. Changes made during the project will also require a renegotiation of fees.

Each project will include, as part of the negotiated cost, a fixed, reasonable amount of hours dedicated to phone or physical meetings with the client (or with you). If this amount of time is exceeded, I will bill the client $25 per hour of meeting/phone time. Hopefully this will encourage the client to contact me via email, which is my preferred method of communication, as it is much less ambiguous and easier to refer to.

In addition, I will be extremely selective in taking on any projects with less than a two week turnaround time; any such projects will be considered “rush jobs” and I will add an additional 50% of my estimated fee to their total. Also, any timeline specified by the client will be understood to begin when the client provides deliverables such as branding and content, as well as any and all pertinent logins and password for the client’s domain name registrar and hosting provider and any contact information for the client that needs to be included within the project’s content (such as an email address for a contact form to send messages to).

Please note that these new policies do not affect any projects I am currently engaged in with you, or projects for which I have already agreed to work on for an existing fee — merely new projects going ahead from here on out. I will carry out any existing projects for the fee I’ve negotiated with you. It will, however, apply to any and all projects that are not yet begun. If you’re unsure whether a project falls under my new guidelines or not, feel free to contact me about it.

I apologize if these changes and requirements are inconvenient for you. However, after a great deal of consideration, I’ve come to the conclusion that it is simply not economically sustainable for me to work on projects with budgets below $1000. After doing the math I’ve realized that my current policy of working on small sites for small money means that I am a 33 year old married designer/developer, with sixteen years experience in every aspect of website creation, who makes roughly the same amount of money as a Starbucks barista. (Less, actually: they make tips. I don’t.)

Also, frankly, I’m tired of dealing with small clients. They’re pushy, they contact me at strange hours, they don’t have even basic understanding of how the Internet or even their own websites work, they make absolutely unreasonable and unfeasible demands (both in terms of website functionality and turnaround time), and they don’t pay on time. They are, to put it bluntly, a pain in the ass.

Ultimately, it makes more sense for me to seek and take on three or four larger projects a month than seven or eight smaller ones; they’re easier and less stressful to manage, and are more financially lucrative in the long run.

If you find that you or your clients cannot work within these new policies of mine, I will be happy to refer you to another designer or developer who can better service your needs.

However, if you find my terms acceptable, I can guarantee that your clients’ projects will receive my full attention and the full benefit of my long years of experience in this field and my considerable creativity and professionalism.

Feel free to contact me if you have any questions or concerns.

Thanks, Josh Ellis

Random Ontologies, entry 3

Three concepts: Planck length, Planck time, Conway’s Game of Life. Read those Wikipedia entries and come back to this.

Imagine a game of Life, played on a three-dimensional grid in which each space is one cubic Planck length. Each “round” of the game takes one unit of Planck time. The grid’s resolution is precisely that of the universe itself. For the purposes of this game, we’ll call each “on” cell a quantum (plural “quanta”).

You start the game with a mostly empty grid, where all of the quanta are packed densely into the center. When you hit “Go”, you see that the quanta begin to expand out from the center, unstable at first but eventually forming into stable, simple shapes, which then begin to cluster into more complex stable ships.

Run this for 14 billion years.

I suspect that what you would have would contain almost precisely the same amount of information, measured in entropy, as the universe we reside in.

If we take the quanta as the smallest binary unit in the universe — a simplification, I know, but it kind of works — in this way we can understand the entire universe as a computation. The rules may not be identical to Conway’s rules, but they’re probably similar.

This is why digital physics is so interesting.

An open letter to my social network “friends”

Like many people, I’m fairly liberal with the “Approve Friend Request” button on Facebook. I’ll add friends of friends, casual social acquaintances, former work colleagues, people I went to high school or grade school with or who laid in the adjacent crib to me in the hospital when I was born. I’d say 75% of these people never actually interact with me at all, nor me with them. And that’s fine; I don’t need to have deep, meaningful conversations with the kid who sat next to me in history class in eighth grade. It’s kind of cool to simply see his posts on my main news feed, along with some dude I worked with in 1999 or some girl I went on one date with in 1997…to see small glimpses into lives that briefly converged on mine and then diverged forever.

Unfortunately, this means that I end up accidentally friending people who have no actual interest in me, my personal life or the things I create and produce. To these people, I’m simply another notch on their social marketing belt, another name on a mass messaging list, another “friend” they can show to their marketing clients as an example of their successful penetration of the social network market. These people don’t interact with me. They don’t read my posts or comment on them. They just send me endless invites to inane events and “Buck Shmerkle Productions is a fan of CLUB ROOFIEZ HIP-HOP LADIES NIGHT!!! and thinks you should be too” requests.

I despise the marketing and advertising industry. (The fact that I’m a professional web designer, which essentially makes me a sort of marketing sub-contractor, is not lost on me. But that’s a whole other story.) I despise people who try to manipulate every single human relationship into a meaningful brand extension opportunity. I want to punch these people in the face very hard and very long until something goes soft behind their eyes.

Most of all, I hate people who pretend even casual intimacy with me when their sole goal is to sell me something I don’t need or even want. If any of these pricks actually took ten minutes to look at my Facebook profile or Twitter feed, they would probably be able to guess that I’m less likely to attend their “420-friendly reggae-metal jam!!” or gallery show of bad derivative paintings or acoustic poetry performance/hootenanny/rally for veganism than I am to shove Jon Cryer’s head up my ass whilst performing the entire songbook of Andrew Lloyd Webber in flawless Tagalog.

But they don’t know that, because I’m not a human to them. They’re pimps and I’m a john — an unwilling and uninterested one. They don’t notice if I never respond to any of their messages, never attend their events; they just keep spamming me, day after day, month after month, year after year, under the guise of a false camaraderie. (It’s even funnier when these are people whom I know for a fact don’t actually like me. You know who you are. Unfortunately for you, so do I.)

Luckily, I’m learning to be liberal with another Facebook button: the one that says Unfriend. As of today, if you’re one of these people, you are not on my friends list. And if you start becoming one of these people, I’ll kick your ass to the curb quicker than you can say “personal brand”. Sorry. Actually, no I’m not. I don’t care what you think.

This doesn’t extend to people who are actually my friends or colleagues or even acquaintances, or people who post events I care about. Even if I don’t show up to every play you put on or show your band plays, or even most of them, I’m more than happy to know when you’re putting on another event. And I think most of you know who you are.

The rest of you…well, I’d tell you to go fuck yourself, but you probably aren’t even seeing my posts anymore.

And the world seems a little lighter to me.

The New Record

I sat down and talked with Aaron Archer (my extremely talented guitarist and friend) about the next Red State Soundsystem record (the next LP, not the Sophia Sessions EP of acoustic versions of Ghosts In A Burning City songs that I’m recording right now), and what it’s going to sound like. I told him I wanted to make a three in the morning dive bar record; music for drunk brokenhearted dudes who read Nietzsche and sultry girls in cocktail dresses with whiskey voices. A velvet and black leather record, a red and black record. I may have mentioned Greg Dulli and Mark Lanegan several times, and also Paul Westerburg.

The long and short is this: I’m moving away from the sound of the last record. This new record is going to be more aggressive, a bit more rock and roll…though I’m not abandoning the ambience and electronica entirely. I told him I wanted to make an Afghan Whigs record as produced by Brian Eno. The album’s also going to be a bit less…eclectic…than the first one. Aaron’s going to be working with me a lot more on the arrangements, and I want the songs to have a unified sound. Which is not to say that all the songs will sound alike, but that they’ll probably jump around a bit less than the last one.

And I want it to be fucking noisy.

I have almost the entire record written, at least in terms of lyrics and chord progressions, and in the next couple of months Aaron and I are going to start the actual recording. I’ll probably drop rough mixes of a couple of the tracks, as we go.

So there’s that.

Thanks For All The…Well, You Know.

In 1987, when I was nine years old, I was living in the tiny village of Afşin, Turkey, with my grandparents — my grandfather was working on a coal refinery project for TEK (the Turkish electric company). We lived in a little compound for the expatriate workers, made up of a few blocks of Soviet-style apartment buildings, some small brick houses, a commissary that kept us in American and European cereal and bootleg VHS tapes of American TV shows, and a pub that served Turkish Efes beer and the most amazingly wonderful greasy-as-hell pizza I’ve ever eaten.

There was also a “library” of sorts: a small storage room in the basement of one of the buildings, filled with paperbacks and book club editions of pop novels and such. It never occurred to me, until this moment, to wonder where the books came from; I guess they were just donated by various people working on the projects over the five years or so they were there.

I was a bibliophile, even at nine years old. I learned to read rather astonishingly early — my mother says I was reading signs aloud at the age of about eighteen months — and I’ve been a speed-reader my entire life. By the time I ended up in Turkey, I was already reading at least at a high school level. I devoured books, and still do to this day (one of the many things I have in common with my wife). By the time I discovered our compound’s little library, I had probably already read all of the books I’d brought with me from America, as well as the Asterix The Gaul comics my grandparents had picked up for me in Istanbul.

So I was eager to find something new in the maybe half-dozen shelves of the library. But most of it was Harlequin-style romance, a few technical engineering manuals, Harold Robbins and Stephen King, whom I was terrified of. (It took me at least a year or two after returning from Turkey to get into Big Steve’s stuff.) Nothing that looked really interesting to me.

And then I found a small Pan Books paperback, well-worn already, with a picture of a little green grinning sphere on the cover giving the reader a raspberry, and a giant hand with a thumb on it. The title was The Hitchhiker’s Guide To The Galaxy. The author was Douglas Adams.

I picked it up, sat down on the floor of the library, and began reading. When I got to the sentence “The ships hung in the air in much the way that bricks don’t,” I was absolutely hooked…and I have been ever since.

Fast-forward many years, to May 11, 2001, ten years ago to the day. I was living in Seattle at the time, in the middle of, shall we say, difficult circumstances. I turned on my computer, logged on to Yahoo! News, and saw the headline: “Author Douglas Adams dies”. The article said that Adams had died while exercising at his home in Santa Barbara. He was exactly two months past his forty-ninth birthday.

I went outside, and I sat on the little concrete stoop of the house I was living in, and I cried. I cried as if a close friend had died, despite the fact that I never met Douglas Adams and only had one very brief email correspondence with him. (It consisted of me asking to interview him for a magazine and him promising to let me do so once the novel he was working on, The Salmon Of Doubt, was finished, which he expected to be very soon. That was 1996. He still hadn’t finished it at the time of his death. That was, as I understand it, par for the course for Adams.)

In many ways, Adams was responsible for making me who I am today. I found his work at an extremely pivotal moment in my mental development, when the world was just beginning to really open up for me. Something in me responded instantly to his particular type of existential absurdism, even at the tender age of nine. I was a terribly geeky kid, obsessed with physics and astronomy and computers, and the worlds of Arthur Dent and Dirk Gently were the kind of worlds I wanted so desperately to live in — worlds where particle physics formed the basis of all the best parties. Anyone who knows me and knows his work can probably guess that the foundation of my sense of humor lies in Adams’s work. Adams opened me up to a whole world of new ideas — Monty Python, P.G. Wodehouse, Doctor Who. (I even forgive him for his occasional digs at Rolling Stones fans.)

By all accounts, Douglas Adams was a kind, funny, excitable, garrulous and very large man who seemed incapable of ignoring the wonder of the world he found himself in. His intellectual curiosity — and ability to always place even the most monumental of events, ideas and scientific theories into a very silly frame — has been an inspiration to me my entire life. Though I never met him, I miss him terribly — I miss his voice – and I am envious of those lucky people who got to know him and have him in their lives.

Man, I wanted to be Ford Prefect so bad. I used to throw myself at the ground, trying to miss.

It never worked. But I still keep trying.

At Least Sometimes

So this girl comes over and asks you to dance She’s a warm refugee from the cold middle class And you wanna take her home and sing her All your love songs But you feel so awkward and stupid and lame That you can’t even manage to spit out your name And she walks away disappointed And you walk away with your heart on

With your heart on your sleeve ‘Cause you’d love to believe That in love it is better To give than receive That someone’s waiting for you in the night Yeah, you’d love to believe that forever and ever Is not just some poet being clever That everything will all work out alright

At least sometimes

So you stumble back to your sad little room And your roommate laughs, ’cause you’re home so soon And you crumble in about a thousand little ways And you watch all the movies on late night TV About people in places you’d rather be Falling for each other As the soaring music plays

And nobody goes for the kiss too soon And everything’s lit by the glow of the moon And when he calls She answers the phone And nothing ever ends in regret For the words that were spoken Or weren’t spoken yet And nobody ever Ends up alone

At least sometimes

So this girl comes over and tries to be cool But she’s stumbling over her words like a fool And you slowly realize, And you start to smile…

Music For Writing Desks

I’m currently working on a nasty horror short story for my friend Jarret Keene’s upcoming anthology of Las Vegas horror stories. When I write, I listen to music; generally instrumental stuff. When I’m doing horror, I tend to listen to a lot of post-rock stuff like Mogwai (the track “Auto Rock” being a favorite), as well as hauntological electronic like Burial, and random film soundtracks, my favorite being Cliff Martinez’s score for Solaris and Clint Mansell’s Requiem For A Dream, as well as Lisa Gerrard and Peter Bourke’s lovely score for The Insider.

However, I find that I run into a problem: the music runs out or changes moods long before I want it to. It might take me three hours to write a scene, and unless I’m looping a single track or album again and again (which, in and of itself, is tiresome) I’m going to lose the feeling of the music long before I’m done writing.

Yesterday, I hit upon a novel solution: I fired up Ableton Live and used some of my techniques for generating algorithmic music to create an evolving, unending “soundtrack” to listen to while writing a scene. It took me about ten minutes to throw together an appropriate set of sounds, rhythms, loops and harmonies…and I left it running for the three hours it took to write the climactic scene of my short story. (When I popped over to it and closed it, it was running to something like 1300 measures.)

It worked perfectly! One long song, with enough variation not to sound like a loop, maintaining the creepy feeling I wanted while I wrote this horrible scene. (It involves a drugged Russian prostitute and a Lovecraftian beastie.) I think I’ll try it for all of my writing projects from here on out.

If you’re curious, here’s a 32-measure sample of the music.

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

I Like This Band

I’ve written a tiny web app called “I Like This Band” that allows you to enter a band’s name in a search form and get a random list of 20 similar bands. Click on any band and you get bands similar to that band, or click on the “Google ‘em” link to Google the band. Mouseover the band’s picture and you’ll see a truncated bio.

Nothing too exciting, but cool for people like me who just want to find bands that are similar to other bands without having to navigate a bunch of random bullshit to do it.