Monday, March 28, 2005

Desktop.Enhancement.Mania

After transforming my desktop into the somewhat Longhorn interface, I ventured off a little further to experiment with other desktop enhancements. Here are some of them on display...


Screenshot 1 - Desktop


Screenshot 2 - Shadowed windows and MAC-style toolbar


Screenshot 3 - Transparent Windows


Screenshot 4 - Flipping transitions

I've managed to get many of my colleagues fooled. Winston (one of my colleague) said, "I so jealous! You can play with Longhorn and I cannot." and Shima (another colleague) said, "Wooi-Yo! Guna Longhorn". And they all had a good laugh after I told them it was actually XP. ;)

Sunday, March 27, 2005

Look.Ma.A.Prototype

After being a decade in the local software industry, I've to say that the prototyping approach is quite dangerous! The expectations of customers and/or top-management are often set wrongly with prototypes.

As we all know, prototypes are build-and-throw products that are used for the sole-purpose of giving a clear picture to the customers on how the end-product 'may' look like and to gather their feedback. It is not 'the unfinished product' like some may expect (although it can be the final product in some cases - I will talk about it shortly).

When building prototypes, make sure the customer knows that the prototype they see is not 'the real product' and make sure they understand that the real product requires more work. Otherwise, you will find it difficult to explain why you need to take another three more months and not two weeks to deliver the final product.

I recalled one incident when I was told to assemble a team to modify a prototype for a demonstration to a customer (a prototype of a prototype). The system was very huge and we were told that "It is fully functional". We were given two weeks to modify some pages that reads and writes data to the database.

On closer inspection, we discovered that the prototype has no functional parts. It was a hacked up of 500+ aspx pages intelligently linked up with hyperlinks and it can look quite real in a scripted demo. The whole prototype can run without a database although our sales guy insisted that the system runs on Microsoft SQL Server 2000.

This is what I called HTML-prototype and you got to becareful with these. You never know how good your sales person can talk!

Also take note that some customers may have the perception that turning a prototype into a production system can be cheaper than building from ground-up. This can be valid depending on how the prototype was developed.

Smart developers may develop prototypes with a conscious mind that it may eventually be turned into the final product. This is where the expectations fall to the developers. Developers may think that since it is a prototype, they can just go hack'n slashing.

I've encountered that some developers just hack-up a system within weeks and presented it to their management but the next thing they know, the management wants it deployed in the following week. Some products do not matter but for some, maintenance can be a nightmare! *I'm a victim of that right now*.

My advice is when developing a prototype, do set the customer's or management's expectations right. Also, always have that spider-sense tinkling that the prototype will be used as the base for the final product. Develop the product with some thoughts for best practices - at least it can be extended later if the need arises.

Of course, my best advice will be not to use the prototype approach but to use the iterative release approach instead.

The.Long.Longhorn

It has been quite a while since I heard anything about Longhorn - Microsoft's next generation of Windows, the successor to Windows XP. After the PDC and WinHEC preview builds, the hype seems to have died down. The release schedule for this supposed-to-be killer OS has also been slipping continuously.

Maybe they shouldn't have codename it 'Longhorn'. *Not good fung-sui*. *Hehe* Anyway, I caught this interesting article: The Road to Windows "Longhorn" 2005. Hopefully, Microsoft will deliver it on schedule and with all the kick @$$ features as promised.

And if you want to skin your Windows XP to look 'something-like' Longhorn, try downloading Longhorn Transformation Pack 9.0. It is a wild tool that changes your Windows XP shell to look a little bit like Longhorn's UI. But you got to becareful as it messes around with some of your Windows system files. So it is not recommended for the faint-hearted. *Hehe*

To be more kiasu, you can also download DesktopSidebar, an application that mimics the sidebar that Longhorn provides. I personally find that this Sidebar application is better than the one that comes with the transformation pack.

Anyway, here's how my desktop looks like with all the enhancements.



I'm using the Aero Interface with Slate theme. Here's my friend's (Atkins) desktop using the M3 Interface and Plex theme.

Here's the Welcome screen *Ma Favourite*.




Well, be warned though; all these skinning doesn't come for free. For one, it will suck up lots of your computer memory (just like Longhorn). Anyway, it is a good eye-candy - should be able to keep me excited for a few months as I'm already getting bored with the default Windows XP themes.

Thursday, March 24, 2005

MSDN.Subscriptions.Revised

The MSDN Subscription prices will be revised when Visual Studio 2005 is released. Read about it.

1. Visual Studio 2005 & MSDN Subscriptions
2. Microsoft Details Pricing and Licensing for Visual Studio 2005 and Simplifies MSDN Subscriptions.

Personally, I think Microsoft should allow free downloads for the Express Editions and only charge customers if they want the CD/DVDs.

Wednesday, March 23, 2005

Connecting.The.2.0.Way

One problem I had with .NET 1.x is that there is no easier way to retrieve my connection strings from the App.config (or web.config) file. The easiest that I can get is via AppSettings. Now, in .NET 2.0, connection strings are treated like first class config-tizens.

Immediately, you will spot a new ConfigurationManager class to manage items in the config file. There is now a section that you can enter your connection strings and it comes with intellisense too!

Here's the App.config file

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add
name ="AdventureWorks"
providerName="System.Data.SqlClient"
connectionString="Server=.;database=AdventureWorks;uid=sa;"
/>
</connectionStrings>
</configuration>
Here's how you can use it in your code ADO.NET 2.0 style *BayBee*

ConnectionStringSettings s =
ConfigurationManager.ConnectionStrings["AdventureWorks"];
DbProviderFactory f =
DbProviderFactories.GetFactory(s.ProviderName);
using (DbConnection cn = f.CreateConnection())
{
cn.ConnectionString = s.ConnectionString;
cn.Open();
// Do some processing.
}
Neat huh? ;) Btw, ConfigurationSettings.AppSettings and ConfigurationSettings.GetConfig are deprecated in 2.0.

Sunday, March 20, 2005

New.Stuff.In.ADO.NET.2.0

Here's one new stuff I discovered in ADO.NET 2.0 - Provider Independent Code. Examine the code below:

DbProviderFactory f =
DbProviderFactories.GetFactory("System.Data.SqlClient");
using (DbConnection cn = f.CreateConnection())
{
cn.ConnectionString =
"server=.;database=AdventureWorks;uid=sa";

using (DbDataAdapter da = f.CreateDataAdapter())
{
da.SelectCommand = cn.CreateCommand();
da.SelectCommand.CommandText =
"SELECT * FROM Person.Contact";

DataTable dt = new DataTable("Person.Contact");
da.Fill(dt);

dataGridView1.DataSource = dt;
}


}
Notice that we can now use the DbProviderFactory and the Db* classes (i.e. DbConnection, DbCommand, etc.) to handle our data-related functions with the database. There is no need for provider-specific classes such as SqlConnection, OledbConnection and etc.

How it knows I'm connecting to a SQL Server? The providerInvariantName, "System.Data.SqlClient" tells it. Cool huh?

Turn.Da.Radio.On

I discovered today that I can listen to radio i.e. Mix.Fm on my Nokia 7710 via the built-in loudspeaker. Here's what you need to do:

1. Plug in your headset - Your headset actually functions as the antenna for the FM radio

2. Go to Visual Radio and select your favourite channel i.e. 94.5 FM

3. Tap on the Menu. Goto Tools -> Speaker in use ... -> Loud speaker

Enjoy your music!

More.2005.Stuffs

I've managed to get my hands on Visual Studio 2005 Feb CTP, SQL Server 2005 Feb CTP and the "Avalon" and "Indigo" March CTP this week and got them installed on my test-development machine.

Both Visual Studio 2005 and SQL Server 2005 looks pretty much polished now which signifies a good time to get started with them. I've heard previously that the products were undergoing too many changes, particularly with SQL Server 2005 and even book authors were told to temporary stop writing.

I'm glad that the product looks much better now - particularly Visual Studio 2005 which is simply stunning. I will take some time to explore the new features and blog them. SQL Server 2005 looks more or less the same but with some added features that were missing in the previous beta.

What I'm most happy with is that you can now install both of them on one machine without having any problems with the conflicting .NET Framework 2.0. Can't wait for them to be released but wait first! Lemme learn them first! *Ngek* *Ngek*

One.of.Those.Days...

Have you had one of those days where you woke up and felt that you just don't want to do anything or go anywhere? It's like neither you have enough or not enough sleep. Your mind will tell you that there are some stuff that you need to do but your body just refuse to move.

I've been feeling like that for the whole day...

Tuesday, March 15, 2005

I.Got.Screwed

While walking to my car today, I discovered that one of my front tyres was a little flat. Good thing my colleague, Winston, came along to my car. Initially, we thought it was just lack of air but then he was quick to discover a screw pierced right into the tyre. Jokingly, I told him *I'm screwed* and we had a good laugh.

He then helped me change the tyre and got his face all messed up with dirt. I'm glad he was around. *I'll be treating lunch tomorrow*. This is the second time I had a flat tyre. My guess will be either it is from the Kinrara stretch or the roads near my house which are undergoing massive roadworks.

Anyway, becareful when you use the Kinrara stretch.

Monday, March 14, 2005

End.of.Visual.Basic.6?

According to the Product Family Life-Cycle Guidelines for Visual Basic 6.0 published by Microsoft, mainstream support for VB6 will cease by end of this month. Although it is common for a product to have its natural lifespan, I think this should come a little bit later. They should have given developers more time to migrate over to .NET (or VB.NET for that matter).

I believe VB6 is still widely used and quite prominent in the industry. Although, some people labeled it as the "kid's language", I believed it has contributed to a lot of useful applications in the industry - some powering banks and other critical applications. VB.NET is like a "grown-up's" language now. Every VB developer will need to know OO (which is a good thing) when they start with VB.NET.

VB.NET is a good advancement over VB6 and it will kick more @$$e$ when it hits Visual Basic 2005 - the .NET Framework 2.0 version. It will be on par with C# with operator-overloading, iterators and generics - a first class citizen of .NET.

Anyway, the news doesn't really impact me - we still have apps running on VB3 and the customers are happy with it. But if you want to do something for good-old VB6, voice it out here.

Saturday, March 12, 2005

Jack.Of.All.Loops

"I want to learn as many programming languages as possible".

Now, thats the common response I get from young graduates nowadays when I asked them what they want to do in the industry. To most of them, mastering many programming languages is a symbol of success in being a developer. The truth is, knowing a programming language rarely means anything.

To be successful in the industry, one has to grow beyond just a 'programmer'. I always encouraged my juniors to be developers and not programmers. There are many people who can write programs but not many can develop something useful to the business on their own.

Programming languages are just one of the tools to get things done. You only need to master one (primary) or two (secondary) of them. You can pick up new languages as you work as well but that should not be the priority. There are other areas in software development that are equally important.

Once you know your language well, move on to areas such as database design, system analysis, software quality assurance and even project management. You can also apply your language skills in developing libraries and frameworks.

I have seen many programmers who absolutely fail in producing a good database design. All they cared was how cool their web-pages were. Whether you can code in ASP or JSP doesn't really make you a good developer.

Knowing many languages (or platform) will only make you a mediocre. You know a bit of everything but mastered in nothing. Certainly, you can't impress people with a resume that says 2 yrs ASP, 2 yrs JSP and 2 yrs PHP even though you have worked for 6 years. Your strength comes when you specialize - for example: 6 yrs C# or 6 yrs Java.

Also, move into Software Architecting for the platform of your choice. This area is the least emphasized area for most people and they end up producing poor software. Once you are accustomed to your platform, develop your niche on it and excel from there.

Developer.Vs.Manager

Do you enjoy coding? Would you want to do it until you retire?

Most of the people I met do not subscribe to the idea of Developer-for-life. They aspire to be 'managers' and it doesn't matter what type of manager as long as the title carrries the word 'manager'. Given the ratio of managers to workers in an organization, how many developers actually made it to be a manager?

Hence, for those who could not make it in the industry, they end up as Unit Managers for some MLM company *Hehe*.

I think it is our culture's perception that manager is where the money, power and respect is. Manager is usually associated with big house and big car, the authority to hire-and-fire and the ego-secured feeling of having mah-chais (subordinates).

In reality, it takes more than just old-age, big-salary and experience to be a manager. You need character, leadership and the charm in dealing with people which not many could master. Some managers become just managers for decades - with people under them to command and people above them to please.

Some managers build empires over the years with employees who trust them and would go the extra mile for them. So do you have what it takes to be a manager?

Honestly speaking, I share the idea with a small group of people who believe that developers who are good at what they are doing and would like to stay in their field, should be given the opportunity to grow in their respective field without being penalized with low respect and low salary.

It is an ego issue if a developer earns more than a manager but often people forgets that Directors direct, Managers manage and Developers are the ones doing the work. If a developer screws up, it affects the entire 'food-chain'.

Like all dicipline, a developer's skills gets better over the years. Experienced developers can diasect code faster than the newbies, produce better managed codes and well-architected systems that could benefit the company and customers. Being in the industry for almost a decade now, I can somehow appreciate the coding ability I have.

Most companies believe that once a developer achieve a certain salary range, they should be managing instead of developing. With the same amount of salary, the company can hire many freshies to do it. This is where they failed to see the value in experienced developer. Experienced developers have lower 'learning' and 'training' cost.

Have you observed how young developers start developing their skills. A simple piece of logic may take them 2 to 3 days or even weeks to complete whereas an experienced developer maybe able to do it in an hour - *How long does a manager takes ah?* This is because newbies spend time on learning and that is what the company is paying for.

If you ever inherited systems from other people, you can easily tell their level of skills when they designed it. As developers become more experienced, they are more mature in their design and places emphasis on other issues like maintenance and extensibility as opposed to just passing-up the homework.

But what happens today is that once you are about 5 years or more, it is time for you to be a manager. Your skills die with your journey to management and the industry is filled with mediocre-skilled workforce and failed projects.

Think about it: If every developer becomes a manager, there won't be C# or Java or Delphi today. And if you are a manager who have let go your software development skills, what can you do if you lost your job at the age of 40?

In our society, it does appear that anyone can be a manager. But to be a good manager, that is another story altogether.

Thursday, March 10, 2005

Are.You.A.Webbie?

Are you a Web Developer looking for a tool for your ASP.NET applications but don't have access to Visual Studio .NET? Take a look at Visual Web Developer 2005 Express Edition. See some of its features here.

Not bad I would say. Lots of improvements over the editor in Visual Studio .NET 2003.

Wednesday, March 09, 2005

The.Phoenix.Has.Awaken

Ever since that make-over on Sunday, I've started to feel a little different. I've changed the way I dress just for the fun of it and I've been receiving positive feedbacks. I've been wearing beige blouses everyday and everyweek for the past one-and- a-half-year and I bet most of my colleagues have already find me a dull fashion-repeater.

These few days have been exciting and I think I made an impact with today's dress. My colleagues were wondering what has gone wrong (or right) with me. What made me changed all a sudden? One of my colleagues said I was 'glowing'. *Hehe* Luckily, not radiating.

Thanks to my beautician and the Loreal's beautician who helped refined my eye-brows. Also applying the little tips they gave me on the eye-shadow. Almost everyone noticed that I look a little different. I'm glad I sent shock-waves to everyone in the company *Hehe*

However, I suddenly felt that I had wasted more than 2 years being the way I was as a geekette. Youth does not stay on forever (especially for a lady) and I should have lived those 2 years differently. Now, I'm slowly planning some adventures in my life - slowly trying out stuff. Hopefully, more exciting things will come ;) *HuGs*

Sunday, March 06, 2005

A.Day.For.Myself

Today is a day for myself - no coding, studying or thinking about work. I started the morning with my session in Slimming Sanctuary. It has been quite a while since I visited them and I'm so happy to see my beautician again. I was told that I had maintained my weight - well time to lose more!!!

After that, I brought mom to Kim Gary for lunch. Had the set-lunch that came with spaghetti and fish fillet - thanks to Wen Ching for stiring up my crave for spaghetti last night. aHhhh... Then comes shopping!!! It has been a while since I shopped at Mid Valley.

Went to Padini and got myself a new pair of slacks. Now, what good is a pair of slacks without a shirt? *Hehe* *Snort* *snort*. Got them at a discount. While walking around, a Loreal salesgirl approached us and told us about a promotion they were having. "Purchase above RM150 and you get a goodie bag filled with free gifts, a free make-over with hair-do and a free studio shot".

Sounds like a good bargain. I just need to replenish my Loreal products ahead of time *Hehe*. Mom gladly tumpang along to make it to the figure. Then, they tagged me for the make-over and placed me on queue. There were plenty of girls getting their make-overs. It is almost like a factory - girl with no make-up goes in from one end, then supermodel comes out the other end. This is fun!

Waited for half-an-hour and finally, my number was called. First stage is the make-up by a professional make-up artist. The make-up artist, a lady, was very sweet and nice. Gently, I put away my glasses (Pssst mom, keep this for me).

The lady started with the base. Gee! I didn't know two-way-cake was so effective - better than my foundation-plus-loose-powder combo. Then she asked, "What eye-shadow colour do you like? Green? Purple? Girls here like purple - it looks sexy." I replied, "Err... that sounds nice but I would like to have that innocent good-girl look". So she replied, "Earth-colours then."

She also trimmed part of my eye brows and curled my eye-lashes. In less than half-and-hour, she is done with me. Next is the hair-do. I sat in front of the mirror and Aiks! Why I look so farnee wan. Then comes the professional hair stylist. He studied my face for a little while and started working on my hair.

"Er... can you just straighten my hair ah? I need to go for screen test sometime this week leh" I said shyly. Then he replied, "Screen test? Hmm... so you need a decent look. Ok, I'll do what I can but I definitely won't straighten your hair". And he started doing his magic. As he starts to get excited with my hair (or what's left of it), I asked, "Will what you do to my hair survive a hair wash?" Candidly, he replied "Girl, if it can last for 3 days and a hair wash, I will start charging you."

When the hair-styling is done, then comes the grand finale. The photo-shooting. A very nice guy-photographer came and offer a few simple garments for me to try on. Then he asked me to pose. I felt so stiff like a robot not having its gears greased. *All that sitting in a computer job must have made me look like a log.*

Then he started to guide me, "Bend, lean forward, smile..." *Snap* *Snap* "Turn, yes... smile" *Snap* *Snap* Then he told me, "How-Dit How-Dit" (means sexier-sexier in cantonese). Ok lah. After the photo-session he told me, "Loreal will sponsor you one photo. The rest you have to buy."

I've already expected it *Mom has been telling me throughout the whole event* How can we get a way from a FREE gimmick? So, he brought me over to the printer (a lady who prints the photo, not the print device). The lady was using a Presario X1000 - ahh... good choice, I have faith. So she said, "Pick one". After some consideration, I just chose one.

And here it is.... *Nice ah?*


I was so tired after that. The whole event took me 3 hours. Time to go home liow....

Wednesday, March 02, 2005

Is.That.Light?

I've been officially redesignated as Assistant Technical Manager, Applications - (or what I conveniently call ATMA) and absorbed into the Solutions Integration competency group of my parent company this week. I guessed my responsibilities will widen again to cover more than just coding.

Things have been picking up for me at work recently. I got to go on-site to visit customers to take preliminary requirements and got the chance to try out our CMMI Top-level Work Plan template. I've also inherited the one-and-only .NET application which is a key system in the organization.

I'm glad my patience of waiting finally paid-off (a little) as I can now spread and demonstrate my .NET knowledge to my peers. I'm sharing my experiences in .NET with a new colleague assigned to me to work on the system and she is skilling-up in C# and Transact-SQL.

The system which I inherited, a Time Management system isn't in good-shape. There were many flaws in the design such as no considerations given for an extensible architecture and poor database design practices. There were tables that contain up to 8 composite keys and some tables had composite-keys made up of char and datetime which kills performance.

It will take a lot of effort to maintain this system but I guessed it is worth it since it is in .NET. I won't let it die so easily - unless someone wants to rebuild it on some other technology... which I hope not.

Anyway, let's see how everything goes from here...