Skip to content


So You Want To Make A Website In Rails

I’ve been getting a lot of requests lately asking about how much Ruby on Rails someone needs to know, to start coding a prototype. These come from folks with a variety of skills and levels of comfort with programming, mostly with a smattering of front-end (HTML, CSS, some Javascript) exposure, or perhaps some experience in having done some coding in college or for a job many years previously. This article is an attempt to put together a list of pointers that I have been developing over the last few months to help respond to these requests.

Read More →

Where To Eat And Drink In Seattle

I lived in Seattle for three years, and get asked every once in a while where I liked to chow down and get a drink. So here’s a list of places that were my favorites while I lived there, broken down by neighborhood and cuisine, in random order. There should be a whole category of places that serve food to help you with the gray, cold, depressingly misty weekend afternoons but maybe if you’ve had a sufficient quantity of beer, it won’t matter.

I never found a satisfactory Chinese, Indian or Mexican place in Seattle. For context, my favorite places to eat these cuisines at in San Francisco are, respectively, Oakland’s Chinatown (because the parking’s a lot easier); Dosa and Aslam’s Rasoi; a bunch of places in the Mission (of course.)

Read More →

The Cultural Roots of Intolerance

The murders of Trayvon Martin and of Narendra Dabholkar are both attributable to flaws in the cultures of the countries where they were perpetrated. Martin’s death came as a result of a culture of fear that had been exacerbated by the divisive and polarized political debates in the United States. Dabholkar’s killers were emblematic of the anxieties that many in India find themselves gripped by, as that nation continues to make its stumbling way towards modernity.

Read More →

The Trainer Wheels Came Off

I signed on to my first job the Tuesday after Labor Day 2001. I quit my last one, the Friday before the same weekend of this year.

The euphoria wore off on Wednesday. On Thursday, I decided that the biggest challenge of working for yourself was not knowing if you had done a good job at the end of the day or not. For over fifteen years – including the years I was in grad school – I pretty much knew the answer to that question every single day. If I thought that my boss (“advisor,” when I was a grad student) was feeling good about me, then I could check the day off as a success. Otherwise, I knew I had to work harder.

Read More →

It’s Funny Being An Online Consumer Sometimes: A Brief Twitter Client Review

I’ve recently decided to take my social media presence a lot more seriously, for various reasons, which includes one very good one that I’m not quite ready to reveal yet. At any rate, I’ve had to consider how I’m going to consume multiple social media feeds, to which I might quite easily add more over time. Let’s just say I’m experimenting with a lot of ideas right now, and each one might merit its own marketing channel.

I was a devoted user of Tweetdeck many years ago, and have been using it on and off recently. What caused a big change in my relationship with Tweetdeck was that I divested myself of my Windows machines and have been using only a Macbook Pro now for a few days. I’m pretty sure I’m going to stick to an OSX machine for the near future, mainly because I’m coding a lot more now, and the *nix ecosystem support you get from the OSX family of devices is what clinched it for me. Well, more specifically, it was the ease of using the Ruby on Rails frameworks on OSX, compared to struggling with Windows and Cygwin.

That’s a different story, though – this one is about being an online consumer, rather than a member of the developer community. My problem with Tweetdeck was that the scroll function seemed to have mysteriously disappeared. Now I know this is probably operator error – not only does the helpful help screen on the Tweetdeck client tell me that my arrow keys should allow me to scroll through … well, through something, it wasn’t clear what … but I couldn’t find any obvious complaints online about this functionality being unavailable on Tweetdeck’s Mac client.

What I did find though were articles making oblique comments about how the client isn’t what it used to be. A search on the Internet for the phrase “tweetdeck scroll down” revealed titles like “9 reasons why the new Tweetdeck is a step backwards,” and “How I learned to stop worrying and love new Tweetdeck.” A review that echoes Kubrick’s satire of the Cold War is hardly something to inspire confidence. This was a perfectly serviceable client, that did its job nicely. Why did Twitter break it?

Of course, I know why they did – because someone at Twitter figured they had to justify their new ownership of the product, and the only way someone can leave their mark on what they own is to change it, even if it’s a violation of the adage that what isn’t broke, don’t need to be fixed. I have been an Internet product manager too long to not recognize this urge. It hurts to be on the other side of the fence, though, to be the consumer who’s been affected by someone’s grandiose attempt at misplaced creativity.

Reading reviews of other clients only led me further into the jungle of mediocrity that Internet consumers have to face. As such reviews have to be, they were all subjective – none of them even tried to compare the clients on a somewhat-equal footing. Some of the points noted were barely passable beyond being table stakes features – Digital Trends’ reviewer notes for example that “Tweetings … offers an admirable set of features including filters, a tweet scheduler, and the ability to tweet more than 140 characters.” Really? I can tweet more than 140 characters? How groundbreaking!

The icing on the cake after I had picked my final choice – to buy a copy of the Twitterific app. $4.99 later, I realized that it didn’t have a way to line up the streams in a single window.

I then switched to Hootsuite, which at least this far appears to be free – I know there’s a premium version but my basic usage needs appear not to require that level of service. But of course, it doesn’t come as a native app and I have to load it in my browser. That wouldn’t be a big deal, really, except that now that I’m a Mac user, I can’t tab through each window of the same application. Thankfully, there are at least three browsers that run on an OSX machine, at least two of which support the Hootsuite client, so if I just designate one browser application as my Hootsuite client, I can still get to my Twitter streams with easy keyboard strokes.

I don’t know if there’s a single service/company to blame here for my travails, though I’m sorely tempted to blame Apple and Steve Jobs – not only does the Apple App Store not allow me to try apps out for a brief while and get refunded (you can do that with the Google Play Store), it’s the Tab key behavior that really kills things. And it could be that the scroll problems that started off my journey are in fact unique to the design of the Apple GUI.

But there is suffering for the typical Internet consumer beyond the confines of the Apple Inc walled garden. Products are reviewed poorly, if at all, and the freemium, tiered, pricing model makes it almost a virtue to not tell consumers what they’re getting for their money. There might always be a new pricing level lurking around the corner as you get more hooked into a product. Would consumers tolerate auto manufacturers who wouldn’t tell them clearly that, say, once they start driving past 65 mph, they have to send in an extra $2,000 to the dealership? Yet, that’s exactly what we all willingly sign up for with many online products.

For the moment, I have no solutions, other than to stay away from being a consumer as much as possible. But there’s a good lesson to be learned here in my future as a product manager and service provider!


The Dark Side Of The Personalized Web

There has been a consumer revolution in the last decade, along the lines of what happened in the fifties during the “Mad Men” hey-day, but not all is good when there is so much consumer choice. Nothing exemplifies this better than how consumption of media has shifted from the traditional pull model to the socialized push model of Facebook and Twitter.

Some of these changes have happened even within this decade, so rapid has been the evolution of the consumer Internet in the last few years. One example of how the pull model was supported by what is now the “old” technology is RSS, and the story of how it has been supplanted by social media.

Read More →

Standing Up A Basic User-Based Site On Rails 3

I put together a basic recipe for a Rails 3 site to get Devise and CanCan working to enable authentication and authorization on a minimal site. I also threw in a small tweak to get it to work “out of the box” on Heroku – which basically means a change to use SQLite3 only in development and to use Postgres in production instead.

There are two sets of steps you have to run to get this basic functionality working:

Read More →

A Simple History of Christianity, Part 1

The origins of Christian thought occurred in a time and place that together occupy a prominent place in human history. Christianity’s origin is at the juncture of the old and the new, a time when Ancient History, whose record has largely been effaced from posterity, was fading away, and a more documented era in human history was beginning. Thus, the history of Christianity is able to contain both the mythic aspect of legend as well as the tangibility of contemporaneous occurrence.

The religions extant today, like Hinduism, Confucianism and Buddhism, that are senior to Christianity were formed at least a few hundred years before and much less, perhaps only patchy, historical evidence is left of the progenitors and prophets of these faiths. Those that came after are much more recent – starting with Islam in 700 A.D. – and the fact that the father figures of these religions are historically verifiable is paradoxically a liability to the religion. Without an aura of miraculousness, these religions have a weaker ability to compel us to suspend our disbelief.

Being children of the Enlightenment, we naturally do not believe in the miraculous origins and stories of Christianity. However, this doesn’t take away from the near-certainty that Christ and his followers were real historical figures, not least because the origins of Christianity clearly took place in reaction to the practices of an established religious community – the Jews – whose traditions are still largely preserved from that era. The continuity of the Jewish tradition from ancient times to today in themselves form a guarantee of the historical truth of the story of Christ.

Read More →