The startup instruction booklet, powered by my life (and other things I think about).
Wednesday, December 31, 2008
Vyoo Functionality Freeze - Happy NYE!
Phew. Well, our loyal CTO, has implemented a functionality freeze. Finally. And our final algorithm is expected in the new few days. We have one working now, but it's a quick and dirty solution while we're waiting for the final one from our psychometrician. The alpha has been great for testing, but we're still working out plenty of kinks.
Now it's time to get the UI up to date, flesh out the final fixes, brush up some things and roll out our Beta. Things are coming together. Looking forward to our rollout in '09.
Tuesday, December 30, 2008
Surprise Surprise. The Results are In. Ebay and United Really Do Suck!
Two of my least favorite companies are in the news again. I'm happy to report that Glassdoor.com has just released their best and worst places to work. The usual suspects adorn the best places list (full list here). These lists are telling of the types of talent a company can recruit. While many great employees seek out "best places" to work, worst places not only push away prospective employees but also alienate their own. Treating your employees well is part of your total success equation (along with treating your customers well).
1) General Mills
5) Northwestern Mutual
6) Whole Foods
And... now for the worst places (full list here).
1) DHL Express (USA)
2) United Airlines
3) Reynolds and Reynolds
4) Farmers Group
5) Gibson Guitar
7) Rain Bird
8) CSAA Inter-Insurance Bureau
9) Office Depot
1) General Mills
5) Northwestern Mutual
6) Whole Foods
And... now for the worst places (full list here).
1) DHL Express (USA)
2) United Airlines
3) Reynolds and Reynolds
4) Farmers Group
5) Gibson Guitar
7) Rain Bird
8) CSAA Inter-Insurance Bureau
9) Office Depot
Monday, December 29, 2008
Refurbished iPhones $99
iPhones are $99 for the next two days (until the 31st) from AT&T. They are refurbished, but if anyone was looking for an iPhone, but felt it was a bit too expensive, this is your chance.
Find them here.
Sunday, December 28, 2008
Creating Fake Data - Adding Multiple User Accounts - Rails
A big testing pain in the ass is adding multiple user accounts and the accompanying profile data (etc.) which provides a more realistic user experience and a wider variation in data to allow for potential issues to crop up more quickly. Thus - hopefully better code.
Well, as with most things Rails, someone (or actually more than one person) has come up with a way to create a bunch of data, populate your databases, and give you a break from manually creating hundreds of accounts. Their projects are below. These tools essentially provide random name, address, number, and other generators (colors, passwords, currency) which you can stack together to create bunches of users.
Users dictionaries to generate data. You can override theirs with your own.
A port of Perl‘s Data::Faker library
Populates an Active Record database with a mass insert, very quickly. This library is quite customizable in terms of the data you can have it create.
Names, numbers, text, grammar, locations, booleans, arrays. Has a bit more to offer than Forgery.
Friday, December 26, 2008
Google It! How To Find What You Want...
I'm stunned, day in and day out, by some of the questions people ask me. It's not that they're asking me the questions (because I'm more than happy to be helpful), it's that they're not finding the answers out for themselves. It would be a lot quicker if they did. As you know, I teach GMAT classes. And people will ask me things like "is 0 an integer?". Totally fair question. One that I would have asked. But they'll wait the entire week between classes to ask. Or people will ask me things like "how do you get from point A to point B?". Shit, I don't know. But Google Maps knows. Or what's this program that keeps running on my machine called xxxx?". Yea I am a software engineer. But I don't know every program that's ever been written. Google does. Or "what's the weather like in Thailand in November?". While that last question is understandable because I used to live there, it's just another case in point. I don't remember. And with weather changing so much, just look it up.
Why don't people use Google for this stuff? I mean, most of the questions people ask me, I just turn around and Google anyway. I wonder why that's not just an absurdly obvious solution? You can ask Google things... you can type in whatever the hell you want, and something will come back. You can ask where to find the cheapest gas in San Francisco. In fact, I can't recall ever typing anything in, that was in English, that didn't have tons of pages returned. One of those pages is bound to have your answer. And likely it will be near the top.
Don't be afraid to search. Look at that cat up there. He kicked a dog's ass, just by knowing how to use Google!
Wednesday, December 24, 2008
Uh-oh! Can Rails (RoR) Handle the Load?
People have always been talking about Rails and its ability to handle scaling (here, here, and here). I was a skeptic of these haters. Because I had always made the assumption that good design would lead to good performance. I might be putting my foot in my mouth shortly.
We ran some preliminary stress tests on our site this past week. And the results were, well, unimpressive to say the least. In fairness, we're not caching everything at this point and haven't done everything we can to tweak performance, but we should have had a better go of it.
The main problem seems to be the sheer volume of database accesses. Rails just loves to talk to the database. In fact, almost everything is in the database, which is the major problem. MySQL has turned out to be our biggest bottleneck, which I guess you can blame on Rails, right?
A few things to note: We're running our DB and our application on the same box for the time being. We're using a server in the cloud, which is not really a dedicated server. So those play into the cards.
We're currently implementing memcache, starling, and workling as ways to help us boost our performance. But implementing caching requires a reworking of a lot of our code. So that's not cool.
All in all, I love developing on Rails. Is it enterprise ready? Jury will remain out on that one - for now. But I tend to think it is if you're a good architect. Twitter seems to have solved their problems. Which I initially thought was probably based on their design rather than RoR. So, did Twitter drop RoR? Nobody seems to know. Again, I remain in the camp that thinks scaling Rails is doable. I'm just not a pro at it yet. And we're going to have some growing pains, as we would with any technology.
Monday, December 22, 2008
That Was Weird.... What To Do When Your Mom or Dad Facebook Friend's You...
I'm sure my mom is going to love reading about this, but it wasn't without thought that I accepted her friend request on FB last week. I mean, it's sorta strange, isn't it? This is a window into my world... a world that my mom doesn't necessarily play around in. Sure, she's the greatest mom around and I share plenty with her, but I'm not sure she's interested in seeing me drunk at a party or the pictures that my friend's tag of me that aren't even me. Or how about my feeds and my friend's feeds (some are less judicious about what they post). Or my relationship status or what I was doing last night. Or explaining why the hell some girl threw a sheep at me? I haven't graduated to the point where I use Facebook for anything other than friends and acquaintances. I used LinkedIn or Doostang for more professional services.
I realized that I couldn't say "no" to my mom and wasn't really sure I'd want to say "no" anyway. I definitely didn't want to deal with the repercussions. I mean, how do you explain that to your mom? "Mom, I had to reject your friend request, because, well, we're not really friends. We're family. And um, well, yea, you're a friend, but I mean, you know... No! You're not old ma. I'm friends with people your age!" You know how it goes.
So I accepted her friend request, wondering what was coming next. Sure, there were a flurry of emails. "Who is that?" "There's a picture that say's it's you and it's not you". But she caught on. And maybe I'm a little...just a little more cautious about what I put on. I was never one for exposing too much about myself on that thing anyway.
Now my dad has signed up. And surely I had to accept that request too. And now he's trying to set me up with a girl who lives in London. Thanks dad.
If I were younger though, I surely wouldn't have accepted these. But, I guess it's alright these days.
What's the Keiretsu Forum All About Anyway?
On Friday I went to the monthly Kieretsu Forum gathering in Palo Alto. So what is Keiretsu? It's the world's largest angel investor forum, with over 750 accredited members in 17 chapters on 3 continents. In other words, it's a group of high worth, well connected people, looking to invest in startups. What's it take to become a member?
A Keiretsu Forum member is:
* An active accredited private equity investor (definition here),
* A trusted, honest and respected member of our business community,
* A contributor of time, wisdom and experience to our funded companies and soon
to be funded companies,
* Someone who enjoys building relationships with other members and companies we
The Forum was founded by Randy Williams, a Cal guy, back in 2000, as a way to provide structure to private equity investing.
The Forum is pretty straightforward and slightly different than I expected. You arrive, sign-in, and mingle for about half an hour before the meeting starts. There are three tables set up in horseshoe-like fashion, with a screen in front of the open end of the setup. The tables are occupied by the Forum members. Behind the table directly across from the screen are rows of seats, about 8 rows of 10 seats each, where the rest of us sat.
Randy begins with an introduction to some of the members - or at least the members who were in from out of town. There were several people from Ireland, Scotland, Russia, Austria, Germany, and China, who were all prompted for a greeting in their native language. The intro's were very mellow - and you could tell this wasn't some uptight group of people.
Each group had ten minutes to present at which point there was a 10 minute Q&A, which we were allowed to participate in. There were five companies that presented. And it was during the Q&A that you really understood the Forum. Not only did they ask the right questions - not only about revenue forecasts and company growth projections, but also about network security and the broader technology implementation. While informal, it certainly highlighted their understanding of investments.
The biggest gain for participating companies, besides the obvious investment potential, was the contacts that came out of the meeting. At the end of the pitch/Q&A, Randy asked members if they had any contacts who could help these companies. Undoubtedly, someone in the room knew someone who could help and offered the introduction. It was quite a family.
If you'd like to be considered for participation as a presenter, you can do so here.
Thursday, December 18, 2008
iPhone - "We were not able to validate your number." with free WiFi (Starbucks, McDonald's, etc)
As any iPhone user knows, we've been allowed to access free wi-fi hotspots wherever there's an AT&T hotspot (Starbucks, McDonald's, etc). That is, if your phone is hooked up properly. Well, my phone never worked and I've worked with several AT&T customer supports reps about this. This was the error message I kept receiving:
"We were not able to validate your number."
When I first called, they sent me over to Apple support, even though it was obvious that it had nothing to do with Apple - it was an AT&T account validation issue. The usual circus ensued where I was sent back and forth between departments. They opened a case and told me to check back in a month.
Fast forward a month (that was sometime last week). I called back to check in on what they'd found out. While it was nothing, I had the absolute best experience I've ever had with a customer support rep (actually, to be fair, she was tech support). She was obviously very concerned about the issue and wanted to help me find a solution. After we talked she explained that she can't stand leaving issues open - man I wish all tech support was like this.
She did her research and found out what the problem was. First, my phone wasn't in their database as an iPhone. It was an unknown phone. So she changed that. Then using my IMEI number (Settings -> General -> About), she found out that my iPhone wasn't properly registered in the different systems (I'm not sure what these systems are, but I'm assuming billing, activation, etc). So what'd she do? She changed my name in the database. This caused all of the systems to update, pushing the correct IMEI number to all of the systems.
I had to wait about 24hrs, but here I am...online at a Starbucks with my iPhone. Thanks Shannon!
UPDATE: "If you’re posting suggestions on your blog, just tell folks to call AT&T customer service at 800-331-0500, ask for Technical Support, and have the tech support rep to make sure the system that contains the Media Net registration information shows the correct device type. The support rep will then know where to look."
Credit Card Rate Hikes Suck (rate-jacking)! Citibanks and Chase Suck! How Is This Legal?
Twice in the last two weeks I've received notices from my credit card companies. They're hiking my rates even though I have stellar credit. I do have a balance, thanks to this startup, but that would make me think that they're making money off me anyway - so why do they need more? I can opt out, in the fine print, but then they cancel my account. What kind of opt-out clause is that? And what the hell can I do about it?
Apparently it's not uncommon these days, especially from Citibank, one of my credit card provider's. But that doesn't mean it's fair or justifiable. I think it's an abomination in this current economic climate for large financial institutions to prey on people in debt. It's disgusting. This all goes back to my common belief that people need to start taking responsibility for their own actions. If Citi or Chase (the other provider who just notified me) has mismanaged their money, well, that's their damn fault. To pass the buck along to the consumers who can't afford it is the easy option - but one that may not work.
There has been quite a stir in the blogosphere as of late which will hopefully get the stalled bills in the Senate that deal with this issue, kick-started (from CNN).
Check your mail. It probably happened to you.
This reminds me of another disgusting practice. Charging $3 to use another bank's ATM machine. What the hell is that? You can use one of those janky ATM machines in a bar for less money. Screw the customer...seems to be the montage of some select financial institutions.
Wednesday, December 17, 2008
A Meet and Greet with Tina Fitch of EZRez
A few weeks ago I sat down for an informal chat with Scott Orn of Lighthouse Capital Ventures. After our discussion he kindly introduced me to Tina Fitch who he thought would be a good contact in the travel space. I finally met her yesterday.
Tina is CEO of EZRez Software Inc, a company that helps its clients package and distribute travel related products and services. They have a tremendous value add over other companies that attempt to achieve a similar goal - they use dynamic and proprietary search capabilities along with lower costs and increased efficiencies.
I spent some time looking at providers for this when we were initially thinking about providing booking through our site, and I have to say that EZRez blows away ITN and World Choice Travel. You have an incredible amount of flexibility, control, and data with EZRez. While they aren't exactly competitors, they're a close comparable.
But back to my meeting. Tina was exceptionally bright. She's one of those people you meet and are just blown away by their grasp of a situation and their drive to implement solutions to problems. I don't meet many people who leave me with this impression who combine that with a very down to earth, pragmatic, and candid approach to the world.
I spent an hour and a half speaking with her about all things travel and business as well as her own startup experience. Afterward, she offered up a pretty comprehensive list of people in the industry she though we should chat with. She's spent a lot of time in travel and hospitality and knows just about everyone around. Then we chatted about our own experiences living in Asia... which if you haven't done, is worth its weight in gold. She valued that more than any MBA. I can't say I disagree.
Tuesday, December 16, 2008
Another slice of morning humble pie... Life as CEO
I woke up this morning and did my usual perusal of the magazines littered throughout the house. It takes me a while to get started in the morning and I find that kicking back on the couch or still in my bed, reading a magazine or the internet, is a good way to get going.
Today I felt a little better after reading Inc. Their December issue has an article titled "Don't bother me, because I'm in the middle of my most important task as CEO - hanging window blinds", by Joel Spolsky, co-founder and CEO of Fog Creek Software. I had to laugh.
The kicker though was this quote: "I'd love to imagine that I'm the most valuable person in the company, that my time is so precious that I have to optimize every minute. But it's not true. At this point, I'm probably the worst developer in the office".
It's a sentiment that I can relate to. As CEO, it's always nice to think that we are invaluable to the company. But the fact of the matter is, there are so many other integral components that drive your success. Namely - the rest of the team. And even those outside the team that place a role in advising or helping to refine your product or company.
Like Joel, I know that I'm the worst developer at our company. Fortunately there are only two of us, so that makes it a little easier to digest.
Sunday, December 14, 2008
A Long Way Gone: Memoirs of a boy solider. My Book Review.
I grabbed this book in the airport just the other day. It looked like an interesting read, but I hadn't heard of it, so I had my usual apprehension about dropping too much money in an airport book store. A Long Way Gone is a firsthand account of a boy's life as a solder during the civil war that fractured Sierra Leone in the early nineties.
Ishmael Beah was just 13 years old when he was "recruited" into the army and given an AK-47. He had lost his entire family to brutal killings by rebel soldiers. They were burned alive, locked in their huts just a short time before Ishmael was to reunite with them. His only hope for survival was the army. Hopped up on cocaine and other stimulants, Ishmael saw and did unimaginable things during that war. Things he should have never known.
It's a story of love, hate, war, and finally, a bit of hope. It takes you from the lowest depths of humanity, to the highest highs.
I had trouble putting this book down. It's well written and a quick read. But it leaves you with lasting memories. Not all of them good.
Friday, December 12, 2008
Install Starling on Windows
We've started performance testing. While a big step in nearing completion of our alpha, we're unfortunately working on two new pieces of functionality. I'll detail later. For performance, we've implemented two new components to get memcache to work really well (Starling and Workling):
Starling: "Starling is a light-weight persistent queue server that speaks the MemCache protocol. It was built to drive Twitter's backend, and is in production across Twitter's cluster." - It was open sourced by the guy's at Twitter, so thanks Twitter.
Workling makes working with Starling easier: "easily do background work in rails, without commiting to a particular runner. comes with starling, bj and spawn runners"
But... I just wanted to post a note to other Rails developers who are trying to install Starling on Windows. The gem fails the install due to C compilation failures. While you could get a C compiler working on your box to make things like this easier, it's not that simple. I've been struggling with integrating a native C compiler with my Rails environment for a while. The Microsoft version would probably work better, but I don't have it. And I'm not paying for it.
Anyway, in order to install Starling, you need to manually install the last eventmachine version that has a windows compiled gem (that's what's failing in the gem starling install), which is version 0.12.0. Thanks Stackoverflow (here)
gem install eventmachine --version=0.12.0
Once that installs run this:
gem install starling
Voila - set to go.
Another cool project is: Rubyinstaller (here), which aims to take care of the install problems I experienced above. Hope that helps
UPDATE: You will most likely get this error when you try to startup: custom_require.rb:27:in `gem_original_require': no such file to load -- syslog (LoadError)
This has been fixed in version 0.9.9 but is not yet available as a gem. You can download the source and overwrite your existing files. The files you need to overwrite are server.rb and server_runner.rb. The paths' are in the downloaded tarball so you can easily see where to put them.
UPDATE to UPDATE: So it looks like I'll need Cygwin to successfully run this on my Windows box. Why? Because there's no fork() process that's native to Windows. Cygwin fudges one together. This is a bigger pain than I thought. I'll probably take Kenny's advice from his comment and grab myself a Mac. I never thought that would happen.
Ford, Detroit, and the Lions - The Link Between Football and Ford
Do you know what football team is 0-13 this year, on pace for going 0-for? Do you know what football team has had the worst record during the last decade? Or how about what football team gave its CEO, Matt Millen, a 5 year extension last year, even though they've owned the worst record in football? The Detroit Lions. Well, technically he was released this year. Or resigned. It's uncertain. But their performance hasn't improved.
What I find particularly enjoyable about their abysmal performance, isn't really about the team. It's about the ownership. See, they're owned by the Ford family. The very same family who has proven they can't run a car company. The performance trickles down from the top. It's the same theory as Reaganomics - just applied a bit differently.
So what's the Ford family doing wrong? Well, you can see some similarities between the two "companies". They are overpaying their employees to deliver a sub-par product. They've put people in who don't know a thing about their product (Millen had no experience in football operations). They aren't focused on giving their customers what they want. And, of course, they've built their products with parts that don't last. Henry Ford must be rolling around in his grave!
GM - You Gotta Be Kidding Me! Don't Drop the Saturn!
Please, please, please don't do what you said you'd do. Don't keep running your company like you have been. It won't work. I promise.
A Frustrated US Consumer
It appears that GM is talking about cutting Saturn out of its plans. Yup, shutting down the one bright spot in their company. That's like cutting off your arm to save your finger. Except, you won't be saving your finger, because, well, it's still attached to your arm.
What does GM have with Saturn? It has a very loyal and passionate following (there are tons of Saturn enthusiast forums across the web). It has style... yes, cool cars. It has the potential of a money making product.
What doesn't it have? Profits. But that's not entirely Saturn's fault. They don't have a very large advertising budget and therefore people don't know a whole lot about what's out there. You've probably seen their recent car commercials, so maybe that's changing. And maybe they need to make some of their Saturn's in the US. Their Astra became uncompetitive here because of the dollar (it's made in Belgium). Since we're the largest auto market in the world, I find that surprising. And, they've sort of lost their way. They started making the 8 passenger Outlook SUV when their core market wasn't shopping for those. Saturn was started with the intention of keeping the product line low and delivering cost efficient, fuel efficient vehicles. An 8 passenger SUV doesn't fit the mold.
There's a lot that Saturn would need to do to succeed, but I have to say, I haven't even seen a cool car, like the Sky, come from a US automaker in quite a while. And if you think the PT Cruiser is cool, you're not welcome here anymore. While I admit that the Ford GT is sweet, any car that's $150K can be made cool, even by Ford.
Wednesday, December 10, 2008
Firefox Add-ons - TooManyTabs
On Thanksgiving (yes, this is a bit late), there was a great post on LifeHacker that discussed all things FireFox and the great add-ons/extensions (here) that can make your browser a pretty powerful tool. Sure, there are all the copy/paste, multiple tab, download helpers, memory managers, skin tweaks, document managers, and hundreds of other add-ons. And those are all great, but the one thing that consistently kills my user experience is having too many tabs open in my browser. It gobbles up memory like it's a job. And I always lose pages that I want to look at later, but not necessarily bookmark, because I'm constantly trying to conserve memory.
Bookmarking is great, I'll give it that. But how many times have you bookmarked stuff never to look for it again? Probably quite often. And since my memory likes to escape me from time to time, I like to have visual queues. Alas, here comes TooManyTabs. This is my favorite extension - and it's well worth it. Extensions are free for those who've never used them.
TooManyTabs (here). I'll leave the description to them:
TooManyTabs allows you to store up to over 50 tabs in multiple extra rows in your browser by a simple click. It saves your browser's space and memory as idle tabs are put aside. The extra rows also help to better prioritize and visualize your tabs.
GetAFreelancer Sucks! oDesk Doesn't Suck!
I know you've been missing my "... Sucks" postings, so here you go. I decided to try two outsourcing services to get a side project done for our website. The big firm, oDesk, I've actually done some work for as a service provider. I wrote up some economic analysis of the G7. I think my macro professor, Andy Rose, would be proud. oDesk is a site with great usability and great design. It provides the ability for extensive project management and easy communication - along with a strong feedback model. Definitely best of breed. Then there's GetAFreelancer.com on the other end of the spectrum. I should have been skeptical, but it's been around for a while and there are tons of people who have successfully used the service, so I figured, why not give it a try? Their design is terrible and their feedback system leaves a lot to be desired.
I posted the job in both places and awaited the responses. I had quite a few in a short amount of time. There was quite a big price differential between the two. This was a small project, and GetAFreelancer sourced me some offers at almost half the price. I figured there wasn't much to lose using the service since you don't pay until your job is complete. Though you do have to deposit money on their site (through Paypal or several other ways)
The candidate on GetAFreelancer was incredibly responsive, answering emails several times a day for days on end. So I chose him and began the project. Well, it's now been 3 weeks and I haven't heard a peep from him since he won the job. He doesn't respond to emails and has pretty much disappeared.
I tried to reopen the project to get other talent, but the hoops you had to jump through were enough to make me leave. You had to send emails back and forth to support, which extended the project constantly. Part of my issue was getting this done quickly, which wasn't possible.
After finally getting my project reopened, the service charge wasn't refunded. And while they were responsive, I had to jump through hoops to get that taken care of. Long story short, I closed the project and went to oDesk. But... it wasn't over. My deposit (the amount I had to put in my account) is still sitting with them. And to withdraw it takes two weeks, in addition to a service fee. So they take money from you up front when you hire someone and then they take money from you when you withdraw money. And I didn't even use them. I hate schemes like this. Now, in fairness, many people probably have great experiences. I just wouldn't use them again. I'm using oDesk now and am very happy with the project. The developer rules. And I still can't leave negative feedback for the guy on GetAFreelancer! COME ON!
Tuesday, December 9, 2008
The Cool Thing About an MBA
I went down to Google yesterday to participate in an information session for Haas. It was somewhere in the middle of the question and answer session where I spoke about how great it was to be an alumni of Cal and how it really opens doors for you everywhere you go. In addition to all of the great people who have helped us out with Vyoo so far, last week was yet another case of this in action.
I sent a few email to some math professors at Berkeley. I wanted someone to take a look at what we were doing with our algorithm and to help us design a more efficient approach to running this algorithm in real time. The calculations get pretty computationally intensive and grow more so quite dramatically as new users are added.
Professor John Strain met with me last Thursday. His specialties are: Applied mathematics, Numerical analysis, Fast algorithms, and Materials science. It was the numerical analysis and fast algorithms that really interested me. But anyway, he was a Math professor at Berkeley so I knew he was brilliant. Just spending time with people like Professor Strain is rewarding in itself.
He ended sitting down with me for quite a while, looking over what we were doing, explaining the intricacies of the calculations, and presenting me with a solution to how we could improve the speed of what we were doing. While I had read a bit about what he was showing me in advance, I had a difficult time understanding. He walked me through it, showing great patience. I can imagine how difficult it must be to have to walk someone through something you can see so clearly. But alas, I got it... and what he showed me made great sense. I've always had a passion for math. It's one of those cool properties that guide a great deal of life on this earth.
In any event, he was a great teacher and an excellent person and seems truly interested in our approach. We ended up chatting for quite a while about all sorts of interesting things: travel, linguistics, Asia, recommendations... definitely a cool meeting.
Monday, December 1, 2008
World AIDS Day 2008
Today is World AIDS Day. Doesn't it seem like every other day is a day that represents a cause? It does to me.
I'm happy that people are taking a look at AIDS again. It seems like the disease has slipped under our collective radar. I remember being petrified, constantly thinking about contracting HIV when I was younger. I think there is this misguided assumption that it's a disease that only affects certain people, but that's not entirely true. Sure, there is a disproportionate number of black people who have contracted HIV in this country. More than half of the just over 1M people who have it. And sure it affects the homosexual community more than the heterosexual community. But that sure as hell doesn't mean you can't get it. I can't tell you how many of my friends have unprotected sex. It's really mind boggling.
You can read more about World AIDS Day 2008 here: http://www.worldaidscampaign.org/static/en/
Subscribe to: Posts (Atom)