November 2006 - Posts

Bubu Awards, Just another opinion!

I visited INDC Geeks portal as usual and found too much about Bubu issue. Seems too ambigious for me. If the judging criteria and competition theme is only related to "user experience (UX)", not for website as a whole or web application internal quality (portability, scalability, reliability, performance, etc etc), client side technology standards like HTML, CSS, JavaScript, etc are more than enough. Technologies like PHP, ASP, CGI, JSP, ASP.NET, ASP, etc are HttpRequest processing frameworks at server side which are not related to UX.  Databases like MySQL, SQL Server, Oracle, etc are different animals as well. So, I will suggest to Bubu team to publish the judging criterias, weighting, etc instead of technology and tools requirements. Other key fact that supports this opinion is, board of judges from Bubu are not HTTP protocol, ISAPI, POSIX, Http Server, data model, and museum business process experts, am I right? How we can put products or tools as a constraint in a web UX competition? That is not make sense at all.

I will talk to Agung :). Anyway, now we have CabeIjo and Student Expression Award :).

Share this post: | | | |

Introducing CabeIjo

I was really happy to announce CabeIjo in a press con yesterday. Now we have a community for creative and innovative design for applications, especially, XAML designer. Take a look:

 

Please join me to welcome the members of CabeIjo to INDC family!

Share this post: | | | |

ExpertGym - VSTS Level 200

Today, I have to open VSTS 200 training at Microsoft Auditorium. I will open this two days training with value-up paradigm and process with MSF-Agile. You can download my slide here.
Share this post: | | | |

INDC - C++ Learning Center (CLC) - When ?

One of my student asked me how long time he will need to invest in learning and then using C++ as his main programming language. That is a hard question for me. First, because developer's learning curve is not a controllable parameter. If you take a Computer Science degree and able to focus in reading and practicing materials, I believe you can learn C++ language in at least one month (30 days) without supervision (self-learning). Your 30 days investment in C++ language is worth if you can practice 100-200 line of codes every day, means that you should spend 5 hours a day to read and practices. For the next 30 days, you can start exploring Win32 API for system programming like IO, file system, memory management, process management, thread and etc. After you familiar with common practice to use Win32 API, you can learn Windows Programming using pure Win32 API like Petzold style or adopting frameworks like Boost (general), MFC (for GUI), ATL (for lightweight component) or WTL (for GUI). Each framework will need another 30 days investment (5 hours a day). I predict, you have to spend around 180 days in total to become a "ready to work" C++ Windows developer. To make you more confident to work on a large project, try to create your own project and focus on it for another 180 days. Use you blogs as your journal to let people know what you have done or get feedback from other experts.  

If you are professional developer, spending 5 hours for "reading and practicing native C++" is not an easy job. And it almost impossible to spend a year just to learn C++. That kind of discipline is excellent in your plan but it is hard to commit because your daily job usually break your concentration all the time. You need some one to train you, supervise you, and telling you what you should know. Unfortunately, we dont have such training provider in Indonesia (not even in Singapore, I believe).

I have a dream that one day some one in INDC will setup a C++ learning center (CLC) where people can learn from experts and reduce time investment to only 3 months. I will support that initiative for sure !!!

Share this post: | | | |

Knuth Reward Check


In the preface of each of his books (The Art of Computer Programming), Donald Knuth offers to pay a reward of "$2.56" (USD) to the first finder of each error, whether it be technical, typographical, or historical. These reward checks have been described as "among computerdom's most prized trophies". As of October 2001, Knuth reports having written more than 2,000 such checks, with an average value exceeding $8 per check. As of March 2005, the total value of the checks signed by Knuth was over $20,000. Very few of these checks are actually cashed, however, even the largest ones; more often, they are framed, or kept as bragging rights.

We will launch our online Algorithm community soon in December. D.E Knuth gives $2.56, we will give more for each published problem you can solve. I hope this can challenge our students to become better !!!

Share this post: | | | |

HanomanOnline - Centers of Local Software Innovation

Guys, I will tell you one thing that really makes me excite. Its about Hanoman the White Monkey in Indonesian ancient legend. Now he is back to us, helping our community as a hub for local innovation.

Dont forget to visit : www.hanomanonline.com
Share this post: | | | |

The way we learn

"I have always liked the concept of universities as they were in Ancient Greece, where folks who had something cool to say would just come and say it". That words came from Don Knuth, the best algorithm teacher for me. It wasn't about people recognition; the impetus was the thought that you were resonating with ideas.

I can feel the spirit of the ancient Greece in our beloved INDC, especially in our mailing list and GEEKS blogs. Many people have brilliant ideas and invest their time for knowledge.

Thanks for all who contribute to this community !

Share this post: | | | |

Bina-ISV Batch 3

The sessions I delivered was very interesting for my self. First, is about Web Service "Software Factory" and the other is WPF. Software factory paradigm will become very valuable for all of us as developers. It assembles design patterns, architecture best practices, tips and tricks, code recipes in one executable guidance package. It is more than code generator like CodeSmith in which you can create templates and generate codes. Its guidance packages contain all of your software assets. It is a factory !!!

WPF is not only impressive, but can open new horizon of software innovation. Imagine that you can now build application for you child to teach them how to use keyboard. WPF is more than GUI framework. It changes the way we do our codes (imperative and declarative). It also more than OpenLazlo (swf target UI framework) because made by Microsoft who owns .NET framework.

I enjoy to teach you guys and I hope one day, I can train you to make your own guidance package and WPF controls. Stay tune and keep learning ! Please register to www.binaisv.net because the next batch will become more interesting.
Share this post: | | | |

Concurrency = Parallelism + Distributed?

I asked my old friend (who has worked with codes since the period of Mainframe-Assembler) what is the best field to be invested for the future. He said, "distributed computing".  His prediction (which is based on 30-years coding experiences) inspired me to keep learning, investing in knowledge, as he does.

Concurrency, parallelism and distributed computing are related topics. Concurrency techniques are used to allow a computer program to do more work over the same time period or time interval. Concurrency makes software faster, handles larger loads or simply makes software better by increasing the number of concurrent operations. In my understanding, concurrency can be achieved with piece of codes by two basic approaches, parallelized and distributed computing. These two paradigms sometimes intersect and I will let you think "C  = P + D" or "P = C + D" by your self.

People exploring concurrency to gain more computing power without Moore's limitation on conventional von Neumann computer. Pacheco calculated that to build a von Neumann computer with 1 trillion instructions per second, we need to fit a single word (2 byte, 16 bits) of memory into a square with length 10e-10 m, which is the size of relatively small atom!!. In other words, it is impossible to build such kind of computer, unless we can represent a 32-bit word with single atom !! Even though Feynman has explained the potential to build a "quatum computer" theoretically, no one can predict how long it will takes from theory to RTM !! 30 years more?

So, how do we build a computer with 1 trillion instructions per second ?? Without quantum computer we should obtain more processors and more memories working concurrently (parallel in time). A parallel computer is simply a computer (or collection of computers) with multiple processors that can work together on solving our problem. I can say my M400 is a parallel computer because it has more than one processor (multi-processors-shared-memory). Or I can combine all PCs in a internet cafe to build a parallel computer (multi-processors-distributed-memory). Parallel computing is a proven way to achieve concurrency (higher performance) at least for today.  

"I suspect that concurrency is best supported by a library and that such a library can be implemented without major language extensions" -- Bjarne Stroustrup (father of C++). Many people prefer to follow that statement as we can see parallelism mostly implemented as libraries, not language extensions, not extending compiler features, not application layer, and not extending sequential codes. I hope uncle Joe Duffy also follows uncle Stroustrup way for his Concurrency book.

Share this post: | | | |

For you who are new to Paralellism

I found a good starting point for you who never heard about Paralellism. You can learn about some concepts and terminology associated with it. For you who understands basic microprocessors, this will also can help you.

Introduction to Parallel Computing

Ciao - Risman Adnan

Share this post: | | | |

Getting Started with OpenMP

Prepare your compiler

You must have OpenMP compliance C++ compiler (I use VC++ 2005 with OpenMP 2.0) and understand its OpenMP features.  MSDN is the best resources for all VC++ OpenMP reference. The directives, library functions, and environment variables defined in that link will allow users to create and manage parallel programs while permitting portability. The directives extend the C/C++ sequential programming model with single program multiple data (SPMD) constructs, work-sharing constructs, and synchronization constructs, and they provide support for the sharing and privatization of data.

Train Your Self

The comprehensive resources located at : http://www.openmp.org/drupal/node/view/9. You can consult to books that I posted before if you have enough $$ to buy.

Discuss with other
We have OpenMP forum at geeks.netindonesia.net. I am waiting you there.

Share this post: | | | |

Parallel Programming Literatures

I listed here some available text books for parallel programming (OpenMP and MPI) for you who has the same interest with me. You can choose to explore from share-memory or distributed-memory depends on your need.


Shared-Memory Parallelism


Distributed-Memory Parallelism
 

Share this post: | | | |

Parallel is the next wave?

You maybe have seen that many CPU vendors started to support on-chip multicore processors. Adding more than one CPU on a single chip. People believe that approach offers a better-performing system in the future. Seems like interesting, but if our application does not take advantage of these multiple cores, it may not be able to operate any faster. How to take advantages from application point of view? Our application must be able to support multi-processor-shared-memory parallelism. The current available framework is OpenMP which is fully supported by Visual C++ compiler.


Current version is OpenMP 2.0, and Visual C++® 2005 supports the full standard. VC++ 2005 provides a new /openmp compiler switch that enables the compiler to understand OpenMP directives. When the /openmp switch is invoked, the compiler defines the symbol _OPENMP, which may be used to detect when OpenMP is enabled using #ifndef _OPENMP. Utililize OpenMP in VC++ 2005 is not a big thing. The hardest part is to understand that OpenMP standard it self. Not too many literatures around this cool API.


I am exploring this as a part of our Faculty Workshop contents. I can't cover Message Passing API (MPI) because it will need more PCs with Windows-HPC installed. Maybe in the next C++ CiT.

Share this post: | | | |