<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6408973</id><updated>2011-08-28T18:59:00.673-04:00</updated><title type='text'>Yang's Reflection</title><subtitle type='html'>Everyone has his own magic</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yangcao88.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6408973/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://yangcao88.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Yang Cao</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6408973.post-7747251522851158933</id><published>2006-12-29T20:50:00.000-05:00</published><updated>2006-12-31T09:11:39.024-05:00</updated><title type='text'>OK, I Stopped Tag, I Lost</title><content type='html'>I was tagged by &lt;a href="http://weblogs.asp.net/jdennany/archive/2006/12/29/tag-i-m-it.aspx"&gt;Jerry Dennany&lt;/a&gt;.  The game is called Blog-Tag, probably started by &lt;a href="http://weblogs.asp.net/jdennany/archive/2006/12/29/tag-i-m-it.aspx"&gt;Jeff Pulver&lt;/a&gt;, who cares.  The tagged blogger is supposed to tell 5 things about himself that few people know about, and then to tag 5 other bloggers to be "it".&lt;br /&gt;&lt;br /&gt;Well, I am happy to share my 5, in the spirit of the online collaborations, a la Web 2.0.  However, I'm bit allergic to anything that is remotely resembling a pyramid schema.  For one, I'm too old and probably one of the slowest bloggers in the world; for two, it has to stop somewhere anyway; for three, well, never mind, 2 is enough.&lt;br /&gt;&lt;br /&gt;So, here are my 5 less-known things, but I'm not gonna tag any bloggers.  No fun, isn't it?  Come on, half fun is still fun, right?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I was fascinated in electronics in my boyhood, putting together transistor radio receivers, amplifiers, and so on.  The bad part was, I never had enough money, resources, nor enough courage to make a radio controlled flyable airplane and a black-white TV receiver, two things that I dreamed the most at the time.  Well, the time was mid 1970's in China, which was pretty dark and damn poor.&lt;/li&gt;&lt;li&gt;I was never the smartest pupil in a class.  But in elementary school,  I was very good in acting, singing, and even dancing, which was quite unusual for a shy boy like me.  In high school, I actually managed to get an award in metropolitan chemistry competition, a big surprise.  For all those years, I was often wondering how I did it.  On the other hand, my younger brother was always the teacher's dearest and he had a title in national physics competition.  But he never sang as well as I did.  Again, that was years ago in China.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In 1979, I went to a college in China to study Electrical Engineering, specifically, Radar, but was quickly bored by its seemingly endless math equations.  By the time of junior year, I was attracted to micro computers.  I could memorize pretty much all the instruction code of Z-80 CPU.  In senior year, I hand made a circuit board full of chips as a "smart" controller for switching radar frequency, even implemented some rudimentary game theory, pretty good deal.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I came to the States in 1992, went to Clemson University, in SC.  My younger brother who had been studying in NYU paid my 1st year's tuition.  The good part was that CU was one of the cheapest schools at the time.  A full year's tuition for an out-of-state (graduate) student was only about $3K.  Today, it costs at least 3 times of that.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Although I had worked on medium size software projects since mid 1980's, The best computer programming training I ever had was the "compiler" class in Clemson University.  The content has been mostly forgotten.  But the shear amount of code produced as the results of classwork had me sort of "get" the art of constructing a complex application.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://weblogs.asp.net/jdennany/archive/2006/12/29/tag-i-m-it.aspx"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6408973-7747251522851158933?l=yangcao88.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yangcao88.blogspot.com/feeds/7747251522851158933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6408973&amp;postID=7747251522851158933' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6408973/posts/default/7747251522851158933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6408973/posts/default/7747251522851158933'/><link rel='alternate' type='text/html' href='http://yangcao88.blogspot.com/2006/12/ok-i-stopped-tag-i-lost.html' title='OK, I Stopped Tag, I Lost'/><author><name>Yang Cao</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6408973.post-111750092713565267</id><published>2005-05-30T19:06:00.000-04:00</published><updated>2005-05-30T22:18:31.603-04:00</updated><title type='text'>Drive a Car in Indigo</title><content type='html'>&lt;span style="font-family:arial;"&gt;Back in time of structured programming, software is designed by functions, or &lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;verbs&lt;/span&gt;".  In a classical way, given the data structure of a car, driving the car would be executed in a function of &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;DriveOnLeft&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;in Britain&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, and &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;DriveOnRight&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;in US.&lt;br /&gt;&lt;br /&gt;In object oriented world, software is designed by objects, or &lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;nouns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;. A object contains both attributes and operations. For the same case of car driving, a typical design would have a base class &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;Car&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;containing &lt;/span&gt;&lt;/span&gt;a virtual function &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;Drive&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;, &lt;/span&gt;and a couple derived class &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;BritainCar&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;and &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;USCar&lt;/span&gt;, each derived class implements &lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Drive&lt;/span&gt; &lt;/span&gt;function differently.  Once an object is created, the call to its &lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Drive&lt;/span&gt; &lt;/span&gt;function behaves differently depends on if the object is &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;BritainCar &lt;/span&gt;or &lt;span style="color: rgb(153, 0, 0); font-style: italic;"&gt;UsCar&lt;/span&gt;. The OO approach models the real world fairly closely, although in my experience that developers almost always ended up with some funny ways of using OO principals.&lt;br /&gt;&lt;br /&gt;Now we are in the time of SOA world with the buzz keywords of "&lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;service&lt;/span&gt;" and "&lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;loose coupling&lt;/span&gt;". SOA tries to models the interconnected world of heterogeneous systems. A service is a contract, and can be performed asynchronously. Describing car driving in terms of SOA reminds you the old function oriented approach. Driving a car could be a well defined &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;service contract&lt;/span&gt;, provided by professional drivers whose specialties are driving in Britain or in US.  As long as the car description (&lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;data contract&lt;/span&gt;) is the same, the service provider would be able to drive the car.&lt;br /&gt;&lt;br /&gt;While the service contract is not inheritable, the data contract can be inherited.  For example, a &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;StationWagon &lt;/span&gt;derived from a &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;Car&lt;/span&gt;, the same service contract dealing with &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;Car &lt;/span&gt;should also be able to take care &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;StationWagon&lt;/span&gt;. However, just as a contract must be well spelled, a derived data type must be noted "known" as part of the data contract. Data contract is one of the most interesting parts in &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx"&gt;Indigo&lt;/a&gt;.  &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx"&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx"&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6408973-111750092713565267?l=yangcao88.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yangcao88.blogspot.com/feeds/111750092713565267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6408973&amp;postID=111750092713565267' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6408973/posts/default/111750092713565267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6408973/posts/default/111750092713565267'/><link rel='alternate' type='text/html' href='http://yangcao88.blogspot.com/2005/05/drive-car-in-indigo.html' title='Drive a Car in Indigo'/><author><name>Yang Cao</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6408973.post-107551235306141896</id><published>2004-01-30T23:29:00.000-05:00</published><updated>2005-05-30T08:51:46.843-04:00</updated><title type='text'></title><content type='html'>OK, Let me unit test it first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6408973-107551235306141896?l=yangcao88.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yangcao88.blogspot.com/feeds/107551235306141896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6408973&amp;postID=107551235306141896' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6408973/posts/default/107551235306141896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6408973/posts/default/107551235306141896'/><link rel='alternate' type='text/html' href='http://yangcao88.blogspot.com/2004/01/ok-let-me-unit-test-it-first.html' title=''/><author><name>Yang Cao</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
