Marcelo Calbucci

Startup Score:

Successes: 0.1+0.5
Failures: 1
In progress: 1

Friday, July 23, 2010

Windows Azure vs. Google App Engine vs. AWS

I’ve been reading about Windows Azure recently because I’m always starting new projects and I was wondering if I should try some of those on the cloud. I got to be honest about it; I’m pretty disappointed with Windows Azure as a cloud computing platform. The technology behind it is pretty sophisticated, the tools are great, and the cloud element is there for sure, but it’s not what I wish the future would be.


Windows Azure was Microsoft’s reaction to Amazon Web Services. Because of that, it basically borrows a lot of the elements and concepts from AWS. Amazon was a leader in cloud computing, first launching S3, then EC2, than a dozen different cloud services. They are killing with their pricing model, but they left a lot of work for the developer themselves, like dynamically detecting load and scaling the computing needs.

Windows Azure tries to build on the same concepts as Amazon, adding nice features and integrating beautifully with Visual Studio, SQL and the whole Microsoft stack.

So why am I so disappointed?

I think that’s not the future. It doesn’t feel like the future. It feels like I need to know too much about the underlying environment. I need to know about virtualization. Not much, but some. Of all the cloud computing initiatives, I think Google App Engine is the most interesting. Conversely, they are the least evolved and stable. But that’s how innovation happens.

Google flipped the model on its head and said, we won’t tell you how anything works behind the scene. You won’t know what machine, file system, system architecture, data center, or anything. All you do is write code on this language, use these APIs and you have a live Web application, by the way, you *really* pay-as-you-go (as opposed to allocated resources that are never used).

For a technologist like me who’s a lot more interested in the value to the end-user than in the technology itself, Google App Engine is more exciting. They are very far from a point I’d consider them worth of my time right now, because of how limited the capabilities are, but they are going on the right direction.

AWS and Azure only feels right if I was about to build a product who could go boom! Even on that case, it had to go really boom. Right now, I run a dozen websites out of my small Dell server which cost me about $500 in hardware and $0 in Microsoft software (thanks to BizSpark). I can easily serve tens of thousands of visitors per day and there is no bottleneck on my system.

Once I looked at Azure, it would cost me about $80/month to run a tiny website. Of course it’s a deal breaker for me. I can’t have a dozen websites each running at $80/month.

For now, I’ll continue with my own Server collocated at a data center. It’s cost effective, full featured and there is no learning curve for me (a curve that would take me nowhere at the moment).

But before I go, I have to say there are many situations where cloud computing is great, so don’t try to tell me I’m wrong, because I’m just speaking for myself (as always) and that’s my case that I’m sharing. Your story might be completely different and you might have your own arguments. Just be pragmatic about it.

Wednesday, July 21, 2010

It’s Time For Twitter to Expand

There is a beauty about the 140 character limitation. It makes people work harder on their tweet to convey what they want to say. It saves the people reading the tweet time and sometimes you are just in awe of how witty your friends can be. I don’t think Twitter should ever increase the 140 characters limit, however, there is a lot of other limitations on the service that need to be re-thought so it can find new uses.

I have 3 scenarios which are not possible on Twitter today, but they could easily enable it by making some small changes.

Local Targetted Tweets

This is something I wanted from the beginning. I want to mark some of my tweets as “for local tweeps only”. In other words, I want to put out a tweet that doesn’t go to all my 3,300 followers, but only to those who said they are in the Seattle-metro area. Why? Because of the informal nature of Twitter, I like to write about the weather, a restaurant, ask for tips of where to take the kids on the weekend, etc. Two thirds of my followers don’t care about it. Can’t do anything with it, and it just adds to the noise they receive. Yes, Twitter could go one step further and enable Groups, and allow you to Tweet to a group, but I think that would add too much to the user experience. Local tweets is the one scenario where it makes a lot of sense.

Private Followers

Recently I was thinking about a product that would be much more interesting if I could create a Twitter account, make the account public, yet, hide the follower list. Why would anyone want to hide the follower list? Simple: Because following that account might not be something people would want others to know. Imagine accounts about tips for teenagers gay to come out, or any other content where you feel self-conscious about others knowing you care about it. This could be done by having accounts with private followers, or giving each individual control as to which other twitter accounts they are following can be seen by the public. Think about how Twitter is slowly replacing RSS and how RSS is a completely anonymous “follow” scheme.

Authorized Followers

This is more of a fringe situation a friend told me he wanted, but imagine you are ok with your Twitter stream being public but you want to pre-approve who can follow you. Why? Maybe you care about who appears on your Twitter page followers list. Maybe you want to show a level of exclusivity.



Overall Twitter has not done much in terms of account controls and some of those can only be achieved if the core infrastructure supports them, so the whole annotation is not going to work by itself. That’s my request of the day.

Monday, July 19, 2010

Camping with Kids: Our first experience

I rarely write about family adventures on my blog, but I thought I’d share how it was to go camping with Victor (4 year-old) and Daniel (almost 2 year-old) mostly because every one that I know who has kids keeps asking the same questions: how did it go? So a blog post seems appropriate.


 
We went to Lake Easton State Park, just about 1h from Seattle on Friday afternoon. I picked that spot after checking two dozen other private and public camping sites in a 2h radius from Seattle. My criteria were simple: Not too far (if something goes wrong it’s easy to get back), had something for the kids to do (playground, beach, etc.), the campsites had to be under trees (to protect from sun and rain) and it couldn’t be too close to a lake/river (less worries w/ the kids falling and less wind/cold during the night).

 
Lake Easton had everything for us. They had a pretty decent beach on the lake with sand, a little playground, grass area for the kids to play, an amphitheater, and more. I knew I had picked the right park as soon as we got there. There were dozens of kids of very young age (2-8) running around, on bikes, scooters, playing ball, walking on the street, etc. If I picked the wrong place for my kids, so did dozens of other families.

 
The campsites were just exactly what we expected. Notice I never went camping on my life, so I had no clue exactly how things work, except by what I read on the web. We were lucky to have a campsite just about 30 yards from the restrooms. We had a large table and fire pit.

 
Before we got there

 
I did a checklist by doing some research and lots of visits to Target, Fred Meyer, REI, Costco and even Wal-Mart. By far, the best place to buy camping gear is Costco. Whatever they have it just buy it. But buy it early in the year (March/April) because they do sell out. They had an amazing tent which it took me too long to buy and they sold out by May. You can’t find everything at Costco, but the price and quality of the products available there beats every other store. The second best place was Fred Meyer. Good variety and good price. Target was so-so, and REI had amazing variety but very expensive.

 
Since we were going to stay just two nights, I wrote down a simple menu the week before and bought the food. We also checked the weather and it said it would be in the mid-70s to the mid-80s during the day, but that it would go down to mid-50s in the night. So, we packed some extra blankets. We didn’t have sleeping bags. We had one queen-size air-bed for us and two toddler air-bad + sleeping bag combo.

 
Day 1

 
As soon as we got there we started to assemble the tent. It was very easy. Inflated the air-beds, set up our “kitchen” and we started exploring the vicinities. Some friends of ours got there a few hours later and we went to their campsite. In the period of 1 hour after that Victor fell playing soccer on gravel and scratched his knees and elbows pretty badly. Shortly after Daniel went after a soccer ball and smashed his face against the cable holding the tent and got a bruise near his cheekbone. Oh well, we are used to that.

 
I bought a small stove/grill combo and we had hotdogs for dinner. The kids loved eating on the camp and we had marshmallows on the fire pit for dessert. Not need to say we had marshmallows on the fire pit every time it was on. Around 9:30 PM we went to bed. That’s when things got ugly...

 
It was much colder than we expected, and there was a draft of air coming into our tent through the mesh. Victor had slept on his air-bed before at home, so he did ok. Although he woke up in the middle of the night a couple of times and turned quite a bit. Daniel cried, coughed (I forgot to mention he was sick the week before camping), turned, wanted to get up, didn’t want a blanket and that’s how it went until about 2AM. I couldn’t sleep until 3AM worried if the kids were feeling too cold, if they were comfortable, etc. Then it was 5:40 AM and Daniel decided to wake up. Victor woke up 5 minutes later and instead of good-morning he said “I smell chicken”!

 
Day 2

 
Despite feeling a bit tired, the day went great for everyone. More of our friends got there on Saturday. We went to the beach and spent several hours there. The water was too damn cold and not even the kids (who usually don’t care for water temperature) had the courage to get into the water. We played with water balloons, sand, balls, playground, volleyball, did a barbeque (Brazilian style), drunk beer and wine. There were 11 adults and 9 kids. It was fun.

Day 2 was the shower day. We bought the tokens on the change machine (about $0.50 for 3 minutes of hot water). It was a pretty clean and good shower. No complaints there. Just make sure to have several tokens. Nothing worse than running out of hot water while you are still showering.

I went to bed around 9:30 PM, put both kids to sleep and when Daniel tried to negotiate I was direct to the point “lie down and sleep!” He complied. Everyone was sleeping in 5 minutes and contrary to the previous night, and probably because the kids were extra tired; it was mostly an uneventful night.

 
Day 3

 
We woke up again around 5:45 AM. Coffee on cold mornings does taste better. We had a slow moving morning eating our breakfast (grilled cheese sandwiches, coffee, cereal bars) and went for a walk to visit our friends. Around 8:30 AM we started packing the car and were done in about 1 hour. By 10:00 AM we headed back home and that was a wrap.

 
A few thoughts if you are going camping with kids:
  • Camping with multiple friends is better for several reasons: 
    • If you forget something (on my case olive oil), one of your friends might have brought.
    • Kids keeps kids busy, and leave parents free to do stuff
  • Wood is great for the fire pit if you are using to keep warm or to do marshmallow, but not so great to grill meat because it’s too hard to control the flames and heat, so charcoal is better on that case.
  • You’ll use a lot more wood then you expect. We used about 5 bundles, so it’s better to buy nearby the camping than to carry it with you.
  • Kids 3+ might sleep fine on sleeping bags, but very young (1-2) is hard because they move too much. I have good solution for this.
  • Lots of band-aids and Neosporin/antiseptic.
  • Next time I’ll bring a cooking oil spray for the grill.
  • Bring a kettle to warm water for instant coffee or tea, and to warm kids’ milk. The strategy to warm kid’s milk is to boil half the milk and mix it with the other half cold, so the milk gets to the right temperature. The first night I boiled the milk and it took a good hour before it was at a temperature my kids could drink it.
  • This is the first time I used Facebook to post pictures as we went. Instead of coming home, download pics, selecting the top 20-30 and uploading, I did it all with my iPhone 4. I wish I could upload videos as well. Someday.

 

 

 

Wednesday, July 7, 2010

A thing or two about becoming a tech entrepreneur

Last year I organized the StartupDay conference, focusing on what someone like me would liked to have learned before I left Microsoft to do my own startup (and ultimately failing). You can’t learn everything in a single day, but what are the top dozen things you should be aware of? That was the premises of StartupDay 2009 and it was an absolute success.


This year we are doing it again at the same venue, same weekend, same premise, but different speakers. Although the topics will be similar, the content will be significantly different, which will make this conference valuable to last year’s attendees as well as new attendees.

If you were there last year, we know you loved it (actually, just 98.6% of you loved it, the other 1.4% thought we were giving money to all attendees and were pretty disappointed). So, don’t waste any time and register as soon as possible. If you were not there, you should try to attend to learn a thing or two (or ten) about startups and entrepreneurship.

Great food, great venue, awesome speakers, and most of the attendees are pretty cool people who just made the jump, are about to make the jump or are planning in someday becoming an entrepreneur. If you are comfortable at your corporate work and absolutely focused on climbing that corporate ladder, this is certainly not the conference for you.

A quick reminder that we did sold out last year, and it’ll probably happen again this year. So make you sure you register today or drop your email address on the “Remind Me” box (middle of the sidebar), and don’t forget to tell your friends who you think could be some awesome entrepreneurs someday. Actually, grab them and come together.

Thursday, July 1, 2010

How do you screw up your email? I just did it!

[This is mostly a geek post, so if you are not one, you can just skip it]


I have an error logging system on every project I do that sends me an email every time it logs a system error or an exception on the code. Email is perfect because it’s easy to query – at least on Gmail – and you can feel the pulse of the quality of the code. If I wake up and my “Errors” folder has dozens of errors, it was a good day. If it has hundreds, not so good. If it has thousands, it means I really need to fix something urgently.

For the most part, this system works really well, except when… Twitter has a problem. For example, on Seattle 2.0, we update the Twitter Directory every day grabbing the latest profile information and the social graph of each user. That means thousands of calls per day to Twitter. If Twitter is down for 24 hours, I would wake up to thousands of error messages on my email. Not a big deal, actually.

Yet, on Tuesday I “fixed” a few problems with the code to update the Twitter directory. One of the fixes revolved around a change on the API Twitter did many months ago, but I never got to the point of implementing the new version. That’s the social graph API. Before, you’d just do one call and Twitter would return all the friends or followers of a user, even if she had 100,000 followers. They changed it to use paging, so that you’d get 5,000 at a time.

Long story short, the code worked so I deployed it on Tuesday night, except there was a tiny case that would surface if Twitter was down. And that night Twitter was down for several hours. And that tiny case meant that we would keep calling Twitter on an infinite loop until it responded without an error. In a period of just a couple of hours, our server called Twitter about 200,000 times, failing every call. Logging every call. Sending me 200,000+ emails to tell me it failed.

Yep. I clogged the GMail pipes. When I woke up in the morning, there were still about 80,000 emails on the SMTP queue on the server which I was able to clean up, but more than 120,000 were already out of my server and being delivered to my GMail account. After 48 hours I’m still getting about 2,000 emails per hour. That would not be a problem, except that I’m not getting regular emails.

If you sent me an email on the last 48 hours, I probably didn’t get it yet. I just hope I get it at some point today.