Why Startups Condense in America (and not somewhere else)
Why Startups Condense in America:
"Singapore would face a similar problem. Singapore seems very aware of the importance of encouraging startups. But while energetic government intervention may be able to make a port run efficiently, it can't coax startups into existence. A state that bans chewing gum has a long way to go before it could create a San Francisco."
When smart people talk, we should listen. And once again, Graham has presented us with a fine piece of article on his opinions why start-ups are blooming in America (mind you, mostly in certain fertile areas only) and not in other countries. The points are pretty valid if you read it with an open mind and not fall into the trap of thinking that he is biased toward America.
I believe that Graham is one of the most influential advocate for startups. He believes that most (if not all) great ideas come from individuals who have nothing to worry about but to create great technologically sound products. And that is how he argues in his article. I guess the most important point Graham makes in his article is that you cannot have a big company happen overnight. It must start small, like in a startup. And then from that little startup, it might grow into something big (or it might go down the drain, but that's not too bad since it started small and no one lost too much). On the other hand, if you start BIG, you are most likely to fail since that bloated government funded piece of project is probably not going to reach the critical mass that is necessary to sustain itself in the future without annual funding from the government.
In short, techies come first. And then the managers. Not the other way around. It's the same way most thriving ecosystems work.
Based on Grahams observations, it is highly probable that the Multimedia Super Corridor in Malaysia will not take off. This project was conceived almost 5 years ago and has nothing much to show yet. In fact, news of it seems to have been dwindling exponentially since its conception. Again, based on Graham's postulates, this is probably due to the heavy government investment and the dearth of entrepreneurs in that area.
Of course, one go could on and on arguing on the merits of Graham's arguments. But we shall leave that for the comment section of his article. The most important thing to draw from his article is that the proper environment and infrastructure must be provided first before anything really interesting can transpire. Artificially simulating an oasis for tech companies will probably not be the ultimate solution. Nevertheless these artificial Silicon Valleys might serve as catalyst for the real ones in the future. But so far nothing really great has transpired.
Posted in readings | no comments |
Scheme-ing
Nice Spring Break reading: The Little Schemer and The Seasoned Schemer. The Little Schemer is just like The Little Lisper with all the exercises removed. I read The Little Lisper last summer and would like to refresh my memory on some Lisp/Scheme since I have not been using it seriously for a while. I think the authors might have revised some of the contents but there was nothing major. Looking forward to getting the third installment of this series, The Reasoned Schemer.
What is a nice environment for trying out scheme on OS X? There are a couple of implementations as listed here. DrScheme is the only one so far that runs on OS X with a nice little IDE and some help files. The only other one that seems viable is SchemeWay but hooks itself up as a plug-in for Eclipse. And I really do not feel like starting up Eclipse every time I want to try something.
An interesting feature that DrScheme offers -- among the other innovative features that I will not be using yet -- is the ability to embed test cases inside the code. While this might seem like a trivial thing, DrScheme has a nice facility for doing so as can be seen from the screenshot below.
The list of features for DrScheme can be found here.
Posted in readings, lisp | no comments |
Ruby on Rails featured in Computer
Will Software Developers Ride Ruby on Rails to Success? in the February 2006 issue of Computer from IEEE.
It seems like a big deal to be featured in Computer. Computer usually features technology that have had a profound effect on the industry, in other words, mostly Java and C++. So, the fact that they decided to do an article on Ruby on Rails means that somehow the industry is becoming aware that there exists other frameworks out there besides the heavyweight Java frameworks.
Anyway, the article is rather objective and does not contain all the hype that usually surrounds Ruby on Rails. This is both good and bad. It's good because it will not sound like a marketing scheme and astute readers might actually go and check it out. It's bad because it does not really do justice to what Rails has to offer over the other frameworks. The author chooses to focus on two aspects of the Ruby on Rails design principle: convention-over-configuration and don't-repeat-yourself-principle. I thought a concrete example would have been nice but it already spans 3 pages so an example might not be feasible.
True, Rails may not be a superscalar framework. But for most purposes, it gives developers a new lightweight system that probably will scale fine even if you take it up to its limits. It's definitely easier than having to implement a multi-tier Java application and the author makes it a point to present that in the article.
Posted in paradigm, readings, ruby | no comments |
ROKR?
"Motorola Inc.'s iTunes music phone, developed with Apple Computer Inc. and unveiled last month in front of an audience of more than 500, may have flopped."
Do they seriously want people to call it the Rocker? Somehow, I felt that Apple was not putting everything into this product. Instead it was more of a brainchild of Motorola. No Apple logo on the phone at all only the weak association with iTunes. Moreover, the spotlight of the release event was given to the iPod Nano which seems to radiate more techo lust than a Motorola phone. And given all the hype that surrounded it for almost a year (the taoofmac web site even has a timeline for it), it is inevitable that everyone would be expecting a little more. For a discussion of why hype is bad, John Gruber has produced an excellent analysis of the situation at daringfireball.net It was as though Apple did not even cared about the leakage of the Rokr even when EnGadget had a photo of the actual product months ahead.
I don't own one, and I do not plan to own one. So all I can say: I am glad I did not get one. Listening to your music on your phone still seems like a very dumb idea especially when you are stuck with one carrier. And a phone that does not really sync properly with iTunes. Calling it the iTunes phone is a great misnomer.
Posted in paradigm, readings | no comments |
What's the future of Java?
Java Tunnel Vision [@lesscode.org]:
"I've spent exorbitant amounts of time in the past six-seven years doing endless research around Java community, relentlessly chasing the elusive dream of the possibility of developing apps in a simple, straightforward way. I've tried all the latest and the greatest Java hype, followed religiously every Javaworld and The Server Side and Artima article, but only to in the end throw my hands up in the air in utter desperation. After all was said and done, at the end of the day, all I have is an enormously bloated, to the point of bursting at the seams, Eclipse platform. I am currently nursing countless frameworks, plug-ins, SOA and EMF bullshit is coming out of my ears. My 60 GB laptop with 1 GB main memory cannot take it any more."
I feel extremely uncomfortable with this situation. I don’t think we, as a community of Java developers, are standing on the solid, firm ground. I think the ground on which we stand is bound to give in under our feet, sooner or later. This is why I’m trying to defect to the Ruby camp, where life is simpler, the air is fresher, and the movement is truly, not nominally, agile.
There is an interesting book called Beyond Java that I really want to read now.
Posted in readings, web pages | no comments |
Artificial Intelligence Class
My professor showed some everyday instances that we take for granted and convincingly show why it is hard to get a machine to behave like a human being. Naturally, he showed some rather interesting optical illusions. Since they are optical illusions, is there any need to replicated this behavior in an intelligent and rational agent? After all, are they any benefits for seeing these illusions? Does seeing these illusions make humans more intelligent? Or does it suggest a deeper understanding of how the human mind really works? Well, before this gets too philosophical, it would be wise to get back to the point and show you some of the examples that I find interesting.
Because I am afraid that the links might actually go missing, I have uploaded the pictures to my flickr account and gave proper credits to the authors. Most of these are also available from the Mind Hacks book which I have been trying hopelessly to finish. Whenever possible, the images link back to the original image on their respective websites. If anyone feels that I have violated their copyright, I will gladly remove these pictures.

Why does it appear correct when viewed upside down but totally wrong when viewed the right side up?
A and B have the same color and shade! Don't believe me? Click here. This is called the Adelson Checker Shadow Illusion.
You have to click on it to see the BIG version for the illusion to work.
Another interesting thing I have learned are Garden Path Sentences. Here are some of the more interesting ones that are hard to decipher.
- Fat people eat accumulates.
The fat (animal fat, vegetable fat, etc) that people eat accumulates in their bodies. - The prime number few.
The prime (or the prime numbers e.g. 2, 3, 7, 11) amount to only a few. -
The player kicked the ball kicked the ball.
The player was given the ball by someone who kicked it to him. The player then kicked the ball back.
Well, that was an interesting first lecture for that class. Maybe there are more illusions worth sharing later as well.
Posted in college stuff, readings, web pages | no comments |
How to read blogs!
Ted Leung has some quick advice on how to read blogs. This comes in handy for people like me who read about 600 new entries each day. Some of those entries are really short, such as the ones of the DashboardWidgets Showcase feed. While, others tend to be long and well worth the time reading.
While, you should really read Ted's entry on this, here are a few of my favorite tips. Also, I am glad that he uses NetNewsWire.
- Use the "mark all as read" feature.
Sometimes it is easier to just skim through the titles and see what you need to read and what you do not need to. Always trust your instincts. If the entry is really important, other people will probably mention them in their blogs too. - Make use of Del.icio.us, Technorati to find those interesting sites
The web is vast. So let other people help you find interesting stuff. In fact, try using Oishii which only lists the most popular entries. Even better, try subscribing to specific feed from Del.icio.us for instance the feeds tagged with ruby, os x, etc. That way you have less to wade through. - Spend time reading thoroughly!
Bloggers spend time writing. Read and appreciate what they wrote. - When unsure, use Safari's RSS feature (this is my own idea)
Safari RSS is great for testing out new feeds to see if they are going to be worth reading. By putting these feeds on the menu bar, you can quickly see if they are updated regularly. Also, giving them their own toolbar space helps you quickly identify them from the rest of your regular blogs. Once you are convinced that the blog is worth following, chuck it into NetNewsWire. -
Find out what other people are reading! (also one of my own)
Popular blogs attract more people.
Posted in paradigm, readings, web pages | no comments |
Ruby on Rails framework creator awarded Best Hacker!
Winning Google/O'Reilly's Best Hacker of '05 (Loud Thinking): "The ego inflation just culminated in a near pop. The Google-O'Reilly Open Source Awards granted me the great honor of being named "Best Hacker" of the year for the work with Ruby on Rails"
Well deserved award! When you see companies such as Google and O'Reilly giving out awards, you know that those awards are not some stupid corporate pieces of bullcrap. This is one real achievement, both for David and also the Ruby on Rails community. There is definitely some essence to all the hype about Ruby and Rails.
Hopefully the next time around, Lips on Lines wins the award. One can dream cant't he?
Posted in paradigm, readings, ruby | no comments |
Learning LISP
After reading Paul Graham's essays and his bias in favor of Lisp, I finally joined in the bandwagon. Surprisingly, WikiPedia has this to say about Lisp:
Having declined somewhat in the 1990s, Lisp has experienced a regrowth of interest since 2000, partly due to the writings of Paul Graham.I never knew that he had that much influence. Well, anyway, I picked up a copy of the Little LISPer from the library. Unfortunately, this book is no longer available for sale (it has been replaced by the Little Schemer, which I hear has about the same contents). Now, the Little LISPer is an interesting book. Instead of having page after page of words, it has page after page of conversations! Each page is formatted into two columns, one for the dialogue of the teacher and the other for the student. And their conversation revolves around LISP, recursion (lots of it) and food! For a sample of what these conversations sound like, I direct you to Brian Marick's implementation of this style of writing for Ruby.
LISP seems to be an interesting language. So far the Little LISPer has focused more on recursion than features of the language, so I am not able to see how to use LISP to do more complex stuff. There are libraries written for it that can do GUI because it was in the tutorial for my IDE. I have also ordered a copy of ANSI Common LISP from the library. Paul Graham promises that it has the best explanation for macros. And it even has 20 substantial examples for showcasing the power of LISP.
Anyway, my motivation for learning LISP is to verify how much of what Paul Graham says is true. He believes that languages are evolving more toward what LISP is. Here is a diagram that shows how Ruby came about. I pilfered it from the book
Game Programming with Lua, Python and Ruby. I sincerely hope that you do not buy this book. I have browsed through it and am really disappointed with its contents. Then again, I have never been pleased with the Game Developer series; the book lacks depth and tries to make up for it by having a CD that is loaded with all kinds of crap. The reviews for it on Amazon agrees with me. But, anyway, here is the diagram:

No doubt, lambda (or Proc, as they are called in Ruby) seems to the common ground for this languages. Not to mention the fact that metaprogramming is an important feature for LISP. One, that paved the way for its popularity in Artificial Intelligence. Why (yes he is called Why or rather Why, the lucky stiff) has written two nice articles on metaprogramming on Ruby: Seeing Metaclass Clearly and A Sponsored Dragon-Slaying.
So, right now, the method that I am deploying for learning LISP falls along the lines of writing little programs and some test cases for them. This methodology is similar to the one suggested by Mike Clark. And for my IDE, I chose LISPWorks Personal Edition as it was recommended on the LISP newsgroup.
Posted in development, readings, software, ruby, lisp | no comments |
Design Patterns and Languages
The original authority on Design Patterns is the Gang of Four book. The Gang of Four includes my Software Engineering professor, Dr. Ralph Johnson. Design Patterns is still a good book and all; however, it focuses a lot more of implementing it using C++. Thus, I bought the Head First Design Patterns book. Except for its startling front cover, Head First Design Patterns is an excellent book. I read through 5 chapters of it last night after the book arrived. The exercises in there are fun, with the exception of the crossword puzzles. Why are there crossword puzzles?
Anyway, from what I have read -- and this is still very preliminary -- most of the design patterns seem to be used for delaying initialization to runtime. That is, all functionality should be freely dynamic and can be added and changed at runtime. Thus, design patterns seem more like little hacks (pardon me for a lack of a better word) to get the static type-based languages to be more dynamic.
I do not think that I am the only one to think this. Peter Norvig has some slides that show how to use design patterns in dynamic languages. In fact, he says that 16 of the 23 patterns discussed in Design Patterns are more easily implemented using Lisp than C++. Needless to say, this is something that I am really interested in finding out more on. And as a side note, this brings me back to what Paul Graham thinks: there is indeed the dream language. It would not do justice to his excellent essay on how he goes on to describe why some languages are indeed better. If you excuse him for his bigotry toward other languages beside Lisp, you might come to agree with him that there is indeed an evolution of languages. New languages tend to be more dynamic and not as type-based. Also, new languages tend to be flexible enough that you are able to define new constructs for the languages so that it models your software better.
Maybe, I am just language-addicted. Dave Thomas, one of the Pragmatic Programmers, mentions in a recent Ruby on Rails podcast that he is interested in languages too. And that he always strives to spend 3 minutes on each new language that he encounters, devoting more time to it if he finds it interesting.
In short, what I would really want to find out: Are Design Patterns modeled after the limitations of the language? Or do their usefulness transcend between languages?
Posted in readings, software, ruby, lisp | no comments |
