<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4226687990946594073</id><updated>2012-02-06T07:21:10.253-08:00</updated><category term='sunacle'/><category term='apple'/><category term='monetization'/><category term='freedom of speech'/><category term='comic'/><category term='advertising'/><category term='bay area'/><category term='total failure'/><category term='la'/><category term='office space'/><category term='product manager'/><category term='consultants'/><category term='developers'/><category term='xkcd'/><category term='great engineering'/><category term='orcsun'/><category term='consulting'/><category term='apps'/><category term='expanding'/><category term='sun'/><category term='busineess'/><category term='google buzz'/><category term='app'/><category term='advertisement'/><category term='woes'/><category term='cruise'/><category term='avro'/><category term='humor'/><category term='thrift'/><category term='acquisition'/><category term='earnings'/><category term='google wave'/><category term='cubicle'/><category term='law'/><category term='punch the monkey'/><category term='great infrastructures'/><category term='public domain'/><category term='employees'/><category term='startup'/><category term='great companies'/><category term='hierarchy'/><category term='college'/><category term='dumb-ass'/><category term='self referencing'/><category term='botnet'/><category term='PMs'/><category term='oracle'/><category term='time'/><category term='los angeles'/><category term='hiring'/><category term='sf'/><category term='koobface'/><category term='dreams'/><category term='infrastructure'/><category term='ppc'/><category term='carnival'/><category term='sucks'/><category term='google search'/><category term='success ideas'/><category term='pricing engineering'/><category term='monetize'/><category term='traffic'/><category term='failure'/><category term='demandmedia'/><category term='loud guy'/><category term='recursion'/><category term='google'/><category term='money'/><title type='text'>HackerKevin - Computer Kevin</title><subtitle type='html'>Random thoughts on technology, companies, trends, and such.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8807464823922164072</id><published>2011-12-29T12:01:00.001-08:00</published><updated>2012-01-03T20:29:16.364-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='great infrastructures'/><category scheme='http://www.blogger.com/atom/ns#' term='great companies'/><category scheme='http://www.blogger.com/atom/ns#' term='infrastructure'/><category scheme='http://www.blogger.com/atom/ns#' term='great engineering'/><title type='text'>Eng: Great Engineering Comes From Great Infrastructure</title><content type='html'>&lt;span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; " id="internal-source-marker_0.5096904890044446"&gt;A  great engineering culture starts with a great engineering  infrastructure. A great infrastructure allows people to stack  technologies and &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;leverage arbitrarily upon each other, compounding their leverage to enormously high levels. &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;On  the other hand, without infrastructure and culture in place, a team  struggles with mundane issues such as integration, expertise  segmentation, communication problems, redundant system administration  efforts, and silo’ed [undebuggable] code base.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;[&lt;/span&gt;&lt;a href="http://algeri-wong.com/yishan/engineering-management-tools-are-top-priority.html"&gt;&lt;span style="color: rgb(0, 0, 153); vertical-align: baseline; "&gt;1&lt;/span&gt;&lt;/a&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;Many  tech pundits say that Google by far is some of the &lt;span&gt;worst&lt;/span&gt;  &lt;b&gt;product-oriented&lt;/b&gt; tech companies in Silicon Valley. Wave sucked donkies. Buzz was marginally better. G+ is a premature baby. The first few  versions of Android was terrible in terms of  usability/security/developer APIs. The first few versions of Google  search was mediocre at best. The first few versions of Gmail was a big  turn off for non-techies. And the early Google AdSense? Horrible  contextual match.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;This  is not to say that Google is a horrible company as a whole but that it  is a very misunderstood company. For what Google lacks as a product company, it makes up by  having a superb backend infrastructure with very effective  engineering practices. Lead by world most famous luminaries from both  academia and industry, Google built some of the most amazing infrastructures including the homogenous data acenter/Borg  (EC2), GFS (S3), MapReduce (Hadoop), SS Table/BigTable (HBase), Service  Orinted Architecture (SoA), Protocol Buffer (Thrift), Mondrian (code  review), Sawzall, SRE team &amp;amp; Borgmon (monitoring/management). These  infrastructure foundations were and still are ahead of its time, and  even today Amazon and Hadoop are still trying to catch up. This amazing Google  foundations allow Google developers to build, integrate, and iterate a zillion different crappy products quickly. For example, while Facebook still have just one  product in the last few years, Google used minimal developers to create  Wave (failure), Buzz (failure), and Google+ within a short period of a  few quarters.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;So while Google end-user products are not exactly exemplary (relative to what Apple has cranked out), its backend infrastructure is something that is highly prized and coveted. Here  are some of the simple engineering tenets that companies can  replicate to also create a Googly infrastructure:&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;1) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Use homogeneous systems. &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;To  minimize versioning problems, developers all use the same version of OS  as the production machines. Imagine the old days back in the 90s: heterogeneous  environment with NT4.0 + HPUX + SunOS + SCO + BSD + Irix + DEC, which creates a  silo of people with different expertise, and invariably creates  integration headaches. Because a significant amount of developer time is  spent on integration and debugging, why create more problems by having a  highly heterogeneous environment?&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;At  Google, there is only 1.5 version of the OS, the “Goobuntu”. The  developer uses the exact same version (and package dependencies) as the  production system. “Versionitis” is no more.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;2) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Make the code base universally shared and accessible on a uniform version control system.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;  This empowers any developer to look at and fix any other developer’s  code, which minimizes unnecessary communications (e.g. “Hello Joe, I don't see your code and it is doing something weird, can you look into it?”). A  developer at Google can read the &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; "&gt;entire&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt; Google source code, in google3/... as well as check in fixes for anyone else. How is that for transparency?&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;3) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Pick a few core [production] languages, and stick to them.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;  By having just a few core languages, developers from different groups  can read each other’s code, and be able to jump from one group to  another with ease.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;The  worst scenario is when a company starts to use various exotic languages  (Haskell, Erlang, OCaml), or [as in the case of Twitter] when there are  simply too many languages for one product (LISP + Perl + Python + PHP +  Ruby + Lua). You really don’t want emails going back and forth that  looks like “Hey Joe, do you know Lua? I think there is a bug in the  re-Tweet feature and the person who wrote this Lua code left.”&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;At  Google, the 4 main languages are: C++ (backend), Java (backend and  middle-tier), Python (middle-tier and frontend), and JavaScript  (frontent). Almost every developer at Google [who has been around] is well versed in these 4.  There are many experimental but non-production languages/frameworks. For  example, GWT has been out since 2007, and Go/DART are just experimental  languages that no one touches.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;4) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Scale horizontally by creating Service-Oriented-Architected (SoA) systems.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;  Instead of creating a monolithic bloated code-base, the use of SoA  allows the system to be spawned, replicated, and distributed. It also allows components/services to be tested individually. SoA  requires communications, hence &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;unify the method of communication between the services&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt; (e.g. pick one: Protocol Buffer, Thrift) and the different core languages can communicate with each other with ease. With a horizontally scaled solution, you simply need to add more of the same machines to handle more load. &lt;a href="https://docs.google.com/presentation/d/1WfdcV6Wfgeu9cLcgdWHpRmvUulWGCHumd-S8dTTx0Jc/edit?hl=en_US"&gt;Look at this slide for more info&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;4b)&lt;b&gt; If you're building to scale, then don't scale vertically.&lt;/b&gt; It is tempting to build a crappy traditional architecture and then just upgrade to better hardware to scale, like buying more RAM, faster machine, more processors, SSD, exotic SANS, Oracle, etc -- DON'T DO IT! Vertical scaling is a one time process and has a bound. Your crappily written server may handle 2000 QPS today and adding a superior hardware may boost it to 3000 QPS. You've maxed out your hardware configuration to get that 3000 QPS, now what? You're stuck! Superior hardware is never going to cure problems from shitware, the same reason that highrises can never be built out of muddy foundation.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;4c) &lt;b&gt;Do not use vendor specific solutions. &lt;/b&gt;I've seen so many startups getting locked in by .NET or Oracle or Federated MySQL and such because they used some exotic feature that is not available anywhere else, so they end up getting stuck and scale vertically (see 4b). One example is seeing a bunch of old-school programmers putting every logic they can think of in SQL stored procedures. Now, when it comes time to scale, they either want to shard databases (or even want to move it to distributed processing), but they can't because they've invested too much time writing those vendor specific procedures, making transitioning a very difficult if not impossible task without having to rewrite the entire software. People who insist on using a bunch of SQL stored procedures (logic in centralized computation) are usually a bunch of inexperienced folks who never experienced horizontal scaling-- homogenous and distributed (horizontal) computation model.&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;5) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Separate system administrators from developers.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;  First, developers dislike mundane system &lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;administration tasks, and  system administrators in general are not the best developers. Let the  system administrators worry about system allocation, load, deployment,  monitoring, costs. Let the few elite architects worry about the  architecture that provides reliability and fault tolerance, and let the  developers worry about code base, scalability (using SoA), extensibility  and usability.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;6) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Measure measure measure. &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;Every  system call, every RPC, everything should be logged to monitor,  improve, and scale. Google does this by implementing varz (similar to  stats), and the SRE teams (elite sysadms) do tight monitoring and alert  systems.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;7) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Foster a culture of computer scientists, not hackers.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;  Hackers can crank out demos fast (case in point Yahoo) but they also  create too many job opportunities for people who enjoy carrying pagers.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt;8) &lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; "&gt;Hire hire hire.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; "&gt; Hire based on abilities instead of “he is my friend.” This topic alone deserves a few pages of discussion.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 15px; font-family: Arial; text-decoration: none; vertical-align: baseline; "&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8807464823922164072?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8807464823922164072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2011/12/eng-great-engineering-comes-from-great.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8807464823922164072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8807464823922164072'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2011/12/eng-great-engineering-comes-from-great.html' title='Eng: Great Engineering Comes From Great Infrastructure'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-1824860531051674368</id><published>2011-12-20T14:58:00.000-08:00</published><updated>2011-12-28T14:30:35.295-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thrift'/><category scheme='http://www.blogger.com/atom/ns#' term='avro'/><title type='text'>Thrift IDL (protocol)</title><content type='html'>&lt;div&gt;After the horrible experience with Avro, I considered using Protocol Buffer and Thrift for the company. Protocol Buffer's strongest point is that it is stable (not much has changed in the past few years). It is used in every single possible service in Google, it has gone through a very stringent code-review process, it has been written by the world's most seasoned and anal engineers, and thus has been well battle tested. However, I consciously passed over the opportunity to suggest Protocol Buffer to use for the company partly because I'm considered a bias party, and to suggest it will simply reinforce the idea that "Kevin is a Googler so he's obviously biased. He thinks everything coming out of Google is amazing." To be fair, I really think that Google cranks out shit end-user products most of the time (Wave, Buzz, G+, Location, Google Base, Android, etc etc...). Sometimes Google happens to make good end-user products only because Google throws a billion darts in the dark and occasionally one of the darts hits the bullseye. That's all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I tested Thrift, and it is acceptable. In terms of feature, it is very similar to Protocol Buffer. The first thing I tested was message backward and forward compatibility. There was no problem in either case. Whereas Avro returns an error saying that message format is different, Thrift server gracefully (and correctly) disregards new message types or ignores old messages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Java Thrift, you can set your Thrift objects using getters and setters, which is great because if the message type changes (name or type), the Java compiler will give you an error immediately. In Java Python, you can also set your Thrift objects using the constructor and the runtime system will catch name errors. In contrast, Avro does not do any of this, so your program will just run along happily even though you're setting my_integer="Not an integer" and somewhere down the line your program crashes and you're scratching your head.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One last thing I love about Thrift: there is an &lt;b&gt;asynchronous transport&lt;/b&gt;!!! This is exactly what powers AdSense, and allows people to easily prototype distributed computation architectures.&lt;/div&gt;&lt;div&gt;http://blog.rapleaf.com/dev/2010/06/23/fully-async-thrift-client-in-java/&lt;/div&gt;&lt;br /&gt;&lt;div&gt;There are a few Thrift "bugs" that should be fixed. For example, suppose you set the following as message definition:&lt;/div&gt;&lt;div&gt;&lt;span&gt;  2: string lastname = "last_default",&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  7: string lastname = "HO",&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above should signal a compiler error (e.g. "Same type name not allowed."). There are many other errors that should have signaled an error, but are not. I guess either they are too busy, too lazy, or just expect the compiler (either C or Java) to catch the error.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One other minor difference between Protocol Buffer and Thrift: In Thrift, there is no deprecation keyword. In Protocol Buffer, deprecation field compiles into Java, and the compiler will tell you the field is deprecated to allow programmers to update. It's not a big deal, but it may be a big deal for companies that keep updating contracts between two services.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end, my take on Avro vs. Thrift is like this. Avro is like Microsoft Zune. Zune has all the bells and whistles-- AM radio, recorder, more buttons, higher display resolution, external HD, blah blah blah. The iPod on the other hand, just does one thing. On paper, Zune is superior over iPod. On paper, Avro is superior over Thrift. But in the end, Avro just doesn't work well (no forward/backward compatibility, buggy buggy buggy and the developers don't even respond to my bug report). What looks good on paper, isn't necessarily good in practice. You can't trust everything you read. You have to play with it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-1824860531051674368?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/1824860531051674368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2011/12/thrift-idl-protocol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1824860531051674368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1824860531051674368'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2011/12/thrift-idl-protocol.html' title='Thrift IDL (protocol)'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-844925466164739279</id><published>2011-12-19T16:20:00.000-08:00</published><updated>2011-12-20T04:12:50.956-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avro'/><category scheme='http://www.blogger.com/atom/ns#' term='sucks'/><title type='text'>Avro, what a complete waste of time</title><content type='html'>I'm responsible for evaluating the different IDLs (Protocol Buffer, Avro, and Thrift) as a unified form of communication between different services in the company. A key feature of today's IDL is backward and forward message compatibility. For example, if the client adds one more field to a message, the server should be able to take the new message and process it (while ignoring the new field). The opposite is true, where the server takes in additional fields in the message while the client does not, and the server should just assume that the field is empty.&lt;br /&gt;&lt;br /&gt;I started with Avro because I had high hopes for Avro. It had great features that neither PB nor Thrift had (no need for field deprecation, no need for deprecation, no need to get an IDL compiler), and because it's built in to Hadoop's MapReduce. My experience with Avro began with downloading the package (version 1.6.1, the latest). I tried out an example code (phunt-avro-rpc-quickstart-avro-release-1.2.0-9-gce46e91.zip) with included two small Python codes, start_server.py and send_message.py (client). Both of them used the same IDL (mail.avpr). I got the client to send a message to the server with ease. Then, I tried the most important aspects of IDLs--&lt;i&gt; forward and backward message compatibility&lt;/i&gt;. I expected the server to gracefully accept old and new messages, but instead got something completely unexpected:&lt;div&gt;&lt;br /&gt;&lt;tt&gt;PATH=~/code/avro-example/avro-1.6.1/src ./send_message.py AA BB MSG&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;File "./send_message.py", line 56, in&lt;br /&gt;print("Result: " + requestor.request("myecho", {"mymessage": message}))&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 145, in request&lt;br /&gt;return self.issue_request(call_request, message_name, request_datum)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 260, in issue_request&lt;br /&gt;call_response_exists = self.read_handshake_response(buffer_decoder)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 204, in read_handshake_response&lt;br /&gt;handshake_response.get('serverProtocol'))&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 120, in set_remote_protocol&lt;br /&gt;REMOTE_PROTOCOLS[self.transceiver.remote_name] = self.remote_protocol&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 475, in&lt;br /&gt;remote_name = property(lambda self: self.sock.getsockname())&lt;br /&gt;&lt;b&gt;AttributeError: 'NoneType' object has no attribute 'getsockname'&lt;/b&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;A well designed IDL should at least show a warning message indicating that the field is unknown (or new, etc). Nope! Avro returns with a weird socket-related error. Upon looking at the Avro library (avro-1.6.1/src/avro/ipc.py), line ~474 yields:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:130%;"&gt;&lt;tt&gt;# read-only properties&lt;br /&gt;sock = property(lambda self: self.conn.sock)&lt;br /&gt;remote_name = property(lambda self: self.&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#cc0000;"&gt;sock&lt;/span&gt;.getsockname()&lt;/b&gt;)&lt;/tt&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So, I'm no Python expert but it's clear that self.sock does not exist, so I manually set remote_name in the constructor __init__ (meaning it's not a readonly variable anymore, but who cares) and viola, it works! Who the heck checked in this code anyways? My next attempt was the reverse: the server takes in a newer message and the client sends an older message and here's my very useful Avro message:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;/code/avro-example/avro-1.6.1/src ./send_message.py AA BB MSG&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;File "./send_message.py", line 56, in&lt;br /&gt;print("Result: " + requestor.request("myecho", {"mymessage": message}))&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 145, in request&lt;br /&gt;return self.issue_request(call_request, message_name, request_datum)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 264, in issue_request&lt;br /&gt;return self.request(message_name, request_datum)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 145, in request&lt;br /&gt;return self.issue_request(call_request, message_name, request_datum)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 262, in issue_request&lt;br /&gt;return self.read_call_response(message_name, buffer_decoder)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/ipc.py", line 222, in read_call_response&lt;br /&gt;response_metadata = META_READER.read(decoder)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/io.py", line 445, in read&lt;br /&gt;return self.read_data(self.writers_schema, self.readers_schema, decoder)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/io.py", line 486, in read_data&lt;br /&gt;return self.read_map(writers_schema, readers_schema, decoder)&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/io.py", line 615, in read_map&lt;br /&gt;block_count = decoder.read_long()&lt;br /&gt;File "/home/vm42/code/avro-example/avro-1.6.1/src/avro/io.py", line 184, in read_long&lt;br /&gt;b = ord(self.read(1))&lt;br /&gt;&lt;b&gt;TypeError: ord() expected a character, but string of length 0 found&lt;/b&gt;&lt;/tt&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Alright, I've had enough. What I just attempted, was a very very common test case and if there's any decent amount of unit tests, this problem would never have existed. My guess now is that there is no unit test whatsoever, and there isn't much user base because I can't find this complaint anywhere via Googling (and I can't find much Avro documentation in the first place)! I sent an email to the Avro developer team this weekend and I've yet to receive a response. I am most utterly not impressed so far.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion: &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1) Save yourself some time by using something else that is battle tested. Bleeding edge (in this case) is a waste of time.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2) &lt;/b&gt;&lt;b&gt;The only thing that matters is your hands-on experience. &lt;/b&gt;&lt;b&gt;Marketing and bias makes Avro look amazing (dynamic features, flexibility, maintenance free, language support, ...), but it doesn't matter if it does not work TODAY.&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-844925466164739279?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/844925466164739279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2011/12/avro-what-completel-waste-of-time.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/844925466164739279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/844925466164739279'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2011/12/avro-what-completel-waste-of-time.html' title='Avro, what a complete waste of time'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-5646954481895540046</id><published>2011-02-25T14:29:00.000-08:00</published><updated>2011-02-25T15:24:34.454-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='employees'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Recommending a fellow Googler to a startup</title><content type='html'>Once in a while I get this question: "Hey Kevin, thank you for recommending a fellow Googler.  What do you think about X's technical skills?"&lt;br /&gt;&lt;br /&gt;My long response is this:&lt;br /&gt;The Google technical interview process is one of the most challenging interviews one can get. There's the resume screening (only one out of 1000 resumes pass through), then email screening, then phone screening, possible secondary phone screening, on-site screening, and finally the hiring committee (from Mountain View) reviews long and very detailed written feedback from 7-10 interviewers. If someone makes it in as an engineer, you are sure that person is way above average over the millions and millions of people who send in their resumes to Google each year. Think about this: if you're an engineer at less-than-stellar company that don't value core engineering (Fox, Yahoo, Citysearch, AT&amp;T Interactive, MySpace) and you think you can do better, you have already at some point in your career applied to Google. It's only human to want to do better. Look. Chances are, an engineer you already know (who never went to Google) already applied and chances are he/she failed. I realize what I'm saying is really harsh, but this is harsh reality. For this reason, even a really bad Googler is still above tech industry average (e.g. &lt;span style="font-weight:bold;"&gt;especially&lt;/span&gt; from what I see in Los Angeles). Secondly, if a person survives the Google culture for a few years, you're sure that person is at least average amongst Googlers because the below average Googlers get kicked out very very fast; 2 to 3 quarters and you're out. I personally know a few that don't survive a year-- usually they're super smart but unmotivated and/or had other issues.&lt;br /&gt;&lt;br /&gt;Having that said, technically, &lt;span style="font-style:italic;"&gt;almost&lt;/span&gt; everyone I know at Google can kick the industry average programmer's ass. Googlers tend to come from top-tier schools or top-tier companies. They made it into the system. They are hardcore, trained under the stringent Google Code Readability process. People strive to get badges on their Moma page by being Googly-- being technically good. I am not exaggerating or bragging, I'm just saying this after observing different people from different backgrounds, and relative to Google, the average tech standard is a pathetically low bar.&lt;br /&gt;&lt;br /&gt;Anyways, if I vouch for someone from Google, then that person is almost more than technically adequate. But then again, so is 90% of the other Googlers.  There are of course distinctions amongst the group of the Special Force. Some people are slow but precise (they like to work on mission critical code). Some people are fast but sloppy (they like to work on social networking sites). Some like Java. Some like Python. Some like Javascript. Some like C++. Some people are smart, and some people are simply mind blowing brilliant. The Google gene-pool isn't all homogenous.&lt;br /&gt;&lt;br /&gt;In the end, you should not have to worry about a Googler's technical skills. You may however, have to worry about many other things, like being able to give them challenging enough of a task, making them feel like they're making a big impact to the world, and providing enough incentives and rewards for keeping them; believe me, everyone is getting poached here and there these days with ridiculous packages. Keep in mind, there's a reason why Google managers tend to come and go very fast--  an x-manager once commented to me that it's really really hard to motivate and manage someone who is clearly much smarter than you are. I wasn't a manager at Google but I can understand why. Some of the smartest people I've met in the world are people I met in Google, and a few are a total pain in the ass to work with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-5646954481895540046?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/5646954481895540046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2011/02/recommending-fellow-googler-to-startup.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/5646954481895540046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/5646954481895540046'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2011/02/recommending-fellow-googler-to-startup.html' title='Recommending a fellow Googler to a startup'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-1435016469715069726</id><published>2011-02-15T14:00:00.000-08:00</published><updated>2011-02-25T14:29:54.209-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='product manager'/><category scheme='http://www.blogger.com/atom/ns#' term='PMs'/><title type='text'>Product Managers</title><content type='html'>My startup is hiring a product manager because none of the engineers want to spend day after day doing product research, testing/trying out competitors' products, meeting solution providers and clients, blogging, product evangelist, PR, writing white-paper, doing patent research, and other things that engineers feel are too un-intellectual to do. While I have a nice Google system for interviewing elite engineers, I don't have a good system for hiring a good PM. In the end, I think there is so much variability in PMs that I don't think you can actually design a process for it. I do however think the most important thing is that the PM's style should match well with the overall vision of the company. For example, if the company is creating a business product, then the PM should be of the "spec hunting" type (more on this later). If the company is creating a user-end product, then the PM should be of the Steve Jobs type. In a &lt;span style="font-style:italic;"&gt;hypothetical world&lt;/span&gt; were there are only two extreme types of PMs, then they are described as follows:&lt;br /&gt;&lt;br /&gt;1) The most common PMs are the "spec hunters." They will write down specs that their competitors have, and try to compete on specs. They will list out a long matrix of features and check them off one by one. Case in point a few years ago the Microsoft Zune on paper is much more feature rich than anything out there. It's got a voice recorder, FM radio, more storage, Oled, 720p, 33 hr play time, so on so forth. The iPod does not have a voice recorder, does not have a FM radio, smaller storage, older/less resolution display, 30 hr play time. It doesn't do much. Almost all of Microsoft products are spec'ed products, designed by a committee with a long feature list that each committee member checks off. On paper, the Zune is clearly superior to the iPod. However, hiring a "spec hunting" PM is not a good match for consumer products; we all know the story with Zune vs. iPod today. Zune is dead. &lt;br /&gt;&lt;br /&gt;Other examples of "spec hunting" PMs: America Online and Y! [homepage] are committee designed -- the idea with those products is that the more stuff you slap on a page, the happier the committee. It is no surprised that AOL looks like a mess. Ditto with Yahoo. Dell is yet another example. The Dell laptop on paper is superior to the Mac-- brighter screen, more HD, faster processor, bigger capacity battery, 1/2 the price. The list goes on and on and on.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2) The less common PMs are the minimalists. One example-- Steve Jobs is one such PM who designs with minimal features. Other example include Porsche, Ferrari, and other Italian designed products; all these cars have minimal features that simply run fast and look nice, and none have fancy OnStar or XM radio or GPS display or voice activated commands built in. Dropbox is in this spectrum too... it just does one thing-- let people drop files into the file system. Google search is another example of a minimalist page; you don't do anything on the main page except to search. &lt;a href="http://www.google.com/corporate/tenthings.html"&gt;http://www.google.com/corporate/tenthings.html&lt;/a&gt; Read point #2. Here the classic example: the Apple iPod only does one thing (whereas Zune and competitors do 100 other things), yet it still slaughtered competition. Zune is dead and the spirit of iPod lives on in the form of iPhone and iPad.&lt;br /&gt;&lt;br /&gt;The minimalist PMs understand the power of looks, feel, navigation, intuitiveness, cohesiveness, and consistency. Whereas the "spec hunters" think they have taste, the minimalist PMs actually have taste.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the end, I see that most companies are "run by committees" ruled by "spec hunting" PMs. I think the reason is clear-- minimalists who have a sense of taste are as rare as diamonds. Of course, there's nothing wrong with that. Despite Microsoft's extremely tasteless designs (case in point Microsoft Bob aka The Useless Paperclip Helper), it is still one of the most successful companies in the world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-1435016469715069726?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/1435016469715069726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2011/02/product-managers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1435016469715069726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1435016469715069726'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2011/02/product-managers.html' title='Product Managers'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-7849453300801858558</id><published>2010-12-13T22:16:00.001-08:00</published><updated>2010-12-13T22:17:29.921-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ppc'/><category scheme='http://www.blogger.com/atom/ns#' term='koobface'/><category scheme='http://www.blogger.com/atom/ns#' term='botnet'/><title type='text'>Koobface, a highly organized botnet</title><content type='html'>http://www.infowar-monitor.net/reports/iwm-koobface.pdf&lt;br /&gt;&lt;br /&gt;Not worried about botnet affecting the online ads industry? Read about the sophistication of Koobface. Here's an example: "...The operators of Koobface have been able to setup a stable botnet infrastructure that allows them to maintain tens of thousands of compromised computers and profit immensely from PPC and PPI, earning a total of $2,067,682.69 between June 23, 2009 and June 10, 2010."&lt;br /&gt;&lt;br /&gt;My favorite part is faking CAPTCHA to users to create new spam accounts. This is pure evil and brilliant at the same time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-7849453300801858558?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/7849453300801858558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/12/koobface-highly-organized-botnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7849453300801858558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7849453300801858558'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/12/koobface-highly-organized-botnet.html' title='Koobface, a highly organized botnet'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-7181267510988034939</id><published>2010-10-25T23:38:00.000-07:00</published><updated>2011-01-02T09:16:12.193-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='law'/><category scheme='http://www.blogger.com/atom/ns#' term='freedom of speech'/><category scheme='http://www.blogger.com/atom/ns#' term='public domain'/><title type='text'>Archiving Public Materials vs. First Amendment</title><content type='html'>News: Archive of Geocities will be released as a ~1TB torrent.&lt;br /&gt;http://www.techdirt.com/articles/20101029/03055711647/archive-of-geocities-released-as-a-1tb-torrent.shtml&lt;br /&gt;While this is great news to archivists and web historians, for the rest of the people who contributed to Geocities, their content is now exposed to the public. What if some college kid posted dark secrets that could now jeopardize his life? For example, what if a college kid posted a picture of him smoking pot 15 years ago, but is now running for a seat in Congress?&lt;br /&gt;&lt;br /&gt;Archiving is full of controversies. Over 15 years ago, I thought it would be really cool to create a Time Capsule by archiving a bunch of my friends' web sites. At the time, I thought it would be interesting to see how people change over a decade, and if we ever have a reunion we'd be able to look back at the Time Capsule and reminisce about the good 'ol days. At the time, I was naive and thought archiving content would be like taking pictures-- people usually thank photographers for capturing precious moments that would have been lost without cameras+films. However, I've come to the conclusion that archiving content is not the same as taking pictures of precious moments. The reason is that most people seem to be embarrassed by the very same content they uploaded many years ago! I know this because in the past few years I've been getting requests after requests by these same friends to take down their sites. I can't really talk about the content of those sites publicly, but needless to say, the contents usually contain materials that are potentially harmful to their professional and/or personal lives.&lt;br /&gt;&lt;br /&gt;In almost all cases I'd take down an archived content when asked to do so because I want to be nice. Now, let's suppose I don't play nice. What if I leave the archived content and somehow, the content becomes harmful to those people (e.g. pictures of them smoking weed when they were young, or blog exposing their weird fetishes/political party/admission of crime, and such)? Will the person who repost the content be liable for ruining their professional and personal lives? How about Google, Yahoo, Ask, Bing, Facebook, Twitter, Yelp, and a zillion other services that archive content... can these sites be held liable for archiving potentially damaging materials to the uploader? How does the First Amendment protect from reposting archived public domain content? How much legality is there to leave the content? How much obligation is there to take down the content?&lt;br /&gt;&lt;br /&gt;As you can see, arguments can go in all directions. So I asked my friend D. Silverstein who is a lot more familiar with  law than I am, and here is his response:&lt;br /&gt;&lt;br /&gt;======================================&lt;br /&gt;Kevin,&lt;br /&gt; &lt;br /&gt;Much of what I say is based on seeing the EFF's copyright/patent/trademark for programmers. First of all, the copyright notice doesn't matter. Under modern IP law (as agreed to by most developed countries), things are automatically copyrighted the moment they pop into existence. Technically, when you send an email to someone it has a copyright. But, given how email is used, it's very questionable that you could enforce that copyright, i.e. sue or collect a fee from someone who forwarded your email without your permission. Web pages are a little different. They have some more protection, but still, if it's a web page on the public internet, it's probably fair game. But there are some complications. Is the web page protected by a robots.txt file? Not all indexers respect robots.txt, but let's assume the ones in question did... the first thing that will reasonably happen before people actually try to take legal action is they will send you a cease and desist (C&amp;D) letter. I take the stance i.e. if you're not hosting something that has legal attack dogs tied to it (i.e. copyrighted music or movies), just put it up, and don't worry about it until you get a C&amp;D. If you get a C&amp;D you can, at that point, decide if you want to fight or take it down. Also, since you're archiving it... you may qualify as a third party for DMCA safe harbor purposes, assuming someone gives you the content to host, or ask you to host the content. If you receive a takedown notice and honor it, you're not liable. If you simply copied it, then you probably don't qualify as a third party provider for DMCA safe harbor. Just to give an example, third party provider or ISP for DMCA safe harbor purposes is, e.g. YouTube. They host content that other people post. Either way,  don't worry about it unless you get a C&amp;D. Keep in mind that C&amp;D's are basically lawyer nastygrams. They cost nothing to send, and they rack up a couple billable hours. So usually that's the first step someone takes before taking more serious action, i.e. trying to sue you. In short, the copyright is the one that has the most teeth, but these aren't secrets and this isn't content that he's trying to profit from. There might also be an angle where he could go after you for defamation... but if it's content that he wrote or collected... then I would think it would be hard to make a defamation case. And, in general, litigation is expensive.&lt;br /&gt;&lt;br /&gt;Lastly, if this person is famous (e.g. running for public office/people who are highly public, such as celebrities, getting a promotion at work, etc), he/she knowingly give up a reasonable expectation of privacy that "private" citizens are entitled to. We actually owe that to Larry Flynt, publisher of Hustler Magazine. :) They published a satirical article that suggested Jerry Falwell committed incest, and it went to the supreme court. The First Amendment's free-speech guarantee prohibits awarding damages to public figures to compensate for emotional distress inflicted upon them. Thus, private citizens are entitled to more privacy than celebrities! There are of course exceptions to libel/slander and copyright laws for parody. Obviously if you publish malicious falsehoods about a celebrity, you may still be liable. That would be considered lying, and that is a totally different can of worms.&lt;br /&gt; &lt;br /&gt;D. Silverstein&lt;br /&gt;&lt;br /&gt;=======================================================&lt;br /&gt;&lt;br /&gt;So, that is his response, and it makes sense, but it makes me wonder what the world will be like 15 years from today.&lt;br /&gt;&lt;br /&gt;In the mid 1990s, only geeks logged on the internet and created their own web sites filled with ugly HTML/blink/bold content. Fast forward to the 21st century and you see that almost everyone has contributed some content to the public web, be it a blog, Facebook messages, Flickr pictures, Twitter messages, Yelp review, Amazon votes, so on so forth.  I can't help it wonder what the ramifications of archive be in yet another 15 years? Facebook (and Google and Twitter and all the other sites) are archiving EVERYTHING people contribute today. There's MORE content than ever, and much of the data will be potentially damning to people's lives in the future. What do you think could happen 15 years from today? Will there be lawsuits from people to take down archives? How much leg will they have? Should the law protect common people from embarrassing themselves, or should the law protect archivers?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-Kevin&lt;br /&gt;&lt;br /&gt;=======================================================&lt;br /&gt;&lt;br /&gt;Follow-up:&lt;br /&gt;http://techcrunch.com/2011/01/01/california-bill-criminalizing-online-impersonations-in-effect-starting-today/&lt;br /&gt;"California’s SB 1411, which adds a layer of criminal and civil penalties for certain online impersonations, goes into effect starting today." Is archiving considered impersonation?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-7181267510988034939?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/7181267510988034939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/10/first-amendment.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7181267510988034939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7181267510988034939'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/10/first-amendment.html' title='Archiving Public Materials vs. First Amendment'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-5940912767531811142</id><published>2010-10-15T09:46:00.001-07:00</published><updated>2010-10-15T15:03:03.277-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><category scheme='http://www.blogger.com/atom/ns#' term='expanding'/><category scheme='http://www.blogger.com/atom/ns#' term='dumb-ass'/><category scheme='http://www.blogger.com/atom/ns#' term='developers'/><title type='text'>Hiring, hiring, hiring... and... NO GO.</title><content type='html'>My company is cash flow positive. The VC is getting ambitious and wants to expand expand expand. The problem is, I haven't met a single candidate that blows my mind. 90% of the resumes look horrible, and 98% of the candidates I interviewed are utterly awful, and mediocre at best. The founding eng is a hacky band-aid hacker-- non computer science. I'm a second eng. The third hire is pretty good, but only after scouring 100s of resumes. I've been trying very hard to bring good Googly culture in -- like HIRE ONLY THE BEST so that you don't have to manage, and so there will be no need for silly hierarchy and perf and promotion committee. Some take-away points in my startup so far:&lt;br /&gt;&lt;br /&gt;1) I use all standard Google interview process. That screens out 98% of the people who call themselves "developers." Case in point: "Cal State LA doing B2B in J2EE asking for 120K salary." -- this guy can't even do recursion or order 4 functions in the increasing order as n approaches infinity. Or, some can't even do a Venn diagram to explain some hypothetical question! A large # of these guys will give you a dumbass linear scan answer to an question that can be solved in O(1)! Most are just mind-boggling stupid!!!&lt;br /&gt;2) I can't believe how high they're asking for their salaries (doing banking, defense, bullshit B2B or other BS web site). Something doesn't sound right. These companies (in Southern Cal) that pay them that type of salaries are probably stupid, desperate, or both.&lt;br /&gt;3) In my entire life, I'm used to being with people like me (similar background). I've been in the ivory tower and a corporation [that can be best described as a bubble], but I now realize that living in an academically driven bubble is &lt;b&gt;not normal&lt;/b&gt;. What is normal in life, is having to deal with a bunch of "normal people" -- loud talking ones. Instead of doing work, I now need to spend much more time explaining, teaching, guiding, and even delegating! UGH!!! Ultimately, the sudden realization that I stepped outside of the ivory tower/bubble/whatever you call it, and having to deal with "normal" people makes me feel-- very very VERY lonely at times.&lt;br /&gt;4) Hiring people who are anywhere close to the average caliber in Google (which unfortunately, doesn't even say that much these days) is near impossible.&lt;br /&gt;5) The VC pressure to do more things, faster, expand, is killing my ability to do just that.&lt;br /&gt;&lt;br /&gt;You know anyone who have/had similar frustrations? What's the best way to go about this?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-5940912767531811142?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/5940912767531811142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/10/hiring-hiring-hiring.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/5940912767531811142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/5940912767531811142'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/10/hiring-hiring-hiring.html' title='Hiring, hiring, hiring... and... NO GO.'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-3049034659582093462</id><published>2010-07-15T00:46:00.000-07:00</published><updated>2010-10-15T10:02:10.479-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google wave'/><category scheme='http://www.blogger.com/atom/ns#' term='google buzz'/><category scheme='http://www.blogger.com/atom/ns#' term='total failure'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Repost: Google Buzz Good. Google Wave Bad.</title><content type='html'>I like Google Buzz. It actually has users, and it's well integrated with something people already use: Gmail. Well done. Kudos. I'm happy that Google finally did something right, and it did it without having to acquire something else. The UI is easy and simple to understand. The flow integration with Flickr, Picasaweb, Twitter, etc is well done. It's not very obtrusive (yet). I like Google Buzz. KUDOS!!!&lt;br /&gt;&lt;br /&gt;In contrast to Google Buzz, &lt;font color=red&gt;Google Wave launch a few months back was a colossal failure. See for yourself:&lt;/font&gt;&lt;br /&gt;&lt;img style='float: left; padding: 0 1em 0 1em;' src=http://lh6.ggpht.com/_7JXy4YAEG6k/S3NAiWOBgDI/AAAAAAAALn0/jR1yprLd4IU/s800/Google-wave-failure.gif&gt;&lt;br /&gt;See, even Google search says the Wave a failure, and Google search never lies. &lt;i&gt;It's on the internet, it must be true!&lt;/i&gt; You know what the Wave team says in response to criticisms? "People don't get Wave" "It's too far ahead of its time." "It's only for power users." "It makes sense in my corporate niche settings."&lt;br /&gt;&lt;br /&gt;That's a lot of spin and crap there. It reminds me of this dude in the oval office recently that made a bunch of hasty decisions based on faulty intelligence, but he would never admit failure. In addition, the way his press engine kept spinning stories left and right made his entire party look really really bad. He lost credibility. I can't believe the Wave team is doing the same thing. It's a total shame people just don't want to admit their failures. For spinning stories, I think they should be penalized with a &lt;b&gt;Reverse-Founders Award&lt;/b&gt;; pay back Google millions of dollars they squandered developing Wave, and trying to give it a nice spin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-3049034659582093462?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/3049034659582093462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/07/repost-google-buzz-good-google-wave-bad.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/3049034659582093462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/3049034659582093462'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/07/repost-google-buzz-good-google-wave-bad.html' title='Repost: Google Buzz Good. Google Wave Bad.'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_7JXy4YAEG6k/S3NAiWOBgDI/AAAAAAAALn0/jR1yprLd4IU/s72-c/Google-wave-failure.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-1971583054294469482</id><published>2010-03-05T10:40:00.000-08:00</published><updated>2010-03-05T10:41:27.755-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='comic'/><title type='text'>Humor: generation gap</title><content type='html'>&lt;img src=http://lh4.ggpht.com/_7JXy4YAEG6k/S5FQNAjW0_I/AAAAAAAALqk/UDv0S8TLcIY/s800/the-size-of-books.gif&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-1971583054294469482?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/1971583054294469482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/03/humor-generation-gap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1971583054294469482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1971583054294469482'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/03/humor-generation-gap.html' title='Humor: generation gap'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_7JXy4YAEG6k/S5FQNAjW0_I/AAAAAAAALqk/UDv0S8TLcIY/s72-c/the-size-of-books.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8573527316557937460</id><published>2010-02-10T15:26:00.001-08:00</published><updated>2010-02-12T00:55:16.049-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google wave'/><category scheme='http://www.blogger.com/atom/ns#' term='google buzz'/><category scheme='http://www.blogger.com/atom/ns#' term='google search'/><title type='text'>Google Search Indicates That Google Wave Is A Colossal Failure</title><content type='html'>Due to contracts and fine prints I signed, I shall not make public comments about the big G. Instead, I'll just post a funny picture. FYI, I think the Google Buzz is really really great. Buzz is not Wave. I like Buzz. I have no comment about Wave. Zero. Nada. Zip. Nilch. Ling. 0.&lt;br /&gt;&lt;img style='float: left; padding: 0 1em 0 1em;' src=http://lh6.ggpht.com/_7JXy4YAEG6k/S3NAiWOBgDI/AAAAAAAALn0/jR1yprLd4IU/s800/Google-wave-failure.gif&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8573527316557937460?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8573527316557937460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/02/google-search-indicates-that-google.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8573527316557937460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8573527316557937460'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/02/google-search-indicates-that-google.html' title='Google Search Indicates That Google Wave Is A Colossal Failure'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_7JXy4YAEG6k/S3NAiWOBgDI/AAAAAAAALn0/jR1yprLd4IU/s72-c/Google-wave-failure.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8196199070772765756</id><published>2010-02-05T18:36:00.000-08:00</published><updated>2010-02-05T18:53:02.270-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='traffic'/><category scheme='http://www.blogger.com/atom/ns#' term='los angeles'/><category scheme='http://www.blogger.com/atom/ns#' term='bay area'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><category scheme='http://www.blogger.com/atom/ns#' term='la'/><title type='text'>LA traffic is sick</title><content type='html'>&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7JXy4YAEG6k/S2zV4oure8I/AAAAAAAALnU/vRsjYOJNHH8/s1600-h/LAvsSF.gif"&gt;&lt;img src="http://4.bp.blogspot.com/_7JXy4YAEG6k/S2zV4oure8I/AAAAAAAALnU/vRsjYOJNHH8/s400/LAvsSF.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5434954019311942594" style="cursor: pointer; width: 400px; height: 325px; float:right;" /&gt;&lt;/a&gt;Ok this is not really technology related but I really don't have a rant post so I might as well as post it here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Having intermittently lived in both S Cal (12 years combined) and N Cal (10 years combined), I've always wondered how much S Cal traffic is so much sicker than N Cal. I wrote up a silly page that compares both locations in real time (see sample image to the right). LA is consistently redder and yellower, during every single rush hour. What the hell is going on with LA traffic? Having seen LA for the past 20 years or so, things seem to get worse and worse. You don't need to spend millions of research dollars on stupid data or graphics like this to tell anyone that things are worse. You just need to have been in LA for the past 20 years.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You know what? None of our politicians did anything in the past. Why do Angelinos tolerate this? Are residents simply idiotic or that the politicians are incompetent, or both? It is just SICKENING to see millions of Angelinos endure crap like this. Just look at it, it makes me want to puke.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Click on &lt;a href="http://ereview.com/lasf.html"&gt;http://ereview.com/lasf.html&lt;/a&gt; to see a larger page&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8196199070772765756?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8196199070772765756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/02/la-traffic-is-sick.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8196199070772765756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8196199070772765756'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/02/la-traffic-is-sick.html' title='LA traffic is sick'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7JXy4YAEG6k/S2zV4oure8I/AAAAAAAALnU/vRsjYOJNHH8/s72-c/LAvsSF.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8754306135423606244</id><published>2010-02-01T10:10:00.000-08:00</published><updated>2010-02-01T09:56:18.440-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='success ideas'/><title type='text'>Ideas for success</title><content type='html'>&lt;div&gt;Creating something new? Does your new product have all the elements listed below?&lt;/div&gt;http://blogs.harvardbusiness.org/kanter/2009/11/find-the-15minute-competitive.html&lt;br /&gt;&lt;br /&gt;&lt;div&gt;For fun, let's apply these elements to the controversial iPad, where 1/3 of the people say it's great, a 1/3 of the people say it's a total dud, and a 1/3 just don't care:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Trial-able -- can customers try the iPad on a few apps (news, games, videos), and have the option to use it more or not use it at all? Sure. &lt;span class="Apple-style-span"  style="color:#33CC00;"&gt;&lt;b&gt;Check&lt;/b&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Divisible -- can users adopt iPad one app at a time? Can they use it in parallel with current paradigms? Sure. &lt;span class="Apple-style-span"  style="color:#33CC00;"&gt;&lt;b&gt;Check&lt;/b&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Reversible -- if people hate iPad, can they return to whatever they were using? They can use the laptop, computer, or iPhone. Sure. &lt;span class="Apple-style-span"  style="color:#33CC00;"&gt;&lt;b&gt;Check.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Tangible -- does it offer concrete/tangible value? Does it make a huge difference? For iPad, this is very controversial. No one MUST have an iPad, as it doesn't offer 100X better usability or efficiency than laptops. It may offer 10X or 5X better portability, but then again, this depends on who is using it and what that person use it for. &lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;&lt;b&gt;No check. &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Fits prior investments -- prior time/money spent applies to iPad? If you bought Apple DRM music and apps, sure. &lt;span class="Apple-style-span"  style="color:#33CC00;"&gt;&lt;b&gt;Check&lt;/b&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Familiar -- very familiar with iPhone UI and laptop. &lt;span class="Apple-style-span"  style="color:#33CC00;"&gt;&lt;b&gt;Big check.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Congruent w/ future direction -- does it align with Apple's other product directs... more apps, more features, better efficiency, etc? &lt;span class="Apple-style-span"  style="color:#33CC00;"&gt;&lt;b&gt;Check.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Positive public value -- does this make the users of iPad look good? It depends. The Zune in many sense was superior than the iPod (more features) but no one wanted it because it wasn't sexy. The iPhone has been built and marketed as a luxury product that increases one's reproductive suitability (like BMW or Armani suit). Does the iPad make people look as smart and sophisticated as the iPhone user? &lt;span class="Apple-style-span"  style="color:#666600;"&gt;&lt;b&gt;Time will tell.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The iPad gets 6/8 checks (and 1 more may be) on my book. For a controversial product where 1/3 of the people absolutely abhor it, this is not bad. If anything, I'd say if Apple marketing plays the right cards, it'll be as desirable as the iPod and iPhone. The rule of thumb for manufacturing price is that as the production volume goes up 10X, the cost will drop 1/2. I have no doubt that iPod demand will go up in time, and that the cost will drop to 1/2. That's a price that'll surely kill the Kindle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;How about YOU. What are you working on (social web site, B2B niche site, advertising, inventions, etc)? How do these elements fit in the product you're working on? Does your product have all of these elements for success?&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8754306135423606244?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8754306135423606244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/ideas-for-success.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8754306135423606244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8754306135423606244'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/ideas-for-success.html' title='Ideas for success'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8911253204090439651</id><published>2010-01-27T14:55:00.000-08:00</published><updated>2010-01-27T15:28:52.448-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='orcsun'/><category scheme='http://www.blogger.com/atom/ns#' term='acquisition'/><category scheme='http://www.blogger.com/atom/ns#' term='sunacle'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Sun + Oracle = Sunacle or OrcSun</title><content type='html'>Ok this is hitting pretty close to home as I know people who have or had worked at either Sun or Oracle.  I didn't slave away few years in Sunnyvale for nothing.  What do I think about the Sunacle|OrcSun acquisition?A few years ago the picture looked like this:&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;b&gt;Oracle's business viability &lt;/b&gt;= &lt;span class="Apple-style-span"  style="color:#009900;"&gt;[world's greatest sales/marketing]&lt;/span&gt; +&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt; [mediocre and bad engineering]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;b&gt;Sun's business viability &lt;/b&gt;=&lt;span class="Apple-style-span"  style="color:#009900;"&gt; &lt;span class="Apple-style-span" style="color: rgb(204, 0, 0); "&gt;[really really bad sales/marketing] &lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;+ &lt;span class="Apple-style-span" style="color: rgb(204, 0, 0); "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;[amazing R&amp;amp;D and engineering]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;center style="text-align: left;"&gt;To put it another way, Oracle survives by selling ice-cubes to Eskimos, and Sun survives by making great ice-cubes and trying to sell them in Alaska. You with me so far? So the acquisition means the following:&lt;/center&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;Oracle + Sun &lt;/b&gt;= &lt;span class="Apple-style-span"  style="color:#009900;"&gt;[world's greatest sales/marketing]&lt;/span&gt; +&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt; [mediocre and bad engineering] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;+&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt; [amazing R&amp;amp;D and engineering]&lt;/span&gt; + &lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;[really really bad sales/marketing]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm sure the performance metrics driven Automaton (AKA Larry Ellison) will see this in no time, and knowing him, he will drive up his metrics by doing the followings:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:small;"&gt;&lt;b&gt;Oracle + Sun&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0); "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;[mediocre and bad engineering]&lt;/span&gt; - &lt;span class="Apple-style-span"  style="font-size:small;"&gt;[really really bad sales/marketing]&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;b&gt; =&lt;/b&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;[world's greatest sales/marketing]&lt;/span&gt; + &lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;[amazing R&amp;amp;D and engineering]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now there's a recipe for greater success! Just fire Oracle engineers (esp. the apps/CRM/ERP group that live on 400/600 Oracle Pkwy, Redwood Shores) and fire Sun sales/marketing team. Stock holders rejoice!&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7JXy4YAEG6k/S2DLPIuX7DI/AAAAAAAALl8/D7VKlh33BuI/s1600-h/cgan386l.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_7JXy4YAEG6k/S2DLPIuX7DI/AAAAAAAALl8/D7VKlh33BuI/s400/cgan386l.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5431564611509283890" style="cursor: pointer; width: 378px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8911253204090439651?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8911253204090439651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/sun-oracle-sunacle-or-orcsun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8911253204090439651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8911253204090439651'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/sun-oracle-sunacle-or-orcsun.html' title='Sun + Oracle = Sunacle or OrcSun'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7JXy4YAEG6k/S2DLPIuX7DI/AAAAAAAALl8/D7VKlh33BuI/s72-c/cgan386l.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-1963689976758825688</id><published>2010-01-27T10:04:00.000-08:00</published><updated>2010-01-27T11:09:50.001-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='punch the monkey'/><category scheme='http://www.blogger.com/atom/ns#' term='advertisement'/><title type='text'>Punch the Monkey and Win! Punch the Monkey and Make Money!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.rippin-kitten.com/wp-content/uploads/2009/09/monkey-med.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.rippin-kitten.com/wp-content/uploads/2009/09/monkey-med.jpg" width="200" border="0" alt="" /&gt;&lt;/a&gt;Back in the early days of internet when Yahoo ruled the day, companies were trying to figure out different ways to monetize. Many different online ads and models came out waaaaay before Google and AdWords/AdSense became as prevalent as it is today. Ah, the good 'ol mid 1990s, or more precisely, the annoying Netscape+Java Applet+pop-up+spammy ads days. Do you remember seeing those ads with scantily dressed women + spy-cam (X11 ads) and those moving "Punch the Monkey And Win!!!" advertisements? Those were the good 'ol days. Or, I guess looking back, those were simply... the days. Actually, those were probably the dark ages of the internet.&lt;br /&gt;&lt;br /&gt;"Punch the Monkey and Win" ads by Advertising.com were basically wide banner ads that you find on top of common search engines (Yahoo, Alta Vista, Lycos, Inktomi... hey do you even know what Inktomi was?). It even showed up on content providers like CNN, etc. The implementation of Punch the Monkey went through countless revisions (it could have been motion GIF or Java Applet and later Flash), but the idea was simple: on the ad, show a monkey that moves back and forth, and you use your mouse to click  where the monkey is. When you "punch" the monkey at the right time, the ad brings you to another screen that says something like "&lt;b&gt;CONGRATULATIONS YOU WON! Fill out this form to get free coupons and great deals and super discounts at a store of your choice near you!!!&lt;/b&gt;" Ok, I don't know why people out there actually fill out these spammy forms, but in the wonderful world of advertising, &lt;i&gt;amazing innovations happen&lt;/i&gt; because of an abundance of idiots filling out these spammy forms.&lt;br /&gt;&lt;div style="border-width:2px; background:#c33; padding: 20px;"&gt;This is just a sample to show you how annoying it is. It is not a real ad.&lt;br /&gt;&lt;object type="application/x-shockwave-flash" data="http://content.yieldmanager.edgesuite.net/641/7759/891649433436a7a62cf6a9.swf?clickTag=http%3A%2F%2Fad%2Eyieldmanager%2Ecom%2Fpreviewclick%2C158253%2C%2C0%2C0%2C1172765083%2C" height="60" width="468" loop="false" bgcolor="#FFFFFF" wmode="transparent"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="movie" value="http://content.yieldmanager.edgesuite.net/641/7759/891649433436a7a62cf6a9.swf?clickTag=http%3A%2F%2Fad%2Eyieldmanager%2Ecom%2Fpreviewclick%2C158253%2C%2C0%2C0%2C1172765083%2C"&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Ok fine, so Punch the Monkey is a sleazy ad, BUT IT WORKED and made lots and lots of money! It was so prevalent in those days, it was hard to not see a monkey ad during the day. Advertising.com did a lot of analysis on click-through-rates (CTR). Any sort of color or motion or sound caused more people to click, and that was good news for advertising companies that wanted to spam or just collect lead-gen. In fact, it worked so well, that after a while everyone knew what it was all about, and in time people stopped punching the monkey and that was uber bad news for Advertising.com. What did they do in response? They made the monkey ad MORE colorful. That increased CTR, and they were happy for a while...but then... people stopped clicking again. So then they made the monkey move FASTER, and CTR increased... but eventually...  CTR went down again! So then they made the monkey more obnoxious by adding multiple monkeys, uglier monkeys, monkeys that popped out of your browser, so on so forth. This kept going and going for about a year and every time Advertising.com did something different, CTR went up a little. As you can imagine, the ads got very obnoxious, especially the unwanted pop-ups (Javascript became more prevalent). Eventually, people got really tired of the monkey and just said "F*** I HATE THIS MONKEY" and simply went to other sites that didn't have the monkey ad.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7JXy4YAEG6k/S2CAeyiqP7I/AAAAAAAALlM/CVvfaUcqR7g/s1600-h/funny-graphs-pop-up.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_7JXy4YAEG6k/S2CAeyiqP7I/AAAAAAAALlM/CVvfaUcqR7g/s400/funny-graphs-pop-up.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5431482417060396978" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 400px; height: 376px; " /&gt;&lt;/a&gt;Moral of the story? You can run your business on... pure business, and you can try to squeeze money from people, but if you provide something of no value to people (adding Punch the Monkey ad to something of value), it devaluates the product, the user experience, and turns people off. In the end, the product DOES matter regardless of how much monkey you make. People will eventually get turned off by your product and never come back again. I guess this is one of the countless reasons why I'm usually turned off by work that deals with advertising, and how people prioritize short term business gains over value and user experience. By the way, Advertising.com was bought by AOL, so I guess the executives were &lt;a href="http://www.clickz.com/3372911"&gt;happy about their exit&lt;/a&gt;. Now, WHY would AOL buy something like that is beyond me, but I guess AOL isn't so different from Advertising.com where they are first and foremost, business driven (vs. Apple that is very much "quality experience" driven). I'm sure Steve Jobs would not have said anything kind about AOL and Advertising.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-1963689976758825688?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/1963689976758825688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/punch-monkey-and-win-punch-monkey-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1963689976758825688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/1963689976758825688'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/punch-monkey-and-win-punch-monkey-and.html' title='Punch the Monkey and Win! Punch the Monkey and Make Money!'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7JXy4YAEG6k/S2CAeyiqP7I/AAAAAAAALlM/CVvfaUcqR7g/s72-c/funny-graphs-pop-up.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-38307787257442031</id><published>2010-01-13T12:40:00.000-08:00</published><updated>2010-01-13T12:43:30.626-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='self referencing'/><category scheme='http://www.blogger.com/atom/ns#' term='recursion'/><category scheme='http://www.blogger.com/atom/ns#' term='xkcd'/><title type='text'>How I love Gödel, Escher, Bach. The Self referencing problem. Loop.</title><content type='html'>&lt;img src="http://imgs.xkcd.com/comics/self_description.png" /&gt;&lt;br /&gt;I liked this so much, I'm reposting it on the blog. Reference: http://xkcd.com/688/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-38307787257442031?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/38307787257442031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/how-i-love-godel-escher-bach-self.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/38307787257442031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/38307787257442031'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/how-i-love-godel-escher-bach-self.html' title='How I love Gödel, Escher, Bach. The Self referencing problem. Loop.'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-4676110251549362528</id><published>2010-01-13T11:15:00.000-08:00</published><updated>2010-01-13T12:17:01.806-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dreams'/><category scheme='http://www.blogger.com/atom/ns#' term='monetize'/><category scheme='http://www.blogger.com/atom/ns#' term='demandmedia'/><category scheme='http://www.blogger.com/atom/ns#' term='monetization'/><title type='text'>Monetizing Trash</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7JXy4YAEG6k/S04lbHjoWFI/AAAAAAAALF0/9BKq5aOZlXg/s1600-h/carrying-trash-out-from-house.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 213px; height: 320px;" src="http://1.bp.blogspot.com/_7JXy4YAEG6k/S04lbHjoWFI/AAAAAAAALF0/9BKq5aOZlXg/s320/carrying-trash-out-from-house.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5426315748843214930" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I was having a conversation with my friend &lt;/span&gt;&lt;a href="http://www.mh-z.com/blog/"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Michael H&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; about dreams, and somehow we started talking about monetizing dreams-- write your daily dreams on the web and then monetize it. However, dreams don't usually make much sense (to me at least). They're usually trashy, useless information. Can you actually monetize things that don't make sense? In another word, is it better to post trash on the internet than to post nothing at all? Let's see now... In the DemandMedia world, the answer is, YES. According to Rosenblatt, it's better to post something, anything, than nothing at all.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;DemandMedia pays starving English majors, errrr I mean... aspiring writers a whopping minimum wage (and in many cases below minimum wage) for writing articles ranging from how-tos, to product reviews, to rants about Britney Spears, and other countless things you can think of. Apparently there are tons and tons of writers in America who prefer to get paid peanuts to write, instead of getting paid waaay more money flipping burgers at McDs. Let's go over this now: Writing+passion=10 peanuts. Flipping burger+no passion=10000000 peanuts. The monetary reward is clear, yet passionate writers prefer to get measly 10 peanuts to write, than to make it rich by flipping burgers. So where do all these writing monkeys come from? I don't know. Apparently, there are a bunch of them out there.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Ok fine, maybe monetary motivation is not what motivates writers. As Michael pointed out to me, "there's a fundamental human desire to communicate and that includes writing." People will write, and people will read, regardless of monetary compensations. Furthermore, Michael pointed out that aspiring writers can both flip burgers to survive AND write for DemandMedia. And for these starving English majors, writing is a "gateway" to famedom (this is not a real word, is it?) or getting a Pulitzer Prize. As long as that 0.00000000001% chance of making it exists, these writers will be motivated to write. I guess it's kind of like how lottery and cult work too. You can really motivate (or trick) people by giving them a remote possibility of super-duper-awesomeness happening... similar to how Egyptian workers spend their entire lives building a pyramid so they can go to heaven, or how extremists blow themselves up so they can meet 99 virgins, or how people do good will so they will go to heaven, or how starving writers dump trash on internet so they can be famous one day. Apparently, DemandMedia's Rosenblatt doesn't think his company is dumping trash or exploiting people, so it must be true. It's on the internet. It must be true.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;One thing that always baffled me is that DemandMedia generates gets very high ranked and well read articles for some odd reason-- meaning people actually read trash on the internet. But no way! People can't possibly desire trash by spend time on the internet doing unproductive things. I thought that's what tabloid magazines and TMZ are for. Wasting time on the amazingly useful internet??!? It's just inconceivable! The day that pigs fly!!! So anyways, in the DemandMedia world, any content is worth something. Heck, the company is very profitable today, and expanding quickly. As for monetizing dreams, I bet they are worth something too, because posting anything is better than posting nothing. Who knows, maybe I can apply to DemandMedia as a writer if one day, I decide that writing is my true passion/life aspiration (ahem, *cough*, shyeah right... I hate writing). Or... maybe I can just put my content on my blog and monetize it myself. Wait, I'm already doing that. Screw DemandMedia. I guess in the end, the economy of flooding the internet with tons of disposable content written by starving writers, is actually working extremely well. I guess this proves that people really spend time doing unproductive things on the internet after all. Pigs do fly after all!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Thanks for reading my randomly generated trash.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-4676110251549362528?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/4676110251549362528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/monetizing-trash.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/4676110251549362528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/4676110251549362528'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/monetizing-trash.html' title='Monetizing Trash'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7JXy4YAEG6k/S04lbHjoWFI/AAAAAAAALF0/9BKq5aOZlXg/s72-c/carrying-trash-out-from-house.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-626812036848959032</id><published>2010-01-07T09:28:00.000-08:00</published><updated>2010-01-07T09:47:16.122-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='money'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchy'/><category scheme='http://www.blogger.com/atom/ns#' term='time'/><category scheme='http://www.blogger.com/atom/ns#' term='earnings'/><category scheme='http://www.blogger.com/atom/ns#' term='consulting'/><title type='text'>Hierarchy of Earnings</title><content type='html'>I saw a nice post from Ramit Sethi that reminded me of another blog from 2007 I saw that I really liked:&lt;br /&gt;&lt;br /&gt;&lt;li/&gt;A) &lt;a href="http://www.inter-sections.net/2007/10/01/a-hierarchy-of-earning-methods/"&gt;http://www.inter-sections.net/2007/10/01/a-hierarchy-of-earning-methods/ (2007 Post on the Hierarchy of Earnings)&lt;/a&gt;&lt;br /&gt;&lt;li/&gt;B) &lt;a href="http://www.iwillteachyoutoberich.com/blog/3-easiest-ways-to-earn-money/"&gt;http://www.iwillteachyoutoberich.com/blog/3-easiest-ways-to-earn-money/ (Ramit Sethi)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The recurring theme for both of these blogs are as follows:&lt;ol&gt;&lt;br /&gt;&lt;li/&gt;Employment aka "trading time for money". Low risk, hard work, has a well defined upper limit to earnings. Work you put in may not represent what you get back (e.g. if you're a corporate climber with a knack for politics, this is definitely for you).&lt;br /&gt;&lt;li/&gt;Consulting aka "trading skills/jobs done for money". Medium risk, but you get to build a network for Productizing (see below). Also, what you put in is usually what you get out.&lt;br /&gt;&lt;li/&gt;Productizing aka "trading time and skill for a product." High risk. Competition, market saturation, you really need to know what you're doing and be a hard core entrepreneur to make it out. There is no upper limit to your earnings.&lt;br /&gt;&lt;li/&gt;Management aka "doing all of the above using someone else's time."&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;IMHO, you can't really climb from a lower number to a higher number (employment to productizing) in a short time. There needs to be a bootstraping process. You need capital and time to do 2 or 3 or 4, so you may need to start with 1. You definitely need to build a network (e.g. via consulting) because that is quite beneficial before you plunge ahead and build a product.&lt;br /&gt;&lt;br /&gt;The jist I'm getting is basically-- employment offers you pay, but take it only if you really need it and can tolerate it for decades because if you go that route, you'll be stuck with it all your life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-626812036848959032?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/626812036848959032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/hierarchy-of-earnings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/626812036848959032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/626812036848959032'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2010/01/hierarchy-of-earnings.html' title='Hierarchy of Earnings'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8426785446301318889</id><published>2009-12-26T12:44:00.001-08:00</published><updated>2010-01-09T22:39:44.218-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='busineess'/><category scheme='http://www.blogger.com/atom/ns#' term='pricing engineering'/><title type='text'>Pricing Engineering</title><content type='html'>So you have a silly product. How do you sell it? Apparently, there's a lot of research into pricing engineering-- the art of selling a bunch of stuff to customers, whether they really need it or not. Here are a bunch of articles I really like&lt;br /&gt;&lt;br /&gt;A) &lt;div&gt;&lt;a href="http://gigaom.com/2009/09/13/what-we-can-learn-about-pricing-from-menu-engineers/"&gt;http://gigaom.com/2009/09/13/what-we-can-learn-about-pricing-from-menu-engineers/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;For you lazy readers out there, basically:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Create a few pricing choices.&lt;/li&gt;&lt;li&gt;Create a choice that is outrageously expensive. Many users will not pick that choice, but will more likely pick the next expensive choice (e.g. ridiculously high MSRP will lead to better sales)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;B) &lt;div&gt;The next one is from Ramit (&lt;a href="http://scroogestrategy.com/enroll.php"&gt;Scrooge Strategy&lt;/a&gt;), I recommend you go check it out!&lt;/div&gt;&lt;div style="background-color: beige; font-size: 0.8em; padding: 0 1em 0 1em; margin:  0 1em 0 1em; -moz-border-radius: 1em; -webkit-border-radius: 1em;"&gt;&lt;br /&gt;&lt;b&gt;#1: Understand that restaurants are carefully engineered to maximize spending&lt;/b&gt; -- and fight back&lt;br /&gt;&lt;br /&gt;Have you ever read a description of a menu item that read something like this? &lt;i&gt;"Fresh poached salmon on a bed of oak-aged lettuce simmered in vine-riped tomatoes and a crusted sesame-ahi puree."&lt;/i&gt; I don't even know what any of that means, but it works. In fact, in extensive research, Professor Wansink found that descriptive names:&lt;br /&gt;&lt;br /&gt;* Sold 27% more compared to non-descriptive names ("cheeseburger")&lt;br /&gt;* Were rated as "more appealing and tastier than identical foods with less attractive names."&lt;br /&gt;* Caused diners to rate the entire establishment more favorably (so think about the last few restaurants you've liked...what effect did their menu's copywriting have on your decision-making?)&lt;br /&gt;&lt;br /&gt;And in fact, this is a well-known and carefully practiced craft. Time Magazine recently described Greg Rapp, the Menu Magician&lt;br /&gt;"A 'menu engineer' based in Palm Springs, Calif., Rapp works with restaurants across the country and around the world to transform innocent lists of meals into profitable, user-friendly sales tools.&lt;br /&gt;&lt;br /&gt;The first step is the design. Rapp recommends that menus be laid out in neat columns with unfussy fonts. The way prices are listed is very important. "This is the No. 1 thing that most restaurants get wrong," he explains. "If all the prices are aligned on the right, then I can look down the list and order the cheapest thing." It's better to have the digits and dollar signs discreetly tagged on at the end of each food description. That way, the customer's appetite for honey-glazed pork will be whetted before he sees its cost.&lt;br /&gt;&lt;br /&gt;Cheap, popular staples--like a grilled-chicken sandwich or a burger--should be harder to locate. Rapp likes to make the customer read through a mouthwatering description of seared ahi tuna before he finds them. "This is akin to the grocery store putting the milk in the back," he says. "You have to walk by all sorts of tempting, high-priced items to get to it.""&lt;br /&gt;&lt;br /&gt;Restaurants have had thousands of man-hours of experience to test the menu on patrons. Do not underestimate their ability to influence you to order more when your charming server offers you her recommendations, you're with your friends in a great mood, and you decide to splurge for the extra appetizer.&lt;br /&gt;Tactical tip: Whenever possible, check the menu online before you eat out. Decide what you're going to order before you ever step foot in the restaurant -- away from the influence of the restaurant and your friends -- and stick with your choice when you get to the restaurant.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ok, so basically:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Get good at doing business. Be a businessman and bullshit about how good your food is. Don't sell your fish as "salmon and veggies," sell it as "fresh poached salmon on a bed of oak-aged lettuce simmered in vine-riped tomatoes and a crusted sesame-ahi puree"&lt;/li&gt;&lt;li&gt;Make prices less obvious (but not impossible) to find&lt;/li&gt;&lt;li&gt;Make cheap items less obvious, with less tasty descriptions&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;C) Lastly, here's a pretty cool post on pricing (conclusion: confusion may yield more profit):&lt;br /&gt;http://www.psychologytoday.com/blog/priceless/200912/decoding-fast-food-menus&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8426785446301318889?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8426785446301318889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/pricing-engineering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8426785446301318889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8426785446301318889'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/pricing-engineering.html' title='Pricing Engineering'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-7795846548871205853</id><published>2009-12-24T22:14:00.000-08:00</published><updated>2009-12-24T22:15:19.683-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='college'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Humor: How college REALLY works</title><content type='html'>&lt;img src=http://lh4.ggpht.com/_7JXy4YAEG6k/SzRYJS0CJYI/AAAAAAAAK-g/MizeQOH5rBQ/s800/funny-graphs-college-works.jpg&gt;&lt;br /&gt;http://graphjam.com/2009/12/23/funny-graphs-college-works&lt;br /&gt;(not too far from truth these days)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-7795846548871205853?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/7795846548871205853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/humor-how-college-really-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7795846548871205853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7795846548871205853'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/humor-how-college-really-works.html' title='Humor: How college REALLY works'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_7JXy4YAEG6k/SzRYJS0CJYI/AAAAAAAAK-g/MizeQOH5rBQ/s72-c/funny-graphs-college-works.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-7798657697610031774</id><published>2009-12-24T10:15:00.000-08:00</published><updated>2009-12-24T21:27:34.917-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consultants'/><category scheme='http://www.blogger.com/atom/ns#' term='carnival'/><category scheme='http://www.blogger.com/atom/ns#' term='woes'/><category scheme='http://www.blogger.com/atom/ns#' term='cruise'/><title type='text'>No love for so called "technology consultants"</title><content type='html'>&amp;lt;LONG_RANT&amp;gt;This is going to be a very foul mouthed review on Carnival Cruise web site, and consultants in general.&lt;br /&gt;&lt;br /&gt;A lot of the marketing/sales-head tell me that closing is not about using the actual product, but unique EXPERIENCE of getting it. When you buy a purse or iPhone, you're not just using it. You're experiencing the joy of superb service, the joy of selecting from good selections, the smell of unwrapping the package, the ease of opening up the package, etc. Well, let me just say that the experience of getting a cabin [for my dad] from Carnival Cruises is HORRIBLE, and I'm most likely not going to repeat the Carnival experience again. Here's my story in the course of several days:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://lh5.ggpht.com/_7JXy4YAEG6k/SzO4q4sOE_I/AAAAAAAAK98/I7B4uN4ehHE/s800/carnival_pick_room.jpg" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;Initially it shows a few choices available. I tried them all.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Initially:&lt;br /&gt;1) The web site shows availability... plenty of it&lt;br /&gt;2) I try to book one of them&lt;br /&gt;3) At the very last step, I put in my credit card number, but the system keeps saying something to the effect &lt;b&gt;"Unknown error, please try again." I tried other choices, same thing.&lt;/b&gt; Wasted my time.&lt;br /&gt;4) I call them up directly. The ticket agent guy says he has the LIVE system and that what I see may be different (he means delayed, outdated). He says he sees no availability and that he needs to put me on the waiting list. He said to call back later to check with them.&lt;br /&gt;&lt;br /&gt;Follow through:&lt;br /&gt;1) The web site no longer shows availability. I keep checking.&lt;br /&gt;2) Occasionally, it shows availability&lt;br /&gt;3) After 2, I call back service. He says yes he sees an opening, but he can't move the waiting list to the available room because someone from "Sailing coordination" locked up my reservation.&lt;br /&gt;4) I ask if I can call Sailing Coordinator directly. I call them up, but the clerk says she doesn't see availability anymore. She says to keep calling her back if I see something.&lt;br /&gt;6) I ask her if there's any automated way of doing this. Nope.&lt;b&gt; It's all manually entered. Some guy at Carnival punches in reservation on some legacy system.&lt;/b&gt; Can you believe this???&lt;br /&gt;7) &lt;i&gt;I repeat some of these steps over and over and over again&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://lh4.ggpht.com/_7JXy4YAEG6k/SzO5ex8FeAI/AAAAAAAAK-E/hlfA-7E0Wbk/s800/carnival_unavailable.jpg" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;I tried the ocean view and suite. NOT AVAILABLE after you click Details.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;I'm sorry. The web site is a total PIECE OF BADLY MESHED CRAP, written in... what do you know, nothing other than the infamous M$ ASP shitframework! The UI really blows too. It's as if some guy slapped some GUI on it quickly and got paid and ran away quickly. Listen up Carnival:&lt;ul&gt;&lt;li&gt;If something is &lt;b&gt;not available&lt;/b&gt;, WHY EVEN OFFER A CHOICE TO PICK IT??!!! What's the point of letting people pick something and then output an error message? There were at least 4 different cases where it showed something available, and after a few subsequent clicks, it ended with "Sorry, this is not available." Like, WTF?!?#? This is almost as bad as the Priceline experience.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The default credit card input box is ____ ____ ____ ____ (4 4-digit box). If I pick American Express, the box should change to  ____ ______ ____ (4-digit, 6-digit, 4-digit box). Look, almost all modern e-commerce websites will change the box today to be more user friendly. However, the Carnival website doesn't change the box, so I'm essentially typing in 15 digits in a 16 digit box, which looks awful and confuses the hell out of me (and I'm suppose to not get confused because I'm in the computer industry). Totally unintuitive. Lame.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;After putting in credit card number, if something goes wrong, output a more informative error message. Nope, Carnival just says something to the effect&lt;b&gt; "unknown error, try again."&lt;/b&gt; I tried 5 times, same shit. Is it the card? Or wrong name? Or badly input symbols? WHAT? "Uknown error." WTF? At this point, I'm so annoyed that I'm willing to go to another cruise (and I looked around but there is none that fits the date/location of my choice). I keep coming back to Carnival in the absence of other cruises.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Carnival Cruise web site is a low volume web site. It does NOT need to handle huge QPS like Amazon. So it's not that hard to implement a real-time, synchronous back-end reservation system. Despite their low volume requirements, why are they still using 1980s system that requires a clerk doing manual data entry into their system? Uber lame!!!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Why the hell do you even bother using Microsoft solution? Look, even though it's a low volume web site, it is still friggingly SLOW!!!! &lt;i&gt;Each click is anywhere between 500ms to 5 seconds response time&lt;/i&gt;. This is clearly pathetic by today's standards. Any CTO allowing Microsoft solution is ignorant and needs to be fired or better yet, shot dead, period. Total piece of garbage.&lt;/li&gt;&lt;li&gt;Why can't I book more than 1 room with one account? Why is your UI so stubborn on a 1 account:1 booking mapping? Lack of foresight, or stupidity!?!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://lh5.ggpht.com/_7JXy4YAEG6k/SzO4qhzfJnI/AAAAAAAAK90/j5FLd0aZMVk/s800/carnival_unavailable.jpg" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;So after a while clicking and actually going somewhere (on a random basis), I finally get this "unavailable message". Why don't you just tell me it's not available in the first place? I wasted over 10 minutes on your stupid site already just to see this message. NOT IMPRESSED.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;In short, The Carnival system blows. Their UI is laughable (did some 17 year old high school student implement it?), their backend is slow, and their reservation really needs to be upgraded to a more real-time and synchronous system. I'm almost certain that they've lost customers to better cruise sites. Every little detail counts, and Carnival just doesn't get it, period. It's sad to see something like this running live on production.&lt;br /&gt;&amp;lt;/LONG_RANT&amp;gt;&lt;br /&gt;&lt;br /&gt;What I experienced on Carnival isn't unique to Carnival, but to many old/traditional companies that seem reluctant to jump on the technology bandwagon.  Like many old companies, Carnival is not a technology driven company, nor is it interested in investing in it. It rather pays some people that call themselves "experts" or "technology consultants" and get just get the job done. So typically these old companies will pay millions and millions of dollars for a solution. They will enumerate a feature list. &lt;i&gt;Does the website do X? Check. Does the website do Y? Check. &lt;/i&gt;So on so forth. The end product from this type of consulting is a product that looks like Microsoft Zune. The Zune has a long list of bells and whistles, and is superior to iPod by at least 3X on paper comparison list. But even though iPod lacks tons of features, it still sells better. Why?&lt;i&gt; A good product is not about how many things it can do, but how well the little things it can do. &lt;/i&gt;A Zune does much more than an iPod, but iPod does the few things that matter much better. Likewise, the Carnival Cruise site may do all the things that other e-commerce sites do, but for what they do, they do it terribly. This is just the nature of outsourcing work; work that is not done out of passion, shows a lack of quality. Work that is done out of mercenary needs, shows sloppiness. You know, there is a saying in the consulting world that says something to the effect that&lt;i&gt;&lt;b&gt; consulting firms profit greatly from ignorance&lt;/b&gt;&lt;/i&gt;. I can't agree more with this. Carnival web site is horribly done and they paid dearly for it because they're ignorant about technology.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://lh3.ggpht.com/_7JXy4YAEG6k/SzRJQtoYw1I/AAAAAAAAK-c/N9LUFATSLQk/s800/carnival_weberror.jpg" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Nice error, Carnival. Maybe you should change your slogan from:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"FUN FOR ALL, AND ALL FOR FUN"&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;to something more accurate:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"PISSED OFF FOR ALL, AND ALL FOR PISSED OFF."&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Seriously, traditional non-technology companies need to embrace technology. Invest long term in technology. Hire real computer scientist and people who have done real work in the technology world. Hire people who are passionate about technology. Don't hire charming guys that dress up nicely in suits and ties. In geekland, good looks don't always equate to the best job done. In fact, I'm certain there's a strong inverse correlation. Lastly, my take is that traditional companies should not treat technology as if it were just some stupid job that needs to get outsourced and get it over with. Technology is constantly evolving, and technology needs to be upgraded from time to time; backend migration to a real storage solution and deprecate your mainframe systems (it's a ONE TIME COST every 2-4 decades), and constantly update disposable frontend (Java-&gt;Flash-&gt;Ajax-&gt;HTML5/CSS3-&gt;so on so forth) every 2 years at minimum. Spend a lot of time data-mining web traffic (if Carnival actually did this, they'd realize serious problems and fixed them already). The number of people who will buy online will only increase, and it is just a matter of time before it dominates phone and travel agency orders. So don't ignore technology. Learn to understand it. Learn to invest long term in it. Learn to profit from it. Technology is your friend. Embrace it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have a Merry Christmas.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-7798657697610031774?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/7798657697610031774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/no-love-for-so-called-technology.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7798657697610031774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/7798657697610031774'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/no-love-for-so-called-technology.html' title='No love for so called &quot;technology consultants&quot;'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_7JXy4YAEG6k/SzO4q4sOE_I/AAAAAAAAK98/I7B4uN4ehHE/s72-c/carnival_pick_room.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-6206980850080248385</id><published>2009-12-23T11:08:00.001-08:00</published><updated>2009-12-24T09:42:09.717-08:00</updated><title type='text'>Humor: Smart asses</title><content type='html'>http://www.explosm.net/comics/1896/&lt;br /&gt;&lt;img src=http://www.explosm.net/db/files/Comics/Rob/resume2.png&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-6206980850080248385?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/6206980850080248385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/smart-asses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/6206980850080248385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/6206980850080248385'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/smart-asses.html' title='Humor: Smart asses'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8729781674383245032</id><published>2009-12-21T11:09:00.000-08:00</published><updated>2009-12-23T11:13:54.493-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='los angeles'/><category scheme='http://www.blogger.com/atom/ns#' term='office space'/><title type='text'>Office space for your startup</title><content type='html'>&lt;img src=http://www.blankspaces.com/howitworks/images/spaces/office_11.gif&gt;&lt;br /&gt;&lt;img src=http://www.blankspaces.com/howitworks/images/spaces/office_17.gif&gt;&lt;br /&gt;&lt;br /&gt;From Dave Kang in JobNob, I found a place in LA where you can rent office space for your startup. Pretty cool eh?&lt;br /&gt;&lt;a href=http://www.blankspaces.com/howitworks/spaces.php&gt;http://www.blankspaces.com/howitworks/spaces.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Occasionally they host events on weekends, like this one:&lt;br /&gt;&lt;a href=http://www.startupweekend.org/&gt;http://www.startupweekend.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8729781674383245032?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8729781674383245032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/office-space-for-your-startup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8729781674383245032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8729781674383245032'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/office-space-for-your-startup.html' title='Office space for your startup'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-643663855090302779</id><published>2009-12-07T10:18:00.001-08:00</published><updated>2009-12-28T15:54:36.698-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='loud guy'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Humor: The Quiet One vs. The Loud One</title><content type='html'>Not uncommon in big corporations, where you can get away with a lot by doing very little: http://abstrusegoose.com/212&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://abstrusegoose.com/strips/those_who_know.PNG" width="790/"&gt;those_who_know.PNG&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-643663855090302779?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/643663855090302779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/humor-quiet-one-vs-loud-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/643663855090302779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/643663855090302779'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/12/humor-quiet-one-vs-loud-one.html' title='Humor: The Quiet One vs. The Loud One'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-8059251949865849123</id><published>2009-09-19T21:18:00.001-07:00</published><updated>2009-09-19T21:18:45.671-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='apps'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Humor: Google app, Apple app, and your app</title><content type='html'>&lt;img src=http://www.businesspundit.com/wp-content/uploads/2009/08/googleproduct.jpg&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-8059251949865849123?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/8059251949865849123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/09/humor-google-app-apple-app-and-your-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8059251949865849123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/8059251949865849123'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/09/humor-google-app-apple-app-and-your-app.html' title='Humor: Google app, Apple app, and your app'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-728310872962442558</id><published>2009-09-09T12:33:00.000-07:00</published><updated>2009-10-26T09:46:47.523-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='great companies'/><title type='text'>Ten Characteristics of Great Companies</title><content type='html'>While this blog is dedicated to freelancing, I thought the following is interesting enough that I should post it here. I'm sure a few of the bullet points are familiar to all of the freelancers who at one point or another have worked in the corporation and have had strong feelings about what a great company is and/or should be. The article is by a well known tech VC in NYC:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href=http://www.avc.com/a_vc/2009/09/ten-characteristics-of-great-companies.html#&gt;http://www.avc.com/a_vc/2009/09/ten-characteristics-of-great-companies.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;tt&gt;&lt;br /&gt;1) Great companies are constantly innovating and delighting their customers/users with new products and services.&lt;br /&gt;2) Great companies are built to last and be independent and sustainable. Great companies don't sell out.&lt;br /&gt;3) Great companies make lots of money but leave even more money on the table for their users and partners.&lt;br /&gt;4) Great companies don't look elsewhere for ideas. They develop their ideas internally and are copied by others.&lt;br /&gt;5) Great companies infect their users/customers with their brand. They turn their users and customers into marketing/salesforces.&lt;br /&gt;6) Great companies are led by entrepreneurs who own a meaningful piece of the business. As such, they make decisions based on long term business needs and objectives not short term goals.&lt;br /&gt;7) Great companies have a global mindset. They treat every person in the world as a potential customer/user.&lt;br /&gt;8) Great companies are attempting to change the world in addition to making money.&lt;br /&gt;9) Great companies are not reliant on any one person to deliver their value proposition.&lt;br /&gt;10) Great companies put the customer/user first above any other priority.&lt;/tt&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;One of the points, #4 is "Great companies don't look elsewhere for ideas. They develop their ideas internally and are copied by others." But what about companies that have grown so huge, that they seek innovation primarily through acquisitions? We've seen this pattern over and over throughout the ages. Microsoft, Yahoo, and even Google. When a company no longer innovates and takes risks like it used to in its early days, does that mean it's no longer a great company?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's look at point #6 "Great companies are led by entrepreneurs who own a meaningful piece of the business. As such, they make decisions based on long term business needs and objectives not short term goals." Wait a minute. I've been at big companies, and every quarter, it is about the bottom line. It's always about "What can we do this quarter to drive up revenue?" What does that say?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Point #9 "Great companies are not reliant on any one person to deliver their value proposition." What about Apple, an example of one single person who delivers products that are consistent and high uncompromising qualities?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-728310872962442558?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/728310872962442558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/09/ten-characteristics-of-great-companies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/728310872962442558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/728310872962442558'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/09/ten-characteristics-of-great-companies.html' title='Ten Characteristics of Great Companies'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4226687990946594073.post-6750832833122690597</id><published>2009-09-03T08:38:00.001-07:00</published><updated>2009-09-03T08:39:11.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cubicle'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Humor: Cubicle</title><content type='html'>From &lt;a href=http://graphjam.com/2009/09/03/song-chart-memes-find-office/&gt;http://graphjam.com/2009/09/03/song-chart-memes-find-office/&lt;/a&gt;&lt;br /&gt;&lt;img src=http://graphjam.files.wordpress.com/2009/08/song-chart-memes-find-office.jpg?w=504&amp;h=264&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4226687990946594073-6750832833122690597?l=hackerkevin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackerkevin.blogspot.com/feeds/6750832833122690597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackerkevin.blogspot.com/2009/09/humor-cubicle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/6750832833122690597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4226687990946594073/posts/default/6750832833122690597'/><link rel='alternate' type='text/html' href='http://hackerkevin.blogspot.com/2009/09/humor-cubicle.html' title='Humor: Cubicle'/><author><name>KevinX</name><uri>http://www.blogger.com/profile/17102207203432835637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_7JXy4YAEG6k/TUSSr_8DhAI/AAAAAAAAMbg/cnnwG75R1WM/s220/20110127-DSC_5284.jpg'/></author><thr:total>0</thr:total></entry></feed>
