Passing up an oppurtunity

Today I had to pass up on a very good opportunity. Just a couple days ago I met an MBA student who had started his own business and wanted se technical help. I loved the idea, loved his plans, really liked him as a person, and they already had pretty good traction. I wanted equity if I took the gig because I knew it was gonna be a winner, and sure enough he said yes. Unfortunately after thinking about it, I knew that with all these projects I love starting myself and with school still on my radar, I wouldn't be able to give said MBA student my 110% effort. I never want to do anything if I feel I can't do it all the way and to the best of my abilities. Though I would have LOVED to work on this project I knew it wouldn't be right to commit. So it was very hard for me, but I had to turn it down. I still hope to see this in 5 years hugely popular with a huge valuation. I know it's going to do well, so the best of luck you-know-who.

General update and such

I have been on somewhat of a posting hiatus for the past week so I decided I should give a general update before getting back on the horse: Spring break wasn't as productive, from a development standpoint, as hoped but we got a lot of things done that were unexpected but outstanding nonetheless. From a programming standpoint: - Started two impromptu exciting projects but reprioritized and decided not to ship - Familiarized myself with MongoDB a bit (unfortunately not so much with Rails) - Finished reading Don't Make Me Think by Steve Krug. I think we made the right decision not to ship and refocus on a different direction, am disappointed with the amount I learned about rails, and am very excited with the new perspective Don't Make Me Think has given me in terms of creating the best possible user experience. So mixed reviews. On the other hand, programming aside I did: - Get to meet with some VERY awesome and generous mentors and people - Had several fantastic opportunities present themselves (will talk more about them later if we make them happen) - Got featured on King 5 Local 5 o'clock news!!! - And spent a lot of time with my beautiful girlfriend Overall, I'd say the status of Spring Break was: #winning (Woops overused joke alert). And to make up for the mixed bag development status, as soon as I got back on campus Sunday night at 12AM I met up with Dan to work all night to finish a very basic product of what we hope to be a future business. We accomplished that and spent tonight polishing up a little. If you would like a taste of the alpha product send me an email or comment. Oh and Dan and I are going to be in the Daily Pennsylvanian this week (our school newspaper)!! So things are looking good and great opportunities are popping up left and right and I'm excited to keep steam rolling ahead. Will keep you posted on any updates.

A new lens to see the world

I recently read an article by the founders of Hipmunk (a new travel advisor site) about what makes some startups so cool that users can't help but use them. They said was the more unsexy the problem, the cooler the solution can be. They cite Square's sexy solution to unsexy payments, another eSolution to faxing you probably never heard of, and Hipmunk (of course) in the unsexy travel search space. And also no, I don't have an obsession with the word sexy, it's just how they describe it and I think it connotes something unique and true. Basically... I'm going to need to pay special attention in my life as I go through my daily routines as to what am I doing that is a pain point and especially not sexy. Can I make it sexy? If yes, has anyone else tried? If no, then let's go for it! If no then... Let's beat them! I'll keep you updated on what I find. One thing that immediately crosses my mind is airplane passenger boarding, waiting for luggage, checking in your luggage, and moving through security...I'm sure some of things may not be solveable, but I'll spend my flight trying to think of one, in between reading Don't Make Me Think, in between sleeping.

Spring Break! Time to have fun, right? Wrong, time for learning and working

Alright so I believe I have finished my final assignment/exam just now before Spring Break (woohoo!). I'm pretty excited. Not because I'm going to Spain or Brazil or somewhere awesome for break to have lots of college-y fun, but because it's time to become a better entrepreneur! I'm going to be spending my time doing a few things:
  1. Learning Ruby on Rails (a side project a friend presented me requires rails, and also its a great language that many companies are now using to get scale, fast).
  2. Throwing together Bottleable (basically a "message in the bottle" thing for the internet)
  3. Prototyping a new direction for Tasteplug.
  4. Spending lots of time loving my beautiful girlfriend (guys with girlfriends, never skimp on this)
Alright so lots to do in a short amount of time. I was hoping to re-adjust my sleep schedule (currently sleeping at 6-7AM, waking up at 10AM) to something more reasonable, but we will see if that will get done. It's worth it though. I'm fast paced and trying to get on track to becoming a successful entrepreneur. I want to do something now, and that takes work. So I'll do my work. Until I get something done.

Learning by helping

Woops, almost forgot to post tonight - it's 7AM who can blame me? Thanks to the wonders of the iPhone WordPress app I can write this short and sweet blurb as I drift asleep in the comfort of my bed.

Today I was reminded of a very valuable life lesson - you get just as much out of helping someone as they get by being helped. I'm sure there are plenty of studies or philosophers out there that can point to how or why being a teacher actually helps you learn a subject better but here's a little anecdote from my life earlier today (er yesterday).

I got a tweet two nights ago saying the site wasn't working for them. I stayed in touch trying to figure out what was wrong. Unfortunately I had to leave the situation to get a precious 3 hrs of sleep before an exam I had to take. But after I woke up I continued to work on this persons case (@thesraid whose twitter handle is escaping me right now).

I looked, couldn't find his name on the database, then looked and couldn't find his oauth id. He told me maybe it was because his name had an apostrophe in it. I thought I had taken care of that problem with my mysql_escape_string calls but I looked at where the problem could lie.

Turns out there was one function (which believe it or not was the crucial function of registering a user) that did not call this. So I added it (also apologies to everyone else that suffered because of my mistake) and thought nice done. Good to go.

Wrong. More problems. Now his page wasn't loading. Looked through the source, and realized he was making it into the database now but when getting his named called to the page it broke the JavaScript because of his apostrophe again. So I called addSlashes and things worked like a charm. After things got fixed he thanked me and told me about how one time an envelope was addressed to him (John O Undefined Character String vs John O'Riordan insert funny name here later when I can remember).

Basically, I could have spent some previous hours preparing for either of my Midterms or sleeping but I knew it would be valuable to help out a user with a mistake I made. Turned out I learned something and got another user successfully registered!

I am a firm believer in help out as much as you can and you wont be disappointed. Glad I won't have to flip flop on that anytime soon.

Wish I could be a social entrepreneur

In my LGST210 class today we went over different corporate social initiatives and gave them grades based on how effective we thought they were or what their cause was. One of the companies that really caught my attention was Tom's Shoes. They sell very simple shoes at an affordable price, but their real value proposition is that for every pair sold, they will donate a pair to a child in need. I thought this was very unique and interesting because the company is still for-profit. Yet I truly believe that the founder's intention from the beginning was to simply create a sustainable business that had a great cause. It was a bold $1M+ investment for the founder to make but I have to say it did work out and now the world is a better place for it. Though shoes may not necessarily be the cause everyone believes it the highest priority on the list - it's a great start. It really gets me thinking even more about what kind of things can I build that not only will be beneficial to myself but the world. What can I create that will be successful enough to sustain its good cause for a significant and meaningful amount of time in this world. I'll keep thinking. Meanwhile, let me know if you have any suggestions.

Back to reality

The past couple of weeks (really since the start of the semester) my head has been in the clouds thinking about how great it is to get in the real world and create things people really care about. I'll be honest, school has really taken a back seat. My priorites (in order) have really been:
  • Meet with really smart, driven, helpful individuals
  • Idea generation, and the hacking/iteration of those ideas
  • Track
  • Schoolwork
But I have two midterms, a paper, and a big assignment due this week before I'm off the Spring break to do more of the meeting smart, driven people, hacking, and training for track. I've forced myself to do some hardcore studying (in between managing server issues...) for these classes which I have not really been to. I've just finished studying for OPIM (for tonight) and hopefully my coach will understand if I leave practice a little early for doing some quick pre-test cramming. I've actually found OPIM to be pretty easy and I think I'll do fairly well for learning it now. BPUB (or managerial economics) is tomorrow night. I don't think that will be as pretty. But will let you know.

WhereMyFriends.Be up and running! Finally, I can sleep

Let's make this post quick, since I would like to get some real sleep... WhereMyFriends.Be is finally up and running for good (at least so it seems...)!!!! Thanks VERY VERY VERY much to a Paul from Rackspace who helped me figure it out after several support staff members over the past 72 hours have just thrown me in several directions. Paul, you're a boss. Fortunate for me, he had just finished creating data structures for a very similar purpose dealing with the Facebook API and had a lot to offer. Basically he told me:
  • Facebook/MySQL likes short bursty queries over long ones
  • Ints are greater than strings
The latter really saved the day. The biggest change he helped me make was changing the oauth ids to bigints rather than the current text in SQL and also indexing this. This made everything load at SUCH a faster speed. 100X better than originally, and at least 1000X better than the slow crappy times! K maybe exaggerating a bit. But yeah. I believe this is our solution to keeping up a stable site for thousands of concurrent users. I will wake up in about 14 hours (longer if I'm lucky) and hope to see things going just as smoothly as I left them.

Blood, sweat, and tears - Mashable certainly tested our resolve

[caption id="attachment_101" align="aligncenter" width="745" caption="source: my heart and soul"] [/caption] Boy was it a rough couple night... but a great one which I will remember forever. Feb 24 12:15AM - On my way to start doing my homework. As soon as I sit down in the study room, Dan Shipper calls me "We're on Mashable!" I'm stunned, don't know what to say and he tells me to come back to the dorms so we can work. I run over as fast as I can. 12:30AM - I'm back in the quad done dancing around in glee with Dan. We realize, we need to get cracking. Our servers at GoDaddy are getting hit hard. We thought it would handle it, but clearly the virtual dedicatd server was not enough. Dan called up Rackspace, got a Cloud Site squared away, and we began to migrate. 1:00AM - We decide it's worth it to take down the page rather than letting it load poorly for people. So we put up a landing page, and let the migration begin. We finally got a hold of Ajay (where the hell was he?). Ajay helps us wit PR. 1:30AM ish - Our cloud site was up and running! Dan and I were so happy! This was one of our emotional highs. Everything was working smoothly, we were getting hit with traffic at unimaginable loads, but we were handling. We though smooth sailing. So we just thought we could spruce things up a bit, fix a bug here and there, calm down the fire of people that had seen the site down and go to bed. We were wrong. 1:30AM - 4:30AM - Happily responding to tweets, facebook comments, Mashable comments while watching our traffic and user base grow. Through th night we saw user benchmarks hit 1K, then 2K, then 3K, 4K, and by the end of the night (er early morning) we see 5K! Also, Dan and I are busy fixing bugs and making features more robust for users. 5:30AM - Ajay heads to bed. As soon as this happens, Dan and I sort of realize, something is wrong. Things are slowing down significantly for loading the profile page. We expect that it must be something to do with our database because the code was basically unchanged through the night and traffic was consistently high so that was not the big difference. The only thing we could think of was something going on with more and more data being logged into our database. I mean, this was good, but it also hurt our speed - so we though. 6:30AM - We continue to look through our code to see if there are any MySQL calls that are just looping or something extremely inefficient. We catch a couple small things but don't see anything that could really make that much of a difference. We see some calls taking as long as 30s from the webpage, when earlier that evening it took only 2-3s...what is going ON??? 7:00AM - We decide to try logging the times it takes to go through each function that was called to see if it really was our SQL database. 8:00AM - Call Rackspace again, finally they discover it is not a CPU or RAM deficiency from our Cloud Site server but is instead long queues to our database because our site is data-call heavy. We continue to look through our scripts because they claim there is nothing we can do but to wait and let the queues clear out. 9:00AM - We have to head to class and so we need to make a choice: keep WhereMyFriends.Be up, or take a down. We had to choose whether we wanted to leave a sub-par, slow product up that would probably still pick up traffic, or take it down and possibly close off this window of opportunity for virality from Mashable. We eventually chose to take it down. To me, the choice was simple because you never release a product you know not to be the highest of quality. We didn't need artificial growth/hits, but instead wanted to make sure people knew we only produce great stuff. So we ended up using MailChimp to put up a nice apology letter, with a chance for them to sign up and see the product when it was up and running again. Then I had to start the day...In between classes and such I was running around checking to make sure our landing page didn't crash (I figured it wouldn't but...who knows sometimes) and seeing what I could do to make the SQL queries faster. I immediately got some great advice, thought of how to implement it, and started doing some of the coding while sitting around waiting for class to begin. I also made sure to help cool the fire online with all the hits going to our site, but nowhere to go from there.  Then at about 12PM Dan tells me we got on CNN! We were down at the time but it was still exciting! But now there were more angry/confused comments to respond to and quel. After finishing some homework that was due the next morning, I met up with Dan again to start coding. I was introduced to a new method of parsing the friends. Before we were sending off 20 friends at a time to get back 20 (or however many revealed their location) locations. I would figure out if those friends were in our database or not, then I would send them on different paths there. In my new implementation, after getting some advice, I parsed the friend list immediately into what-is-in-our-sql-tables, and what-do-I-need-from-FB. That made a big difference in terms of time, and along with other tweeks we thought our code was solid. We were just waiting on Rackspace to migrate us over from Cloud Sites to more powerful and scalable, Cloud Servers. After we did that, migrated over, things seemed to work fine. Mind you it was around 4AM at this point. We had run into several issues along the way, such as DNS mis-pointing, private/public IP misdirecting, SQL fails, and every other migrating issue you can think of. Surprisingly though, the new untested code that parsed the friends data in a different way and sent them on unique tracks worked with almost no hiccups! I was pretty proud. At 5:30AM, we figured everything was pretty much in the clear. We did more cleaning up, some more bug testing and phew. Up and running. Sleep. Wake up, things are good. Go to class, get out of class. Boom. Down again. I had a meeting to go to, and Dan said he was taking care of it so I trusted him to get it fixed. Rackspace told us, there really wasn't much they could do, so we put up the landing page again. FAIL. Jeeze I was mad... So now for the past several hours, Dan and I have been implementing memcache and seeing what else we can do to make things more robust and lightweight. I think we're pretty much done, and just have a few small things we need to tweak. But we should be ready to release tonight. By the way, Dan is in NYC tonight at a concert so if sh** hits the wall...I'm all alone. This project has probably taken up literally half of my life this week. But it's been worth it. Through all the good, and bad, and worse, and better, and best, and etc etc, I've learned a lot and know a lot about what to look out for and do next time I strike gold again (which hopefully is very soon).

Jianmin Zhao gets some kudos!

[caption id="attachment_98" align="aligncenter" width="741" caption="source: yahoo movies"] [/caption] Jianmin Zhao, my dad duh, is on the internet! I know he's had several papers published that are also online, but its cool that he's now getting in the credits for movies and even games! He also was on the game credits for Unleash the Force 2, but I can't find the picture. I really respect my Dad for everything he's sacrificed and done for my family, and love him very much. I'm glad he's finally starting to get cool little recognition on the interwebs! Check out the credits for I Am Number Four (w/ Jianmin Zhao!)