tag:www.shenglong.ca,2013:/posts Shenglong's Blog 2021-10-20T22:29:54Z Shenglong Gao tag:www.shenglong.ca,2013:Post/912358 2015-12-15T17:01:39Z 2021-10-20T22:29:54Z Are you eligible to work in the USA?

About two years ago, when I came to the USA as a Microsoft intern, I started to understand the concept of 'work authorization', and the meaning behind the pesky job application question, "are you eligible to work in the United States?"

Let's face it--that's a terrible question. Students are not lawyers, and I'm pretty sure few, if any, students outside the United States even understand the concept of work eligibility or the cacophonous mess of the US border. I've been forced to navigate it, so in this article, I'm going to try to explain, in layman terms and relatable examples, the general work eligibility situation in the United States. I will also try and elucidate just why tech is working so hard for skilled-immigration reform, and even though armageddon looms on the horizon, why no one else seems to care in this presidential election. 

Please note that this is by no means legal advice. I am not a lawyer, nor do I have any legal or related immigrations training. These are simply a collection of my observations, so if you are to act on them, please do so at your own risk, and please perform your own extended research (and speak to a lawyer) before you do so.  

First, let's break down the different types of visas, and what they're all used for. Unless you are an American citizen or permanent resident, you will need some sort of visa to work (be paid) in the US. Simply hopping across the border as a visitor is not going to help. 

Interns - J1 Visa

Typically, students have little to no trouble getting into the United States as an intern. Under the J1 visa, or 'cultural exchange' visa, students are allowed to receive business training, and be compensated for it. The sponsoring company needs to produce a training plan (which is often generic), and as I understand, the emphasis should be that the intern is receiving more benefit than the company.

Complications with this visa include the 'two-year home residency requirement', which precludes students from returning to the US until they stay another two years in their home country. This varies by country, and certain countries, such as Canada, are excluded from this requirement. I believe all Canadian interns enter the United States under a J1 visa. 

Forging of a Life

The real complication of working in the US begins with graduation. For all foreigners to the US, there are broadly two categories of visas: Nonimmigrant, and Dual-Intent (nonimmigrant + immigrant). A large portion of those who come to the US, for one reason or another, would like to remain here, or at least, not live under the constant threat of deportation. This isn't always possible, and it's pretty much always a gamble. 

Staying in the USA

Someone entering the United States under a visiting visa, such as a TN or a B, is presumed to have no intent to remain in the country. Not just illegally--at all. When you enter under a visiting visa, you really have no lawful way of obtaining a permanent residency, or by extension, citizenship. 

Someone entering under a dual-intent visa, however, has the option to apply for permanent residency, and by extension, citizenship. Yet, because it is dual-intent, there is no declaration of intent. This means that it is lawfully possible to switch from a nonimmigrant visa (such as TN) to a dual-intent visa (such as H1b) without signaling that you actually do want to stay in the country. It's worth emphasizing that switching to a dual-intent visa does not mean you intend to stay, but rather, gives you the option to intend to stay.

If you already feel like ripping out your hair, it's because this is both confusing and ridiculous. 

Canadians Working in the USA - TN Visa

For all the groups of people, Canadians (and Mexicans) really have it the easiest when it comes to simply working in the USA. The meaning of 'easy', of course, is really subjective. Canadians, when they qualify, can work in the US for what is essentially an unlimited amount of time (through repeated renewals) under a TN visa. TN Visas are nonimmigrant intent. 

TN visas are possible because of the North America Free Trade Agreement, and a means thereby to exchange labor. It gives new graduates from Canada the opportunity to work in the United States if they have obtained a degree in their to-be field of work, allows for experienced professionals to hop across the border, and facilitates Canada's largest export: talent. 

If you didn't catch the limitation, here it is explicitly: your area of study has to correlate to your area of work. Thus, while a Canadian Computer Science, or Software Engineering graduate should have no trouble working as a Developer in the valley, it would not be possible for, say, a Literature graduate to do the same, even if the Literature graduate was considerably more qualified. 

There is, of course, some leeway in how TNs are processed. Investment bankers, for example, often work in the United States under an Economist visa if they've obtained a business degree. Are they economists? No - but they're close enough. Did they do their degree in economics? No - but it's close enough. Yet, there are also limitations; some professions are not covered under this visa. For example, doctors from Canada cannot practice in the US under a TN unless it's for research.

TNs are easy enough to obtain. Bring your paperwork to the border, and the customers officer will assess whether it's valid. Challenging cases are usually filed with USCIS prior to approaching the border. Unfortunately, if your job offer and area of study are entirely different, you're most likely out of luck for a TN. 

Graduates of an American School - F1 Visa with OPT

The people who have it the second easiest are those who finished school in America under a F1 visa. Those who graduate from an American school have the option to work in the United States for a year by applying for OPT status. Those who studied a STEM (science, technology, engineering, math) major can further extend it for another 17 months. At the time of writing, there is apparently talk of invalidating the 17-month extension for reasons that anti-vaxxers would probably support/understand. 

As with the TN, F1 visas with OPT are also nonimmigrant intent.

Inter-Company Transfers - L1 'Leash' Visa

Some of those who don't fall into either of the above categories can still enter the USA on another type of work visa: L1, or, as my friend puts it the 'leash' visa. On this nonimmigrant visa, you are leashed to the company as an inter-company transfer. While with the TN and F1, you can theoretically change jobs, you cannot on an L1. You are leashed solid to the company sponsoring you. 

(Picture from cliparts.co)

Essentially, under an L1, companies who have employed someone in another country for a period of time, can bring that person into an US office. This is one primary reason that companies like Google keep a Swiss office. Great employees that get booted out of the USA go to the Swiss office, and at a later date, get transferred back into the United States. 

If you have little or no hair left, it's probably because this is really stupid. 

Holy Grail Visa - H1b

Those on a TN, F1, and L1, literally dream about this visa. They scream and cheer and run around the house in circles when they get this visa. They throw more-than-elaborate parties when they get this visa. It is the holy grail of all accessible visas, and it is dual-intent. Many would consider giving up their first-born child for this visa. 

Unfortunately, obtaining an H1b is very much like winning the lottery. Actually, scratch that. It is exactly like winning the lottery because H1bs are processed via a lottery. Completely (theoretically) randomly. 

At the end of March, those who have already graduated and obtained a degree can enter the H1b lottery for October dispersement, with the help of no less than an experienced legal team. Note that these dates do not align with traditional university graduation dates - meaning that most graduates need to wait another year before applying for an H1b, then another six or so months before they're actually granted. Companies need to show that they cannot easily find similar talent in the USA, and that it is necessary to bring in skilled immigrants. Your salary has to be sufficiently high, and they need to show that you're necessary. It's an exceptionally cumbersome process, and many employers don't even want to bother. 

This past year, less than 50% of all applicants received an H1b visa. Those on expiring OPTs were let go from many companies and sent back to their own countries. Talented graduates of non-US schools had their offers retracted. Those on TN visas were delayed yet another year in starting their new life. 

It makes a lot of sense. I know. 

Conversion Without the Holy Grail

There seems to be a hidden technicality that doesn't make itself entirely obvious, or could it really be a good idea. It appears that the permanent residency application process is removed from the visa process, insomuch as that there is nodependency that you must have a dual-intent visa in order to apply for permanent residency. However, if you apply for a permanent residency without a dual-intent visa, you risk being banned from the country. 

The reason is that when you apply for permanent residency, you 'declare' your intent to stay, while having promised that you did not intend to stay. By itself, this might be ok, because it is plausible that your intent has changed. However, once your visa expires, and you need to renew, you may no longer be able to renew as you have declared your intent, and your visa is not dual-intent. Thus, you risk losing your visa and having your residency application destroyed. While it's possible, if a company is handling your immigration, it is often unadvised, and they may refuse to do this altogether.

Person of Extraordinary Ability - O1

The second dual-intent visa is the O1, granted for those who have demonstrated extraordinary ability or accomplishments. Typically reserved for scientists, there are a set of requirements that applicants are required to meet. These visas are not easy to obtain, even for the highly skilled, and are generally out of reach. I won't go too far into this, but realize that the government's definition of "extraordinary" is actually plainly defined by a list, and simply having done some outstanding stuff may not qualify you.

Life After Dual-Intent

Even if you manage to obtain an H1B visa, the conversion to permanent residency is terrible. The process is a little more complicated than I want to dive into, but candidates essentially have about a three-year minimum time where they can't change jobs, or else their process starts all over again. Three years is assuming no random audits or delays. 

From there, there are countries with additional waiting times (China, India, Mexico, etc) that change every year, and have stretched out to 8+ years before. This is based on your country of birth, and not your country of citizenship.

The Good News


I hope that was helpful, and I hope I didn't ruin your day. You might be asking why this isn't a bigger issue. I guess it's because there aren't enough people who are exposed to it. And, I suppose, the level of complexity isn't something that's easy to understand. 

Please let me know if I've made any mistakes in this.

Twitter: @zeteg

* Thank you to everyone who has helped with adding and correcting the information in here!
Shenglong Gao
tag:www.shenglong.ca,2013:Post/736283 2014-09-05T00:20:16Z 2015-10-21T20:33:04Z The golden steps to success

I found myself sitting in Dolores Park the other day, conversing with an absolutely lovely young lady. We were discussing the permanency and additive nature of success, as well as the implications it had on our lives. "At our level, we can't really fail anymore," I told her. It was true. Though our words rang resoundingly haughty, the facts were indisputable: both of us had acquired a fantastic set of marketable skills--proficiency, experience, and triumphs--all with sufficient depth and diversity, that even if we completely failed at our current jobs, we would still be okay. Maybe not great - but we'd almost certainly elude crisis.

But how did we get here? What clandestine set of prerequisites must we have inadvertently navigated to become so fortunate? We had no idea where we would end up after university, and we certainly didn't plan it. We must have made, with impeccable consistency, an absolutely improbable set of good decisions to have rocketed ourselves already, in our twenties, to be part of the top 5%. We must be geniuses, or at least, really really smart. Right?

But that's unlikely. I, for one, have made more bad decisions than good decisions, and I certainly can't point out any one thing that provided an obvious advantage. Quite the opposite. I've always jumped around, from interest to interest, and have spent time designing orbital paths for a satellite, to training at the Shaolin Temple. What it really boils down to is luck, or rather, our ability to grossly optimize for lucky situations. By virtue of our personalities, we just happened to place ourselves where we were most likely to collide with opportunity. 

Thus, this guide is for the ambitious student, the doting (smothering) parent, and those who are just curious. I'm going to step over the general advice that you find from Ivy League admissions and successful entrepreneurs, and give you tangible and acutely biased opinions on how to optimize for luck. I won't tell you to "be yourself" or to "follow your passions", because let's face it - while you should do those things, that advice essentially says, "do nothing". It's almost like asking how much something is, and being told "it could be very expensive but you could find a good deal." 

Look for problems around you

Honestly, I believe the primary trait that governs success for the majority of people is perceptiveness. Unfortunately, because of Dunning-Kruger and associated reasons, it can also be one of the most difficult to learn. Perceptiveness is the willingness to look around you, and see things that are wrong with people, the world, and yourself. Perceptiveness is instinct to list out potential solutions.

A perceptive person would look at a long line, and ask himself why it is so long, and whether it was a conscious business decision. He would then ask himself how the line could be shortened, and whether it would make sense to do so. A perceptive person may use a door, and ask herself why a particular door has a door handle when it's meant to be pushed. She would then ask whose fault it was for installing it, and whether the door company had planned for the door to open in both directions. 

In essence, a perceptive person is a person who asks why so much, that the visceral hunger to fix problems becomes ravenous. As you can imagine, perceptive people tend to do well in life. They're able to identify problems, correct them (in both themselves and processes around them), and leverage the remaining inefficiencies to their advantage. They find loopholes; they cause trouble.

If you want to learn to be perceptive, keep asking yourself why things are the way they are. Improve your curiosity. Nurture your whims. Learn to recognize bad kerning, no matter how painful it is, and begin to find tangible reasons to criticize everything and everyone. But remember, just because you recognize it doesn't mean you have to vocalize it.

Join a speech or debate team/club

American Prometheus tells a story of Robert Oppenheimer, the director of the Manhattan Project, during his days at Cambridge University. After trying to poison one of his tutors--an affair that would get most of us thrown in jail--Oppie managed to talk his way into a simple university-probation. 

Oppie was a man who could talk, and talking will take you far. Whether it's an interview or a presentation, your verbal communication is one of the most important facets of any job. When I was organizing the Canadian Undergraduate Technology Conference in Canada, the CEO of one of our sponsors told me he was desperately looking for, "engineers who could talk".

Join some sort of club that forces you to speak and react publicly. The more you do it, the more comfortable you will be doing it.

Actively conquer your fears

Oppenheimer was also known for his childhood insensitivity to fear, bordering on a crazed disregard for death. I'm not suggesting you flirt with Hades, but I do think it's important to know which fears are rational, and which are obliquely irrational. When you recognize a fear has no place in your life, such as with skydiving, you should probably conquer it. What you really want to do is abate your fear of failure. If you never try, you'll never succeed - and most smart people avoid trying by making excuses for why they can't try yet. Not trying today is never trying. Some of my friends have been telling me they want something--a better job, their own business, etc--for years. Unfortunately, they always have an excuse.

I feel compelled to mention something just as dangerous as the fear of failure: the fear of success. While more relevant in personal terms, be careful that you don't scorn beautiful opportunities due to a fear of success. Sometimes our minds conjure up crazy excuses because we're scared of losing what we have now, even though the alternative may be so much more pleasant. Sometimes, we're afraid to give up what we've been hanging onto for years, even when an opportunity for something else--something better--presents itself.

Don't let fear glaze your eyes. Don't fall into the trap. Reject fear. Make the first move, and if you've done anything you now regret, put yourself out there and try to fix it. More often than not, kind and intelligent gestures produce results.

Learn to write

I gave a solid example of the importance of writing in my post about Ivey, but I'll reiterate here. Writing, along with speaking, composes the very essence of communication - and without communication, all your other skills are basically useless. Learn vocabulary, learn expression, and communicate with your words, through different mediums, in different situations, and to different sorts of people. 

How? I recommend doing enough reading and studying so that you're familiar with how English works. Once you're no longer vomiting run-on sentences and struggling between 'then' and 'than', read one book by your favorite author, and then stop reading. Start writing. Find friends, teachers, and family to read your writing and give you feedback. Write stories, write blog posts, and even dabble in poetry. Take the feedback seriously, and work to actively become better.

You don't need to be a literary master, but an educated reader should much prefer to read your writing, than to stab himself with a fork. This is a surprisingly difficult level of competence for most people.

Be part of a club on campus that organizes something legitimate

Don't join a club - be part of its organizing committee. Joining a club, honestly, does almost nothing for you. You're thrown into a set of catered events, and while you might have a lot of fun, you're doing exactly what everyone else is doing. You probably have next to no responsibility, and worse, you might think that you do. 

Instead, join the executive team. Help organize events. Meet other talented/passionate people, and grow your network. Competent people will reappear throughout your life if you become successful, whether you like it or not. If you can show these people how awesome you are, it will go a long way. 

Organizing parties does not count. Organizing clubbing events does not count. Organizing a conference and growing attendance from year to year does. 

Learn to code

Just do it. You don't need to be a coding wizard, but you should know how technical systems work. Technology will inevitably devour everything, and having a sense of what is and what isn't possible is going to make your life so much easier. 

If you manage to become a prolific coder, you instantly ameliorate your career options. Not only is every technology company scrambling to find talented engineers, but Silicon Valley is now sitting above six figures as a new-graduate starting BASE salary. That's before stock, bonuses, and other benefits. How much stock? Let's just say that stock in the Valley is often referred to as "golden handcuffs" because you get so much that you don't want to leave. What a great problem to have. 

You can tell me all you want that coding isn't your calling, or it's just not something you'd be good at. You can tell me all that, and I'll just refer you to my previous point, and proceed to call you a coward. Coding at a basic level is not difficult. Even if you don't do it as a job, it'll improve your quality of life significantly. Take a free class on Coursera, or use one of the hundreds (of thousands) of resources available to you online. 

Win awards

Some awards are stupidly easy to win, especially if you learn to write, speak, and conquer your fears as I suggested. Why are some awards stupidly easy to win? Well, because no one really applies for them, or enters in a meaningful/competitive way. 

In high school, I entered an essay contest which asked me to write a 1,500 word essay on how The Battle of Trafalgar would have turned out if the other side had won. Having no knowledge or interest on the subject, I wrote about the implications of The Butterfly Effect instead, and how a historical change would render the future impossible to predict. This three-hour effort won me second place, and I was called down to the office and given a medal. My friend, who researched and wrote a stunningly beautiful paper, won first place. 

After winning the aforementioned award, I leveraged it as evidence of my 'literary skill' to get me into a leadership role. From that, I ended up in front of the school during graduation, accepting another special award. Much of winning awards is just having won previous awards. No matter how small and inconsequential you think an award is, just remember that it can be a necessary stepping stone to winning more prestigious awards.

No organization wants to credit a prestigious award to a nobody. People like giving awards to those who have other awards because it makes themselves great by association. Shad Valley, for example, always extols their alumni for winning honors like the Rhodes Scholarship. This makes more people apply to Shad Valley, and lets them pick people who have more accolades in their name, which in turn feeds the cycle and creates even more award-winners and associations. If you have no awards, coax people who do to join group contests with you. Think of them as feeder schools for winning awards.


My friend explained to me that kids start preparing for elite universities even before grade 9, and she told me of a brother who felt compelled to follow in her footsteps. He had been stressing himself out, feeling he had to be successful to measure up, forgetting that success by traditional standards is not always a great measure of the greatness of a life.

Remember that optimizing for success isn't everything. Sometimes, optimizing for happiness, as well as the happiness of others, is just as, if not more, important.

Twitter: @zeteg

Shenglong Gao
tag:www.shenglong.ca,2013:Post/682150 2014-04-25T17:23:50Z 2014-04-26T16:25:05Z How to have a better time with alcohol

I've always had the unfortunate condition of turning really red whenever I consumed alcohol. My face, my chest, and even my legs would eventually turn red if I kept drinking. I would get a giant headache, become really tired, and be a giant buzz-kill. While it's good to consume less alcohol, unless you want to ignore social dynamics altogether, sometimes it's just a required part of life and doing business (in certain countries). 

I'm going to share my hacks with you, and inform you how to (in theory):

  • Get drunk slower
  • Get drunk faster
  • Get drunk like a normal person if you do flush

Before I start, let me declare an explicit disclaimer: these are my opinions only. I am not a doctor or a chemist, and you assume all risk for anything you try at home. In fact, let me just say you shouldn't even try any of these tactics; I do not condone it. This is for informational purposes only, and regardless of what is taken with alcohol, you should never drink and drive.

I'm going to explain the pathways first, but you can move onto the Summary section if you don't care why it works, and just want to know how they're applicable.

Alcohol breakdown in the body

There are three relevant stages that alcohol (ethanol) goes through in the human body. To my understanding, it looks something like this:

Ethanol  --[ADH]-->  Acetaldehyde --[ALDH]--> Acetic Acid

The ethanol is what affects your Blood Alcohol Concentration and causes you to become drunk in the classic sense. The liver then turns ethanol into acetaldehyde through an enzyme called ADH. Acetaldehyde is still toxic, but has different properties than ethanol. It causes your blood vessels to expand, gives you a headache, and worsens hangovers. Worst of all, it seems acetaldehyde also works to increase the risk of certain cancers. In the last step, the enzyme ALDH breaks down acetaldehyde into acetic acid, which is basically just vinegar. While acetic acid is pretty harmless in this context, the rate of breakdown can severely affect alcohol tolerance. 

Asian flush

Asians who flush are (typically) not allergic to alcohol. Rather, the effect is two-part genetic. 

First, almost all Asians have a variant of the gene that codes for the enzyme ADH (ethanol -> acetaldehyde). These variants create an enzyme that process alcohol up to 40x faster than non-asians. That's right - it can be up to 40x harder for you to get drunk. Ever wonder why, regardless of how much you seem to drink, you can't sympathize with your friends who black-out and forget the night? It's not because you're a wuss (or responsible drinker). Your genetics just make it virtually impossible.

Second, to exacerbate the condition, about half of all Asians have a variant of the gene that codes for ALDH (acetaldehyde -> acetic acid). This variant causes the enzyme that breaks down acetaldehyde to be much less efficient, resulting in a buildup of acetaldehyde. 

So, what do we have? Well, about 50% of Asians convert alcohol into acetaldehyde really quickly, and at the same time, process the acetaldehyde really slowly. This results in a massive buildup of acetaldehyde, which causes redness, and can make the drinking process altogether rather disappointing. 

Treating the flush

The obvious answer to not flushing is not to drink - but that's sort of like preaching abstinence as a vaccine for pregnancy. In order to lessen the effects of flushing (and all the associated side-effects), we have to fix one of the two steps in the chain--we either need to decrease the rate at which alcohol is processed into acetaldehyde, or increase the rate at which acetaldehyde is processed into acetic acid. It turns out affecting the first step is much easier, and also makes for a more normal drinking experience. We can do this with one of the following:

  • Famotidine / Pepcid 
  • Ranitidine / Zantac

From the "research" of myself and others, Ranitidine (300mg) seems to work better than Famotidine (20mg). You can get both over-the-counter, and by prescription (if you want your insurance to cover it - plus OTC is generally 75mg). I typically go from maxing out at about 2-drinks/3-hour period to about 11-drinks/3-hour period on Ranitidine (taken 1 hour or so before - though it lasts for quite a few hours). The exact effect though, will obviously depend on your body and situation.

It seems that these drugs will slow the rate at which you actually process alcohol -> acetaldehyde, giving you more of the alcohol experience, and less of a hangover experience. Though I may be drawing a ill-informed conclusion, it logically sounds to me like those who flush may find it beneficial to take such medication before drinking, as it lowers the amount of acetaldehyde in the body. Note that preventing alcohol flush is not the intended use of these drugs, and that you should always check with a doctor before using them. Actually, just don't use them with alcohol at all.

More drunk, less hangover

Regardless of whether you flush, it seems you can use the aforementioned drugs to stay drunk for longer, and (possibly) get less of a hangover. That is, even if you process acetaldehyde -> acetic acid at an appropriate rate, slowing down the ethanol -> acetaldehyde step means you can drunk for cheaper, and give your body more time to deal with the acetaldehyde buildup. The internet reports that Ranitidine can cause a 38% increase in blood alcohol levels. Once again, adhere to the drug warnings, and do not take these with alcohol.

Less drunk, more hangover?

The internet reports, though there is some backing evidence, that the consumption of Active Yeast right before drinking can cause you not to get drunk, at a ratio of about 1 teaspoon / drink. However, ADH doesn't function at low pH, which makes it questionable as to whether this method works. Acetaldehyde is also pretty toxic, and I'm not sure a buildup is something you'd want in your stomach, even if this somehow works. 

Assuming the article is correct, they suggest ingesting yeast before drinking. If you don't flush, then the acetaldehyde gets broken down into acetic acid normally. I'm guessing the buildup isn't going to be enough (nothing like 10x-40x) to cause a flush in people who don't normally flush, but I could be mistaken. In any case, the guy claims 6 teaspoons of Yeast and 6 beers later, he only felt a little buzzed. This is entirely anecdotal, and there are quite a few scientific inconsistencies involved. Needless to say, you should not do this in any circumstance if you already flush. You really shouldn't try this at all.


Theoretically Get Drunk Normally (if you flush): Take 300mg Ranitidine or 20mg Famotidine about 1 hour before starting to drink. Though, you should not take these medications with alcohol unless told to by a doctor.

Theoretically Get Drunk Faster (If you don't flush): Take 300mg Ranitidine or 20mg Famotidine about 1 hour before starting to drink. Though, you should not take these medications with alcohol unless told to by a doctor.

Theoretically Get Drunk Slower (if you don't flush): Eat 1 teaspoon of active yeast for every drink you plan on having, right before you start. Though, you should not do this unless cleared to by a doctor.

Medication should not be used with alcohol. The information presented here is for information and discussion only. 

Follow me on twitter: @zeteg

Shenglong Gao
tag:www.shenglong.ca,2013:Post/645382 2014-01-24T01:40:59Z 2015-02-05T01:18:56Z Department of Motor Vehicles... you win.

When I turned sixteen, I was ecstatic to finally get my driver's license. The first step it seemed, was to head over to the Department of Motor Vehicles in Halifax and take the written test. I read the booklet the night before, and proceeded to take test which I should've passed in my sleep. 

What I naively did not expect, however, was that stupidity would have permeated the sacred DMV. Somewhere along the test, I encountered one question which stated (I'm pretty sure these were the exact words, as I was so traumatized by this event):

In cold conditions, which of the following freeze before the others?
A. Bridges
B. Overpasses
C. Shaded regions
D. All of the above

"Okay, pretty simple," I thought, "it's obviously B." A, B, and C were both potential answers, but being the educated student I was, I knew that B was the best answer because it'll freeze before both bridges and shaded regions. Furthermore, D didn't make sense. How can all of the above freeze before all of the above? It's not logically/physically possible.

Imagine my surprise when I hand it in, and she marks that question wrong, and the correct answer as D. I politely asked her why it was D, but she snarkily replied, "If you read your book, you would know." I reminded her that I did in fact read my book, and even if I had not read my book, D could still not possible be the correct answer because it is a logical impossibility. 

She wasn't getting it, and after ten minutes of arguing back and forth, she said, "Fine fine fine - then why did you say B, overpasses, and not, say A, bridges?"

My face lit up. I foolishly deduced that she was resorting to reason, and that I was about to win. I explained: "Bridges are over water, and overpasses are over land. Water, you see, has a much higher specific heat capacity than land does. Thus, when the weather turns cold, the latent heat in the water keeps the bridges warmer for longer, making overpasses freeze first." 

To this day, I don't think I've witnessed a blanker stare. She looked at me with eyes devoid of life and being and responded, "This isn't a science class."

I lost it. After another 15 or so minutes of arguing, I was escorted out for making a scene. I thought I had won because I never gave in, and left with my pride intact. But to this day, I still don't have my driver's license. 

DMV - I give up; you win. I concede your point: somehow, all of the above can freeze before all of the above. 

Shenglong Gao
tag:www.shenglong.ca,2013:Post/631619 2013-12-18T00:26:04Z 2013-12-18T02:20:17Z Customer Service as a Product

When I turned on my new tablet a year ago, I was alerted that because I resided in Canada, I would have to return it to the store. Apparently the model I bought was American, you see, and I would need the Canadian model. I asked why I wouldn't be able to use it, but was told condescendingly that it was obviously because I had purchased the wrong model. How stupid of me. But I wouldn't be able to return my American model at the store; in fact, I would end up having to travel to six different stores before being able to return my laptop and buy the proper model. 

It's probably apparently from my doctored image that this is never happened - but things like this happen all the time in customer service environments; for some reason, companies and people seem to have a different set of standards for customer service than they do for products - and that's ridiculous.

Just now, in fact, Best Buy routed me through five different operators just to validate my Best Buy warranty on my laptop. Even disregarding the constant degradation of voice quality as I kept being transferred, I had to hold on the line and explain my situation again to every person I spoke to. Yes, I hung up on the fifth transfer, and tweeted angrily. This is where it gets even better:

Social Media Strategy

It's wonderful that so many companies have adopted social media strategies, but there seems to be gaping chasm of quality between companies that do it well and those that don't. I suppose the latter is valid if the end goal is to pretend like you care rather than actually help customers, but in my opinion, it's best to avoid situations like this:

After apologizing for bouncing me around too many times, Best Buy's Twitter guys somehow decide the optimal way to proceed is to bounce me again to another twitter handle. Worse, the new handle hasn't even responded. Brilliant; great communication guys. I'll update this post in the future to reflect my final bounce count before (if) the situation is resolved.

Some companies do social media right, though. Take Pizza Pizza for example, when my friends and I were told my the representative on the phone that "(our) free medium pizza will cost $7.99":

We got a call immediately after we sent them a number, and the lady on the phone quickly resolved the issue. Her concern wasn't who was right or wrong; her concern was satisfying us--the customers. In reality, we didn't care about $10, but we we shared an universal hate for wasting time and being treated unfairly. Even though I'm not a giant fan of Pizza Pizza pizza, I've eaten there a few times since, each time remembering the wonderful service I received. 

Customer Service Design

What does this have to do with producing customer service like a product? It all comes down to design--understanding what the customer wants, and translating it into the experience. Reduce friction, maximize happiness, and associate your service as you would want your product to be seen.

As a customer, it shouldn't be my responsibility to figure out that Best Buy Canada is a separate entity from Best Buy, and that my information in one does not necessarily transfer to the other. While I am sure this is the case, I just don't (and shouldn't have to) care.

Here are five guiding principles in designing customer service:

Display Wait Times

This is an easy one. Collect your average call times per employee, and figure out how many people are in the queue before the customer in question. Every so often, you should update him or her with the estimated time remaining, and offer to let the customer leave a message instead. If you don't want to display time, at least tell them their position in line. 

The Customer Is Never Wrong

I don't believe that the customer is always right--that's impossible. However, you should never make your customers feel like they're wrong. Here's an offensive reply from Air Canada that blames a mother, who tried to bring a real problem to the airline's attention:

It's almost scary how good Air Canada seems to be at making their customers feel like shit (legal disclaimer: my own opinion). You don't want to do this. In fact, you should document a rough flow of how your employees should deal with wrong customers if you're not paying them enough to be problem solvers. Here's a rough sketch of how I envision it; note that really important nodes are marked in green:

The emphasis here is that you should solve problems if they're not too expensive to fix, even if it's working as intended. You can let the customer know that this is a one-time thing, and the customer will be grateful to you for it. Really though, if you don't make the customer feel worse than when she called, then you're already ahead of the game. 

Consolidate Internal Communications

This is harder in practice than in theory. You want to make sure that each part of your company has a limited way to talk with each other. Take Uber for example. After stories like this where customers lost Matt Damon, they developed a basic lost-and-found system to improve operations (image from TechCrunch):

This is a far stretch from one friend's experience with Air Canada. Right after he left the airport, he called Air Canada to tell them he had left his Kindle on his flight. However, he was apparently told that they didn't have the ability to contact the crew. Now Air Canada, that's just silly. 

Reduce Repetition

I spent a summer at Dayforce (now acquired by Ceridian) in the Client Support group, where I fielded queries from B2B clients. Though I may be biased, I think it's pretty safe to say that we offered one of the best support experiences I had ever seen - probably due to the smart people working there, and the experienced management. We tried to solve problems even when they weren't entirely relevant, stayed late when a client's case required it, and even thought of alternative strategies to tackle problems. The most defining feature, though, is that we never blindly forwarded a customer off. We always called that person in advance to explain the situation and get them up to speed.

A customer shouldn't have to repeat herself twice (much less 5-7 times), a taking a few seconds to do that for her will make a world of difference.

Escalations Require Improvement

Another defining feature of our Dayforce support team was our freedom to communicate. We weren't confined by narrow scope, and if we believed something the client is asking for is entirely reasonable, we forward a request or talk to someone in development. This is entirely unlike some companies like AT&T. 

I interned at Microsoft last summer in Redmond, Washington, and so I paid for a plan with AT&T. Even disregarding their premium prices and other problems, I had to call more than five times to even pay them. Each time they (CS rep or manager) would ask for my credit card number, followed by a "zip code". Unfortunately, Canadians have postal codes instead of zip codes, and their system can't seem to process a postal code. Each time I was told I'd get a call back once they figure it out, and I never would. Instead, I received condescending messages alerting me of my delinquency. 

In fact, it wasn't until I threatened to chargeback my card for the initial deposit and file a complaint with the FCC that they finally fixed my problem. Even such a simple problem of country-based conditional fields took months to figure out.

If an issue is legitimately escalated, then there should be a way to make sure it's looked at. You're not going to account for all the problems that can arise, and it's reasonable to learn from your customers. It makes them happier, and it makes you smarter.


With all this said, it's also important to understand the role of customer service in any business. Sometimes providing good customer service is just not economical (Google), or--if your cost of new customer acquisition is significantly close to retention--not entirely justified past a certain point. Take Admiral Insurance, a car insurance provider in the UK, for example:

I worked at the Admiral Insurance call center in Halifax, Nova Scotia for a few months, on the phones as inbound sales. I was told that Admiral put their Sales center in Halifax partly because Brits found Canadian accents to be endearing, and Canadians accents performed better in up-selling to their target demographic. At the same time, Admiral put their customer service department in India. To ensure people didn't get too angry, customers would get switched back to Canada to the Retentions department if they wanted to cancel their service.

I always found quirks like this to be fascinating. Despite the moral objections people may have, operations set out like this shows a solid understanding of the underlying business (at least one model - even if I disagree). I distinctly remember one gentleman whose first words to me were, "You're not in India, are you?" I replied that I wasn't, and he sighed relief. After he explained his problem to me, though, I regretted to inform him that as per company policy, I would have to forward him to India. They probably could have trained me in customer service as well, but would it be worth the costs? Would it be the right thing to do? These are questions that every company needs to answer for itself.

The important thing is to be cognizant of your decisions, and not let them be made for you.


Shenglong Gao
tag:www.shenglong.ca,2013:Post/626275 2013-12-03T22:41:50Z 2014-04-26T16:48:15Z My roommate, who will change the world

One wonderful speaker I met two years ago at a conference told us to be unreasonable, quoting George Bernard Shaw, that only unreasonable people will change the world. He said that the reasonable adapt themselves to the world, and that the unreasonable adapts the world to them.

Thus, I feel compelled to share with you all today my secret fortune: my roommate, whose unreasonableness is so extreme, he must be destined to bring forth great change. We'll call him Bush. He is a subletter, and these are his teachings:

Thermostats are bad

Some Native Americans used to believe that ghosts lived in right-angles. The Chinese believed that ghosts couldn't jump, and so they built stepping stones in their doorways to keep ghosts out. The fact is, evil is embodied in many cultures, even if we sometimes forget it. I feel very fortunate to have Bush here to remind me to thermostats are pure evil. More, I'm glad that he takes an active stand against them. Here, you can see the result of an evil thermostat after Bush fearlessly assaulted it with his fists.

We were told these were $100 per piece, but a small monetary sum and constant cold are a small price to pay to be gone with this evil. 

Thermostats are really bad

Unfortunately, one of my other roommates was not as clearheaded as Bush. Instead of living without evil, he asked the repairman to give us a new thermostat. Luckily, Bush had many strategies to deal with these evils.
That's right. He superglued it, locking in the evil spirit. 

4:00 AM is the time to hammer things

I've always naively thought that 4:00 AM is generally the time for students to sleep. Plus or minus an hour or two, most people I know sleep from 12:00 AM (Midnight) to 9:00 AM, leaving the hours of 2:00 AM - 7:00 as generally indisputable quiet time.

Boy am I wrong. I woke up the other night at 4:00 AM to discover Bush hammering away loudly. I listened to the noise for about half an hour in bed, pondering just how close-minded I've been this whole time. Being such, I spoke to him the day after and asked him not to do that anymore.

4:00 AM is also the time to chop vegetables

Bush decided to be especially thoughtful a few weeks later, when he proceeded to chop vegetables loudly at 4:00 AM. This woke up another one of my roommates, who, since he was as close-minded as I was, also asked him to stop. Bush was kind enough to remind us that chopping vegetables and hammering were two distinctly different activities.

Fans aren't meant to be used, and alarms are meant to be set off

Both bathrooms in our apartment are equipped with fans. I've always thought these were meant to be turned on to dissipate steam from the shower and prevent mold from growing, but apparently I've been mistaken all along. Luckily, Bush was there to correct me. Without fail, he managed to keep the fan off after each of his 45-minute showers. He even selflessly instructed me that flipping the switch (which is a whole inch away from the light switch) is too much work. It's people like him, who always work towards a greener future, that inspire me.

Now, the next part really is my fault. You see, there is a fire alarm right outside the bathroom door.

Because this alarm is so far away from the kitchen, it never really has the opportunity to go off. Luckily, the steam from Bush's showers managed to set this baby off just about every morning. At first I was a little irritated that it kept waking me up, and so I confronted him about it. Sadly, I didn't consider that this sound is actually very beautiful.

Bush was very accommodating with this situation though. In fact, to save energy and accommodate my requests, he started closing the door to lock the steam inside the bathroom after he finished his shower. It was ingenious. Instead of turning on the fan, he could avoid the smoke alarm by locking the steam inside the room! That way, the next person who stepped into the room could feel like they just took a shower! I know I'm really weird, but I didn't like this feeling, so I thought of a solution.

Yep; in another act of complete selfishness, I had the audacity to tape the switches together, hoping that he would keep the fan on after his shower, because it was already on. Plus, I figured, the obvious duct tape would be a reminder. But Bush - he never once failed to go the green path. Even this alteration didn't stifle his conviction.

It's great to know such wonderful people exist in the world. Bush has been so unreasonable that if I didn't know better, I'd say he was on the far-tail-end of stupid. But I do know better, and can appreciate his genius.

Shenglong Gao
tag:www.shenglong.ca,2013:Post/609767 2013-10-17T15:39:33Z 2013-10-17T15:39:33Z Encouragement

Throughout most of grade school, I judged and heavily criticized my peers on their inability to learn and understand concepts quickly. I'd often get frustrated whenever I tried to teach them something I thought was beyond simple. Math, science, and even language were easy for me after all, and I couldn't understand why they just didn't get it. I felt an overwhelming sense of faith in the grading system, and felt there was no higher justice, than to let their grades reflect their incompetence. I was a fool.

This semester I enrolled in a class called Foundations of Singing. As the name suggests, I am expected to sing. I've never sung (successfully) before; I can't even match notes, much less sing with any demonstrable skill. To exacerbate my faults, I have the luck of being paired with an incredibly talented class, where each one of my classmates possesses an almost virtuosic affinity for vocal methods. For the first time in my life, I felt completely incapable and worthless. We have to sing in front of the class, so I couldn't even hide it.

I was expecting ridicule and hate, much like I had doled out, but perhaps in a more reserved manner. What I received, though, was support and encouragement. It's almost as if everyone understood my struggle, and went the extra mile to help me out and support me. It's been over a month now in this singing class, and while it's been one of the most difficult things I've ever done, it has also been one of the most rewarding. While I'm still not excellent, I am much better - something I really was not sure I could achieve in the musical space. Even more unexpected, I seem to be marked not on my absolute skill, but on my ability to adapt to the material and improve. I come out of every class feeling inspired and with renewed energy - much the opposite of what I expected going in.

Part of me wonders what grade school would've been like if we adopted a similar approach. What if, instead of ridiculing and marking down children for their inability, we complimented and rewarded them for their improvements and audacity to try? I've never been able to shift away from my selfish view of performance before, but having seen the difference firsthand, I feel like we should at least try. I'm not entirely sure how it would work logistically, but as such an advanced society, perhaps education has been stagnant for way too long.

Shenglong Gao
tag:www.shenglong.ca,2013:Post/583122 2013-06-07T23:46:52Z 2021-03-24T11:05:00Z The Ivey HBA Offer

"I need a summer job!" was probably the most common phrase I heard this past year; for those of you who know me, you'll know that almost all my friends at Western are in Ivey's HBA program. I've done a lot of businessy things, and I even won the Feasibility competition - but I never went to Ivey. This has given me some interesting perspectives on the program, and if you're debating whether to accept Ivey's offer, you should probably read this. Understand that this article simply reflects my own opinion (almost always backed up with fact and data), and as impartial as I try to be, it is difficult to shred all bias. If you come across something that is false, please send me an email and I will rectify as appropriate (lawsuit disclaimer).

Oh, I'll also be making some comparisons to the BMOS/Social Science program, just because BMOS is sometimes seen as an alternative business program for Ivey. I'll also be making references to the software/technology sector, because that's where I have the most exposure (it's also up-and-coming, and booming). 

A Consideration of Value

I came to Western with full intent of attending the HBA program, as it has one of the best (if not the best) records for breeding consultants and bankers when compared to any school/program in the country (more on me later). Additionally, it has accumulated a large amount of prestige over the years, and people have (Ivey students at least) come to expect an appreciative awe when their school is mentioned. This fact is so pervasive, in fact, that Ivey students often distance themselves from the school itself. They don't go to Western, they go to Ivey.

But is it justified? Perhaps. A quick search for UWO employment will show results almost strictly tied to Ivey, casting insincere doubt over whether any non-Ivey graduates even get jobs (some do). 

However, I couldn't find any records. I spent a good couple of minutes searching for main campus / social science employment records, but couldn't find any. I assume this is either because the employment rates or average incomes are so embarrassing that the administration has decided not to put it up, or (more likely), because no one has bothered to collect the information (although these two need not be mutually exclusive). In the words of the 2012-2013 Social Science Students' Council president, Matt Helfand, "...firms hire social science graduates, not social science degrees..." While I am sure he did not intend it, I had a terribly difficult time not interpreting this as an inadvertent judgment on the value of a general BMOS degree. From what I can gather from anonymous LinkedIn creeping, he is now wielding his formidable degree in a campaign to solve the problems that plague mankind at a summer camp. I judged you wrong sir, rock on! [Update: Since posting this article, I have been kicked from the Social Science Facebook group :)]

Ivey and Employment

I will use more than employment as a measure of worth throughout this article, but since most of us come to school with the expectation of a job upon graduation, I thought it was relevant to mention first. So what about Ivey? Well, their placement report (backup link) for this year will give you a good look at their (biased) data. Ivey should absolutely be applauded for making this information available, but there are certain details I should clarify before you get carried away with excitement (Ivey administration: if any of my comments are incorrect, send me related data, and I will correct my assumptions).

First, scroll to Page 6 where it lists Summer Employment numbers. These are the numbers you'll be most worried about because your internship after your HBA1 year is you immediate concern, and likely a good predictor for your full-time success. 
The numbers are stunning: 97%, or 621/640 students found jobs! Even better, the average salary was $876/week, which works out to be about $45,000/year as an internship salary! That's freaking amazing considering the average income for a single Canadian was about $32,000/year (+40%). Adjusting for statistical significance, that pretty much means all HBAs had summer internships that paid, on average, 40% more than the national average income. Wow, good job Ivey!

Wait a minute, there's a (few) problem(s)! If you scroll to the next page, it tells you that the median average income is actually $796, which is a much more useful measure of income (it's what Stats Canada used as well). Okay, despite the fact that Ivey tried to trick you, that still works out to be about $41,000, or 28% higher than the national average.

That's still pretty good until you consider how students come across these jobs. About 38% are "undeclared", and I've gone ahead and made a potentially offensive assumption in most of these cases, mommy or daddy provided these jobs. I'll further conclude that even without Ivey, these students would still be similarly employed. But these numbers are still misleading. Notice how the 97% is qualified by a statement concerning "job seekers". 

Since this is probably voluntary reporting, I'll go out on a limb and say that those who couldn't find jobs and those who hold unpaid internships opted out of possible humiliation (not that there's anything to be embarrassed about - experience is valuable, and shit happens). More than likely, they probably didn't report their inability to acquire a job, or that they're unpaid. While I am absent quantitative data, I can tell you from personal experience that this is the reality for a large number of (sometimes fairly smart) people - probably somewhere around 30-60%.

Ivey and Academics

Let me tell you now that I generally hang out with rather intelligent people. They have their weaknesses, but in general, my friends are quick-witted and fast learners (even if some need a little extra inspiration). More importantly, many have prominent strengths, and it's through this balance that I've been able to sort through different perspectives to formulate an outsider's opinion.

Ivey is tough, but not tough in the traditional sense. You are not burdened with exorbitant amounts of work like at some schools, and the problems aren't so tough that you need to be a genius (obviously -.-) to solve them. It's tough because you need a good mark in order to get a summer placement in consulting and banking. By good, I mean probably 86%+ on an 80% curve with a ~3 standard deviation. Confused? Okay, quick stats lesson:
Essentially, Ivey plots it so that if you stack up everyone's mark, the shape of the curve you get will look something like this (a bell curve). The very center--the most frequently scored mark--represents the average of the data, and the fall-offs to each side show deviations from the norm. I am simplifying, but this is more or less accurate. 

This means that about 68% of Ivey scores between 77 and 83 (out of 100), and 95% score between 74 and 86. This leaves roughly 2% of the class to score above 86. That sucks--but you're a smart person, and you've always done well in school. There's absolutely reason you'd fall out of that top 2%, right? Wrong. To understand why it is so difficult to score, you have to understand that your Ivey mark is not fully under your control (at least not in the traditional sense). 

Roughly, your Ivey mark is composed of scores from three categories:
  • Contribution (30%)
  • Tests / Exams (40%)
  • Group Reports (30%)
The only part you really have control of here are your exam marks - and even then, it's subjective. Ivey exams are all case-based, and so you enter 4-hour exams, responding to a scenario by utilizing what you've learned. If you convey a convincing argument, you are awarded a better mark than if you did not. Class material, coherency, organization, and many other factors affect the result as well. Exams are the easy part.

Contribution is probably the trickiest part, because not only do you have to say smart things, you have to convince your professor and three other semi-randomly-assigned students that you're saying smart things... and you have to do it a lot, even when you may not have anything especially insightful to add. When everyone realizes this, people start to say less and less intelligent things, and students start to pay less and less attention. Exacerbating this condition further, students start to find that the length of what they say sometimes is more important than the concision of their material--that brevity is punished, not rewarded. I have also heard that especially high-functioning concepts are also not always well-received because the class sometimes fails to grasp the meaning. 

Once again, contribution is 30% of your mark, and that can have devastating effects (especially when the professors hand out marks semi-arbitrarily, as often reported by my friends). If you want to do well in contribution, be prepared to deliver quantitative answers with qualitative insights in a long drawn-out speech, touching on previous not-always-relevant points, as to appear nothing short of godly. That way, the students who are marking you don't need to be listening in order to provide you a good mark. Also be ready to make a really good first-impression. If people think you're smart in the beginning, they'll probably think you're smart in the end, regardless of what you say. This is kind of like a HN/Reddit Karma Effect.

Lastly, you can get entirely screwed over by reports. While I cannot confirm this, one solid rumor is that 48 (48 Hour Report) groups are created to balance out the mark. That is, a group would never be formed with 8 high performers, and a group would never be formed with 8 of the lowest performers. In other words, if you're really smart, you'll probably get paired with someone really dumb - though you may not know who it is. 

The Ivey mentality makes this worse. You'll inevitably meet some people who add zero work - and personally, I think that's fine. Sometimes not everyone has something useful to contribute, and wringing that slight potential is not a good use of time. What's terrible, though, is when you are stuck with someone who has bad ideas, and a loud opinion. These are the dreadful people who create negative work. They're the ones who introduce grammar mistakes into your documents, who argue with the group for hours about something because it just feels right, and who insists on writing even though they probably didn't pass grade 9 English. 

You'll probably get a few of those. My advice to you is this, if you want to do well in Ivey: learn to write. Write concisely and gracefully. Write with purpose, and do all the writing. Having everyone write is a terrible idea, and will leave you with a disgustingly incoherent document that has no flow, even if it seems pretty good after two days of no sleep. If your group insists on writing, I suggest you learn to multitask, and write a backup copy of the report while contributing to discussion. Before you hand it in, show you group, and ask them to see which one is better. At that point, most people care more about their grade than their pride. Plus, the other document probably won't even be complete. If you are an inherently bad writer and have no conviction (conviction, not desire) to change that, accept that your Group Report mark will be a gamble.

Ivey and Recruiting

Your marks are important, of course - because they'll impact your recruiting success; recruiting is basically the end-all of Ivey. You're set if you get a good job, and you're screwed if you don't. Well, that's the general mentality, whether it's true or not.

At Ivey, you'll have a much better opportunity to network with firms. Dozens of firms hold info sessions at Ivey - and the majority of these are not really opened to the main campus. Interestingly, the reason companies hold these info sessions is entirely different from why students attend. Companies hold these sessions to jack up their application rates so they can theoretically select the best people. Talent is the main asset in a services firm, and you should think of these as a marketing expense.

Students, on the other hand, tend to think companies hold these sessions to scout for talent. This might hold a bit of truth, but in reality, you're probably not going to build enough rapport with the right set of people to actually influence your application. Regardless, dozens (if not hundreds) of people show up to these sessions, and ask the same trite questions that everyone else asks. They're not curious - they just want to seem memorable. As a result, it's a pretty big waste of everyone's time. I-Banks, for example, will tell you that their firm emphasizes meritocracy, and that young people have a lot of room to grow and succeed. They'll also tell you they have exciting deals and wonderful exit opportunities. 

In any case, once you've done your pseudo-networking to get your name into the database as interested, then you apply. Here's where marks matter: if you don't have a good mark, most of the time you're cut. You are required to submit your grades, and you probably won't get any top/mid-tier interviews without at least an 84+. If you've read my previous explanations, you can see how this can be entirely unfair and arbitrary.

More About Pay

Although you can't tell your investment banking interviewer that you're there for the money, we all know that's a big part of it... but is it really? It's all in the bonuses right? But is it really? Let's look at some numbers from Glassdoor:
Google is not the only tech firm that pays these kinds of figures. Search for yourself, and you'll quickly see some trends between tech vs. investment banking. Be wary though, because Glassdoor numbers are time lagged, and are thus more than likely understated. However, observing the trends can still be valid, and there's resounding evidence to conclude that tech pays better than investment banking. Oh, you also work a lot less in tech (around 1/3 to 1/2).

My Conclusion

You've already made it this far - you've maintained your ~80% average, and had at least two extracurricular activities. You've made it into the ~85% of accepted applicants. But should you accept? Should you spend that $25,000 and go to Ivey? I've outlined my opinion, but I've skipped the social part. Everyone I know who went to Ivey had a blast at Ivey. They had lots of fun, found a deep sense of comradery, and in general, had a good time. Only you can make a decision you won't regret, so don't look back!

Follow me on Twitter for blog updates: @zeteg
Shenglong Gao
tag:www.shenglong.ca,2013:Post/209425 2012-11-21T19:13:00Z 2018-12-20T00:45:00Z The Feasibility Project

It's that time of year, and all the second year students are scrambling to learn as much as they can to win the fabled Feasibility contest. My group won last year, and I was one of the two presenters. Here's what the prize looks like:

Feasibility is a semester-long project for the Business 2257 course. You're broken up into groups and expected to assess the feasibility of a new venture by researching, projecting, writing a report, and pitching the idea. You compete against every other second-year business student, or student who intend to apply to Ivey. In all, that's about 2,000 students and around 280 teams.

As incentive, you win the above medal plus what works out to be about $125/person. The medal is nice and heavy, and the whole experience is most definitely worth the effort. Does it ensure your acceptance into Ivey? Well... more on that later. 

More importantly, here are some tips and general notes about the contest and project as a whole. Quite a few people have already asked me for help, so I figured I'd write them down for everyone:


Picking A Group

One of the most important parts. Pick team members who you generally believe to have good ideas. Remember, you'll be living with Jonny for the next few months, and he'll be breathing down your neck at 2:00 in the morning. On the same note, if you can't stand Sarah's ticking-analog clock obsession, chances are you're going to flip out and stab someone with your glue stick (if that's your thing). 

Use DropBox

Really. Use DropBox. A lot of people underestimate how amazing DropBox is, and how much they need a file versioning/storage/sharing/backup program. With DropBox (which is free), you can share your entire "Feasibility" folder with Sarah and Jonny, who will then see every edit you make, and can make edits of their own. This all syncs to your computer whenever you're connected to the internet. 

Why else? Well, when Sarah drops one of her clocks on her laptop and accidentally throws your entire project into the trash, you simply revert that change. What? Jonny's little brother Kevin replaced all your nouns with "LOLLLL"? Yeah, you can revert that in less than a minute too.

Understand Your Goal

If you're not trying to win, pick something easy. Some ideas have been done multiples times, and have a good track record for scoring well. Unfortunately, these tend not to do well in the competition. If you're thinking something local and small, you're probably not going to win. Remember, you're trying to win over your classmates and judges (entrpreneurs, professors, HBA2s). Personally, I would be unimpressed with another textbook rental website. 

A Website is NOT A Marketing Tactic

In this day and age, a website is essential. Much the same, "going mobile" is not a strategy no matter how cool Jonny thinks it sounds. A web and mobile presence is required for a properly functioning modern business. In fact, listing mobile as a strategy just makes you look silly. As such, I encourage you to ensure at least one person in your group is familiar with the tech scene. 

Declare Your Own Responsibilities

This is mostly a productivity trick in general. Rather than telling Jonny what he needs to have done for sometime next week, ask Jonny what he thinks is realistic, and have him say out loud that for example, he will have a comprehensive industry analysis done by next Friday. Better yet, take out your phone and record it all. 

One Author

Yes, one person should do all the writing. I'll quote Joel Spolsky, the founder of Fog Creek Software:

If you've ever tried group writing, you know that there is no worse torture. Leave the group writing to the management consulting firms with armies of newly minted Harvard (Ivey)-educated graduates who need to do a ton of busywork so that they can justify their huge fees.

If Sarah is the best writer in your group, get out of her way and let her write. I would recommend that the rest of your group take on a respective area to research and understand. Each person should compile his or her own document, but this should not be copy pasta in the final report. It should, however, be comprehensive and understandable. It'll be the writer's job to translate and condense it into the final work. 

Standardize Your Graphics

There's nothing uglier than a bunch of copy pasta graphs from random websites. No one is going to read the specifics on the graphs anyway, so use your powers of estimation and redraw graphs on Excel. Choose one color scheme and stick to it. Basic Excel is easy, and it's one of those simple skills you can learn from Google. 

No Pie Charts

Honestly, pie charts are terrible. The only time you should be using pie charts is when you're comparing two categorically different things and you want to exaggerate the magnitudes. Humans are in general terrible at distinguishing size differences in radial components, and just about any information you want to display in a pie chart can be easier understood from a bar chart. 

Create a Financial Template

Rather than do make an excel sheet specifically for your project, first make the template. This will allow you to make changes in your model and see how it works out. Ideally, it should look something like Shad Valley's Finance Sheet (Courtesy of Barry Bison). I don't know if it's academically honest to just use that, so maybe discuss it with your professor. In any case, it's a good reference. 

Know Your Industry

My group argued with me for quite a while on my (large) estimate of a Pantry Expense - basically, stocking our pantry full of cookies and treats for employees. Make sure you know your industry inside out, because every industry has its quirks (11:00 AM rush hour in Sillicon Valley anyone?)

Capture Attention

In your presentation, you need capture your audiance's attention. We accomplished this by an introductory slide that asked a bunch of thought-invoking questions.

We then followed this up with some references to other presentations (we were second last) and a forever-alone trollface for humor. Humor is important. You should have about 3-5 jokes spread across your 15 minute presentation. As an example, in our Growth slide, our joke was having Kansas light up last after talking about technological savviness.

Pitches and Numbers

Pitches and tones are important. Hearing a deep voice for 15 minutes is just as bad hearing a squeaky one. Choose your presenters to bring balance and excitement. On the same note, do not have more than 4 people present. I find anything over 3 or 4 gets confusing, and makes it seem like you're more worried about having everyone talk, than you are about actually presenting the information.

Don't Fear Slides

Our slide deck has over 60 slides. We didn't present them all, but we prepared slides for Q&A. Remember that you can link slides together, so use that to your navigation advantage. 



I had some more things to say, but decided to leave them out of this post. Hope this has been helpful!

Twitter: @zeteg
Email: thezeteg [-at-] gmail.com

Shenglong Gao
tag:www.shenglong.ca,2013:Post/209446 2011-09-16T16:41:00Z 2013-10-08T16:05:41Z Why Linear Search is Better than Binary Search

On the second day of my Algorithms class, my professor wrote two algorithms on the board:

Linear Search(...)
(Linear search is a process where you iterate through a list from start to finish, and return the result as you find it. Doesn't work so well with large sets of numbers.)

Binary Search(...)
(Binary search is a process where you keep cutting a sorted list in half, until you find the result. It works well with large sets of numbers.)

He paused for a moment, and asked us a fairly simple question:

What's better? Linear Search or Binary Search?

Not only does my professor have a heavy accent, but it seems like he's assaulting you every time he asks a question. We all froze up, and mumbled "binary..?" The thing is, we've been taught to analyze everything through time complexity, and for large data sets, binary search has an obvious advantage. We started thinking more. "Doesn't it depend on how the data is organized?", "It depends on large the data set is!", etc etc.

He solicited responses for a full 7 minutes (he counted), and then said:

What is better anyway? What if you have a stupid boss who doesn't understand complicated code? Maybe you write a nice binary search algorithm and show it to him. He thinks it's wrong because it's complex and he fires you. You see, now linear search is better. At least you still have a job."

Hidden animosity aside, this was a very important lesson to teach. Because we were taught about time complexity, an entire class of students managed to ignore common sense. 

Takeaway: How much would you charge if someone asked you to clean every window in the United States? Why?


Follow me on twitter: @zeteg

Shenglong Gao
tag:www.shenglong.ca,2013:Post/209448 2011-08-31T18:49:00Z 2013-10-08T16:05:41Z The Tale of Eternity: Part 3

In This Series...

  1. Prelude to Eternity
  2. The Tale of Eternity: Part 1
  3. The Tale of Eternity: Part 2
  4. Interlude: See-Invisibility Exploit
  5. The Tale of Eternity: Part 3
  6. (more to come)


If you only care about the DDoS attack, scroll down.

I remember reading Paul Graham's essays, which kept stressing the importance of finding compatible co-founders. One or two of them also mentioned that poor founder relations are often a reason for startup dying. All praise the oracle. 


The Golden Years

EternityRO started with a bang. Our IRC channel was flooded with regulars, and frequented by random players here and there who needed support. The work never seemed to stop. We barely slept, and implicitly divided up our availability so there was always at least one person taking charge. Our dedication paid off, and Eternity Version 1 grew to about 1,200 simultaneous players. Boom, bang--whatever you want to call it, we really couldn't have dreamed for more. I was even scared we might go over our allocated 1TB of bandwidth for the month.


I didn't have Google Analytics enabled at this point, so here's the awstats from LiquidWeb (most helpful and flexible webhost I've ever worked with). These numbers aren't totally representative of the population, since this is for the website and forum, where most players don't go. I have actual game client stats which I'll post later... that's mind-blowing. 


The Dilemma

Alas, all good things must come to an end. After several weeks of operation, the stress etched away Ayumi's sanity, and I witnessed a cascade of poor decisions. From freaking out at players to disappearing randomly, it was obvious that something was wrong. Like any friend, I tried to talk to her - but I was met with hostility and anger. 

If this were a smaller project, I would've said, "Screw the project. You're stressed out and overreacting, and I want to help. Sit down." That's what any good friend would have done. But thousands of people were depending on us, and by this time, almost two thousand dollars had already been invested by the population. I had to weigh an emotionally unstable co-founder against a semi-business, and the enjoyment of thousands of people. 

Enter Snow and Aisha - two of the five women responsible for EternityRO's booming success. Aisha's experience and personality made her well suited for management, and Snow was a development powerhouse. After trying to lure them into Eternity for a few days, they offered their assistance... but at a price. They wanted me to fire Ayumi and Prodigy.


The Decision

How does one co-founder fire the others? I guess you don't - but there was no equity in this case. After deliberating and arguing with myself for a night, I begrudgingly agreed. In retrospect, I can say I made the right decision. While it may sound morally abhorent, it might be better to look at this through consequentialist lenses. The alternative would've been to let Eternity die. Hey - I saw Social Network! I'm not the only one who did this!

Removing influential community members is usually a delicate process. You need to have finesse, and yet generate enough momentum to carry the motion through. It's actually remarkably similar to the Needle Through Glass technique I learned. The trick to using a needle to penetrate a pane of glass involves throwing the needle straight, yet with enough force to break the glass. A fault on either end will either bounce the needle back or shatter the glass. I'm getting a little bit off topic; I'll explain in another post some time how this and other techniques like breaking bricks and metal bars works. For now, here's a picture from when I was learning:

I changed the passwords on every system, and even the ssh ports. I closed down their forum accounts, disabled their SVN access, and redirected their emails to a new support email I set up - all while they were asleep. The last thing I needed was an emotional overreaction. Eternity was going strong, and I wasn't going to let it break apart from the inside. I announced their departures as mutual, and announced Snow and Aisha shortly after. The community didn't care all that much.


The Hiring Process

Ayumi and the others freaked and eventually disappeared from the internet (not an easy task). To compensate for the missing manpower, I charged Aisha with recruiting new support staff. She solicited applications, and to my surprise, recruited 20 new support GMs (Game Masters). Twenty is an exorbitant amount of people to introduce at once - but my objections were moot. Although Aisha was actually very small, cute, and huggable in real life, she scared me online.

Here's an approximate breakup of what happened to the twenty keen recruits:

  • 10 of them quit or stopped logging in after the first month due to stress, incompetence, and other factors
  • 5 of them dropped out between the first and second month due to stress, and real life
  • 2 of them dropped out between the second month and fourth month
  • 1 of them was fired for outright cheating
  • 1 of them was fired for conspiring with enemies/competitors
  • 1 of them stayed on and proved to be both exceptionally useful and intelligent. Hello Griffin!

Training twenty people at once was downright painful, especially since they were all volunteers. We didn't pay any of our staff, so you might be curious why anyone would work for us. Well, people like to have a sense of power, and that's really why people become Game Masters - even though they'll tell you it's because they want to help the community

So why did 85% (17/20) of our new recruits drop out? Some of you HR fanatics have probably already decided that we had a bad selection or orientation process. While this might be true of this specific incident, our future open-hiring showed similar patterns. No, the problem is deeper rooted than our practices.

To understand why we had such a ridiculous churn rate, we need to look at motivation. People are only motivated by power for so long; once the honeymoon rush is gone, they lose their incentive. Add constant player-abuse, cheating accusations, and pressure to perform - and all of a sudden the job isn't so appealing anymore. Since they don't have much to lose, most people either quit or simply disappear.


The Irony

However, there was one out of the 20 who stayed on board, firm and committed. In fact, after version 1, I gave him administrative powers and started sharing all my plans with him. He essentially took on the role of co-founder, and at times even put me in my place. But why didn't he quit? Why didn't he lose motivation? You could say it was because he loved the community, but I have a better answer. 

After version 3 died, we had a reminiscent chat. Apparently the only reason he applied for a Game Master position, was so he could cheat - but not in the classic way. Because all Game Masters could see which other Game Masters were online, Griffin used this to his advantage. He ran a small bot network on the server, and linked the software to his Game Master account. His script worked something like this (pseudo code):

if(GameMasters.Online.Count() > 0) { AllBots.logoff();}

Basically, because his bots avoided the inherent cheat protection, a Game Master was required to catch them. If they were never logged on when Game Masters were online, no one could ever prove he was cheating. I laughed when I found out. Obviously, Griffin stopped doing this eventually, and probably stayed on for the same reason as I did: intellectual curiosity. Several of our other staff members were also previously cheaters - ha. 


The DDoS Attack

Recently, a wise man told me "when you run a successful tech startup, there are two truths: you will be DDoS'd and you will be sued." One night, I was sitting peacefully at my computer, when the server froze. After frantically trying to SSH into my box after being pelted with close to a hundred calls/texts/emails/forum PMs/IRC messages, I decided to log into my control panel to check my bandwidth. Oh my f***. Here's what I saw:

Normal traffic, then boom - a DDoS attack. Granted, I was on a 10mbps line, but I never figured I would need more than that. As you can see, the traffic never even came close to the limit, and I didn't have enough monthly bandwidth to max consistent use of even 10mbps. I turned off my box, and waited a few minutes before turning it back on. The attack stopped, but it had somehow corrupted one of my SQL tables. Not a big deal... I fixed it, and everything was OK for a while. Then...

If you couldn't tell from the graph... they became more persistent. Before I go any further, I should probably explain what a DDoS attack is. This is a basic overview, and I realize it's not 100% complete or accurate. 


Distributed Denial of Service Attack Explained

The Distributed Denial of Service Attack--otherwise known as a DDoS attack--is a cyber attack, where many different computers flood a target with data at the same time. The theory behind a DDoS attack, is if you can overwhelm the victim's resources while making your requests indistinguishable from legitimate request, then the host can't protect against it. 

DDoS attacks are usually done through compromised machines. For example, someone may send you a virus which stays dormant until it receives a command. Upon activation, the virus will use your computer to send packets of data to a server that the controller requested. This happens to all compromised machines, which means the originating IPs of these attacks could be spread all over the world. As the victim, you can't filter out IPs or subnets at risk of filtering out your legitimate users. 

At a certain point, the victim is overwhelmed with data. Either the attack overloads the bandwidth capability of the server, or it strains the hardware or software in the machine. Eventually, if the attack is successful, the server is unable to operate properly. In our case, the bandwidth capability was overloaded.


Containment Efforts

I googled this, asked friends, and even emailed professors and experts in security, asking how I could stop these DDoS attacks. I remember a lot of jargon about APF, firewalls, etc, but here's one of the more helpful responses I received:

So I had a brief chat with Dr. McHue about your problem and depending on how severity the DDoS attacks, you might be screwed. He actually recommend the IP caching filtering approach that I suggested (I was surprised... I was right) however he indicated that you will probably need some dedicated hardware for it because the lookups will eat an entire CPU, possibly more. You also want to make sure you store the IP lookup table entirely in memory. Finally, this machine has to be located far enough up the network so you minimize the packet lost due to high traffic; this might mean putting the machine at the ISP even.

Other things that he suggest is simply changing the IP of the machines you have and see how long it takes for the attackers to update. Depending on how long it take, you might get some clues as to how professional these attackers are. The second suggestion he made is to incorporate some sort of distributed architecture - multiple machines for logging in and clusters for the game state. The greater the distribution, the more difficult it is to get flooded with traffic.

What did you guys do to piss someone off enough to DDoS you?

Basically... we needed specialized hardware, or (and this is key): we're screwed. Even more importantly is the last sentence! 


My... Roundabout Solution

Well, I was stumped, but I made some assertions that proved useful in solving the problem:

  1. EternityRO is a game, so whoever is DDoSing me probably isn't really all that professional.
  2. If I make it more expensive and risky to DDoS me, they might stop.
  3. Additional bandwidth probably costs less than acquiring new compromised machines. Outputting too many packets from each machine would make their attacks detectable and then I could filter them out.

Now, at this point, I had consulted Razor Servers on what I should do. Unfortunately, their response to stemming a DDoS attack was to null route my IP - which is fancy for turning my machine connection off. This really pissed me off, but I never stopped using Razor Servers. Their services are generally fantastic and well priced, but their customer service needs a lot of work. Rather than keep my main box there, I rented out several virtual private servers for secondary functionality - but I'll get to that later.

I did a quick google search, found that Softlayer offered large uplink ports, a Cisco Guard, and a server in Washington DC. Having no alternative, I moved my server to Softlayer. They gave me a 1gbps--1000 mbps--line for just $10/mo! Obviously, I couldn't use that much all the time, but I also doubted DDoS attackers could keep their attacks up for all that long. I essentially called the bluff and won. After a while, we stopped receiving DDoS attacks altogether. 

I guess this wasn't the best solution, but it was the solution we were looking for. I'd like to think running any project is about judgment calls - and it wouldn't have been worth our effort to find a technical solution to such a big problem. For a larger corporation, that may not be the case.


More to come... I'll post more as I write it. Follow me on twitter (@zeteg) for updates, or email me if you have questions. 

    Shenglong Gao
    tag:www.shenglong.ca,2013:Post/209449 2011-08-21T05:24:39Z 2013-10-08T16:05:41Z 36 Hours is NOT a Proper Response Time

    Do you reply to text messages randomly, days after you receive them? Are you really old, and have no idea why people use text messaging? In this fully-annotated PG-13 post, I will try to explain why you need to crank up your phone etiquette. Let's start with several of my least favorite cases.


    The WTF????

    Usually I'm more respectful of attempts to conversation, but this is just too much. If anyone can tell me what she's trying to say, I'll buy you a drink. In case you don't know, this is an iPhone conversation where my text is in green, and my friend's text is in white. Observe:


    Come on - seriously? I really didn't know how to ... SKDJGSHKDJHKJFSDKSDGN


    The Delay

    I end up in a lot of confused text-conversations about nothing. How can you talk about nothing? Take this wonderful example:

    Thirty three hours. Thirty three. 

    (Kris is my English name which some friends use... because people tend to butcher Shenglong, or ask me 5 times if that's actually my real name. More on that some other time though...)


    The Over-Emphasis

    I love it when people text me enthusiastically; it makes me feel like I'm not wasting my time replying. Once in a while though, lack of originality and emphasis can be a little... silly:

    I am tempted to model her O's as a function of messages received. 


    Why Text Anyway?

    There has been a lot of negativity surrounding text messaging - and how carriers make a ton of money from them. I had a brief detour in youth marketing at a major carrier, and I can testify that changing send-and-end users (people who just call) was a primary objective. However, I also used to be a send-and-end user.

    In the United States, calling cell phones makes perfect sense, since you have nation-wide roamaing and long distance, just as if they were local minutes. This isn't the case in Canada though, and sometimes you get charged long distance, even when dialing in the same area code. The charges are so obscured, actually, that the majority of university students in Canada don't even know in what situations they would be charged for calls.

    Add on background noise, multiple conversations, and texting in class or at work, and you have plenty reasons why texting is great. The main use of texting though, is the ability to carry on passive conversations. Texts aren't as long as emails, and it allows for quicker exchanges when necessary, and slower exchanges when material runs dry.

    Maintaining a good text-conversation allows you to build rapport over time, and over multiple situations. You're passively inserting yourself into someone's entire life - and any good salesperson will tell you how important that is. The reason you want to have dinner with sales targets and have golf with them, is because you want to expand the field of exposure in order to gain trust. Texting isn't as good as being there in person, but it's sure a lot better than nothing. 


    The 2-2-2 Rule

    My obsessive use of phone and email has led to the invention of the 2-2-2 rule, which I often impose onto friends: pick up calls within 2 seconds, answer texts within 2 minutes, and respond to emails within 2 hours. There are obvious exceptions, but it's a rule of thumb to try and stick by whenever possible. 

    More than anything, if it's important, I'll probably call you before I text you, and text you before I email you. Needless to say, I've been told to screw off on many occasions :)


    Follow me on twitter: @zeteg 

    Another chapter of The Tale of Eternity this week. Sorry for the delay. 

    Shenglong Gao
    tag:www.shenglong.ca,2013:Post/209450 2011-08-11T16:28:00Z 2013-10-08T16:05:41Z Interlude: The See-Invisibility Exploit

    Once in a while I will take a break from the main Tale of Eternity story, and elaborate on a very interesting issue: exploits. I will overview some common hacks, how they work, what solutions are normally implemented, and how we solved the problem. I'll try to generalize more advanced concepts so everyone can understand, but some of it might be unavoidably technical. First, there are many different ways of cheating - but in today's post, I'll just outline one. 


    See-Invisibility Hack

    Otherwise known as the Maya Purple Hackthis is a fairly common hack exists in just about every game that incorporates invisibility. On RO--and probably most other games as well--this hack works because of unnecessary information being sent from the server to the client. There are semi-logical reasons for it, but in the end we have to blame it on poor programming.


    The Reason

    Normally in a visible-player setting, the client needs to tell the server "Hey, I'm at square x,y", and then the server checks for all players within the area (x +/- 14, y +/- 14). For each player it finds, it tells them, "Hey, this player is at square x,y", at which point each recipient's client translates that information and shows the player visually. Pretty simple, and it makes sense.

    Of course, location data isn't the only data that's sent. At the same time, sprite data (how the player looks), class data (what class the character is), and a bunch of other data is also sent--including visibility data. With the way the RO client is programmed, received information that isn't recognized by the client results in an error dump--a message with lots of Korean code, followed by a client crash.

    I'm guessing it's because of this, that some genius at Gravity Inc. decided to implement invisibility as it works now. With invisible characters, the same aforementioned process happens, with one key exception. After the client receives the location data for the invisible player, it also receives visibility data, informing the client that said player is invisible. In turn, the code tells the client to show nothing, rather than a player. Okay, this solution works as long as no one tries to tamper with the game client.


    The Problem

    There are two generic ways to exploit this: hex editing, and packet filtering. There is a third way, but it's game-specific and not worth discussing at length. 

    Hex editing works with the hexadecimal makeup of a program. Just like a program can be represented in binary as a string of 0 and 1, it can be represented in hex. With unencrypted files (such as the RO client), hex editing is extremely easy, and values can be changed in a heartbeat. Unfortunately, such was the case for the RO client. For clarification, imagine the following piece of pseudo code:

    if (visibility = no), then {player = not visible}

    Essentially, what you're doing when you're hex editing is changing it to:

    if (visibility = no), then {player = visible}

    Hey, now you can see invisible players. Granted, it's a little more complicated than I've described. 


    The second method is packet filtering. By ignoring visibility packets and filtering for position packets, a user is able to translate the packet data directly in order to see hidden players. This can be solved with a good encryption technique, but encrypting every packet for real-time gaming proves to be a real problem. Some problems originate from increased server load, and others from mirroring the decryption on the client.

    If you use a basic encryption technique, it's going to get cracked; that's a fact you can't avoid. In order to encrypt and decrypt packets on the server, you need related functionality on the client. This ultimately means you're delivering your encryption system to the exploiter. He's going to diff your files, collect packets and analyze them for patterns, and eventually try to solve your encryption. Sadly, the more secure your encryption technique is, the more load it imposes on the server. 

    Let me give you an example of server load: On RO, potions can be consumed at a most, 10 per second. With 2,000 players all consuming on average 5 potions per second in Siege War, there are about 20,000 MySQL inserts per second, counting inventory and logs - which is taxing enough by itself. Try to blowfish each of these 10,000 packets, and a nightmare ensues. 


    The Solution

    The traditional methodology in addressing this problem strikes an uncanny resemblance to struggling competing products: a functionality war. The builders keep improving on their old techniques marginally, and after a week or two, the hackers catch up marginally. The cycle just keeps continuing, eating up a ton of time, and not really getting anywhere. You see, when you introduce a technical problem, the exploiters--who are people who do this for fun, just because they can--are excited about the challenge.

    To disengage people from breaking the encryption, you can either introduce a revolutionary technology so profound, that it's no longer fun to solve, or find an alternative method that can't be attacked directly. A technical solution was never finalized for the invisibility hack, and there came a point where it became a big problem on Eternity. 

    Because we had no reliable way of catching and proving cheating, the bad players started using it - giving them an advantage over people who didn't use it. The good players, feeling the situation was unjust, decided to level the playing field and use it too. Soon, a large portion of the server was using this exploit, and we were receiving a ton of complaints.

    Then, genius: Somewhere in the middle of version 2 (I haven't gotten that far yet in my story), I was discussing this issue with my co-admin, Griffin. I rebooted my brain, and proposed an idea for an alternative way of catching these cheaters - we'll codename it Project Stalker to be hip and unique. Project Stalker involved several steps of logic.

    1. There are only a few ways in the game to reveal a hidden character.
    2. By manipulating game mechanics, it is possible to make a "hacked character" undetectable by normal means.
    3. Hence, if anyone sees this character, they must be cheating. But how do we tell?
    4. When a player hovers their mouse over a character, a packet is sent to the server, requesting the name of the selected player.
    5. Thus, if we receive a name request packet on an undetectable character, the requester must be cheating.

    Griffin understood immediately, and proceeded to code it into the server. He had the server spit back logs of players who try to request a specific character we hard coded in to be our undetectable character.

    Next Siege War, we tested the system. Griffin ran around as Project Stalker, and the server spit back the names and IPs of every player who requested his packet - all the while without letting them know what was going on. The numbers were shocking. Over 50% of the players were cheating! Instead of banning everyone, we alerted the guild masters of cheating players (some of which were cheating themselves) and made a general announcement: "We have a way of catching you. We're letting today slide, but next time, you will be banned." 

    We succeeded. People were scared, and they realized we weren't lying. The amount of invisibility-exploiters dropped from over 50% to less than 1%, and we went through several Sieges without catching a single cheater. This remarkable feat gave us a lot of credibility in terms of catching cheaters. 


    More to come... follow me on Twitter (@zeteg) for updates

    Shenglong Gao
    tag:www.shenglong.ca,2013:Post/209451 2011-08-03T23:02:10Z 2013-10-08T16:05:41Z Why ISPs Shouldn't Ban MAC Addresses

    I'm very fed up with the University of Toronto, and its terrible network management. Last Saturday, I was cut off from the internet at about 11:00 PM for no apparent reason. I hadn't touched any cables (I'm hooked up by a cord), and the other people in this suite had perfectly working internet. I sighed heavily, scooped some ice cream, and proceeded to diagnose the problem.

    The little connectivity symbol on my startbar was acting strange. Once in a while it would appear normal:

    But sometimes, a yellow exclaimation mark would appear, signaling that something was wrong. After running a diagnostic test, Windows 7 told me my configurations were correct, but it couldn't connect to the primary DNS. I tried disabling and re-enabling, jiggling my cord, and even ran a bunch of ipconfig commands in hope it would be fixed. No luck. Here's what it would look like:

    Ok - I had three ideas:

    1. My ethernet card was broken
    2. My ethernet cord or socket was really broken
    3. My MAC address been banned off the network without notice

    Let me rewind. I'm currently living at the University of Toronto for the summer for an internship - I don't actually go here. My $600/month under a 4 month contract is supposed to include internet service, and I have been very careful not to violate any of their sensible rules. I say sensible, because I'm pretty sure a failing law student drew up their contracts. I point you to one of many issues with the Occupancy Agreement, for example:


    14. The Resident will not keep any firearm, fireworks, weapon, explosive, animal, fish, reptile, insect, bird in the Room, Suite or Residence


    Read it carefully - multiple problems should jump out at you. This is a completely insensible request, and every suite in the entire building is in violation. So once again, I obey all the sensible requests.

    To test whether my ethernet card was broken, I tried a wifi connection, and also connected my computer to my friend's computer through the same ethernet cord. I then connected my computer to my friend's wall socket. This tested both #1 and #2, and showed me that for sure, I had been banned.

    But why? I didn't get a knock on the door, a message, or even an email. Okay, network administrators are sensible people - I'm going to go talk to them. If they're up banning me at 11:00 at night, they should probably be awake right? Wrong. My suite mate told me that apparently (I can't confirm this) this university has software that flags individuals. Then, apparently there is a delay between flagging and banning. This means that once you've been flagged, you will be banned at some random time in the future. I really hope this is not true... but evidence thusfar corroborates the theory.

    I went down stairs and I was told that the technicians "do not have a set schedule". Furthermore, I was told I could not contact them directly, and that I could fill out a form and they would find me "when they have time." However, being a long weekend, that might not be until Tuesday. I was about to have a verbal scuffle at this point with the desk staff, but realized they couldn't do anything about poor policy. I asked for a contact number, made them aware of my situation, and went up stairs to sleep.

    The next day, a technician comes to my door and tells me he can't do anything to help me. Yes, he came to my door to tell me this. He further assured me that he would find out what was going on, and at least let me know by Tuesday. He couldn't even find out why I had been banned, and blamed it on the "central network" - and his tone suggested it was some sort of omnipotent power. He further suggested that I may have been banned in error, and that I should find alternative ways to access the internet.

    Good point, technician! I might have been banned in error. I went back to my computer, and decided to just get myself online, because it's not like they intended to ban me - right? 

    Good thing Microsoft smartened up and made it easy to spoof your MAC Address in Windows 7. I didn't even have to do any tinkering. So there it was, I changed my MAC Address and what do you know? This happens:

    This is the standard page, telling you to authenticate yourself. I just used the same information I signed up with originally, and it worked. Had they banned my records, could easily have wrote a script to brute force every room-birthday combination. Of course I didn't, because I wouldn't want to do anything bad. They hadn't banned my room, so it must have been a mistake. I ran a security check, and bamn:

    I was back online! I could hang out with all your wonderful people again:


    Subsequently, I have been banned again yesterday, and just now again about 50 minutes ago. The funny thing is, I figured maybe I had broken one of their rules.. so I did a test. Between when I was first banned and now, the only things I have done are:

    • Visit HN and read articles
    • Use Wikipedia
    • Check my Gmail
    • Use Facebook / Twitter / LAL / G+ / MSN / Skype / GTalk
    • Google random things here and there

    No video streaming, no downloads, not even YouTube. It's almost Thursday, and no one has gotten back to me yet. I know this isn't a big technical accomplishment, but it's a great illustration of outdated techniques and poor implementation/service. At the very least, it's a semi-funny story to read (I hope). 

    Shenglong Gao
    tag:www.shenglong.ca,2013:Post/209453 2011-08-03T16:06:00Z 2013-10-08T16:05:41Z The Tale of Eternity: Part 2

    In This Series...

    1. Prelude to Eternity
    2. The Tale of Eternity: Part 1
    3. The Tale of Eternity: Part 2
    4. Interlude: See-Invisibility Exploit
    5. The Tale of Eternity: Part 3
    6. (more to come)

    If you haven't read the prelude or first part, I strongly suggest you do before you read this segment, as this might not make sense otherwise. 


    Life Beyond Death

    I made a lot of enemies before Eternity even launched. As it turned out, our early adopters didn't just leave their previous servers - they took it upon themselves to hasten the eventual demise. With nothing left to lose, they marched in proud defiance of rules, conducting all sorts of unsolicted behavior. Advertising for Eternity, obvious botting/packet-sending, and DDoS attacks were just a small part of the mess.

    I imagined most marketing managers would be ecstatic to have their customers attack their competitors unguided - It would be some sort of pre-emptive victory. I certainly felt this way, and aside from the unconvincing PR speech about how "we shouldn't cause damage on other servers - we're better than that," I did very little to stop it. 

    Looking back, it's blatantly obvious that my long line of mistakes in this whole ordeal started here. I'm not going to spew moral bullshit and tell you how I should've abandoned my sanctimonious stance. Regardless of whether I erred morally, it's a failure in foresight that haunts me most.

    should have pulled a Gandalf and voiced an epic proclamation that would have echoed for generations to come. "You shall not pass!" - or at least, "We will punish you here for bad behavior on other servers!" is what I should have said. Yet, I didn't. I chuckled at their misfortune, eyes gleaming and mouth watering in anticipation of the power and glory that lay ahead.

    You see, back then I believed morality played no role in business - which is not what my Business Ethics class taught me. Though to be fair, I'm not really sure if that class taught anyone anything. Ethics classes tend to ramble on about what some 200-year old skeleton believed - and not once has anyone given me a convincing reason that ethical choices should be practiced in business when these choices are in opposition of obvious benefit (not just immediate profit). 

    If you're in the same boat as I was, I'll share with you the two most convincing reasons I learned (It's greyed out because it's kind of boring):

    1. Modern human society is based on a sense of trust. We trust our government (or used to) to enforce the law, we trust our neighbors not to steal our things, and we trust teachers we barely know to take care of our children. It makes sense, that a sense of right and wrong--the fundamental basis of morality--is derived from our survival. One could infer, given this line of logic, that when involving multiple parties in a public setting, morality is also the superior choice. Yes, this argument has logical deficiencies, but this isn't a debate, and I did not describe what I'm trying to say perfectly. Hopefully you'll extrapolate and derive some value.
    2. Even if your business doesn't prosper, making an unexpected moral choice leaves a profound impact on those around you. Unfortunately, this only really works if it's a heavily publicized decision. I read an article today detailing Benjamin Franklin's refusal to have the Stove patented, because he believed others should have access to it as well. Wow, makes him seem like a good guy! I think it's natural for people to respect genuinely good actions, whether it's something they would've done or not, and having this sort of respect can make you life far easier in the future. 

    I talk about a lack of foresight, but the truth is, throughout this project, I've made some extraordinary insightful decisions. I've received praise from players, staff, and even previous competitors. Many people say praise is a dangerous beast that consumes its target - but I rarely see a modest man swell with pride. It appears that praise only breeds haughtiness in cases where the praised are already egoistical.

    That was me. I did not believe that anyone could make better decisions than I could. I thought I was the smartest guy around, and I could easily account for any amount of steps my competitors were planning. I was sure I could predict the market - and you can't imagine the depth of my smile when a player said, "you're an oracle... you just see everything." 

    The disaster that my amoral actions wrought were only revealed half a year later when players started to do to Eternity, what they had done to our competitors (I'll get to this in more detail when I get to that part). If I had set precedence for how all servers would handle bad behavior back when we had leverage, Eternity version 1 would have lasted much longer. In fact, it could've been my chance to establish and lead a system akin to patent laws in the United States.

    But no. I told myself I could predict player actions, and went on to enforce a set of rules that actually did work... until players adapted. Your users will always adapt if they force any sense of irrationality on them, even if it makes sense on your end. Much like viruses and bacteria, an adapted version of the original can be more harmful than the originating strain. Now armed with experience, I heavily advice against forcing adaptation on your users. I see Apple doing this, and I feel quaintly nostalgic. Much like Apple, I should have found an alternative strategy... kind of like how Diablo 3 plans to deal with gold farmers by introducing a new business model aspect.


    What's a Server?

    Just so you don't think I'm understating how much I knew - I spent a good deal of time trying to figure out the difference between shared hosting, virtual private servers (VPS), and dedicated servers. I guess some part of me always imagined that RO ran like a regular website. Permissions? Bah! Memory? Who needs that!? Wait wait... what's memory again?

    By this time, I was googling things left and right, and trying to find a cheap dedicated server. After browsing around, I eventually ended up with Razor Servers both because they were cheap, and because their servers were based in DC at the time. You see, DC was the perfect spot for a gaming server, and Razor Servers in particular offered very low latency to most areas we were serving. Eastern Canada/USA had 30ms ping, west coast had <100, and Europe had less than 140 - which is much better than people were used to experiencing.

    RO relies on reaction speed, and an extra 30ms of ping is often the difference between winning and losing a fight. Latency and reliability were important, and all the marketing materials on their website told me they provided both. Yeah, I realized this wasn't all true, but I also realized that because they claimed it, I could tell my players, who in turn believed me since a server provider can't possibly be exaggerating. 

    But heck, a dedicated server was going to cost me a lot of money each month.

    That's $100 I didn't have. Gosh - time to think outside the box again: time to go to sleep. You see, half of my thinking is done on the border of consciousness and sleep - sometimes enter a blissful state where I can think of thousands of concepts in a split second and analyze them too. I don't know if this is real or just imagined, but regardless, most of my ideas come from either when I'm falling asleep or I'm waking up. 

    Never before done in the RO world - I asked for pledges. Before I explain the details of this financial instrument (I made more complicated ones later on), let me go over how finances typically work for any given private server:


    The Problem with Old Cash Shops

    Every server needs money to run, and very few server owners bootstrap their servers. Usually they make an initial investment and either go for a break-even model (rarely by choice) or profit from donations. They're called donations, but they're not really donations. They're payments, in exchange for some type of virtual currency or service. I guess Farmville has made this concept pretty popular, but when we did it, the concept of Cash Shops had just sprung up.

    Most servers offered substantial rewards for donating, and gave away powerful items that otherwise couldn't be obtained. Pause and think - what could be wrong with this model? Well, the people with money usually aren't the hardcore players. To put it in more offensive terms: whales are never athletes. Because of this, every server using this method eventually developed a secondary market for the resale of donation items. 

    There were two forces that eventually drove down the numerical worth donation items even in a heavily inflating market: progression and liquidity. Players will always progress faster than anyone can reasonably introduce new donation items which were at least somewhat balanced. To add to this, once donation points are spent, the resulting item loses a significiant portion of its value because it is now restricted to certain classes and builds (cut in demand). The whales never colluded, which further allowed the hardcore gamers dictate the digital worth of each dollar. This became a pivotal strategy concept for Eternity.

    So, by now you're curious. How much money can an RO server make? I'm not going to reveal Eternity's financials (although I will mention them later on), but a server with 2,000 players peak and statted donation items can make upwards of $20,000 a month. Not just a "game" anymore, now is it?


    Eternity's Decision

    I told everyone we would not have any statted donation items - knowing it would significantly cut potential profit. However, it aligned with our culture, and it served as the first step to the cash shop Nash Equilibrium. Yes, this is one of the reasons we had so many potential players. We screwed over everyone including ourselves in terms of $value/player, but increased our number of players significantly. Worth it? We'll see.

    Instead of items that add power, we introduced items that would add aesthetics--pretty hats.. useful and pretty hats. I came up with the idea of synthesis, and you can read my poorly written code here. It's just a NPC script, and anyone with any experience in programming should understand basically what it does. I've never given out a script before (ever), so feel special!

    Synthesis was our selling point, and it's an idea that's been used (I don't dare say copied because I have no proof I was even the first to think of it) by various other games that now exist. Essentially, a player could merge a good looking item with the stats and abilities of another item. 


    Complex Financial Instruments

    I went through a phase where I really wanted to be an investment banker. Why? Well, one night, a friend and I were lying in bed chatting (platonic), and I brought up how I don't usually wear formal shoes to interviews even when I wear a suit. She asked me why, and I told her it's because I value performance over appearance, and that formal boots are not really good for anything practical. She hmph'd and declared "Goldman Sachs would never hire you!" I responded, "What's Goldman Sachs?" and from then on, I was hooked. A challenge had been issued, and I was determined to join Goldman Sachs. 

    In those days, I had the pleasure of reading about the IB industry, and about financial instruments. I think it's from there, that I got my idea for pledges, and later in v2, options. I asked the population for an early donation, on the promise that if we launch, they would be rewarded double. It worked. We fund raised a good $1,000 in the first two days, and I was in financial bliss. 


    Rush for Substance

    Oh boy - now we had more willing customers than we hoped, a ton of money, but no product! This was like the reverse situation of a usual startup, and it sounds better than it really was. As I have mentioned, I had no idea how to set up a RO server, much less how to "fix lag" and make other promised things come true. Ayumi? Autumn? Prodigy? They had no idea either!

    Oh right - by this time, we had added a fourth co-founder at Ayumi's request. It was actually the guy she was e-dating. I'm not sure why I willingly agreed to dilute my interest, but it probably had to do with a fear of incessant whining. Regardless, it was done, and he doesn't really play much of a role in this story. The fact remained - no one knew how to do anything. 

    Enter Articulus - savior, benefactor, and all-around awesome person. Articulus graduated engineering in California, and founded the server I had played on before, so it was only natural to approach him for help. Rather than setting everything up for me, he decided I had to learn to set things up myself... starting from the basics: CentOS. Why CentOS, I still don't quite understand. I struggled and struggled, but eventually got the OS and everything set up to run RO. I set up subversion on the system, and configured the proper settings with a lot of help from him. He's the kind of developer that every company should be looking for. It's genuinely difficult to find someone smart without a massive ego, who goes out of his way to help others with time-consuming problems.

    I know setting up Linux and configuration doesn't sound like a lot, but for someone who had no idea what he was doing, and still going through school, it was tiring. I had a few sleepless nights in preparation for launch, and it's safe to say my nightly dreams transformed into a dedicated server committed to configuration. QA and testing became second nature, and I I realized I had a penchant for finding esoteric bugs. 


    The Payoff

    It was launch day, and everything had been set up and tested.



    3... I turned on the login server

    2... I turned on the character server

    1... AWW SO CUTE

    Yes, if you ever have the luxury of building connective software that requires multiple parts to function together, please watch how your eager customers spam your login. I swear some people wrote bots just to log in. I had 200 people spamming the login every 5 seconds. It's interesting to note, that we later used this fact to find bots. 

    After watching with a blissful smile, I remembered I still had to launch map.

    0... Map launched!

    I watched the character count on the server skyrocket to 350 in the first 2 minutes. Ten minutes later, user count was at 500, and peaked out at about 750 two days later. That's right - 750 people online at once. Our team rejoiced, and we honestly thought the hardest part was behind us. Boy, were we wrong. 


    More to come... I'll post more as I write it. Follow me on twitter (@zeteg) for updates, or email me if you have questions. 

    Shenglong Gao
    tag:www.shenglong.ca,2013:Post/209454 2011-07-28T04:18:00Z 2013-10-08T16:05:41Z The Tale of Eternity: Part 1

    In This Series...

    1. Prelude to Eternity
    2. The Tale of Eternity: Part 1
    3. The Tale of Eternity: Part 2
    4. Interlude: See-Invisibility Exploit
    5. The Tale of Eternity: Part 3
    6. (more to come)

    The First Investment

    We were an internet company rendering an internet service - so it was only fitting that we should have a website. Sadly, I was a money-starved student, and didn't have enough confidence at the time to invest any money into a domain and hosting. Luck should have it, I was an entrepreneur with an idea, and like every entrepreneur who needs money, I asked someone else for it. Humiliatingly, I don't actually remember his name, but this kind/evil person gave us web space, and bought eternityro.net for us. We were friends - with emphasis, because I didn't really enjoy his presence at all. He wasn't very cooperative, and he was extreme emotional and belligerent. Actually, overly-emotional people seem to be a theme in this series, and if you take one piece of startup advice from me, it should be this: don't place any sort of power or leverage with any emotional people.

    But ultimately, he was willing to fund us when nobody else was, and that made him an asset at the time. I emoted smiles to the outrageous things he'd say, and softly acquiesced to all the ridiculous things he wanted in return. He didn't want to be paid back (that would've been acceptable) - he wanted us to cheat for him, which was the very corruption we started Eternity to eliminate. Funny how things work out. I took the funding even under these conditions, because I knew I'd weasel my way out of it later. Facing this decision again, I would've found a smarter solution. 


    Website, Forums, and IRC

    It was done. We had hosting so I started working on a website. I remembered my friend Jason (the genius who made MangaMasters and the CMS behind MapleTip)--a wonderful hacker--had helped me make a webpage for a board game that some friends and I wanted to release when we were younger. Here's a picture of the Dash Gaming game. We had the projections, company culture and strategy all fleshed out, which was a pretty big deal for us, at our age. Sadly, the product never launched as real life got in the way. 

    Anyway, I adjusted the site he kindly made us into the prototype EternityRO page and used what little php I knew from trying to write my own MUD to make it seem a little more sophisticated. It's probably full of security holes, but back then, everyone was rooting for our success so it hardly mattered. We were the new cute-girl at school. Everyone either wanted us, or wanted to be like us. Okay, bad analogy - excuse me.

    Next, came the forums. The main forum softwares available back then were Invision Power (IPB), vBulletin, and SMF. Yet, we had little choice, considering every server our target population has ever played on has used IPB, and I knew how much people resented change. Problem! The licensing fee for IPB was $150 - which was $150 we didn't have. Ayumi came to the rescue, and told me she found a copy (license) for IPB. I realized in the back of my head that this wasn't a legitimate copy, but at this point I just wanted to make Eternity a success. "This is legal, right? *cough*" I asked her. "Yes," she replied. Good enough for me.*

    * I later corrected for this mistake, by purchasing an actual license for IPB in addition to their support licenses for the next few years.

    Next was our support and discussion channel. Not every game needs this, and there are drawbacks, but IRC-type support can also be valuable for a number of reasons:

    • Players can give other players help without using your time, even when you're sleeping
    • You avoid negative reviews by providing an instant channel for support
    • You can receive immediate and detailed feedback about what you're doing wrong
    • You can create a core community, and bind people to your product based on their interconnectedness, rather than loyalty

    We settled on a free IRC channel on the deltaanime.net server - which honestly, is a terrible server. But, that's what everyone else was using, so we went along with the flow. DeltaAnime, otherwise known as DA, actually ended up hosting eAthena for a very long time, and branched their own VPS business that way. There'll be more about this later, when I describe my abuse of advertising channels.


    The Landscape

    Before I go any further, I need to retrospectively* delineate the market landscape we were about to enter, since without a basic grasp of the situation, what I'm about to describe won't make much sense.

    The RO private server market was an unmitigatable disaster, and the only factor driving entry was irrationality. If anyone had paused to think about their chances of success, or even their projected lifespan if successful, no one would have started new servers. Yet, they did - in droves. Even in present day--now that the market has died down significantly--if you google "top ragnarok servers", you'll find a site ranking at least 500 of them. You'll also find other sites that list even more.

    Now that we know there are hundreds, if not thousands, of private servers, you'll have to take my word that new servers have an average lifespan of 3 months. It takes the average hopeful about one month to realize his dreams aren't going anywhere, and another two months to admit it. These are qualitative conclusions, but considering my expertise in the area, I feel qualified to make these as if they were based on quantitative facts. Why does this happen? Every server owner knows that he needs a large population to sustain the server, because that's what all private-server players have come to expect. Yet, they only focus on trying to get more population, because they believe their servers are perfect. I don't disagree - they very well might be. Some of these unknown servers developed features that my entire development team couldn't. Yet, they're dead.

    Small tangent: I sense a lot of hostility in the HN community, from developers towards business people. I think, for the most part, this is generally justified, since most self-proclaimed business people are people who don't have any other skills... and "business" is generic enough to fake. I really don't know where or how you learn business skills, but I feel it comes naturally to some people. In this situation at least, it wasn't our development team--as awesome as they were--that allowed us to thrive. 

    To summarize: this market sucks. Did it affect us? Yes, it worked to our advantage, but also limited our size.

    * -Shiver-...In my current line of work, everyone absolutely hates the word "retro".


    The Chicken and the Egg

    This was a MMORPG (Massive Multiplayer Online Role Playing Game, often confused with Many Men Online Role Playing Girls), and the key performance indicator that everyone cared about was population. As aforementioned, players had developed a cynicism towards servers, and only wanted to play on ones with a large population (and therefore didn't wipe). If a server started out strong, late adopters would flock in as well, bolstering the population. If a server started weak, most of the early adopters would be gone in a day or two. This led to a lot of spam on part of server staff, trying desperately to get players to go to their server. "We have better features! Come play here!" they yelled, and no one listened. 

    I approached things differently. I talked about vision, and instead of telling people what we had, I told them what they wanted, and why they wanted it. I told them what they hated, and why they hated it. If you want to speak in business terms, I aligned our customers with our corporate culture. Once I elucidated their own desires, I connected our server as the answer. I actually just read Steve Yegge's response to HN commenting about suggestion, and it's fascinatingly related: I kept telling people we would be the final answer, and people believed it, even though I didn't offer any proof. In fact, at that time, I didn't even know that eAthena ran on Linux, or how to compile code. There was so much blind faith, that believers championed my ideals, and preached to their friends like it was their own idea. These people actually ended up being the most valuable part of my community.

    It was time to spread the word that EternityRO existed. What advertising channels did we have that were free? Hmm, let's see... we could... ... ... spam other servers. I mulled this over for a little while, and came up with a tactic I called tactical infiltration - which at best, falls into a legal and moral grey area. Instead of spamming directly, my idea was to go on another server's forums, and create a topic called "Quitting, hosting a contest", whereby a non-existent character would pretend to have a lot of gear to give away. He would then post some text akin to "I'm quitting this sever for EternityRO" without leaving a link, as to avoid suspicion. The contest would list items, and say "the 100th person to post the name of the item they want gets it". Commence flooding. I did use this technique later on, and it worked amazingly well. However, I didn't need to do anything of the sort for our first launch.

    Ayumi told some of her friends, who talked to me on IRC. Within the next three days, our IRC channel had grown from 3 users to 25, with most of these people being either socialites in the community, or guild leaders. I boasted, I smiled, and I made it seem like I was listening to what they had to say. They asked me for a release date, but I told them the release would not be for another 2 months. Most release dates are within a week of announcement, but Eternity would be in two months time.

    My reasoning was simple. When we released didn't matter, since we were competing as a new server, against large late-stage servers. The longer we wait, the more upset their players become, and the more leverage we have. The longer we wait, the more time news of Eternity has to spread, and the longer people have to consider it. The epiphany was: by that time we had become an established thought, and not something that can just be forgotten.

    You see, servers are inherently unstable for players, and they need to be on constant watch for the next server that everyone else might flock to. Everyone else seems to have forgotten that large groups don't make decisions as a group - they make the decision they think everyone else will make. Therefore, it's only necessary to make everyone think everyone else might go to Eternity when it starts. If they believe there's a chance, they'll make an account and start playing on the first day to establish an advantage for themselves and their guild. Once they see that everyone else is doing the same thing, it's only natural to assume everyone else has made their decision. It's a little funny. Instead of having sheep being led, we have sheep leading sheep. 

    That was my plan anyway - but plans rarely work out the way you want them to. I forgot to account for demoralization in my favor. After hype about EternityRO picked up, people just stopped playing on other servers completely. They felt that any more time spent on those servers would be a waste of time, since Eternity had so clearly become the better choice. I asked them why they thought this, and they echoed to me the same reasons I had given them weeks ago. The stage was set, and a third of the English-speaking low-rate community was ready to move to Eternity on the first day.



    (more to come in future posts... I'll tweet them as I write them! @zeteg)

    Shenglong Gao
    tag:www.shenglong.ca,2013:Post/209456 2011-07-27T14:29:00Z 2013-10-08T16:05:41Z A Prelude to Eternity


    In This Series...

    1. Prelude to Eternity
    2. The Tale of Eternity: Part 1
    3. The Tale of Eternity: Part 2
    4. Interlude: See-Invisibility Exploit
    5. The Tale of Eternity: Part 3
    6. (more to come)



    It's been more than three years since I started the EternityRO project, and there isn't a single person other than myself, who knows the whole story. Originally, I had planned on letting the story die, but after reading many stories on Hacker News, I decided I should do my part for the community - as little as it is. 

    Here, I'll share how I started a private game server that grew larger than official servers - almost 300,000 registered accounts and almost 4000 simultaneous players. I'll outline how I diversified my hosting, dealt with players from over 107 different countries, escaped a DDoS attack, created alternative ways to catch hackers, and ended up keeping one of every 20 people I hired.

    Although it wasn't really a startup, it really felt like one; I really hope this story is one that actual founders can relate to... at least those of you who jumped into the fire, completely unprepared. Unfortunately, before I get to the meat of the story, I need to brush over some quick facts. I'm linking everything (except to official servers) for easier understanding. If you want to get into the meat for the story, skip to the next post. 


    So what is EternityRO, and why was I able to run it?

    EternityRO was a private Ragnarok Online server, made possible by an emulator. The open source group, eAthena publishes a set of emulator code based on the original Aegis software that Ragnarok Online's founding company, Gravity Inc, runs. Thanks to17 USC 102(b), some privacy laws, and inter USA-Canada-China-Korea legal confusions, running emulated software is apparently legal, as long as you make it really annoying and costly to find you. Honestly, I couldn't even guess what country's jurisdiction I would fall in anymore. Thinking back, I probably should have gotten a lawyer's opinion. If any lawyers are reading this and want to send me a note, I'd love to hear it.

    So why would anyone play a private server hosted by a kid (well, young adult)? Simply put it, official servers have several problems:

    1. Official servers charge a monthly subscription fee
    2. Progression is often slower on official servers (1x rates)
    3. For some reason I just can't figure out, official servers tend to lag
    4. Bots run rampant on officials, as part of their marketing strategy is to allow trial accounts.
    5. Cheating (WPEOpenKore) run unchecked, because HackShield is garbage.
    6. Inter-Guild competition is more intense on private servers*
    7. Private servers are more agile, and quicker to balance issues*
    8. Private server staff speak English... and other languages. Plus we have no life, and are available 24/7**

    * Not true before EternityRO. Eternity set the stage, and ingrained these concepts into the community. For the RO community at least, #6 has become the leading force, driving almost every server hop (change of servers).

    ** Sarcasm... but was often the expectation


    My Background

    I started Eternity at the pleading of two co-founders at the time, screen names Ayumi and Autumn. By this time, I had been playing the game on a different private server, and had gained some knowledge of the game's mechanics and scripts. In this group, I was meant to be the developer - although really, I wasn't qualified. Ayumi, the real pioneer of this whole project was an emotional socialite. Possessing e-bewbz in a predominately male community grants you special abilities, otherwise not available. Plus, she was e-dating one of the celebrity players (he made lots of movies) at the time. Autumn--one of Ayumi's friends--was brought on board as a co-founder to head design. In retrospect, I'm pretty sure Autumn was just Ayumi's way of seizing majority control in a voting situation. Sneaky.

    So, as a full time student, I agreed to start a new RO server with two other full time students who I had never met. Without any concept for how much time this would eat up, we started dreaming the founder's dream. We were the wizened oracles, armed with knowledge of all that was wrong, and the passion to set it right. And really, that must be how it all starts, because no logical-thinking person would logically jump into their first startup with full time commitments on the side. There's one big difference though: when you set out on a startup journey, usually at least one of your co-founders is a decent coder. I was the developer here, and all I really knew was some basic HTML. Needless to say, probably not something YC would have funded!


    Almost There...

    I didn't really know why I was chosen to be a co-founder. I had almost no marketable skills, other than up talking every mound of potential into a mountain of accomplishment... otherwise known as boasting. My mother, one of the most accomplished and deserving academics I know, would like to take some time at this point to remind me that cow blowing (boasting in Chinese) is actually a very essential skill in any line of work - and academics in particular. Over the course of these few years, I've realized that marketing and boasting are really just two words for the same thing, and it's become one of my most valuable assets.  

    So... without any plan, I started boasting. To everyone. 


    The next part of the series is here:

    The Tale of Eternity: Part 1

    Shenglong Gao