→ An audio version of this article is available.

I built Twitter. For the past few months I’ve loosely talked about my intent to publish micro-content (a tweet) to my site and send a copy out to Twitter, as opposed to using Twitter directly. This publishing model goes by the acronym POSSE: Post to your Own Site and Syndicate Elsewhere.

There are several notable reasons why people would choose to own their data. Personally, I felt liberated by the broader idea that services like Twitter, Facebook and whatever comes along in the future would be representations of me, rather than “me, elsewhere.” I hide in plain sight on web-based services by obfuscating my identity through a hilarious avatar, by using a different poorly-considered, rarely-duplicated handle for each account, and by avoiding amalgamating a community (“friends”, followees, connections, basically). I’m a serial late adopter because the idea that these things are me makes me uneasy. I still haven’t gotten to the root of this but I suppose it has to do with shame, as do all my issues.

Implementing POSSE to Twitter also has the promise of solving the problem of having neglected my personal space on the web — this domain — which has always been my greatest hobby, and what brought me here in the first place. But what most compelled me is that I somehow find the need to build completely bespoke solutions to all my technical problems. For instance, I don’t use music subscription services because I have valuable personal metadata that is currently handled by iTunes, and the tool that I prototyped in Javascript to manage that data in the browser independent of the service, application or file is in development. I am very authentic yes.

I spent the past three months avoiding actually building this. An autumn of procrastination included migrating my blog over to Publify, a Rails-based CMS that offers built-in POSSE to Twitter features, only to realize my incumbent CMS, Kirby, suited my needs better. I ended up abandoning my work.

It only took a few moments to get POSSE to Twitter working. I found the action responsible for posting an item of content to my site in the code for Kirby’s admin panel and wrote a function that posted the content to Twitter using the API. But I also wanted to populate my existing 1,800 tweets into the CMS, in addition to being able to support what is modeled as an average of 1.6 items of micro-content per day. I read that this wouldn’t scale so well with Kirby, and, to my horror, it looked like I was going to have to go outside the file-based CMS and store my tweets in a database. The Kirby documentation itself recommended that databases are a better system to store large quantities of user-generated content, and fortunately, Kirby is built upon the Kirby Toolkit, which helped to subdue my nemesis, MySQL.

I’m going to mention here that it’s important that I use tools built by people who share my values. Federic de Villamil, author of Publify, has written about data ownership and silos and Bastian Allgeier, author of Kirby, has written about and is working on a decentralized vision of the web. These are things that motivate me too. Because the authors care about the same things I do, their tools come with features that anticipate problems I’d need to solve, so I don’t waste time and hair struggling against software.

What I ended up ultimately building, aided by a spec of sorts, is Web Design 101. It’s a form. It lives at a URL on my domain, and has a textarea that accepts 140 characters for the tweet, a text field for a URL if my tweet is an @reply (to enable conversation associations on twitter.com), and a toggle that determines whether I want the tweet to appear on my list of tweets on this domain. I would prefer to have my @replies hidden unless they’re really funny. The hidden tweets still get saved to the database and can be queried by their tweet ID, but they are excluded from the query that lists my tweets on my domain.

When I submit the form, the API posts to my Twitter account, and the result of that request is posted to my database, which contains the full history of my tweets. The data submitted by Twitter is formatted similarly to the csv output of my archive of tweets, which is how I based my database schema. This is why I send the content to Twitter first and use the response to post to my database.

This is the barest combination of elements hacked together in PHP, but it’s better than what I was doing before, which was posting to Twitter. And, I’m not going to proselytize, but how many of us have built a form that posts to a database, or requested that an API do a thing? That’s essentially all this is, and the details can be teased out in a couple dozen Google searches. Think about it.

Ideally, I would like for my URLs to have the format /note/tweet_id or custom slugs rather than the query string be obvious, but, predictably, I’m having some .htaccess challenges and I’d rather kill myself. There is also some unfinished code that saves a unique hash along with the tweet so that in the future I can append a permashortcitation (new favorite word) to the end of my tweets, but again, .htaccess, and I really would rather die than learn regular expressions. In fact, “Never Learn RegEx” is on my bucket list, so I have no choice. Also, speak about destruction, but apparently I’m having timezone issues with the timestamp.

I’m okay with all of this for now, because these are technical details (some of them glaring, yes), but I’m preoccupied by a shift in thinking. Ultimately, I would like to extend this model in order to write any length of content to my domain with the option to tweet 140 characters to Twitter, truly making Twitter an optional destination for anything, not just the micro-content originally intended for Twitter. This may help mend my mental dissociation between tweeting and blogging. But then I would be telling you all about how I built a CMS.

Tagged with web

Our Ragged History

→ An audio version of this article is available.

In 1992, for my father’s 30th anniversary in the United States, he designed and printed trading cards of our family’s history. They start in pre-war Eastern Europe and span the the Holocaust, life in Romania, growing up in the ’70s in Brooklyn, and his reign as king of advertising on Madison Avenue in the ’80s (my dad was literally, literally 80’s Don Draper). For the 20th(ish) anniversary of these trading cards, we worked together to adapt them for the web.

View Julius: The Cards →

Who am I, where am I going?

Tony Soprano, Join The Club

The Julius Cards are our origin story. Jews are like Wolverine. We have been experimented on. We have egregious gaps in our history. We all secretly have bone claws. The Julius Cards began as a novelty, stemming from my dad’s love of sports, toys and trivia, but by making them, my dad has become The Archivist of our family’s history. My brother and I are too maladjusted to want families of our own, so we wouldn’t point to this digital record and say, “This is who we are. This is what we came from.” But we could, if this weren’t the end of the family line.

My family is ethnically Ashkenazi, and lived in Timisoara, Romania during the Holocaust. Many artifacts of ours were either destroyed by Nazis or left behind when my immediate family came to the States. Dozens of relatives with vivid, full lives were lost as a result of the Holocaust as well. In my family, we can’t recover that information through oral tradition. This is in part because most survivors have since died, and also because some survivors, like my grandmother, refuse to talk about the war. This is apparently not uncommon. In Jason Scott’s apposite dConstruct talk, The Save Button Ruined Everything: Backing Up Our Digital Heritage he revealed that he has seven great-cousins that he doesn’t know the names of because they were lost in The Holocaust. His family was unable to talk about the loss.

The — creatures — who designed it wanted to make sure it stayed put, barring major moonquakes. They were building for eternity.

2001: A Space Odyssey by Arthur C. Clarke

I’ve been ruminating on some themes I’ve been exposed to over the past few years: digital preservation, the IndieWeb and futurefriend.ly movements, progressive enhancement, storytelling. They contributed to how I approached The Cards: looking both forward and backward. Longevity was the guiding design principle that informed all of my technical decisions, whereas many of my design decisions were allegorical. For example, Spinoza, the typeface, was chosen because it shares a name with Baruch Spinoza, a Jewish-born philosopher who did some work in optics, particularly on instrumentation and the design of lenses for telescopes (can see far into the past) and microscopes (very introspective). Very heavy-handed, no?

I did everything right with The Julius Cards: I published the work to “my” server, as much as it can be mine because I’m actually leasing space on a shared server, which I try not to think about too much. I didn’t use jQuery because I’m embarrassed by it. I built it to function without Javascript. All blocking requests that rely on a third-party are at the end of the document. The flash of unstyled text, while wince-worthy (for some reason? Like I’m ashamed for people to know that resources are loading?), is collateral for knowing that my work isn’t beholden to the whims of the Typekit CDN. I used a flexible, em-based layout to be screen-size agnostic. My breakpoints are based around the measure of the type, not common contemporary device widths. I spent hours beating every unnecessary byte out of every image, 112 in total, because many are sized for different breakpoints.

However, I don’t know if longevity as an ultimate goal is practical. Is it fair for me to say, “I built this thing to live forever,” because I designed for it to live forever? The web feels fractally brittle. We grandstand about how much we care about the things we make and throw around words like “craft” and “heritage” and “love” like we make a difference, but how many smart people wile away their days building what Andy and I refer to as “dog social networks”? A “dog social network” is an umbrella term to describe anything on the web that has about as much gravitas as an actual dog social network.

This brittleness is exhibited in practice regarding how we develop web today. We balk when we have to provide an experience to a minority set of underrepresented browsers or cases where we can’t rely on Javascript, and while it’s obnoxious to solve problems for a perceived set of invisible people, it’s our responsibility to make things robust if we’re proud of what we create so that people can actually experience them. There are things being built today that only function under a narrow set of constraints, and it could all be intentionally thrown away and celebrated for that. I’m referring to another unsustainable pattern where a thing is built to absorb as much of people as possible, gets sold, and decision-making power is relinquished to those who may not have the best interest of the thing or its fans in mind. This type of exchange, while seen as a success in one sense, is actually a big shame because the thing you built is dead, even if it was only a dog social network.

I don’t have enough perspective to speculate on the nature of the web, so I’m going to be myopic on purpose: What if it’s nature is to be impermanent, and that is its strength, and what allows it to evolve rapidly? I’ve worked hard to ensure that The Julius Cards will be around for a long time, but what if that’s unnatural? Anecdotally, one of my favorite things ever written is only available through the mirror at archive.org because the author’s family allowed her domain to expire when she died. When I die in a plane crash (because that is how I want to die), who will keep the servers running? Who will keep this thing alive for the length of time I intended for it to be alive for?

Four Songs by The Go-Betweens

Let me tell you about The Go-Betweens. They’ve been one of my favorite bands for the past ten years, though I stopped listening to them for a while after Grant McLennan died. If you know me you know I organize my music by season, and because I run on nostalgia, I like to add the season I was listening to ten years ago in with my current season’s playlist because I’m a masochist who craves the emotional jolt. I started listening to the Go-Betweens ten years ago this past summer when I received the song Too Much of One Thing on a mix from a mix-CD club I was invited into (egregious brag). I really got into the Go-Betweens the following summer, when I found one of their tracks at random in some unprotected directory on the web looking for some information on a series of tracks by The Stranglers. By THAT following summer when I decided to drop out of school for a little while, they were My Favorite Band, and I was fortunate enough to catch them on their reunion tour at Brooklyn’s Southpaw, which, like Grant McLennan, isn’t in our world anymore. So I want to share some of my favorite songs with ya’ll that I listened to then and am listening to now.

The Girls Have Moved

This track off of “Send Me a Lullaby”, my favorite Go-Betweens album, was the one I found that summer, and the one that started it all. I’d only known them for their softer, more sensitive side, so it was a surprise to me that they could rock. I was thrilled that a lot of their earlier stuff sounded much this way. It could basically be Gang of Four, but good.

On My Block

My favorite song off of Before Hollywood, my second-favorite Go-Betweens album. I wasn’t a fan at first, but the chorus got me hooked, and I would listen to it on repeat trying to figure out why I loved it so much while walking through the engineering quad during my second year at UMass (are you choosing a college? Don’t choose one based on the title of a Pixies song).

Your Turn, My Turn

Another one off of Send Me A Lullaby. I always found it kind of a slog, but then I never really paid attention to the mood, and now it’s one of my favorite songs of this fall. This is a distinctly weird song. I can’t get over the piano, the abbreviated delivery of the lyrics or the strange pacing. The music video reminds me a little of the one for Joy Division’s “Love Will Tear Us Apart”, maybe because Robert Forster (this one, not that one) looks a little like Stephen Morris.

You’ve Never Lived

Off of Spring Hill Fair. I’ve been familiar with this song for about a decade, but it only caught me now. The lyrics are Pure Forster: they seem to only tell part of a story, like it assumes you have some context. There’s also a Robert Smith quality to Forster’s voice here. I don’t know what the lyrics are about, but judging by my deeply personal reaction I’m going to have to assume that this song is about me. Aren’t they all?

Tagged with music