Archive for the 'Uncategorized' Category

The inadequacies of existing e-commerce solutions

Wednesday, August 20th, 2008

If you’ve ever thought that starting a company online and charging people money for your great software is easy, you’re seriously underestimating the pains of the current e-commerce state.

Consider this: You’ve got a great web-based software app. You think you’re going to be the next 37signals. You build out your application to perfection, skipping all that trivial stuff about charging for the software for the latter stages of the development cycle. You think you can push out all that payment processing mumbo-jumbo until the end.

Well, you are in serious trouble.

The problem isn’t even bottlenecked at a grandiose level - like lacking a great business idea to reel in the money. The pain is all in the details like setting up an online payment processing system.

I understand that trying to process credit cards should be a heavier process than setting up a lemonade stand, but the current state of the art is absolutely ridiculous. This is because the current players in the market are either 1) pigeon-holing all e-commerce transactions into simple, but totally uninteresting processes, or 2) completely ill-equipped to handle online commerce.

In corner number one, you’ve got players like PayPal, with whom you can easily set up a check-out form with PayPal express. Given that this is just about as brain-dead as e-commerce can get, you’d think that it’s as easy as filling in your name, getting a URL, and link your form to that URL. No. You’ve got to wade through a million pages of marketing rhetoric to get to any real documentation. And the end result is often so simple, that it doesn’t break the mold. If you’re doing anything remotely interesting, like a web-based software app, you’re not going to get much mileage here. Move along.

In the other corner, you’ve got big bank institutions offering online merchant solutions. Big trouble. Don’t even bother. From personal experience, I walked in and talked to no fewer than 3 representatives from your big names like Bank of America and Wells Fargo and got nothing but empty stares. “You want to do what?” “Wait, are you shipping anything?” “Do you need a terminal?” “You want a merchant account? We’ve got a nice merchant services package…” If you want to actually do credit card processing, you’re on your own when you talk to these big boys. They’re still living in a world where people walk into shops, swipe their credit cards in a terminal, and physically transact. Trust me, they’ve got good reasons to keep their focus (and employee training) in the physical space.

However, that leaves us web guys stuck out of luck. If you do your research correctly, you probably know that online payment processing comes in 3 pieces. First, at the layer closest to your application or system is the payment processing logic to initiate transactions and authorizations. There are plenty of great ways to roll this logic, my favorite being ActiveMerchant, a great gem for Ruby on Rails. This is the area closest to developers and I promise you will spend more time shopping for a solution than implementing it. You’re mostly in the care of savvy professionals here.

The next level, and one step removed from your application, is the Payment Gateway. See Authorize.net or TrustCommerce or Braintree. These guys provide an API for your application logic to talk to banks and do the actual transaction. Payment gateways are generally good people - they understand web commerce, since that’s their bread and butter. They can hold your hands a bit and even offer sandboxes and other developer friendly options to make sure your app is behaving properly. ActiveMerchant will generally abstract away gateway differences for you, so this step is solid, though it could use some improvements.

Another step removed, and the final step is your merchant account. Your merchant account is the part of all of this that actually touches the banks. This is where the Visa or Mastercard magic happens. This is also where you’ll pull your hair out trying to figure out why the support folks are speaking in alien languages.

For the most part, people who provide merchant accounts and the people who work for them do not understand what you are doing. They don’t understand web applications, they don’t understand why you’re doing what you’re doing and why you chose to do things a certain way. They don’t understand APIs, IP addresses, servers, Ruby on Rails, HTTP, SSL, or anything like that. They understand forms, paperwork, support tickets, legal documents, and all that bureaucratic burden.

I’m not kidding when I say that it took me over a *month* to finally get a merchant account properly integrated with my payment gateway. I won’t say who the two parties were, but let me say that no fewer than 10 bulky and sometimes unnecessary forms where sent back-and-forth in a span of 3 weeks with the rest of the time wasted in some weird support limbo.

For developers like me, who prefer to focus on the elegance, simplicity, and unerring logic of clean code, the frustration and archaic nature of filling out PDFs and DOCs just seemed like a step back in the wrong direction.

The problem arises from the many layers that it takes to build an e-commerce solution. There are too many middle-men and too many ways to lose empathy along the way. There is no way a support person at a bank can understand how web applications tick - they’re not trained for that.

So my question is - can there be a hero to arise from all this mess and deliver to us a better way?

Setting up subversion server on a Windows machine.

Tuesday, February 5th, 2008

I’ve been telling myself that it’s time to run my own subversion server for personal uses for a while now. So I decided to finally get started with the extra Windows box I had laying around. My plan was to host the files on the Windows box (a desktop) and have the files I needed to checkout available on my Mac (a laptop).

I don’t think it’s worth while documenting the entire experience. Instead, I think it would be useful to list the webpages I referenced.

First and foremost, I downloaded subversion from tigris. In my case, since I’m running this on windows, I grabbed the Windows binaries built against Apache 2.2.x.

Next, the best reference for starting a project with Windows is here. This entry talks about setting up the right environment variables and creating a repository. Note that the SVNService wrapper being referred to is no longer necessary. Instead, check this out. Here, the author denotes steps to setup an NT service with no downloads necessary with subversion 1.4.x.

Lastly, I looked for a tutorial on some of the most basic svn commands and found this article, which goes over some of basic concepts of subversion as well.

The above articles should be all that is necessary for setting up a Windows subversion server in minutes.

Safari 3.0 wins

Tuesday, November 27th, 2007

I’m an unabashed Safari hater. Correction, I *was* an unabashed Safari hater. I think the transition first happened when I picked up an iPhone and realized that Safari makes mobile browsing seem like second-nature. (I know, I’m such an Apple fanboy. I’ll go wallow in shame now.) Still, I was unconvinced that there need be yet-another-browser-to-support.

It’s no secret that I love working on web apps. A necessary part of writing good web apps necessitates delving into the front-end technologies that the end-user interacts with while using said web apps. Thus, I’ve always been a fan of Firefox (for it’s developer friendly tools and plug-ins, it’s strict upholding of standards) and IE (out of necessity, due to widespread adoption, and the fact that they really did a good job on IE7). I’ve come to live with the fact that these two browsers simply must be supported, but Opera and Safari were always troublesome.

Then comes along Safari 3.0. I would have never known had I not installed Leopard over Thanksgiving weekend. Not only is it blazing fast, standards compliant, elegant, and full of new-hotness - dynamic widget creator anyone? - it comes with it’s own Inspector tool. Included are handy tools like a DOM-inspector, a CSS box model metrics tool, and a network transfer analyzer. The latter even comes with helpful hints about how to speed up transfer times, reminiscent of YSlow. The only thing missing is a firebug-esque debugger where one could set breakpoints. Oh well, nothing is perfect.

In fact, I’m sure Safari 3.0 is still missing a few bells and whistles. Even as I write this entry, I notice the lack of support of rich WYSIWIG editting in Safari that I usually have with IE or Firefox. Like I said, nothing is perfect. At least I won’t loathe debugging Safari specific issues as much as I have in the past. Maybe it’s also time for me to give Opera another chance…

Apache - Upgrading OS X 10.4 (Tiger) to OS X 10.5 (Leopard)

Thursday, November 22nd, 2007

A while ago, I posted a blog entry about upgrading to apache 2.x on OS X 10.4. I just got around to installing the brand-spanking new version of Apple’s OS (Leopard, OS X 10.5) and realized that it comes with apache 2.2.6!

Unfortunately, it also comes with a rather bloated httpd.conf, which was unappealing to me. Not only that, but the conf file didn’t seem to be picking up personal conf files (default in /private/etc/httpd/users/). Fortunately, all I had to do to get back in the game was to back up httpd, apxs, and apachectl and then symlink them to my custom installation of apache, with my own custom httpd.conf.

I’m actually convinced that this is better in the long run than using the out-of-box apache installation, since this affords me flexibility going forward. I like to be in control of the software running on my box (which may or may not be in conflict with Apple’s easy-to-use stance).

Being a Father

Sunday, July 15th, 2007

Luke Wang was born on July 4th, 2007 at 1:44pm, a warm, cheery summer day. Despite the fact that it was Independence Day, it was quite a non-descript summer day, full of sun and a slight breeze. Of course, having been confined to the labor & delivery department of Kaiser, neither mom nor I were able to take advantage of that fact. I was anxious, nervous, and all-in-all quite queasy, and the dimly-lit room didn’t help. While mom was going through contractions, I felt myself fighting through my own nervousness. The birth itself went smoothly, Lulu having only been in real labor for no longer than 11 hours or so, and the delivery taking no longer than 30 minutes. Luke came out kicking and screaming, seemingly ready to take on the world and all its caveats.

I think it’s impossible to describe what it is like to suddenly come to full realization of becoming a father. Purposely, I’ve let all the emotions simmer down before making an entry here, as I knew only words of retrospect could do justice to the jumble of feelings that were suddenly thrust upon me. On that note, I’ve realized that there had been one overriding contemplation that I’ve had over the last week or so.

To bring life into this world is both a joy and an overwhelming responsibility, but it was also the onset of an epiphany. A baby is born into this world with no baggage, no past, no enemies, and no debt. When you think of all the new things to learn and experience for a newborn, it dulls the trivial things in our life we take as important - our everyday grind, our everyday matters, our everyday worries. It puts into perspective the everyday things in our life that we’ve become consumed in wrongfully, and frees us from the chains of mediocrity we’ve come to bind ourselves. At once, it is a new beginning for both the baby and the father.

What can we provide for our newborns? Of course, I mean more than just food, clothes, and shelter - I mean our knowledge, our sense of compassion, our sense of morality. Spare them our burdens, our hardships, and our immaturity. Spare them our love of bickering, our sense of greed, and our penchant for prejudice. Give them love, hope, and peace. Give them a better world in which to live, a better environment in which to grow. Give them truth. Give them honesty.

The one thing I can take away from this, as I step back and reflect on this little miracle of my own is that this is an opportunity for me to become a better person, and then to take that energy and posit it in a way that has lasting effects in this world. My contribution to humankind will be my willingness to give the next generation a better future, as should be the contribution of every father.

In the end, our society is built on the strength of our ability to not just create, but to share creation. That includes raising, and loving, our children.

Marketing 2.0 to go along with Web 2.0

Tuesday, May 22nd, 2007

I got to thinking: If I were to create a start up featuring a web 2.0 application du jour, how would I market myself to get that initial batch of traction traffic? It’s sometimes stunning to recall how I found all my web 2.0 staples like yelp.com, digg.com, and meebo.com.

So, besides Google Ads, here is my list of Marketing 2.0 do’s and dont’s.

Do:

  1. Get Dugg
  2. Stealthily mention yourself in wikipedia under hot dev terms like AJAX (Ahem, Meebo)
  3. Be viral and incite word-of-mouth.
  4. Have a presense on blogs and web-based articles.
  5. Have free T-Shirts.

Don’t:

  1. SEO
  2. Rely on e-mail spam
  3. Fight for impossible keywords.
  4. Build a crappy product
  5. Have Ads all over your site.

The Last Day of School

Monday, March 19th, 2007

It’s the end of the Winter 07 quarter at Stanford, but it’s also a bigger milestone for myself. This was my last day of school. Forever. (Well, there may be a change of plans in the future, but for now, it is.)

The title probably sounds corny, like I’m some middle schooler looking forward to the first day of summer vacation, but in truth, it couldn’t be any farther from what I’m feeling right now. It’s a sort of relief that now I am finally done with school after 17+ years worth of education (1-12 grade school, 13-16 college, and 16-17 masters), but it is also a jarring change - I’m now, officially, a full-time contributing member of society. Fortunately, this is what those 17+ years have been design to accomplish.

Of course, the more depressing point of view that I keep revisiting is that now I’m not the one absorbing knowledge - I’m going to have to watch it drain away as time goes by, regardless of how much I try to retain it and learn more.

Google Maps Confusion

Tuesday, January 23rd, 2007

I guess Google isn’t perfect after all. Since, this won’t get you anywhere fast. They’ll probably fix this problem soon, but the following screen shot shows you what I mean:

 googlemaps1.png

It’s funny because I’ve yet to see an error similar to this one in all my Google Maps uses. Note to users, yes there are alternative map solutions. For example, http://maps.yahoo.com or http://maps.live.com. In fact, live does a pretty good job on this particular query, despite the cluttered interface.

Birthday Coming Up!

Tuesday, October 3rd, 2006

My B-Day is coming up woohoo! Already got NBA2K7 for XBox 360 and a new Dell Desktop. What else is in store for me?

Enjoy Life and Food!

Thursday, September 7th, 2006

I love making delicous food for my husband. I feel extremely happy when he says,” um… so good…”