Tuesday, May 13, 2008

Lean vs UP or TDD

In http://survic.blogspot.com/2007/12/post-processesontologies-open-eyes-on.html

I wrote: if you know those (8 core) techniques, you surely already know those "processes". "Processes" is simply experiences you gain when you use those "8 core techniques".

In http://survic.blogspot.com/2008/05/use-lean-process-directly-instead-of-up.html

I wrote: we should refuse to talk about "software proceess" -- we should use lean process in software directly, instead of UP or even TDD.

I am now more convinced.

The key is, being “lean” requires that we must do things as close or direct as possible to where the real values are happening.

The “8 core techniques” are where the real values are happening.

So, we should replace all those TDD or UP with 8 core techniques, and call it “lean”.

You may ask, even we know the content of those 8 core techniques, we need to ask: what category do they belong?

The answer: they are architecture elements.

So, a “lean” process means that we deal with architecture elements directly, iteratively and incrementally – which means, as long as you are making progress and you know about it and you can provide hard evidences for it, then, in whatever order, do whatever is necessary.

Lean process is very different from TDD and UP. Obviously, it is “heavier” then TDD, because it has a “default architecture”, and is totally architecture driven.

Also, it “includes” or “tolerates” or "consumes" the concepts of “requirements”, “use cases”, etc., because all of those concepts are simply iterations toward “screens and buttons” and “façade methods”. “Testing” is a real concept in “lean”, but that simply because testing is inherently part of the architecture, just like logging is. Note that “lean” is better, because now you always know the context, and know that it can be extremely flexible yet can always focus on the real result.

It also "includes" or "consumes" DDD – all those mappings (OR and OU) and related rules are DDD, or, you many say that DDD is the iterations toward OR and OU. Again “lean” is better, because you know the context, and you know it can be extremely flexible yet can always focus on the real result.

Saturday, May 03, 2008

Dynamics and ontology of blogging

I use blogging as a notes-taking mechanism. Doing it this way helps me to separate private details from the issues themselves immediately. It makes my thinking more objective; makes me continuously theorizing, and hence think continuously.

I blog on technical, medicine, business, and culture topics.

The above line is an example of "immediate theorizing". On the one hand, the above line reminds me that I have a few blogs; so, it serves the function of notes taking. On the other hand, it makes me think about the classification/ontology of blogging.

State of the handhelds

1) Why I am interested in it?

A new wave of computer innovation is coming, and handheld is a key component.

More specifically, handheld devices have reached to the power that they are more powerful than a PC when PC took off. GPS, mobile email and calendar, phone, camera, instant messaging, mobile web, mobile office productivity -- you think and get feedback and write down anytime and anywhere -- your brain is always active and more importantly, at peak level. Soon voice , handwriting, and imaging processing will enhancing them, then, we will have the equivalent of "office" for "general site automation".

To maintain a wide perspective, we should keep it in mind that there is an academic field, HCI (human computer interface), for handheld development. Also, there is a few high tech fields related to handheld: "put viewing devices on glasses",
"multi-touch screen", "voice, handwriting, and imaging processing", "natural language processing".

2) In general, there are two technologies: one is touch screen (palm, apple), one is physical keyboard (blackberry).

Note that perhaps we should talk about human needs first. However, from HCI point of view, human needs and technologies are a hen-egg relations. You may say that needs are the mother of all innovations. However, do no forget human body and behaviors are themselves "build-in technology systems"!

We put technologies first here, for a simple "shallow" reason: because there are only two of them for now, it is easier to introduce them, and we can use the concepts in the discussion of human needs.



3) There are many levels of input need. Depending on the technologies, you can have different separations. For easier thinking and comparison, we always try to force a "canonical" level system.

Note that we only talk about the "write" side; the "read" side is easy from HCI design perspective.

A. No-hand (driving on local streets): voice processing is the key here.

B. One-hand (driving in highway, walking in familiar area; this can further divided into left hand and right hand): I am very surprised that it seems that very few people think about this explicitly. This is a very important category; it should be buried in category C (below) or category A.

C. Two-hands but in constraint space or other environmental resources, by thumb typing, and handwriting. Note that thumb typing can do a lot – actually the draft of this blog was written by thumb typing. However, handwriting can do even more – it is almost a shame that after more than 30 years large scale use of computers, the main input method is still typewriter technology – the keyboard. It is possible that handwriting and voice processing will make breakthrough via handheld.

Note that this seems to be the major focus for blackberry. You can make a sub-division by slide-keyboard. For iPhone, it is between B and C.

D. Two-hands optimal. In this category, flexible or folding keyboard is the way to go.

Friday, May 02, 2008

Silverlight, JSON, and Entity Framework and .net Being the Primary Enterprise Platform

Silverlight, JSON, and Entity Framework and .net Being the Primary Enterprise Platform

JSON support is ready.

Silverligiht is coming.

Entity Framework: it is more complicated. Perhaps it is not as good as the java-port, nhibernate, just like springframework and other things (for one thing, EF uses code generation approach -- ugly thing, isn't it). However, the key is, the official, recommended architecture on .net is exactly the same as lightweight Java's.

Soon .Net will surpass Java/javascript.

However, the power of silverlight is that it is cross platform. I hope Linux world can take advantage of this -- however, regardless Linux/Windows, Java is now officially behind.

Silverlight marks the start of the end – now, .net can begin to claim that it is a superior platform. We are seeing a historical turning point.

A dominating platform that is not open-source based, it is very scary – it is not that I am brain-washed by open-source arguments, it is my real world many years experience: companies come and go, if you do not have source code, it is trouble.

You may say, that is only for application level. For system level, it is OK that you do not have source code. Actually, for many years, java VM is not open source. I have to agree.

However, I have to say that considering our dependency on computers, it is still scary; too much is at stake. I seriously believe that eventually the governments will do something to guarantee some healthy competition between open source and MS.

All in all, while I will continue to pay attention to Linux (and Unix in general), open-source C/C++, and Java, I have to say that perhaps we should welcome the fact that .net is going to be better than java (java is going to be the underdog), from now on, especially this accompanies that fact that M$ is adopting, encouraging, and enforcing a more and more non-mort culture.

I do not regret entering into .net -- after all those years, finally I can brag about it to my Java colleague.

You may say, is it even possible that M$ is enforcing a non-mort culture? I believe so. It is to the best interest of MS. It is called segmentation of markets. M$ will certainly keep its low end, mort market. However, it will also establish its high end market. The key is that its key selling point is that its high-end market is a continuum of its low end market. Another key point is that high end must lead low end – this is a technical necessity – it seems that M$ finally gets this, just recently: you can simplify a good system to make it easier, but it is a technical impossible that you “complexify” a bad system to make it good. So, more accurately, combining the two key points together: M$’s key selling point is that M$’s low end market is the continuation of its high end market.

REST and data

Here is my previous blog about REST: http://survic.blogspot.com/2007/08/rest-web-service-is-all-about-data-or.html#links

I wish I could say that I wrote my blog before all of those:

http://www.redmonk.com/cote/2007/04/30/microsofts-rest-moves-project-astoria/
http://astoria.mslivelabs.com/Default.aspx
http://blogs.msdn.com/pablo/
http://blogs.msdn.com/astoriateam/archive/2008/04/24/using-rest-services-in-silverlight.aspx

Thursday, May 01, 2008

Use lean process directly, instead of UP or even TDD

Vikas's insight on lean process and TDD is wonderful. We need to apply "lean", "6-sigma", etc. to "software process".

Further, because there are so much baggage in "software process", I (tentatively) suggest that we should refuse to talk about "software proceess" -- we should use lean process in software directly, instead of UP or even TDD.

MS and Morts: lightweight.java and alt.net

My friend Vikas has a good post about a also-very-good-post about an interesting post (click the links, you will know what I am talking about!):

http://vikasnetdev.blogspot.com/2008/04/is-microsofts-mvc-is-going-to-be.html

My comments:


1. It is indeed a tipping point, historical moment for MS!
Even it is too little too late, especially too late, almost 10 years late, in Internet time.

I do love silverlight though; it is definitely next-gen-ajax.

Because we have ajax-and-next-gen-Ajax (silverlight), although you may say MS's ajax is part of asp, but that misses the point: ajax makes traditional asp irrelevant. As a result, asp's MVC is less relevant -- Ajax/silverlight makes the previously-official-asp irrelevant, it gives Alt.net a huge opportunity.

2. MS is distancing from morts -- for that, I love MS -- it is innovating.

3. Alt.net is basically following lightweight.java -- I certainly do not mean to insult alt.net people; they are doing creative work now, and will surpass java soon.

Note that I am using alt.net as a concept, not a community, as a result, Spring.net and NHibernate are certainly part of alt.net -- conceptually speaking -- but I am not sure whether all people in spring.net and nhibernate are in the community of "alt.net".