tomo's blog

There is debate over the term 10x developer which is the idea that some developers are ten times as productive as other average programmers. This was popularized by some research which was subsequently refuted but the idea lives on. And if true, how can we all become "10x developers"? From the time I began taking programming classes in school, which is when I was first exposed to other people's programming abilities, I knew that skill level varied and varied greatly. In an arithmetics class, the best student might score 20 or 30 percent higher than the average. But there's no way to score 100 times the average as that level of ability isn't measured in class. But in a programming class, there will be a number of students who can't complete a working program in a given amount of time, and a student who is a slow coder but eventually gets something functioning is infinitely better than the student who doesn't. Those who can't typically don't go on to become career programmers, but they might need to pass the class for some IT-related business management degree and go on to become Excel wizards.

But among profressional programmers what is a good standard deviation in productivity levels?

Read the rest of this article...

[Are you an investor interested in investing in Vietnam, especially in startups? This blog post comes from conversations with visiting investors from other countries and answering a lot of questions they had in common.]

For years, tech startups in Vietnam operated in a sort of vacuum, with no local ecosystem to help them.

Of course, this didn't stop them. Maybe there were even benefits with less scene distractions.

Now there is something we can call a scene, like a subculture of startup. There are wannabe entrepreneurs (wantrepreneurs), kids who dream of startups or want to experience working for one. There are serial events (Startup Weekend Ho Chi Minh City, the Start Me Up series, even Barcamp Saigon which I'm most personally attached to) as well as larger traditional conferences with international involvement. There are hackathons. There are training programs. There are incubators. There are angels and venture capitalists, although so few that finding appropriate investment among them is challenging for many reasons. There are online forums (in Vietnamese) and there is now coverage of the country in the three largest regional tech news journals out of Singapore (e27, SGE, TechInAsia) as well as local PR mouthpiece Action.vn.

And there are even some startups within Vietnam's startup scene!

(Though there is confusion about what is or isn't a startup)

What kind of startups you'll find in Vietnam

Read the rest of this article...

What is a startup?

We're in the middle of a tech boom and it's become fashionable to either work for a startup or to be a startup. But what is a startup? How do you know that company offering you a job in exchange for a few years of your life is really what they say they are? How should you compare the hobby or side project you're working on with a "startup"? How is a startup different from a business? What kind of company would attract venture capital and what kind might get other kinds of funding, but not from VCs?

First of all, there's more than one definition of "startup". Paul Graham defines startup as "a company designed to grow fast". That definition says three things: a startup is a company, a startup has a plan, and a startup is about growth.

My definition has more words: "A high risk venture to flesh out and scale up an as yet unproven business model with an aim to reach a massive known market or an unknown or unknowable market."

Definition

A high risk [startups, unlike hobbies, are necessarily risky - nothing ventured, nothing gained]

... venture [usually a business, but this could apply to a team's activities within a larger organization - uncertainty is implied]

... to flesh out [as in an unproven business model, many blanks must be filled in by the entrepreneurs as a result of experimenting, trial and error, course correction]

... and scale up [scale is really key - without scale, you're just a local mom&pop, or all the hope and risk-taking investment dumped into you has no potential to garner large returns - more on scale below]

... an as yet unproven business model [a startup's business model doesn't yet exist as a known successful and proven model from the start, and when that model does become proven and successful then it's no longer a startup]

... with an aim [without or before an explicit and conscious effort to market and sell a product or service then it's just a research project]

... to reach a massive known market [this is where scale is required, where the risk has the potential to result in sufficient reward]

... or an unknown or unknowable market [early in the discovery stages, an entrepreneur may have a hunch that they're developing a product with a large potential market, but not feel out the depths of the market until later]

Google, Apple Computers, Intel, Ford Motor Company, Instagram, YouTube... in hindsight, these were once all startups. They all faced huge risks but eventually found themselves delivering products to massive markets and also successfully scaled up to serve those markets. And at the time, it wasn't clear at all how those business models would succeed or whether they would at all.

What isn't a startup?

But what about a research project at a certain university being taken on by a certain Larry Page? Surely, this research had the potential to become a massively-valued company used by much of the Earth's population. Was it a startup? Obviously not (not at that point in time, which brings up the thornier issue of at which exact point to call the genesis of conception of a startup). While the kernel of the idea was on a clear path to scaling the entire web, what was the risk? Whose lives would be affected if Larry had failed in his research? The time investment was no different from any other student.

What about the neighborhood sandwich (banh mi) cart? It's a risky business and who wouldn't like to sell increasingly more sandwiches month by month? The difference is that there are many sandwich carts everywhere trying numerous variations of the business model. But that business model is well understood. You could take your growing sandwich business to the bank and get a loan after quantifying a few common metrics of your particular variant. The banker would have absolutely no expectation of getting 1000% interest on their loan. Conversely, while not being a sure thing, the risk is more than manageable by competent parties. You're very likely to not lose lots of money, and you're extremely unlikely to huge amounts of money. [Franchise restaurants are more scalable. But they also fall within the bounds of relatively well-known rather than innovative business models.]

So what if you're bringing a new service to the market? You plan to offer a widget-configuring service around town, because widgets are the hot new thing right now. You see growth potential there. Except that you have no way to scale this business to other cities which are outside your driving range and all you're really doing is trading your time for money. When you're not working, you're not earning. And outside of cloning yourself you have no way to multiply 100-fold what you're doing.

What about a blog, like the blog you're reading now? Could you be reading a startup right now? No.

Hobbies are not startups. Hobbies can turn into anything but there's no intention of a hobby itself being a startup venture, otherwise you treat it as such and not a hobby. A hobby is never seen as a risk. Time spent on a hobby is the reward itself. With a normal business, you expect to get back what you put in plus some. With a startup, you hope to get back much more. With a hobby, you're not putting anything in and you expect to get just as much out.

Working at a startup will be exciting. It will necessarily move fast, and if you're doing anything financially promising at all, there will be the pressure from the threat of competition. You'll see lots of mistakes being made. It will be different. Traditional roles will be upturned as CEOs become janitors and developers do customer service. But it will be a chance for those young idealists to get their fingers in a number of fields they would have otherwise had to wait decades for. And best of all, you have the potential of becoming a billionaire. And that's what sets a startup apart from business as usual.

I have had some personal experience with startups.

Also, read about startups in Vietnam.

My Startup Experiences

Submitted by tomo on April 5, 2013 - 10:34am

I've been involved in start ups for over a decade now. During that time I've worked for companies in varying stage of development. Not all of them were startups. But how can you tell if it is or not?

Read the rest of this article...

Boulder's big VC investor dude Brad Feld has a house in Kansas City now. He doesn't live there, even for just part of the year, but he owns it. He's letting YOU live there. For free. FREE!!! But should you live in Kansas City (a mid-sized town in the American southwest midwestern state of Missouri) to bootstrap your startup? If the rent is free?

Awhile back I talked about bootstrapping your startup in Ho Chi Minh City on the cheap. And what's better than cheap besides free?

Read the rest of this article...

A Foreigner in Vietnam During Tet

Submitted by tomo on February 1, 2013 - 1:52pm

A Quiet American in a Quiet Vietnam

About two weeks after I first arrived in Saigon, it began: Tet. What a horrible mistake, being in Vietnam right at that time! Tet, being the single Vietnamese holiday that is equivalent to Thanksgiving, Christmas, and New Year in one long week that often stretches to a month for many students as well as laborours. While pre-Tet is a time of high commercial activity, it all comes to a full stop at midnight of the Lunar New Year. Vietnamese people go home. And for Saigon's 10 million or so population, this mostly means going back to places far from metropolitan Ho Chi Minh City. Vietnamese cities are full of economic migrants, young people coming as students or looking for jobs so they can earn money to send home. And Tet is the time of the year, for most economic migrants it's the one and only time of the year, when they return home to their families.

As a company or factory, you don't expect anyone to work during the days of Tet. It doesn't matter if you're a foreign company with orders from foreign countries that need to be filled, by customers that neither know nor care that a "Tet" is happening. If you're lucky, your employees will come back to work after a week, after you've paid them a "13th month" Tet bonus, often equivalent to one month's salary.

Read the rest of this article...

Vung Tau Travel Basics - From Ho Chi Minh City

Submitted by tomo on January 30, 2013 - 12:55am

Any important city on the planet exists either because it was a port on the sea or was at a strategic point on a river. Few historic cities exist in the middle of deserts or forests not near any major water sources. Saigon is a river town not a seaside town. It lies near the mouth of the mighty Mekong River, but still some distance from the ocean. But for most of history, being on a strategic trade route was more important to a city's growth than being by a nice beach. Most cities worldwide therefore aren't built around beach resorts nor was being a scenic beach a big economic draw until recent decades.

And so, from time to time, when the residents of Ho Chi Minh City want to get away to the beach the closest option for them would be Vung Tau, a small seaside town that was also a popular R&R destination for American troops stationed in Saigon during the Vietnam War. It has changed a lot since then.

Getting from Saigon to Vung Tau

From downtown Saigon, one can take a water taxi/hydrofoil to central Vung Tau City in just 90 minutes or less.

Read the rest of this article...

Drupal 6 Related Content

Submitted by tomo on January 24, 2013 - 11:09pm

Similar Entries 2 (6.2) - http://drupal.org/project/similar - doesn't work. But version 1 works like a charm. Version 2 spits up an error on array_filter. Looking at the code, my guess is it's related to some new Views plugin code in version 2.

Related Block - http://drupal.org/project/related_block - would have been cool too. It's much like Similar Entries. Unfortunately, the search algorithm is way too narrow. At first, I couldn't tell if the module was even working. Then by weening the search terms down to 1 (which means it figures out a single relevant term and then searches for only that) I saw some results, but not on many nodes still.

Relevant Content - http://drupal.org/project/relevant_content - is nice in theory. Currently, it's broken. It's in the middle of a rewrite, but it's looking more and more unlikely that it will ever get rewritten.

Related links - http://drupal.org/project/relatedlinks - is not what it seems. It just finds any referenced links in the content and groups them together. Nothing external.

Other modules are term (taxonomy) based. But ideally, you don't need to specify all the relevant terms, and you don't need to explicitly say that two terms are related. There should be a more intelligent way.

Christmas in Vietnam

Submitted by tomo on December 26, 2012 - 4:15pm

Christmas in Vietnam is stressful. Just kidding. The downtown streets of Saigon get pretty packed as young people crowd in for the various photo opportunities on Le Loi and Nguyen Hue streets. And the whole area around Diamond Plaza and Notre Dame Cathedral is packed right up until Christmas Eve at midnight. Christmas in Vietnam actually ends right after it becomes December 25th. Christmas in Vietnam means Christmas Eve!

One nice thing about celebrating Christmas in Vietnam is that there's no pressure to do Christmas shopping. Forget Black Friday or Cyber Monday. And forget Boxing Day. Buy a gift for somebody if you want. But only do so because you want to, not because you feel obligated, because you expect they will buy you a gift. Because they probably won't.

Only one in 10 Vietnamese people are Christian, although that makes it one of the more Christian Asian countries. So why do you see Christmas decorations everywhere? Why are there giang Christmas trees downtown and Christmas lights hanging all over stores (to be fair, those lights often stay up year round).

Like Halloween and other Western holidays, Christmas is celebrated more and more as Vietnam is more exposed to Western culture. But it's been celebrated in the country for a long time actually. During South Vietnam's brief existence as a Catholic nation, with a war ongoing, it was celebrated. After the war's conclusion, Vietnam, including former South Vietnam and Saigon were impoverished as a result of poor economic policies. There was not much celebration of any kind. Only until after Doi Moi (return to capitalism) did people have money to celebrate things like Christmas again. Nowadays, at least in the cities, young people party in the streets without much care. Celebrating Christmas means going to Mass for Christians and just going outside with friends for everyone else. There might be some drinking and eating (nhau) to go along but you won't find turkey or other traditional Western Christmas dishes.

So there you have it. Christmas in Vietnam comes and goes. People still go to work on the 25th and there's not much to look forward to on New Years either. The big holiday here is Tet, the Lunar New Year.

Drupal vs Node.js or Drupal + Node.js

Submitted by tomo on December 25, 2012 - 4:01pm

What do Drupal and Node.js have in common? Besides the word "node" not much. They are both ways to do web development. Drupal is for building websites centered around managing, creating, and viewing mixed types of content. Node.js is optimized for near real-time updates in browsers connected for long periods of time to a website.

Drupal is software that runs PHP on top of a web server. It can run on Apache or nginx or other web servers. But it needs a web server to handle listening on a TCP connection and communicating with connected clients (browsers). Node.js, on the other hand, doesn't need an underlying web server because you can easily write a fast, basic web server using Node. Drupal is limited by the speed of PHP and the (most likely MySQL) database that is returning hundreds of queries per page load, and then limited further by the speed at which the web server can serve the data Drupal returns. Node.js can serve a page as quickly as it takes to run any JavaScript function.

Node.js is therefore much lower level than Drupal. Node.js can be the basis for writing scalable, responsive, real-time, single-page web apps. But it won't help you rapidly build any features used on the website. It won't serve as very expressive or patterned scaffolding for any advanced site structure, or help manage more (Drupal) nodes than you can count on your hands. Node doesn't have the breadth of third party web features that makes modern websites social, play nicely with thousands of APIs, or conduct e-commerce. Node.js isn't a web framework, nor a CMS. It's something very different.

Node.js is a framework for programming network servers. Node.js is also the only remaining mainstream way to run server-side JavaScript (others exist but never gained any following, perhaps because without V8 they were too slow or the idea was too ahead of its time). That may not be reason enough for most people to switch to Node, but for some people who perhaps want to share client-side and server-side code or really like JavaScript (because, well, PHP sucks!) then you might still want to use Node even without using it for its networking/events libraries. Those coming from a Python or Ruby on Rails background will see some similar ideas related to event-driven programming.

Why would you want to integrate some Node.js into your Drupal site? Here are some possible use cases

Dashboard: View realtime stats about your site, maybe from hits to your web server's access log. Think Google Analytics realtime view. The benefits increase the more people you have concurrently viewing the dashboard, and multiply when you allow changes to the dashboard that need to propagate out to all viewers with the dashboard open.

Chat: This is the most common example for Node.js. Chat servers need to support many open connections from different users and then update a lot of them when a message is received from one client. And these updates should happen quickly. Some chat protocols even show what the other person is typing as they're typing.

Multiplayer games: Think MMORPG. Games that are played on a server need to be as realtime as possible otherwise you get problems where different players see different versions of the game world. The server needs to be able to serve many simultaneous connections without taking up ever more server resources, CPU or RAM.

Group buying platforms where buyers need to be updated when the number of other buyers goes up. This also applies when resources are limited and shoppers need to know when inventory or availability decreases.

Why do those kinds of projects make sense with Node? They all benefit from high performance despite massive concurrency, realtime or really fast feedback, and the paradigm of event-driven programming on the backend with JavaScript just like in the browser. At least partly it has to do with Websocket in HTML5. Before Websocket, we had to use the hack-ish Comet or long-polling with ajax, but Websocket is the solution that was expressly designed for bidirectional network connections between browser and server. Of course it also has to do with the speed of the V8 JavaScript engine.

So how might we integrate our Node project into our Drupal site? Fortunately there's a module for that: https://drupal.org/project/nodejs

The module uses an independently installed Node.js server that you configure the module to use. Then you have some secret keys set up for the Node server and Drupal to securely communicate with each other. The module comes with some sub-modules with Node servers that can do things like Node-based notifications to Drupal sites and the browsers connected to them. Whatever message you want to broadcast to browsers can be done this way and the browsers can receive them instantly. This could be an actual text message or prices or scores to be updated or whatever data you might want to change in an existing session. And of course the Node server can listen for updates sent from browsers.

In conclusion, Node.js and Drupal are both web technologies with extremely different use cases but which can also work together for both content-ful and massively interactive websites/web apps. Drupal alone has no chance of doing realtime. By itself, Node.js for a blog or ecommerce site would be like programming games in assembly.

Syndicate content
© 2010-2014 Saigonist.