Marcelo Calbucci

Startup Score:

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

Wednesday, January 31, 2007

Upgrade on Sampa. Tell if you see a bug.

 

    In a few minutes we will deploy a new version of our Page Layout system. This will fix a few bugs and help simplify how users choose the column layout of their pages.

 

    After this upgrade, your site might look different!

 

    If you find a bug on the next few days, please, report to us as soon as possible so we can minimize the impact to other users: bugs@sampa.com

 

   

How to make TechMeme more interesting

 

    TechMeme is this fantastic website that rolls up the hottest topic on the blogosphere at the moment. For example, if you write some that insterests a lot of people, and a lot of bloggers notice that and write themselves referring to your original post, you might appear on the Homepage of TechMeme.

 

    That works fairly well, but it has a fundamental flaw, IMHO. Blogs that are popular, like TechCrunch, Scripting News or Scobleizer will get lots of link if they write something interesting or not, just because of the sheer number of readers.

 

    Well, this is where a handy IR (Information Retrievel) technique might work. And this is how it goes...

 

    In text analysis (this is an oversimplification), words that occur the most are not as valuable as words that occur a few times. If you look at papers about lung cancer, the word "Mesothelioma" is more relevant in a document than the word "are". Not because of the instance count on that document per se, but because of the instance count of all words on all documents.

 

    Now, if TechMeme really wants to surface the out of the ordinary news, that are popping on the blogosphere, they should apply a factor to each blog inverse proportionally to the average number of daily links to that blog.

 

    This way, if TechCrunch averages 500 links per blog post, and they get 5,000 for a single blog post, that is worth noticing. But right now, they get less than 500 and appear every day on TechMeme.

 

    I thought the Blogosphere was about distributing power, not shifting from a single group (Mainstream Media) to another (A-list bloggers).

 

 

C# tip: Optmizing ArrayList usage

 

    It has been a while since I wrote a tip of development. This one is pretty good, I think.

 

    In .NET 1.0 and 1.1, each ArrayList would pre-allocate space for 16 elements, which means 64 bytes just for the pointer storage. Then, the .NET team did something very smart. They instrumented several real world applications and they found out that most of the ArrayList created had... zero elements!

 

    That is right, most of the ArrayList allocated in an application are never used. So on .NET 2.0 they changed the default allocation to only 4 elements, which saves 48 bytes per ArrayList not being used.

 

     I thought that change was great, but it had near zero impact on Sampa, because I knew the cost of allocating an ArrayList so I always delayed it until I knew I would use it.

 

    But I went one step further.

 

    As the .NET development guidelines recommend, if your function returns an ArrayList, it is better to make it return an empty array than a null pointer. If you are consistent, you avoid having to compare for both cases when calling a function.

 

    Turns out, that a lot of functions will return empty ArrayList on Sampa, and probably on your application too. The solution: Create a static ArrayList with zero elements and used it every time you'll return an empty array instead of allocating a new ArrayList and return it.

 

    Just make sure that static ArrayList is created properly with readonly flag on the variable and read-only attribute on the array:

 

static public readonly ArrayList EmptyArray = ArrayList.ReadOnly(new ArrayList());

 

    That saved us a ton of memory. Each request might be "using" 300 hundred or more empty ArrayList. If each ArrayList takes about 40 bytes, we are saving 12KB per request. At 100 requests/second, that is 1.2MB less (or 30K objects) that the Garbage Collector needs to worry about (per second!).

 

 

Investor, Investor, Investor, ...

 

    Wow, this is our record. Next week we have an investor meeting on Monday, one on Tuesday, one on Wednesday, one on Thursday and one on Friday.

 

     If anything pans out I'll let you know, but you know it might take 3-4 months for that to happen.

Tuesday, January 30, 2007

Sampa is looking for a Graphic Designer


    We are looking for an awesome Graphic Designer to jazz Sampa up and do some awe-inspiring work, creating new Templates for our users from a wide range of themes, re-working some of the sites widgets and elements (like the photo album viewer) and re-design the Sampa.com website. We are looking for an artist with passion for the Web medium. We are not looking for a web developer that can do some design.

 

    On the skill side, you should be able to not only create breathtaking concepts, but also implement them on HTML/CSS. We don't do Flash.

 

    This is a progressive part-time position. Uh? We will give you some assignments, and according to the results, we might assign you more Templates and tasks. We want to create a long-term relationship with many designers because we are just scratching the surface of what Sampa will be and design work will be plenty. You must be located in the Seattle area.

 

    Contact us at jobs@sampa.com with your resume and a link to your portfolio. If you don't have a portfolio online, don't bother sending your resume, you are not right for us.


PS: We are in a hurry, and will make a decision on who we'll hire by end of next week.

LinkedIn is very slow today.

 

    I don't know why, but the LinkedIn website is extremely slow today.

 

UPDATE: I think I know why. They just released some ajaxy UI. Probably they have lots of bugs and perf issues to address.

Monday, January 29, 2007

LinkedIn spam

 

    On the last 48 hours I received 3 invitations to connect through LinkedIn of people that I never met or talked to. That is a pretty low standard.

 

    I know some people are making LinkedIn into a competition and inviting whomever they can to make 500, 1000 and sometimes 3000+ connections.

 

    I only accept invitations (and invite people) if:

    1. I have the person face-to-face;
    2. I'm friends enough with this person that I can ask for favors (like, introducing somebody else)

   

Friday, January 26, 2007

Ignite Seattle


    Brady invited me to talk at the first Ignite in December, but I was in vacation. The next event will be on Feb 13th and I told him I might give a talk, if... if I find a good subject to talk about.

    Question: What should I talk about on Ignite Seattle?

    I could talk about the Sampa product, but Ignite is mostly a geek event, and Sampa is not a product for Geeks. So I can talk about some of the business or technical challenges of building Sampa.


Thursday, January 25, 2007

State of the Botosphere

 

    Yesterday, this blog had 3212 hits (HTTP requests), out of those, 666 were from Bots. That includes Search Engines, Feed Readers (excluding IE/FF), generic bots and calls from scripts libraries (Perl, Jakarta, Java, etc.).

 

    That means 20% of the total traffic to this website was not from people, but from machines. But wait, it gets worse.

 

    I estimate that there is another 10% of requests coming from Bots pretending to be browsers (using fake user-agent). How do I know that? Well, how is it possible that the same user clicks on 5 pages in 5 seconds? Maybe it is possible. But how do you explain that the request for those pages never come paired with a request for a single GIF, CSS or JS file?

 

    So, about 30% of our resources of network are being used by Bots, not humans. The same thing happened on the Web 1.0 era. On the beginning of the year 2000 it was insane the number of bots requests coming to a website.

 

 

Monitor of the future...

 

    Check this cool demo of a touch screen monitor. I'm not sure if I want one of this since it is a lot of exercise to get things done. :)

 

http://www.fastcompany.com/video/general/perceptivepixel.html?bcpid=271543545&bctid=422563006

 

Wednesday, January 24, 2007

Blit.tv is unsure about its own system functionality

 

    If you click on one of the videos of Blip.tv and nobody has left a comment yet you get this message:

"...

It looks like no one has posted a comment yet. You can be the first!

 ..."

    It looks like? You are not sure? Wow. That is what happens when you hire over the top developers that build neural-nets with fuzzy-logic to determine if there is a comment or not on a video.

 

 

 

 

Book: The Entrepreneur's Guide to Business Law

The Entrepreneur's Guide to Business Law
(by Constance E. Bagley; Craig E. Dauchy)

Are you opening a startup? Are you thinking about joining a startup as an executive (CTO, VP of Engineering?)? Then, you must read this book before you even quit your job!!!

 

Josh Petersen from Robot Co-op (43 Things) recommended it to me before I left Microsoft. I read it cover-to-cover and I was in awe at how much I didn't know about business law.

 

The cool thing about this book is that I could understand everything. It starts with what you can and what you can't do before you leave your current employer, to how to choose a law firm, how to establish a stock option plan, how to create a fair cap-table, how to protect your IP, how to raise funds, sell the company, etc.

 

It has two other good things: Real case studies, mostly of company that screwed up; and a fictional-case that they start in chapter 1 and go all the way to the end.

I love this book and I strongly recommend to any Entrepreneur or anyone working on a small startup.

Web development is harder than apps development

 

    For me, there are 5 basic types of development:

  • Client applications
  • Server applications
  • Hardware software (drivers, bios, etc.)
  • OS
  • Web

    Doing Web development you are most of the time doing "Server applications". The result is HTML, which is interpreted by the browser. The new wave of web development, a.k.a. Web 2.0, uses a lot of DHTML and AJAX. That brings another complexity level to the web development equation because now you need to "program the browser".

 

    The good thing is that we have the W3C, IETF, IEEE and ISO to help guarantee a level of compatibility between different OSes and Browsers. The bad thing is that browsers don't do the same thing all the time. Yes, you can blame Internet Explorer as much as you want, but the reality is that even Firefox has different behaviors in different platforms and different versions. Bugs get fixed, features get added or removed, and in certain cases the browser developer must workaround a shortcoming of the OS with its own implementation of certain APIs.

 

    That said, Sampa has a sophisticated error tracking system. Every time there is a problem on the server we get notified. Every time a page is not found, we get notified, every time there is a Javascript error on the client we get notified.

 

    Each error report comes with a gazillian data points, including the full request data, the response data, the callstack, the error message, the state of the session, and other items.

 

    With all that information, we usually identify and fix most obvious bugs in a couple of hours.

 

The Javascript Issue

 

    Turns out that we keep receiving Javascript errors that are not bugs on the system and it's becoming a consistent noise on our error reports. The problem is that we don't really control the client. Users run a myriad of different browsers, on different platforms, with different dot-versions and different patches applied, but that is probably not the cause of those errors. The two main causes are browser extensions and poor network connectivity.

 

    At the end of the day, I keep thinking how happy client and server applications developers are because they can -- more or less -- control all the DLLs and executables that their users will use and deliver a deterministic experience. I wish we could automatically upgrade users to a newer browser version, but we can't.

 

    We just have to learn to deal with the fact that some users will never have a great experience -- and usually those are the ones that struggle the most with technology, and that is sad, very sad.

 

 

 

Thursday, January 18, 2007

Which pages generate most Google Adsense clicks?

 

    Google Adsense is one of the best innovations on the Internet. If you don't know what it is just skip this post because I won't have time to explain.

 

    In the last 4 months, we have doubled our Adsense revenue month-over-month. That is a 100% MoM growth. But...

 

    Why?

 

    It is great to make money, but if you don't know how you are making money that stream might end and you won't see it coming.

 

    There are two keys for Sampa to be having that kind of growth on our Adsense revenue. First, the sites that are created by Sampa are getting old, and old is good because it gets crawled, indexed and ranked by search engines. A good chunk of traffic to Sampa sites is coming from Google, MSN and Yahoo. The second reason is that we finally have some heavy users of Sampa sites. These are people that add content almost on a daily basis and have dozens to hundreds of readers, thus generating a lot of traffic.

 

    But which sites are generating the revenue? More specifically, which pages generates the most Adsense clicks? Well, Google doesn't tell you that, so you are left on your own to figure it out.

 

    After looking for a solution, we decided to implement an in-house Google Adsense Click-Tracking solution. It wasn't easy. Most of the scripts out there were bad and poorly written. Had too many false positives or it would miss some clicks.

 

    We wrote our own client+server solution and it is amazing. It is fantastic to know which pages and sites are generating most revenue. We've been tracking just about 10 days now and we are overwhelmed by that information. We need at least 30 days of data to take some conclusions, but the options are very promising.

   

Have you met Janis Machala?

janis_bio

    Janis Machala is the founder and partner of Paladin Partners. We just came back from a meeting with her to understand the possibility of working together.

 

    If you have a startup in Seattle you probably should meet her. She is by far the most connected person on the Puget Sound area. From investors to consultants, from engineers to executives, she has an impressive rolodex.

 

    The meeting was well above my expectations. Paul (Sampa's Chairman) and I came out with a dozen work items (mostly contact people).

 

    We have three things on our high-level to-do list: Hire a VP of Marketing, hire a User Experience guru to help us with the service usability/learning-curve, and hire another developer to help us get features done quicker.

 

    All of those boil down to one thing: money. Believe it or not, but we have strong candidates for all those positions. The only reason impeding them from joing is a salary. Most people cannot afford to live without a salary and we understand that.

 

    So, we are on the quest that most startups face on their existance which is to raise money. We have about a dozen or so investors on the loop. We know for sure Sampa is not for some of them at this moment. And we know a few others that are very intrigued by what we are doing.

 

    How will that pan out? If I knew I would be playing the lottery.

Would you pay $1,308 for an iPod Nano?

 

    Here is an interesting article from CNET on the price of iPod Nano in 26 countries. Brazil tops the list with $327.71, while the same iPod can be bought in the US for $149.

 

    Now, let me say that this doesn't reflect reality. The cost of living in São Paulo (Brazil's biggest city) is about 4 times less than an average US city. Which means that paying $327 in Brazil is the equivalent of somebody paying $1,308 in the US. Would you pay that price? Brazilians do.

 

    Here is another one for you: XBox 360 in Brazil costs R$ 2,999 which means US$ 1,404 in the US according to today's exchange rate. Now, apply the 4x cost of living. Would you pay $5,616 for an XBox 360? Brazilians do.

 

    That is insane.

 

    Here are some of the factors contributing to that:

 

  • Foremost, there is an 70% importation tax on eletronics (and other) goods. So, if it costs Microsoft $400 to produce an XBox, by the time it gets to a distributor in Brazil the cost is already $680.
  • Brazil has a good size market (e.g., 20+ MM Internet users), but not big enough to justify an investment in manufacturing the products in the country or creating versions only to Brazil. So Apple and Microsoft mostly ignore it and let Importers do their work. Of course, Importers need to have profit as well, so they do as they can.
  • The government still believes that protecting our frontiers from imported products is the best way to help develop a healthy national industry. I though we had already proved that this is a mistake in the 80s and 90s.

 

    Now Brazil has a strong-left president, that doesn't even have a high school degree, and cannot think for himself. He loves to visit countries where their presidents (or dictators) are as ignorant and crazy as he is. How is he suppose to understand the nuances of international trade and industry development and create a policy to advance the country?

 

    Well, China and India will take (are taking!) Brazil's place on the INTL landscape and that will be very costly to the country.

 

 

   

Wednesday, January 17, 2007

Download WHOIS database

 

    Does anyone know if it is possible to download the entire WHOIS database? I'm just interested in the list of all registered .COM, .NET and .ORG domain.

 

    No, I don't want to spam people, I just want to do a domain analysis.

 

 

Friday, January 12, 2007

Google penalizes Sampa

 

    Around September our PageRank on Google was 5, then in October it suddenly dropped to 2. We knew it was strange, but possible. Today our PageRank is zero!!!

 

    Google is penalizing Sampa for something that we didn't do. We never used any tricks or black-hat SEO techniques.

 

    However, Sampa is like a web-hosting company, where we have thousands of websites on the same IP address. All these websites point back to Sampa.com as well. That can be easily perceived as a link farm by Google and other search engines, but it is not.

 

    Now we are not sure how to contact Google about that. Does anyone has any idea how to fix that?

 

Redfin on Google Maps vs. Virtual Earth

 

    Redfin just released a new version of their site using Virtual Earth. Some bloggers are covering that, but they miss the best part. This blog post by Bryan of Redfin on how they came to the decision to use Virtual Earth when the compared to Google Maps.

 

    This is very cool that they are writing about the difficulties and challenges of using a third-party service. I wish more companies would write similar posts (I try to do that from time to time) because that can tremendously benefits other startups.

 

    Way to go guys.

 

 

Thursday, January 11, 2007

Suversion + Visual Studio + PushOk + FogBugz

 

    The setup is almost complete. The only thing missing is to integrate FogBugz with Suversion. Now the Sampa platform looks like this:

  • IDE: Visual Studio
  • Source Control: Subversion
  • Bug+Feature Tracking: FogBugz
  • IDE Plug-In: PushOk

    The hardest part of it all was the PushOk plug-in for Visual Studio to integrate it with Subversion. I looked at other plug-ins, but PushOk seemed to be the best. The problem rely lies on Subversion (or Apache, I'm not sure) because they are very, very picky about case-sensitivity.

 

    I find case-sensitivity an unnecessary burden for File systems or Internet usage (except for passwords). Do we really think that people consider "a.htm" different from "A.HTM"?

 

    For Test Harness and Test Case management Sampa has an integrated system that we've built ourselves. The only thing that we really don't have is daily builds. I'm not sure if I want to invest the time right now, but certainly in the future.

   

Wednesday, January 10, 2007

(Secrecy + Buzz) vs. (Openess + Feedback)


    Not all companies can pull an "Apple".

   The problem of keeping things secret and doing a big hype launch is that you don't get any customer feedback. Apple can get away with that because the Apple-lovers will ignore most problems in exchange for the beautiful UI.

    I don't recommend secrecy for startups. Getting your product to the user's hands as early as possible should be your #1 goal. Yeah, a big company might steal your idea, but they won't because they are too big to pay attention at small companies. Plus, they are a big company so they think they are better, thus, your idea has to be inferior. Luck you.


Tuesday, January 9, 2007

The Perfect Storm


    You know when something is big when most distributions lists that you belong to discuss the same topic, bloggers discuss the same topic, mainstream media (even your local channel) talk about it and when you get home your wife is talking to you about the same thing.

    Hail Apple!

   

Sampa Mashup Share

 

    I just thought it would be interesting to share this bit with readers. Below is a graphic of how many users *added* a certain mashup to their Sampa site on month of December. Notice that it doesn't represent how many users are using a specific type of mashup because users might have added it and remove it later or users might have added before the month of December.

 

    YouTube (42%) is the #1, followed by Flickr (38%) very closely. Then we have Blogger (9%), Delicious (6%) and BlueDot (5%).

 

Monday, January 8, 2007

Increasing number of Trackback spams.

 

    On the last 2-3 weeks my blog has received a much higher number of Trackback spams (or Comment spam). Sampa uses a pretty good detection system for those and most of them don't even reach me, but some get through the system.

 

    These Spams are different. They don't look like your typical viagra / casino / poker blog-spam. Most of the time they contain religious or spiritual titles. I think people are trying to increase their PageRank, but hey, that is stupid because we use "rel=nofollow" on our comment's links so that won't do anything for them.

 

 

 

 

Subversion: The problem with Open Source

 

    I'm in the process of installing Subversion at Sampa for us to manage our source code. I decided to replace CVS with Subversion because it has more features, and it is a product that still evolving (while CVS seems to be stuck in time).

 

    Now process of installing Subversion is not smooth. This is not the first Open Source software that I use, but by far it summarizes all fear that people have from Open Source:

 

  • Poor pre-sale documentation: Ok, I didn't buy Subversion, but before I start using a piece of software I like to know how is it compatible with my existing softwares, I'd like to know how to works (not how the code works!) and how my team can benefit from it. Subversion page is a mess. Too much text and too much giberish.
  • Poor setup documentation: This is the worst. I had to find information on 3 or 4 different places to get things going.
  • Poor compatibility: The latest version of Subversion has to run with the latest version of TortoiseSVN, but it won't work with the latest version of Apache because nobody had the time to compile the libraries. Uh?
  • 1-click setup: It takes about 2,000 clicks. You have to edit many configuration files, jump into the prompt and do a ton of stuff to get it to work. And if it doesn't "...look at the log files...". Argh!

    Subversion per se is an amazing piece of software. But software is not only the bits that does the core task, but the entire experience end-to-end. Open Source cannot have widespread usage while users are expected to deal with these kind of problems.

 

 

Friday, January 5, 2007

Subversion... Here I come.

 

    When I told a friend I was using CVS for source control, he immediately asked "why?"... And I said "Why why?", he says "'cause Subversion is much better". Damn.

 

     I looked at a couple of sites comparing them both, and... Subversion *is* much better. I don't know how easy it is to install, manage or integrate with Visual Studio, but the feature list is really good.

 

    To be honest I wish I was using Visual Studio Team System, but I can't afford thousands of dollars for a source control system that will be used by 2-3 people. Yeah, yeah, yeah, it is much more than source control, but still thousands of dollars.

 

    I looked at the Subversion FAQ and install guide and it looked ugly. Let's see how that goes.

Thursday, January 4, 2007

FogBugz... First impressions.

 

    Yesterday I bought and installed FogBugz to run here at Sampa, a product by FogCreek (you know, the Joel on Software guy).

 

    I was looking for a bug tracking system for a while. FogBugz surprised me because it also tracks Features (although any bug on any system can be flagged as a feature). And they have this even more impressive integration with customer emails.

 

    FogBugz is not a support/ticket system, but it seems to do some of that work. I still need to activate that feature.

 

    The installation wasn't a breeze. It had some issues with my Domain Controller and it didn't give me the option to create a new Virtual Site on IIS (I had to quit the setup, create it and start again).

 

    Once I have a better grip into the product I'll post more.

 

 

 

Tuesday, January 2, 2007

Most popular blog entries for 2006.

 

    I'm back and at full force. To start the year, a look at the most popular blog entries from 2006:

 

14 Tips to Speed Up Your Web Pages.: Tips for developers to make their web app faster. Users thank you. (got Dugg)

 

Calling CSI Bloggers: Is it a crime or a prank?: A strange entry on the USGS geographical database. Thanks to Boing Boing the case gets solved in less than an hour.

 

New Seattle Startups Blogs List: And the list keeps growing. Thanks to Scoble to help divulge it.

 

How to screw up in 8 easy steps... by Dell.: It is amazing how a large corporation, run by smart people can do so many dumb things.

 

How to detect and not be an Asshole.: Inspired by a book mentioned on Guy Kawasaki's blog.

 

How do I calculate a MD5 hash from a string? (The right way!): A very poor example of how to use security on MSDN code samples. They should have learnt by now.

 

Firefox adds \n to innerHTML!: Another rant on how weird firefox DHTML is. (IE is as weird).

 

RSS is broken, and it is going to hurt you.: RSS needs a lot of features to become better and a more full protocol.

 

Top 7 mistakes at Sampa, a Startup tale.: Our therapeutical post.

 

Issues Migrating to .NET Framework 2.0: My first issues going from .NET 1.1 to .NET 2.0. Then I found more, and more issues.

 

Your are not entitled to anything on this life. Earn it.: Life is better if you don't assume you deserve things just because you are who you are.

 

    2007 promise to be an even better year!