Archive for the 'Personal' Category

Take the TDD pill, it’s good for you.

I’ve been a strong advocate for TDD for a bit over a year now. It’s the thing that I would suggest to anyone who cares about improving their software development and ask me about it. Now, the benefits of TDD are well-known, yet I find many people are still skeptic about taking the TDD pill. Here is my take based on my own experience with the technique, no fluff.

Testing discipline

We, developers, enjoy writing code but not so much of testing them. Now we all know that testing is good and we shouldn’t leave it all to the QA, but it’s another story to keep the discipline to do it. I find that if a developer leaves testing to later in development, he’ll end up either forget or not having enough time to do it. Since I started doing TDD, the minimum test coverage of my code’s gone up quite a lot (about 70% on a good day).

Enforce better design

With TDD, I have to think about how to test the code before thinking about the code itself. And to be able to unit test my code, I need to have a modular design. I also need interface based design. So I have to follow a good coding practice in order to effectively design my test. Many TDD followers would say that you’re already done designing your code when you are working on your test. I can’t agree more.

Peace of mind

Any line of code is guilty until proven otherwise“. How confident are you on your code? Are you sure that your code does what it’s supposed to do? I find myself more confident in my code and it really helps me sleep much better at night.

“Whack-a-mole” proof

Whack-a-mole scenario describes the butterfly effect in software breakage. A break or a change in any line of code can trickles and bring down the entire system. When this happens, developers usually go after and do a clean-up op on the breakage as it is. But it can get worse when the act of fixing the breakage changes the behaviors of the code and introduces more breakages elsewhere in the system.

To prevent this disaster, you need a complete code testing coverage. This testing coverage will serve as guideline. When someone changes a line of code or check in new code, you can run this entire test suite again. If all the test cases pass, you can be sure that it’s still functioning as it should. More on this in Continuous Integration

Keeping up the morale

Developing test system, one test at a time give quick win goals and direction to work on. TDD serves as a self checking system that I’m on the right path of developing working component.  There’s also a sense of getting something done by the end of the day as well.

These points are based on my own experience. So, believe me, take the TDD pill it’s good for you. :)

No Comments »

Teera on August 12th 2008 in Software Development, .NET, Personal

Giving back to the community

I’ve recently been appointed as the lead adviser for JavaPassion.Com’s Ruby on Rails online training course by the legendary Sang Shin. I talked about this Ruby on Rails online course in my previous post. At the time of this writing, there are 998 registered students and will likely to hit 1K in a few hours. As the lead adviser, I’ll basically be the go-to guy for students when it comes to questions and assist Sang in developing course content.

I must say that I am no expert in RoR. I picked it up only about a year ago as a hobby. Since then my experience and relationship with Ruby and Rails communities have been nice and warm. The same goes for Java and other open source communities. Quite often that I think about giving back and contribute to open source projects. However, neither my coding skills nor my schedule had allowed me to do so. So my resolution becomes

If I can’t make a contribution in code, then I’ll do it in the form of content!”.

And here it goes… :)

Reminder: the course starts July 15th, go register if you havn’t done so!

2 Comments »

Teera on July 12th 2008 in Ruby, Personal

How Nerdy Are You (am I)?

A friend sent a URL for Nerd Test to me. She got this from someone else and thought of me (..nice). Well, I know for a fact that I’m pretty geeky but never thought of myself as a Nerd. Sadly..here’s my score

I am nerdier than 86% of all people. Are you a nerd? Click here to find out!
High-Level Nerd. You are definitely MIT material, apply now!!!.

Go check out your nerd level here: http://www.nerdtests.com/ft_nq.php

No Comments »

Teera on June 21st 2008 in Personal

REMIX SEA 08 Silverlighting the UX!

REMIX SEA event was held on Friday May 29 in Thailand, which I happened to be there on my vacation. The event itself was awesome. The theme seemed to be focusing around three things: User Experience (UX), Expression tool, and Silverlight 2.

REMIX SEA 1

 

REMIX SEA 3

Developers, Developers, Developers!

 

REMIX SEA 2

Nice show for the opening keynote

 

REMIX SEA 5

Leon Brown opened up with the keynote

 

REMIX SEA 6

Arturo from MS Expression team showed off the Expression tool

 

REMIX SEA 7

Shane Morris tells you how to “pimp you app” and the zen of UX

Some of the questions that I got answers from attending this event.

Is Silverlight a contender to Flash?

My take is ‘Not yet’. I have yet to a see something on the UI side that you can do with Silverlight but not in Flash.

IMHO, the cool thing about Silverlight is it’s very developer friendly. Many .NET developers, including myself, are used to the event based OO programming. They often find it difficult to wrap their head around timeline-based in Flash. After all, Flash is designer-centric. What Silverlight offers is an easier alternative for developers to build animation and RIA. A programmer like myself can leverage my knowledge of C# and .NET framework.

Should I care about MS Expression tool?

‘Yes’ you should, if you want to develop a serious Silverlight or WPF application. Of course you can build the entire Silverlight application with Visual Studio. What Expression tool gives you is the easy collaboration between designers and developers. Designers can work in the Timeline-based development like Flash while collaborate seamlessly with developers.

Note: A surprise that MS gave out a copy of Expression Studio to everyone at the event ☺

Is Expression tool going to eclipse PhotoShop?

No. At least not in a few years. Microsoft itself does not intend for it to replace other designer tools neither. From what I see, Expression is not yet mature as an ultimate tool for designer. It still needs sometime to get enough features to complete with Adobe’s products in this area.

Should I take the Silverlight kool-aid?

Yes. You’ve got to see things they are doing and what you can do with Silverlight. There’s a lot of potential in this technology.

Is UX just another fad?

I’ve learned quite a few things on this subject attending Shane Morris’s session. And No, it’s not another fad. In fact, UX is the most important things when it comes to developing software application for any human. It’s just that many technology companies start to ‘get it’.

Apple has shown them that there’s a profit in making a product with fewer features but richer in user experience. Many companies also found that the technological competition has already been pushed to the limit and UX is the area waiting to be improved.

Make sure you check these out:

No Comments »

Teera on June 5th 2008 in Web Dev, .NET, Personal

Recent Car Break-in

Somebody broke into my car last night. Well, I got home around 9.30pm and parked my car in front of the house. Then this morning before I go out for breakfast, I found this:

Car wrecked (again) 1

This person smashed the window, went into the car, and looked for anything valuable. Fortunately I got nothing but a few music CDs and map in there.  I’m pretty sure that the alarm was sounding, but I was too deep into the sleep.

Car wrecked (again) 2

Later on in the day, I found that I’m not the only one with the car got break-in. A neighbor living a couple blocks down got a break-in last night as well. Worse, he got his GPS stolen. Well…this sure sucks :(.

No Comments »

Teera on April 13th 2008 in Personal

See you at Open Web Con Vancouver!

In about a week or two I’ll be attending annual Open Web 2008 conference here in Vancouver.

Open Web Vancouver 2008

The theme is around open source web technologies, heavy on RoR and PHP. Although I’ve been oblivious in .NET/Java realms for the past few years, I did a few PHP projects and do RoR for hobby.

The session I’m looking forward to are focusing on:

Microformats - I don’t know exactly what it is yet, but seems interesting.

RIA - Checking out how open source RIA is doing.

Ajax and JavaScript - Essential nasty stuffs :)

TDD - I had a few attempts to test-driven my projects, but didn’t find any success. In this session, I might see how to make it work?

Web 2.0 design pattern - The Web 2.0 hype is still on!

Google Gear - I’ve always been interested in Google Gear. The idea of running web app locally is pretty neat.

Quite a few of my friends are going too, so we’re expecting to have a great time there. If you’re interested in attending or want to catch up, let me know. See you there :)

No Comments »

Teera on April 4th 2008 in Personal

NEWEGG.COM - From zero to billion in 4 years

I got a chance to meet Simon Hsieh, the CEO of newegg.com, when he visited my strategy class on Monday. The success story of newegg.com was an eye-opening one. The founders basically started from almost nothing in 2001, right after the bubble, and achieved 1 billion dollars in revenue in 2005. Simon ascended from Strategy Officer role to the CEO post in early 2005. Here’s how they did it at newegg.com

What’s wrong with Dell’s model

For years, Dell had been in controlled of the electronc e-tailer market. Dell’s direct sales strategy focuses on low cost competition. This basically squeezed the profit margin to only roughly 5-6%. Apparently, Dell’s not the one who suffered from this model, it’s the suppliers. Dell would select electronic parts from suppliers then build and sell the computers under Dell brand. So to get business from Dell, the suppliers must compete in lowering the price to win over Dell’s favor. The effects are two folds: parts vendors have little left for R&D, Dell’s customers are limited to single selection. Maybe this is why Intel hasn’t been able to catch up with Moore’s law lately?

E-Marketer not E-Tailer

Realizing the flaws in Dell’s business model, the guys at newegg.com started out by positioning themselves as e-marketer rather than e-tailer. Simon himself emphasizes that the company’s position in the market is the key factor to any strategic decisions made at newegg.

Key #1: Keep the customer happy

Pretty straight forward isn’t it? The next question would then be, if this is so trivial, why not all “customers-loving” companies are successful. Newegg.com takes this principles to the core and take extra steps to ensure that their customers are not just happy, but extremely happy.

For example, if you have purchased items from newegg, you’ll be given an option for 3 days normal shipping and 2 days shipping (with extra cost). If you select 3 days option, newegg would try to deliver your package within 2 days. If you you select 2 days shipping, you should be getting your stuff by the next day. And unlike other e-business, newegg carry its own inventory. This is to guarantee that when you make a purchase, they have products in hand to deliver it to you. If a product item is out of stock, newegg will take down that items from the website. This is opposite to Amazon. Amazon doesn’t carry any inventory. When you purchase a book, Amazon would notify its supplier to ship it to you. There’s a high chance that the book’s out of stock and you’ll have to wait. This would never happen at newegg.com.

Last thing to note is newegg invests heavily in its call center in LA and distribution warehouse over the US. When newegg’s customers make phone call for support, they’ll be talking to people from their home country who get the same jokes. Newegg also take advantage from global sense. It expands its email support to China. As much as it sounds contradicting to local call center, having 24/7 email support in China takes advantage from different time zone. A customer emails a problem at night will get the answer by the next morning. On email, the human factor is not essential as long as the staffs can communicate effectively in English. The company itself also takes advantage from lower labor cost.

Key #2: Analytical ability

Newegg is taking the concept of customer feedback to the next level with a team of engineers and business intelligence engine. A team of engineers located in China (I can’t remember exactly if it’s in Chendu or Shanghai) wold work full time on crunching customers feedback data, applying analytics, and translating them to valuable information. And that’s not it. Newegg would also transfer this valuable knowledge to its partner vendors as well. This would provide a great opportunity for vendors to hear directly from the customers suggestions and comment on how to improve their products.

Key #3: Grow your partners

Growing together with partner vendors is another philosophy at newegg. As I mentioned above, newegg works very closely with its vendors to develop the right products to satisfy their customers. Now, you may notice that items on newegg.com are NOT the cheapest in the market. Teams of product managers at newegg would scan the market and price their products competitively. Newegg realizes the trade-off between squeezing a few dollars and wellbeing of its customers and vendors. This price margin would be channeled to improve customer services, product selection, and give vendors rooms to breathe. Building relationship is a key to newegg’s success.

Key #4: Getting the right people and invest in them

Simon emphasizes that people are the most important assets at newegg. Two important qualities are Professionalism and Passion. Professionalism is the most important since it provides the foundation of all business handling at newegg. Passion is the propeller that move the organization forward. A product manager at newegg would be given a product line (or type) to manage. The PM would be responsible for all aspects from pricing, inventory, promotions, and dealing with vendors. To fulfill this role, a PM would require the two qualities embedded within themselves.

Ethic is also another important aspect for business conduct at newegg. For example, newegg would fire its best employee if he or she goes out for lunch with vendors representatives that’s not paid for by newegg. This is to demonstrate that newegg treats its partners with honestly and fairness. Code of ethics are strict, it provides the basis of all decision making and employees behaviors.

Key #5: Preserve the core, stimulate the progress

Newegg.com is currently available in the US and a few Europeans countries. Why not go global? After all it’s internet business right? Simon notes that although the opportunities are tempting, he would never violate its core values and mission. In another word, newegg would not compete in a market where it cannot be the best at serving its customers. After the presentation, I had a conversation with Simon and asked him for key strategic decisions that he would consider in international expansion. Simon answered that first of all, laws and regulations in that country, and what they have to do to keep the same level of customer satisfaction as that in the US base.

Last word

Well, I hope I didn’t bore you. IMHO, newegg.com is an excellent case for any start-ups to follow. You don’t have to come up with breakthrough products or business ideas to be successful. It’s simply about finding the core values and doing what you can do best to innovate values from the business.

“Different isn’t always better, but better’s always different”
- Jonathan Schwartz, CEO Sun Microsystems

No Comments »

Teera on March 5th 2008 in Personal

Good To Great Software Development

I just finished reading Jim Collins’ “Good to Great” for the third time since I got the book in 2004. It’s an excellent book that should be on everyone’s book shelves, not only for business people. The content is highly practical and enlightening. Well, that’s about enough for endorsement. Well this time is a bit different since I’m now working full time as software developer (I transfered my spa and coffee shop to my sister). So I’ve noticed that how the concepts described in this book can help transform a GOOD software development team to a GREAT one.

Continue Reading »

No Comments »

Teera on February 28th 2008 in Software Development, Personal

How to explain an algorithm?

Today a student in my computing science lecture was trying to explain his sorting algorithm to the class. After 20 minutes, we still didn’t get a thing of what he’s trying to say (partly because he has very strong funny Cantonese accent). The professor finally understood and started drawing shapes on the board to illustrate collection of sorting elements. Only half way through the drawing and that the entire class finally understood the algorithm.

Basically the prof accomplished what the poor guy tried to do for the past half hour in less than 3 minutes. I was intrigued, not the algorithm, but the importance of choosing the right communication tool. Complex subjects, algorithm for one, require the speaker to communicate visually.

So what’s it like to explain an algorithm to someone without using visual aids? Imagine a complex algorithm as a knotted rope. Each knot represents a complex logic. For each of every statement, there is a crossover on the rope. For each iteration in every loops, there is an overhand knot.

Now, get together with a friend who does not know about this rope tying pattern. Try to explain to him how this rope tying pattern can be performed on a new rope without showing him the original. Pretty difficult isn’t it? In the meantime, if you show your friend the rope, he will probably figure out in short period of time. That’s how essential choosing effective communication channels is.

No Comments »

Teera on February 15th 2008 in Personal

Introducing SDN CampusCast!

 

Today SDN channel introduces a new podcast series: the CampusCast! On this podcast Sun campus ambassadors all around the world will share their experiences about latest technology and how Sun technology makes an impact on academic researches. The show is hosted by our campus ambassador global tech lead Jordan Slott and program coordinator Haley Simon.

I received the honor to be the first guest on the show. I hope you enjoy it =].

Check out the podcast here: Meet Teera Kanokkanjanarat from Simon Fraser University, British Columbia

Subscribe to SDN channel podcast here: SDN Channel Podcast

1 Comment »

Teera on February 11th 2008 in Podcast, Personal