Archive for the ‘Opinion’ Category

My Arrival To The Bay Area

Posted on February 21st, 2010 in Opinion, Programming, Ruby On Rails | Comments

Well, after writing in my last post a month ago that I was officially unemployed, I was blessed with acquiring a new full-time job just four days later. Best of all, it’s where I always wanted to be, the Bay Area!

Tomorrow will officially be my first day as a Rails developer for RepairPal. I was in their offices last week to meet them personally, and everyone seemed very friendly and the company seems to be doing some cool stuff, so I hope I’ll be a part of all the awesome stuff that’s to come. It’s really a dream come true for me to be where I’m at right now, at this very moment. It’s proof that if you really want something bad enough, and you work hard for it, whatever you want will come true.

No Rest For The Unemployed

Posted on January 26th, 2010 in Books, Computer Science, Databases, Linux, Mac, Open Source, Opinion, Programming, Ruby, Ruby On Rails, tips | Comments

After two years, yesterday was my final day of being a developer for BarterQuest. As anyone living in expensive New York City in the same situation, I have been focusing part of my energy looking for a new gig. I’m pretty confident, despite the current economy, that I will land on my feet sooner rather than later. I have a few leads, with one in particular that I am really hoping will come through.

In the meantime, I’m not just throwing my resumé in the face of companies everywhere in the U.S. I have also decided that since now that I have quite a few extra hours in my days, I should really do productive things instead of sitting on my couch and re-watching all previous seasons of 24 (believe me, I would watch all 7 seasons in a row if I could) or jamming away to Guitar Hero. This is a perfect chance to do lots of technical things I’ve been wanting to do for months, but just never got the time to do so. Here’s a short list of some goals I’d like to get started on.

Learning new stuff

For the past two years, I’ve been exclusively using Ruby and Ruby on Rails at my day job. I’ve always wanted to broaden my skills by doing other types of programming, but when you take into consideration that I would usually be at work more between 9-10 hours per day, plus a commute that would sap an additional two hours, there wasn’t much time for me to be able to do personal things, let along learn new stuff. Now that I’m finally free, I can now spend more time with those things I’ve wanted to experiment with.

I’ve always wanted to learn iPhone application development. I know the basics of Objective-C, and have the book iPhone SDK Development by Bill Dudney, but I was never able to sit down and code something up. I have a few ideas for apps, so even if I can make a simple app that’s accepted to Apple’s App Store will be an achievement for me.

I’ve been very interested in implementing Push technology to web apps, like Comet or Web Sockets, using nginx’s Push Module and Orbited.

Although I’ve never had the opportunity to work with extremely large data sets, I’ve always been curious about frameworks like Google’s MapReduce and Apache Hadoop, particularly how well they can “crunch” the data thrown at them.

Keep on with what I already know

As I mentioned, I’ve been using Ruby for years now, and I know Ruby on Rails and Sinatra pretty well. However, just because I want to learn new things doesn’t mean that I want to abandon this awesome language. In fact, I want to keep using it more with the latest toys.

Thanks to Ruby Version Manager, I was able to safely install the latest versions of Ruby 1.9 and MacRuby and start learning their new features. I was also able to check any possible compatibility issues in my older applications with different major Ruby versions. Seriously, if you are a Ruby developer using a Mac or Linux, install RVM now if you haven’t.

Recently, there have been more and more news about Ruby on Rails 3, the next major release for the wonderful framework. I’d like to stay one step ahead of the pack and start learning about the new changes before it officially hits the web. One of the leaders of the newest Rails changes, Yahuda Katz, has written lots of blog posts relating to the changes in Rails 3. They’re definitely worth a read.

Strengthening my shortcomings

There are quite a few things – development-wise – that have been bugging me for a long time, yet I’ve never taken the proper steps to correct. Now is as good a time as any to take on these things and finally conquer them.

My main weakness, as a web developer, is that I’m pretty bad at design. I know CSS and its properties, I know about browser incompatibilities (having been a victim many times before by the evil and immortal Internet Explorer 6 browser) and all that stuff. But as far as design goes, like font sizes, element placement, usability and colors, these things are not my strong suit. I’ve actually stocked up on some books about these subjects (like Don’t Make Me Think by Steve Krug and Web Design for Developers by Brian Hogan), so I hope that by the time my unemployment ends, I’ll be much better off making my work look good – or at least decent.

Another weakness I consider is that I get distracted from development from time to time. It’s not frequent enough to affect the quality of my work, but it’s enough to annoy me when I do it subconsciously and I then catch myself in the act. I have read some people who had some success using the Pomodoro technique, so starting tomorrow I decided that I’ll give it a try. There’s a nice little app called Concentrate for the Mac that seems to be just the thing I need during those times when I need to get stuff done and not get distracted.

Beef up my GitHub profile

I have to admit that I’m a little bit ashamed to see my GitHub profile virtually empty. For a long time, I’ve been wanting to add more of the projects that I have in my laptop to GitHub and see if some of them take a life of their own. Sadly, for whatever reason, I haven’t done that. Most of the times I’m a bit too critical at my code and think it’s embarrassing to make public, but that’s really what I need to do to get better as a developer. I can take criticism with the best of them, so there’s really no excuse. I need to make more of my code open-source, period.

Not only do I want to show my own work, I also want to give back to the community. I have used so many open-source projects over the years, yet I’ve only submitted a handful of patches to very few projects. I don’t want to be a person who takes, takes, takes and never gives anything back in return. So I’m going to take steps to correct that. I’ve started cloning some repositories of my favorite projects from GitHub to my computer to start reading their code more in-depth, which I had been doing anyway. I’ll check if these projects have Lighthouse pages with open tickets, or if there are any open issues on their GitHub page. A few years ago, Dr. Nic wrote an excellent post titled “8 steps for fixing other people’s code” that inspired me to start finding features or defects that I can handle.

I have to say, I’m only one day into this routine, and I don’t remember the last time I felt this free and liberated doing what I wanted to do. Full-time employment is great for earning money and making substantial stuff, but sometimes there’s a feeling of emptiness due to not being able to explore on your own. Being unemployed doesn’t mean that you need to spend all your time looking for work. Unless you’re truly struggling economically and can’t pay the bills in the next couple of weeks or even days, why not spend part of your time gearing up for the future?

Redis rocks!

Posted on November 5th, 2009 in Databases, Linux, Mac, Open Source, Opinion, Programming, Software | Comments

In my development blog, I previously wrote that MongoDB was the future of database storage. I might reconsider my decision, now that I’ve discovered Redis. In a nutshell, Redis is a key-value store. But it’s not a simple key-value database, as it has lots of commands and extra goodies, such as file persistence (so data can be stored from memory to a file, and restored in case of failure) and awesome data structures like lists (with push / pop) and sets (even ordered sets). Besides that, Redis boasts atomicity and even master-slave replication. It’s quite a lot of stuff for a lean package.

One of the things I love the most about Redis is it’s speed. Believe me, this little database is fast. Redis includes a benchmark tool, so I ran the default benchmark (Approximately 10,000 total requests per command, from 50 simultaneous clients) just to demonstrate its raw speed. These tests were run on a Mac Mini (1.83 GHz Intel Core 2 Duo, 2 GB RAM) under Ubuntu 9.10 Server:


dennmart@ubuntu:~$ redis-benchmark
====== SET ======
10005 requests completed in 0.14 seconds
50 parallel clients
3 bytes payload
keep alive: 1

34.89% <= 0 milliseconds
99.19% <= 1 milliseconds
100.00% <= 2 milliseconds
74111.11 requests per second

====== GET ======
10003 requests completed in 0.13 seconds
50 parallel clients
3 bytes payload
keep alive: 1

34.62% <= 0 milliseconds
99.79% <= 1 milliseconds
99.83% <= 2 milliseconds
99.87% <= 3 milliseconds
99.91% <= 4 milliseconds
99.94% <= 5 milliseconds
99.97% <= 6 milliseconds
99.99% <= 7 milliseconds
100.00% <= 8 milliseconds
74649.25 requests per second

====== INCR ======
10005 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1

25.60% <= 0 milliseconds
99.73% <= 1 milliseconds
99.80% <= 2 milliseconds
99.83% <= 3 milliseconds
99.86% <= 4 milliseconds
99.89% <= 5 milliseconds
99.92% <= 6 milliseconds
99.95% <= 7 milliseconds
99.97% <= 8 milliseconds
100.00% <= 9 milliseconds
65392.16 requests per second

====== LPUSH ======
10001 requests completed in 0.13 seconds
50 parallel clients
3 bytes payload
keep alive: 1

37.62% <= 0 milliseconds
99.78% <= 1 milliseconds
99.82% <= 2 milliseconds
99.86% <= 3 milliseconds
99.89% <= 4 milliseconds
99.93% <= 5 milliseconds
99.96% <= 6 milliseconds
99.99% <= 7 milliseconds
100.00% <= 8 milliseconds
77527.13 requests per second

====== LPOP ======
10000 requests completed in 0.14 seconds
50 parallel clients
3 bytes payload
keep alive: 1

34.13% <= 0 milliseconds
99.69% <= 1 milliseconds
99.82% <= 2 milliseconds
99.86% <= 3 milliseconds
99.90% <= 4 milliseconds
99.93% <= 5 milliseconds
99.96% <= 6 milliseconds
99.98% <= 7 milliseconds
100.00% <= 8 milliseconds
74074.07 requests per second

====== PING ======
10000 requests completed in 0.12 seconds
50 parallel clients
3 bytes payload
keep alive: 1

43.79% <= 0 milliseconds
99.80% <= 1 milliseconds
99.85% <= 2 milliseconds
99.89% <= 3 milliseconds
99.91% <= 4 milliseconds
99.93% <= 5 milliseconds
99.97% <= 6 milliseconds
100.00% <= 7 milliseconds
86206.90 requests per second

Yeah, you read that right. On this somewhat low-end computer (by today's standards), Redis still manages to do over 74,000 SET (write) and GET (read) operations per second. Push and pop list operations also do well over 70,000 requests. On bigger hardware, expect these numbers to be much higher. Besides speed, I've also been impressed by the stability of Redis. I've been running Redis non-stop on the Mac Mini for over two weeks, and I've never had a single issue with it.

I got really interested in Redis after Defunkt (of GitHub fame) open-sourced Hurl. Hurl was an entry in this year's Rails Rumble competition. I used it quite extensively when developing with PayPal's APIs. After it was released, I noticed that Hurl used Redis for persistence. I was kind of puzzled why a key-store value was used for this. However, Defunkt wrote an excellent post mostly explaining the SORT operation, but also included some additional details on how Redis was used in Hurl. It made the decision to use Redis clear. Well, I'm also willing to bet that he used Redis because us programmers love to use the new hotness.

I feel that Redis will be something big soon. There are a few open-source projects using it, including the aforementioned Hurl and Resque. I already have a few ideas where I can use some of this functionality for current sites that I'm working on (such as simple counters, or a tag-like system where we can push and pop tags from a list). Check Redis out if you need some quick and simple storage.

Well, excuse me for not going to Harvard…

Posted on September 3rd, 2009 in Computer Science, Opinion | Comments

Recently, I’ve been looked over two different job opportunities. That’s nothing new, and nothing that will bring me down. However, the reasons behind why I was looked over annoyed me a lot. Apparently, these companies were looking for people from Ivy League schools. Seriously? That was the main reason? If it was, to me it’s one of the most stupidest reasons out there to not give a job to someone who would otherwise be qualified for the job.

I do know that the difference between a well-qualified developer and an average one is usually huge. But is there really that big of a difference between a Harvard graduale and a graduate from another university with the same degree? It’s not like the fundamentals of Computer Science are different anywhere else. It’s not like people in Harvard use different design patterns, or use them more efficiently (or worse – come on, we’re all human). I still don’t understand why someone is over-looked because of the name of the university on their degree.

I guess these employers probably see that someone who graduated from one of these ‘high-class’ schools is a dedicated, super-smart individual. It doesn’t mean that I don’t have those qualities because I went to the Interamerican University of Puerto Rico. Perhaps I didn’t have thousands and thousands of dollars to go to one of those schools. The joke I have with my mom now ever since I told her this is that I will “never forgive her” for not sending me to an Ivy League school and ruining my life.

There are tons of smart, bright, über-talented people out there. I’m willing to bet most of them didn’t go to Harvard or Brown or Yale. Don’t skip a diamond in the rough because of their Alma Mater. You’d be surprised at what you can find if you broaden your views just a little bit.

Signup form from hell

Posted on August 20th, 2009 in Opinion, Web Development, tips | Comments

Today I stumbled upon a site which shows how to create a ‘magical’ user registration form, using a little bit of CSS and jQuery magic. Go ahead, play around with it once. I’ll wait.

Are you finished? Good. Now please don’t ever do this in your own websites. Ever.

Have you ever been around other websites where you need to register, only to see a humongous form that needs to be filled out? Chances are, as soon as you saw that huge form, you clicked on the ‘Back’ button of your browser, never to return again.

Now, imagine the same site and it still requires you to fill out that huge form. However, instead of showing you upfront about the time you need to spend filling out that info, it only shows you two fields. You immediately think “Cool, I’ll be registered in no time at all!” Then you click on the ‘Registration’ button… And more fields pop up. Begrudgingly, you fill out these additional fields… Only to be shown more fields. Do you see where I’m going?

Don’t torture your users into filling out needless information. Unless you’re working with some government or financial entity, you really don’t need all that information, do you? Keep it as simple as you possibly can. For example, I loved Heroku’s sign up process, where just an email address is required. They send you a link through email, where you click and voilà, you are now a registered Heroku user. Simple and effective.

Another alternative is what’s called “Lazy Registration”, where you can actually use the main functionality of the site without registering. Only when you need to actually register for something (like to save the information for future use), the sign-up form will appear. By this time, the user will know how much value your site gives to them, so if they were happy with what they saw with the non-registration parts of your site, they will gladly register and continue to use your site in the future. Also simple and effective.

You ultimately decide what needs to be in your registration form. Just don’t be surprised when you find that your 5-step registration process isn’t gaining any new users to your site. We’re not really dying to use your site, you know.

Update: As soon as I posted this, Jason Fried from 37signals wrote a post about signup form redesigns for their products. I thought I would add it here, as 37signals is a company I respect and appreciate for writing these kind of posts.

Twitter – It’s all about you

Posted on August 19th, 2009 in Opinion, Sites | Comments

It seems like the current hotness is Twitter, with tons of publicity about how their growth in the past couple of months has been staggering. Of course, as with any other service on the Internet, with more awareness about the product, more people feel the need to bash it because it’s not their thing. While Twitter has been blowing up, I see more and more comments around the Internet from people claiming that Twitter is anything from stupid to retarded, including editors from well-known tech publications. But it’s not only online – I’ve been in conversations with people who also declare the same things to anyone who’s listening in their vicinity.

While I understand and respect everyone’s opinion on the matter, I believe that it’s mostly a matter of them giving in to their perceptions of Twitter. Here are a few of the most-repeated issues people have against Twitter, and my own point of view regarding those issues.

“I don’t care about other people’s lives”

By far, the most common issue people have against Twitter is that they say they don’t care about the minor and insignificant details that people usually post on Twitter. I have to partially agree on this (I mean, who cares that someone smiled when listening to Ricky Martin on the radio?). But just because a lot of people do this, it doesn’t mean that the entire Twitter universe is filled with people who post every insignificant detail of themselves. While I do post stuff that no one would care about from time to time, I refrain from doing it full-time.

Also, these are the exact same people who visit TMZ every day and talk about what they showed in Access Hollywood the other night. Face it: by far, most human beings are attracted to gossip. Do you know somebody who apparently has nothing better to do than peek outside the window and check what the passers-by are doing? Are you one of those people? Trust me, I know a lot of people who do this. So why do these ‘curious’ people shun Twitter because people expose details about their life?

This brings me to my next issue.

“Only celebrities have anything interesting to say on Twitter”

Twitter’s explosive growth is thanks in large part by the constant news reports about celebrities joining in and chatting with their fans. Ashton Kutcher made major waves with CNN when they had their little ‘competition’ to see who would be the first to reach 1 million followers. Oprah Winfrey exposed the site to millions of her viewers when she created her account during one of her shows. Even ‘bad’ publicity seems to have helped – I bet that a lot of baseball fans signed up after hearing about Twitter when manager extraordinaire Tony La Russa sued Twitter over someone using his name on the service.

In any case, celebrities definitely are not the most interesting people on Twitter. Well, it depends on who you are. If you’re part of the TMZ-lovin’ group I mentioned above, then Twitter will be celebrity heaven for you. But for others, like myself, celebrities are pretty damn annoying. For example, I’m a fan of Shaquille O’Neal, but his Twitter stream makes my head hurt (one of his latest tweets: “thanks 2 all da fans who watched last nite & made my sho get da best numbers in yrs”). Also, while I adore Mark Hoppus of Blink-182, his tweets recently have no substance to them (“Apparently “make-up sex” has absolutely nothing to do with making love to the make-up at the mall cosmetics counter. Sorry everyone. My bad.” Funny, but what the hell?)

“I’m not interesting” / “Who the hell is going to follow me?”

You’re not interesting, you say? Guess what: I’m not either. I’m willing to bet that more than 99% of the millions of current Twitter users aren’t really that interesting either. But for every Twitter user that doesn’t interest you, there are lots of people do do find that Twitter user interesting. Like I said above, I’m not interested in reading through Shaq’s poor grammer, but there are two million Twitter users who do. I don’t expect everyone to follow what’s going on with GitHub, or see what J. Chris Anderson has been doing with CouchDB.

This brings me to my own conclusion about the use of Twitter:

It’s all about you

Yes, about you. It’s up to you how you decide to use Twitter. Like I showed above, most of the people I follow on Twitter are people within my own field. They share a lot of information about things I’m interested in, and a lot of times they also share information that really hasn’t hit ‘the rounds’. It’s fun to hear something on Twitter an hour or two before other major sites pick up on it.

Another use I give to my Twitter account is for my own selfish reasons: To have some sort of record about things that I might have forgotten if I hadn’t written it down somewhere. After all, Twitter is billed as a ‘micro-blogging‘ site, so I blog about these occurrences in my life. It’s a nice little place to see moments that were awesome or important in your life, like this tweet from December 2007, where I was interviewed for the job I currently hold in New York City. Yep, I’m sure these tweets make most everyone say “I don’t care”, but like I said, it’s all about me, in this case.

So it’s up to you decide how to use it, but ultimately, it’s up to you to decide not to use Twitter at all. I’ve encountered people who are rabid Twitter fans (the same type of people who felt ‘jittery’ and ‘naked’ when Twitter was down a few weeks ago) who desperately try to shove Twitter down other people’s throats, and get visibly frustrated when the other people say that they don’t feel like it’s useful to them. There are few worse things than having someone impose something on you that you simply don’t care about. There’s nothing in this world that works for everybody. When something exists that makes every single human being in this planet say “Whoa, that’s great! I’m going to use it all the time!”, let me know. I expect to be dead by then.

If you gave Twitter a try and still think it’s the lamest, most boring thing ever, then good for you. Just don’t think that the millions of Twitter users who do find it useful and/or entertaining are wasting their time. We surely aren’t.

Take The Risk – It’s Totally Worth It

Posted on March 11th, 2009 in Opinion | Comments

The following post is something I sent a friend who’s still works at my former workplace. She was feeling a bit down due to the circumstances that have been happening there (and that I know all too well), so I offered her this piece of advice. This really isn’t technology related or anything, but it’s something I wanted to post to keep on my blog, to remind myself whenever I feel stuck in my life.

You’ve been there much longer than I was, and you know better than I that nothing will ever change. When I left, I was obviously happy, but I still felt a bit bad for those who stayed behind. But as I think about it, the people who have stayed are usually because of their own choice. It might sound cruel, and it’s not my intention to make it sound like I’m a heartless bastard, but usually people are in negative situations because of themselves, because they don’t do anything about it.

I spent the better part of 2007 doing everything I could to find a new job – I would learn new things related to my field, I would scour job sites, looking for jobs that sounded better than my current situation at the time, I would send resumes all over the place. It takes a while, and you get pretty damn frustrated when you get interviewed by companies and never hear back from them. But I’m a firm believer that if you want something and you work for it, eventually everything falls into place.

I want you to take a moment and honestly assess yourself. Have you done anything to improve your current work situation? If not, why haven’t you done anything? Are those situations really impeding your ability to move on to something better, or are they just excuses for procrastinating? On the same note, if you are doing something to try to make things better, are you giving it your all? You’ll need to really want something to have a good chance at getting it.

I tell you these things because for a while I was pissed off because things didn’t get better. In reality, they weren’t getting better because while I thought I was trying to make things better, I really wasn’t doing much to improve anything. Sometimes you need to take a good, long, hard look at yourself to find what’s wrong. Only then can you begin to take steps to cure everything.

Hopefully you don’t take this message the wrong way. I got nothing but love for you, and I’m truly happier when someone is doing awesome than when I do well myself. I want to see my friends succeed even more than I do. So I hope you’ll be able to do so. And if you need help, then what the hell am I here for?

The above post truly reflected my life a few years back. I was miserable, feeling stuck in a job with no opportunity to shine or do anything worthwhile. But I realized I really wasn’t doing anything to help my situation. So it was pretty stupid of me to be angry at the world when it was really my fault. Once I realized that and got my ass back on track, things started falling into place.

This whole mindset I sent my friend was due to a book that was recommended to me, called The Ultimate Secret to Getting Absolutely Everything You Want. I admit, I’m pretty skeptical about these types of books, but Mike Hernacki (the author) kept this secret as simple as possible. It all boils down to one thing: If you want something, you must be willing to do whatever it takes to accomplish it. That’s it. Simple, isn’t it? And it’s so true. People are so afraid to take risks, that opportunities pass them by when they could’ve reached out and taken control of what they wanted.

I’m pretty happy at this moment in my life. But if the need ever arises to find change, I know what to do. I hope my friend does too.

What Have I Been Up To?

Posted on March 6th, 2009 in Books, Databases, Mac, Open Source, Opinion, Programming, Ruby On Rails | Comments

It’s been quite a while since I last updated this blog. I should seriously start writing more often. So, what have I been up to? With the cold weather here in New York City, it gets difficult sometimes to go out and have fun in the city. As usual, most of my time is spent on technology, software development, stuff like that. Here’s a brief recap of what I’ve been working on:

Got a new MacBook Pro, and I love it – I finally gave in and bought myself a shiny new MacBook Pro. I’m having a blast with it. For the open-source developer in me, this has everything I could ever want. It’s a beautiful and sleek machine that has gotten me highly motivated to start expanding my knowledge in different directions. While I still consider these laptops to be pricey, they’re really great.

Learning Objective-C for Mac and iPhone development – Since I got a nice Mac, I figured I should start learning Objective-C, then eventually get into Cocoa and the iPhone SDK. I’ve always been impressed by some nicely-done open-source Mac applications, and iPhone apps have always seemed to be so creative, so I wanted to learn how to build some myself. Since I’ve been working for so many years on dynamically typed languages (like PHP and Ruby), it’s kind of a total change of pace to go back to a somewhat-statically typed language like Objective-C. It’s been a bit of a challenge, since I last used a C-based language back in my college days. But it’s going along well so far.

I’ve compiled quite a few resources for learning all of these things. I recently purchased a book called Programming In Objective-C, which seems like the de-facto book on Objective-C, as it’s pretty extensive..And there are a few good screencasts – PeepCode developed a screencast dubbed Objective-C for Rubyists, and The Pragmatic Programmers have a screencast series by Bill Dudney called Coding in Objective-C. Of course, Apple has done a fine job with their Objective-C documentation. All of these resources should get you coding in Objective-C in no time.

The iPhone development part is mostly being learned because at my day job we would like to create a nice iPhone app for users of our site. I truly think that a mobile interface will expand our user base easily, even if people say they don’t really use mobile interfaces for a lot of things. I find myself using Facebook and Amazon’s iPhone apps more than I visit their sites.

BarterQuest is getting better and better – It’s been a wild ride on BarterQuest since we launched. We’ve been featured all over the place, from blogs to television shows, and we’re getting more and more users visiting, registering and trading on our site every single day. I’ve even traded twice already, and everything has gone as smoothly as it possibly could. It’s a great way to get the stuff you want by getting rid of the stuff you don’t want.

If you haven’t checked out our site yet, or haven’t done so in a while, I highly recommend you visit us soon. We’re going to be adding support for Real Estate in a few weeks, so our range of tradable items will greatly expand. And stay up to date with all that we’re doing by following us on Twitter.

Learning (and liking) CouchDB – My curiosity with CouchDB started when people were mentioning it quite a bit, and some Rails libraries like CouchRest were gaining some attention. So I checked it out for the first time, and I had no freakin’ clue why someone would use document-oriented databases, when relational databases did just fine.

Then a week I was working on a side project, and when trying to design my classes, I noticed that I would either have to denormalize my database tables, or be strict with normalization, but have a rather messy database schema. Then it just hit me – I finally knew the reason why CouchDB would rock in this scenario, where the data I was storing wouldn’t always follow the same structure. So I got into it, and I’m really liking it a whole lot. It’s something different, yet really useful in some situations. Seeing that there’s a market for databases like these, like Amazon SimpleDB, it seems like CouchDB (and document-oriented databases in general) will gain much popularity in the foreseeable future.

These are just a few things I’m playing along with. It seems like there are a lot of fun times ahead in software development and computing in general. I’m just happy to be able to ride the wave.

Goodbye, Digg and Reddit – Hello, Hacker News

Posted on January 27th, 2009 in Opinion, Sites | Comments

For the past few years, I’ve more or less kept the same RSS feeds in my reader for all that time – TechCrunch, Signal Vs. Noise, Seth Godin’s Blog and Penny Arcade. I also have a lot of smaller, niche blogs that either don’t provide me with much information anymore (sorry, Slashdot) or that are rarely updated (just like this one!), but those don’t stay too long. The ones I mentioned here are feeds that will stay with me until the day I die. Or until something much better than RSS feeds are created, whichever comes first.

Two other sites which I considered staples of my feed reader were Digg and Reddit. I was seriously addicted to these two sites a few years ago. I would go home after work and just read post after post of their front pages, without skipping a single one. If you have followed these sites, you know that over the course of 12 hours, a lot of news can appear on these sites. However, these past couple of months, I noticed I was just skimming the articles on these sites, and sometimes even just marking them all as read. It got to the point that it was just easier to delete these two RSS feeds from my reader, after around three years with them. So, why did I have to part with my beloved RSS feeds?

Well, both Digg and Reddit display user-generated content, meaning that anyone submits an article, people vote it up, and if it gets enough votes it’ll show on their main page, with thousands and thousands of people viewing it. At first, this was pretty damn cool – A lot of neat news and sites were introduced to me via these sites. However, with great popularity, it starts to attract a lot of new users. Apparently, a lot of these new users are prepubescent teens who don’t provide much content to begin with. It just started to become asinine post after asinine post, most of it which left me scratching my head and thinking “How the hell did this get voted up?”

Both Digg and Reddit had different ’straws’ that broke the proverbial camel’s back. For Digg, my issue became the posts that were being voted up on the main page. As of right now, Digg’s front page has links ranging from lame pictures to videos of basketball players head kissing to ‘Tips on surviving the World’s Weirdest Mexican Restaurant’. If I were 15 years old, I would be click on the ‘digg it’ button all day long! Nowadays, I don’t find it amusing at all. I also tried subscribing to other sub-categories of Digg, like Technology, but most of the posts didn’t grab my interest either.

For Reddit, the same issue happened when I subscribed to their front page. However, I thought I had found bliss when I subscribed to their Programming section. The posted linked were usually good. However, what turned me off about this service were the actual users. Or rather, their comments that were posted for each link. In most cases, it seems like everyone wants to be a comedian, and the norm of posting comments was just limited to one-liners. Not quite what I expected out of a group with programming and technology topics. It even made me not want to contribute to any discussion or submitting links.

Thankfully, I discovered Hacker News. This is just what I was looking for – an awesome news site, with the topics that interest programmers, with actual intelligent discussion between its users! The topics that are promoted on their main page are not the failed attempts to be funny like Digg’s links, and the comments are very thought-provoking and encourage discussion. I’ve made more comments in Hacker News in the past two weeks than I did in Digg and Reddit in the past year, perhaps even longer than that.

If you’re developer like me, who’s yearning to be educated and talk it over with like-minded people like yourself, you’ll be doing yourself a favor by heading over to Hacker News and joining in.

Don’t Waste Your Time On Me – Worry About Yourself

Posted on November 8th, 2008 in Funny Stuff, Opinion | Comments

Yesterday morning, someone posted a comment on a post I wrote at the blog of the company I work for. This person, named ‘Tom’, said that our site was filled with lies, and that we had false advertising all over the place. Of course, I don’t get angry about negative feedback, and you shouldn’t either. I politely reply to the comment on the blog, letting this person know that we apologized for any misunderstanding, that what we claim on our site is true, and provided our support E-Mail address in case he has any questions or inquiries. We’re more than happy to listen to what people have to say. Well, Tom replies a while later saying that it’s “not my job to make sure your advertising is true.” Well, obviously he doesn’t want to open any sort of dialog with us.

I show this to my boss, and we started looking around. Obviously, we look into our site, using the IP address from where the blog comments originated from. We notice that there’s a user who registered to our site, named ‘Lucy’, registered with an E-Mail address different to the one used to leave the blog comment. It was a free Gmail address, and of course, the IP address could be the gateway address for a larger company. But we decide to continue looking on, with the E-Mail address of the registered user in hand.

Upon further sleuthing, we notice this person has left comments on blogs and newsgroups, under different names but mostly using one name, Mark, more than the others. He was also touting a particular site in all of his other posts. When searching for the name we found, it turns the perpetrator who left the negative comment on our site: the co-founder – and now VP of marketing – of a competing site. We decided to leave it there, since it’s obvious by his comments left on our blog that this person is trying to hurt us. Plus, it’s hilarious that our sleuthing was sort of akin to a South Park episode, where the boys discover some criminals by searching all major Web 2.0 sites.

I can’t help but laugh at this turn of events. I mean, here you have a co-founder of a competitor, and instead of focusing on how to actually make his product better than ours, he decides to take a stab at others who are competing with him, apparently in hopes of inflicting some damage. To make matters worse, he does it under different guises. To be honest, if this person came forward from the get-go and told us he was from that competing site, and that he thought our site was misleading in any way, I would’ve been happy to open the lines of communication towards him. I’m sure we both would’ve gotten something positive out of it.

I’m not saying that you should be totally oblivious to your competition. Like the saying goes: Keep your friends close, and your enemies closer. You need to know what others are doing, so you can get a leg up on them, do things they’re not doing and make yourself better. That’s the point of having and running a business. But to spend actual time making baseless comments to the competition leads nowhere. Even worse, it makes you seem afraid and desperate to even consider attempting such stunts. And we’re not even close to mentioning something called “professionalism”, which this person seems to be seriously lacking.

I can offer some bits of advice from all of this. Make sure you know who you’re competing against, but don’t spend your time on them. Spend your time where it matters the most: your product. If you’re sure of yourself and the work you’re doing, then you shouldn’t worry at all about someone else. And even if someone is doing better than you, instead of wasting time and energy worrying about someone else, take it and make yourself better. Like I’ve heard before, “A dog in desperation will leap over a wall.”