March 2007 - Posts

ZenZui looks stunning on mobile devices

I am not sure about today. I am kinda crazy about mobile software. First with Deepfish, now with ZenZui. See this site http://www.zenzui.com/ and this youtube video http://www.youtube.com/watch?v=r12eUXJNbl8&eurl=http%3A%2F%2Fblogs%2Emsdn%2Ecom%2Fjasonlan%2Farchive%2F2007%2F03%2F28%2Fzenzui%2Dstop%2Dsurfing%2Dstart%2Dzooming%2Easpx

Very very cool. The only problem is that the site loads very slow in IE 7. The rendering on my browser is a bit sloppy. I had checked on their career sections, looks like their employment benefits are cool too. Seattle my dream place to work one day :P 

Something to look at if I have a Windows Mobile one day.

Posted by chuawenching with no comments
Filed under:

Microsoft Live Labs Deepfish

This is something interesting. Well I don't own a mobile device, but from the flash demo it looks very useful.

http://labs.live.com/Deepfish/videos.aspx

Take a look if you are not aware of this.

Posted by chuawenching with no comments
Filed under:

C# DateTable.Select - DateTime comparison filter

Dear all,

  I got an email from my colleague today. Basically he wanted to filter a DataTable based on a date range. So I decided to help him out. I am using a Console application to demonstrate the solution, however you can do this in asp.net as well. Same stuff :)   

  One thing to take note, I will recommend you to use foreach to loop through the records. First why foreach? Well if you are not sure how many records that you are getting back from database, use foreach. If you know how many, then use for loop. Basically a lot of people say that it is not possible to do this for this scenario:

  foreach (DataRow dRow in dt.Rows)

  So they came into conclusion that foreach were not an option and recommended as below:

  DataRow[] dRow;

  dRow = dt.Select(filter);

  // do your processing here

  However you can do this instead:

  foreach (DataRow dRow in dt.Select(filter))

  Easy right?

   Below is a sample code that is functional. Try it and you will see J

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            // Accepts Input

            string dateFrom = Console.ReadLine();

            string dateTo = Console.ReadLine();

            DateTime daDateFrom = DateTime.Parse(dateFrom);

            DateTime daDateTo = DateTime.Parse(dateTo);

            DataTable dt = GetFromDatabase();

            string filter = "DateFrom > '" + daDateFrom + "' AND DateTo <= '" + daDateTo + "'";

            // It is not necessary to create DataRow[] array

            // Use foreach as it is much cleaner

            foreach (DataRow dr in dt.Select(sToFiler))

            {

                Console.WriteLine(dr["Name"].ToString());

            }

        }

        private static DataTable GetPreviousEntry()

        {

            DataTable dTable = new DataTable("Table1");

            dTable.Columns.Add("Name", typeof(string));

            dTable.Columns.Add("DateFrom", typeof(DateTime));

            dTable.Columns.Add("DateTo", typeof(DateTime));

            dTable.Rows.Add("Chua Wen Ching", "03/28/2007", "04/01/2007");

            dTable.Rows.Add("Nazir", "1/1/2005", "04/01/2007");

            dTable.Rows.Add("Mahzan", "1/1/1999", "04/01/2007");

            return dTable;

        }

    }

}

Posted by chuawenching with 1 comment(s)
Filed under: ,

ASP.NET 2.0 Repeater – Nested + Odd Indentation Issue

I will be talking a bit of nested repeater and something you should be aware on the space indentation issue of an ASP.NET 2.0 Repeater control. So if you already know about how to achieve nested repeater, you can just look at Step 6 right at the bottom.

Parent Repeater

è Nested Repeater

Assuming you have 1 Applicant named Chua Wen Ching. Chua Wen Ching owns multiple programs which are Program A, Program B and Program C. Apparently each of this program has secondary owners. Example Program A is also owned by Eric, Kent and Sharon. Program B is only owned by Kent. Lastly Program C has no owner.

So you will see this:

Wen Ching

1. Program A

                à Eric

                à Kent

àSharon

2. Program B

                à Kent

3. Program C

For this case, I can decide whether to place Wen Ching in the Parent repeater or outside the repeater. It is entirely up to you.

Example 1 – Outside of the repeater

<tr>

  <td colspan=”3”>

      <asp:Literal ID="ltrName" runat="server" />

  </td>

</tr>

<tr>

  <td colspan=”3”>

    <asp:repeater />

  </td>

</tr>

 

For this case, basically you can retrieve the name from the database and store into a literal control. Of course you can use any controls you want. Up to your creativity and needs.

You can do this as well if you want.

Example 2 – Inside the repeater

<tr>

  <td colspan=”3”>

    <asp:repeater …>

      <HeaderTemplate>

           <table …>

              <tr>

                 <td>

                        <%# DataBinder.Eval(Container.DataItem, "Name")%>

                 </td>

             </tr>

          </table>

      </HeaderTemplate>

   </asp:repeater>

  </td>

</tr>

 

Take note, it is crucial that you place that Name inside the HeaderTemplate and not the ItemTemplate or else you will get duplicate names “Wen Ching” all over the place.

So this is how you expect to see in your web form.

Chua Wen Ching

1

:

Program A

Also Owned By

Eric

Kent

Sharon

2

:

Program B

Also Owned By

Kent

3

:

Program C

 

Let’s look at the code below. This is a bit long, but bears with it. I will explain further right after the codes listing.

Listing1.cs

<asp:Repeater ID="rptParent" runat="server" OnItemDataBound="rptParent_ItemDataBound">

    <HeaderTemplate>

        <table id="tblParent" cellpadding="0" cellspacing="0" style="width: 100%">

    </HeaderTemplate>

    <ItemTemplate>

        <tr>

            <td colspan="3">

                <table id="tblParent" cellpadding="0" cellspacing="0" style="width: 100%">

                    <tr>

                        <td style="width: 2%">

                        </td>

                        <td style="width: 20%">

                        </td>

                        <td style="width: 1%">

                        </td>

                        <td style="width: *">

                        </td>

                    </tr>

                    <tr>

                        <td style="vertical-align: top">

                            <strong>

                                <%# RecordNumber++ + "." %>

                            </strong>

                        </td>

                        <td>

                            <em>Program Name</em>

                        </td>

                        <td>

                            :

                        </td>

                        <td>

                            <%# DataBinder.Eval(Container.DataItem, "ProgramName")%>

                        </td>

                    </tr>

                    <tr>

                        <td>

                            &nbsp;

                        </td>

                        <td>

                            <em>Program Date</em>

                        </td>

                        <td>

                            :

                        </td>

                        <td>

                            <%# DataBinder.Eval(Container.DataItem, "ProgramDate", "{0:dd-MMM-yyyy}")%>

                        </td>

                    </tr>

                    <tr>

                        <td colspan="4">

                            <br />

                        </td>

                    </tr>

                    <tr align="center">

                        <td colspan="4">

                            <asp:Repeater ID="rptChild" runat="server">

                                <HeaderTemplate>

                                    <table id="tblChild" cellpadding="0" cellspacing="0" style="width: 90%">

                                        <tr>

                                            <th colspan="3">

                                                Also owned by

                                            </th>

                                        </tr>

                                        <tr>

                                            <td colspan="3">

                                                <br />

                                            </td>

                                        </tr>

                                </HeaderTemplate>

                                <ItemTemplate>

                                    <tr>

                                        <td style="width: 20%">

                                        </td>

                                        <td style="width: 1%">

                                        </td>

                                        <td style="width: *">

                                        </td>

                                    </tr>

                                    <tr>

                                        <td style="text-align: left">

                                            <em>Extra Owner</em>

                                        </td>

                                        <td style="text-align: left">

                                            :

                                        </td>

                                        <td style="text-align: left">

                                            <%# DataBinder.Eval(Container.DataItem, "ExtraOwner")%>

                                        </td>

                                    </tr>

                                    <tr>

                                        <td colspan="3">

                                            <br />

                                        </td>

                                    </tr>

                                </ItemTemplate>

                                <FooterTemplate>

                                    </table>

                                </FooterTemplate>

                            </asp:Repeater>

                        </td>

                    </tr>

                    <tr>

                        <td colspan="4">

                            <br />

                        </td>

                    </tr>

                </table>

            </td>

        </tr>

    </ItemTemplate>

    <FooterTemplate>

        </table>

    </FooterTemplate>

</asp:Repeater>

Step 1

<tr>

    <td style="vertical-align: top">

        <strong>

            <%# RecordNumber++ + "." %>

        </strong>

    </td>

    <td>

        <em>Program Name</em>

    </td>

    <td>

        :

    </td>

    <td>

        <%# DataBinder.Eval(Container.DataItem, "ProgramName")%>

    </td>

</tr>

Basically you have this code inside your parent repeater ItemTemplate. It will auto increment depends on your data. Assuming you have 10 programs then you will have 1 – 10 numbers.

RecordNumber is a property in the codebehind. It is encourage that you assigned to 1 whenever you try to bind data to this repeater. Or else you will get a continuous counter value.

In order to bind the Program Name, you use the DataBinder.Eval. Take note, there are other ways to do it. This is just 1 way.

Remember the “ProgramName” is part of your data pulled from the database.

Example,

SELECT ProgramID, ProgramName FROM tbMIND

If you try to assign something here which is not part of the data source, you will get an error for sure.

Step 2

You can format your data easily like below.

<%# DataBinder.Eval(Container.DataItem, "ProgramDate", "{0:dd-MMM-yyyy}")%>

Well if you decide to do this within your Entity layer for formatting is still possible. Up to your coding choices.

Step 3

<asp:Repeater ID="rptChild" runat="server">

 

Okay you will add another repeater control within the ItemTemplate of the parent’s repeater. This is how nested works?

Looks easy right.

Step 4

Now, how do you populate data into this nested repeater?

First you need to assign an event “ItemDataBound” to your parent repeater. See the code below:

protected void rptParent_ItemDataBound(object sender, RepeaterItemEventArgs e)

{      

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

    {

        DataRow dr = ((DataRowView)e.Item.DataItem).Row;

        Repeater childRpt = (Repeater)e.Item.FindControl("rptChild");

        DataTable dTable = BizRule.PopulateChild(decimal.Parse(dr["ProgramID"].ToString()));

 

        if (dTable.Rows.Count > 0)

        {

            childRpt.DataSource = dTable;

            childRpt.DataBind();

        }

    }

}     

There is no way you can access the Child Repeater directly from your page without using the FindControl method.

Repeater childRpt = (Repeater)e.Item.FindControl("rptChild");

 

Now the question is how am I able to get the row’s Program ID value?

You have to use DataRowView to cast the “e.Item.DataItem” in order to get the row and assigned to a DataRow like below.

DataRow dr = ((DataRowView)e.Item.DataItem).Row;

Then to get the value of the Program ID, do this

dr["ProgramID"].ToString()

 

Get this ProgramID and pass it to your method. As you see in my nested repeater, I am looking for other owners who have connections with this Program ID. Basically I have a static BizRule method called PopulateChild which accepts 1 parameter which is Program ID and returns a DataTable.

If you are using this DataTable way, it is best you check for dTable.Rows.Count > 0.

Then you get this DataTable and assign to the repeater DataSource and DataBind it. Just like you do for any other Data controls in ASP.NET 2.0.

Step 5

When you run this, you will get to see what you want.

However there is something that you will not expect to happen.

Below is a sample screen (using tables)

Chua Wen Ching

1

:

Program A

Also Owned By

Eric

Kent

Sharon

2

:

Program B

Also Owned By

Kent

3

:

Program C

 

Take note, this only happens if you have more than 5 rows of data. You will not see if you have less than 5 rows. Give it a try.

That drives me crazy at first. As you know I have been using the html code for all my web development tables. Well it never went wrong before, not until using it in a repeater.

Step 6

There is a solution. If you read my other post, I use similar concept for the HTML table.

Add this

table-layout: fixed;

inside the tblParent’s style.

Example,

<asp:Repeater ID="rptParent" runat="server" OnItemDataBound="rptParent_ItemDataBound">

    <HeaderTemplate>

        <table id="tblParent" cellpadding="0" cellspacing="0" style="width: 100%">

    </HeaderTemplate>

    <ItemTemplate>

        <tr>

            <td colspan="3">

                <table id="tblParent" cellpadding="0" cellspacing="0" style="table-layout: fixed; width: 100%">

Now try again and you will see the results you want. You only need to add in 1 table. Not all the tables.

Hope you find this interesting. I know the starting part can be beginner to everyone. I am not sure whether you find this indentation problem happening in your repeater. But it happens in my current environment Windows Vista Ultimate Edition + Internet Explorer 7.

Thanks.

Posted by chuawenching with no comments
Filed under:

C# & T-SQL: Search character ends with ‘-‘, gets that index and substring

This is how I achieve this? But I am thinking real hard. Is there a shorter or better way to achieve this? It looks so tedious man.

Basically I want to extract only Chua Wen Ching.

C# (tested on version 2.0)

string originalString = “A – Chua Wen Ching”;

string searchString = "-";

int keywordIndex = originalString.IndexOf(searchString) + 2;

string output = originalString.Substring(keywordIndex, originalString.Length - keywordIndex);

// ignore of using extra string declarations, which it can also be done in 1 line in string output

T-SQL (tested in SQL Server 2005)

SELECT

                SUBSTRING(Name, CHARINDEX('-', Name) + 2, DATALENGTH(Name) - (CHARINDEX('-', Name))) AS 'Name'

FROM

                [SomeTable]

Still thinking of a better way to write that.

Posted by chuawenching with 2 comment(s)

Dad's Retiring and stopping his business

Just got to know that my dad is retiring from his business and job. I was at first shocked as my sister is still studying in university and my dad is supporting her. 

Well basically my dad is on a business specializing on kitchen utensils in my hometown Muar. Being in the industry even though he is the boss, he had been carrying heavy stuffs which had caused both of his legs to bent. The doctor had advised him to stop from his job or else it will worsen.

I agree with my elder brother that he should retired. I saw my dad'e legs few weeks ago and I was shocked. Luckily he can still walk. Looks like it is time for me to support both my dad and mum. I cannot fully rely on my elder brother to support them. As the 2nd son, I need to help too. Need to allocate more money on that.

Will work harder to support my parents including my sister who is still studying. Since they had always been supporting me since I was borned.

Posted by chuawenching with no comments
Filed under:

MIND hits 1000 member on March 23, 2007

Yes. Finally we had achieved 1000 members since last revamped in September 2006. It was really challenging back then whether we should revamped and restarted our members base 4000 people. As my observation, even back then we had 4000 members most of them were ghost or dead members. The outside of MIND was very good but I was deeply sad about the inner part. That was a good decision though to revamp.

With the current members, at least as a president I understand most of the people who are active, contributing, only attends my monthly gatherings, etc. Not only just members, but also contributors. MIND will extend beyond that. You will see :)

The quality threads in MIND are maintained. No more crappy topics like the old days. Well at first we really had difficulties as older members who were pro open source or those didn't agree with my team's mission & objectives were rebellious. MIND is a very focussed group aiming at driving Microsoft Development Technologies, not just .NET. However at this moment MIND is only for professionals and only on Microsoft platform. I have not considered in moving to other platforms yet. However we remains independents. We can move to other technologies one day, who knows :)

MIND is more successful at our actual community instead of online. This is something that MIND should improve on. Hoping MIND can have a good and growing online community.

The speakers who contributed in past MIND sessions would be appreciated. Example there will be a dinner this Sunday to express our courtesy to the people who contributed, same to sponsors.

Furthermore among the 3 main communities which were part of TechNation (MIND, SPAN and ELITE), MIND remained the largest and most active community since last year starting from zero members base unlike the other 2 communities. Well that is my personal observation as I am aware of the number of events other communities have inclusive the average people attending the session.

Throughout MIND leadership, I met a lot of people who volunteered to help and also be part of the team ended up doing nothing. I was very lenient in selecting individuals to help in MIND back then.

It will no longer happen for this time. I will be very strict and ensure quality for each contributor even MIND is a community. Hoping to collaborate with other communities like SgDotnet, IASA and attracting more sponsors to MIND community.

Thanks.

Posted by chuawenching with 3 comment(s)
Filed under:

ASP.NET 2.0 Autowrapping in GridView - Is that possible?

I was investigating on this couple of minutes ago. Before I start, thanks to Feelite for sharing your view on this in MSN Messenger. He recommended me to use CSS but it did bring me to somewhere.

I will explain further.

I will start my investigation from the very start.

Let’s assume you have such data that you had retrieved from the database.

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

 

So what do you see here? All the data from both columns are stick together in 1 word.

Question: Can this be auto wrapped in GridView by default?

Answer: No. It will not be auto wrapped for this case. However …

If you have such data

Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbb ccccccccccccccccccccccccccccccccccccccccc

cccccccccccccccccccccccc dddddddddddddddd

bbbbbbbbbbbbbbbbbbbb

bbbbbbbbbbbbbbbbbbbbbbbbbb

bbbbbbbbbbbbbbbbbbbb

 

As you see in column one, there are 4 long words (each representing an alphabet). It will be auto wrapped.

Question: That doesn’t answer what I really want to achieve here?

Answer: Hold on J

Honestly speaking, I can’t really find a way to solve this within GridView capabilities. However getting some feedback from Feelite, using CSS is more suitable for this scenario. After all CSS is more suitable for visualizing your data. Stop thinking too far of building your custom GridView for this.

So Feelite recommended using this CSS attribute:

word-wrap: break-word;

When I typed that line of code in CSS editor part of Visual Studio 2005, you will be surprise that line of code will be underlined in red. When you mouse over to it, you will see this “word-wrap is not a known CSS property”.

Be calm. Actually it works fine in the browser. Just ignore it probably Visual Studio 2005 is a bit sensitive. When you research further online, you will find out that word-wrap only works on Internet Explorer 5.5 and onwards. I am working on Internet Explorer 7 and it works fine.

So let’s hands on and make this to happen.

Create a CSS file named “SgDotNet.css” (well I am advertising SgDotNet :P)

Type this code in this file

td

{

word-wrap: break-word;

}

In your ASP.NET 2.0 html code, type this:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">

                <Columns>

                    <asp:BoundField DataField="Name" HeaderText="Name" />

                    <asp:BoundField DataField="Number" HeaderText="Number" />

                </Columns>

            </asp:GridView>

In your code behind, do this:

DataTable dTable = new DataTable("Test");

        dTable.Columns.Add("Name");

        dTable.Columns.Add("Number");

        dTable.Rows.Add("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

bbbbbbbbbbbbbbbbbbbbbbbbbbb");

        dTable.Rows.Add("ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", "dddddddddddddddddddddddddddddddddddddddbbbbbbbbbbbbbbbbbbbbbbbccc

cccccccccccccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddd");

 

        GridView1.DataSource = dTable;

 

        GridView1.DataBind();

Take note, you can do anything on the DataBinding. Up to your creativity to simulate this.

Nothing fancy here.

Okay let get it straight. Why I code td inside my CSS file as a GridView is actually a table during runtime. Try to view source at your web application and you will know what I mean. If you decide to create a special CSS Class for this, it is possible also.

When you run this, guess what you will see?

No way. It doesn’t wrap at all. That is very weird. It is suppose to work. Weird.

Then I think maybe I did not set the width=”100%” in my GridView property. Let’s do it now.

<asp:GridView ID="GridView1" Width="100%" runat="server" AutoGenerateColumns="False">

                <Columns>

                    <asp:BoundField DataField="Name" HeaderText="Name" />

                    <asp:BoundField DataField="Number" HeaderText="Number" />

                </Columns>

            </asp:GridView>

 

Okay fine. No difference yet.

Maybe I need to think out of the box, and set the width 100% in my table CSS attribute

table

{

width: 100%;

}

Nope. It doesn’t work. Some even recommended me to do this.

table

{

width: 99%;

}

Nope. It doesn’t work.

So what is the work around for this.

Let’s do some magic here.

Try this:

table

{

      table-layout:fixed;

}

Yes. That is the key for everything. You must set the table-layout: fixed attribute. Without this, you will keep see the horizontal scrollbar problem. Yikes.

Okay before I end this with a conclusion, I will recommend you to do this:

For your td element, do this instead of just having word-wrap attribute.

td

{

 white-space: pre-wrap;       /* css-3 */

 white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */

 white-space: -pre-wrap;      /* Opera 4-6 */

 white-space: -o-pre-wrap;    /* Opera 7 */

 word-wrap: break-word;       /* Internet Explorer 5.5+ */

}

You can research more online on the supported browsers. The 5 above should be sufficient for your needs.

Conclusion:

a) Make sure you have set the table-layout attribute at the table level. You cannot do this:

td

{

 table-layout:fixed;

 white-space: pre-wrap;       /* css-3 */

 white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */

 white-space: -pre-wrap;      /* Opera 4-6 */

 white-space: -o-pre-wrap;    /* Opera 7 */

 word-wrap: break-word;       /* Internet Explorer 5.5+ */

}

It won’t work.

b) Even though word-wrap is an unknown property in Visual Studio 2005, in reality it works just fine.

c) GridView is just a table on runtime.

d) Use CSS to do this auto wrapping thing. You can of course write a super magic code to wrap your codes in the RowDataBound event of your GridView. But let’s think of simplistic.

e) With table-layout, it is possible to make it work even your GridView width is only 70%. It doesn't matter on what size you have? Try it :) I tested on 70% and 100%.

So it is possible to achieve auto wrapping for my scenario on top. Let me know if you have further doubts.

Thanks.

Posted by chuawenching with 5 comment(s)
Filed under: ,

ASP.NET 2.0 - HyperLinkField DataNavigateUrlFields more than 1 key

This is really straightforward. I hoped that I had not repeated on this one before. I did mentioned about DataNavigateUrlFields but it was more to one key instead of multiple keys and only pass 1 key through query string. Haha.

Basically in a GridView, like below:

No

Name

Detail

1

Chua Wen Ching

Click Me

1

Eric Chua

Click Me

 

You have a SQL statement like this:

SELECT [NameID], [NameType], [Name] FROM PersonalInformation

ORDER BY [Name] ASC

Well you only plan to show the Name. Now when you click on “Click Me”, you are supposed to pass NameID and NameType.

So how can you achieve this? Do this as below.

<asp:HyperLinkField DataNavigateUrlFields="NameID,NameType" DataNavigateUrlFormatString="~/Admin/frmPersonalDetails.aspx?nameid={0}&nametype={1}" HeaderText="Detail" Text="Click Me" />

 

Easy right. You can have as many keys you want. Take note, NameID and NameType do not need to place under DataKeyNames attribute part of GridView. If you have 5 keys to pass through query string, do this:

www.mind.com.my/default.aspx?key1={0}&key2={1}&key3={2}&key4={3}&key5={4}

Posted by chuawenching with 1 comment(s)
Filed under:

IASA Summit 2007 - Buy 2 Free 1 ONLY to MIND members

There is a lot of effort taken from my side & team in order to bring better benefits to all MIND members. Like this one. Basically IASA will have a very interesting event soon which focusing on Architects. Basically I had secured a deal between IASA and Microsoft. With very purchase of 2 tickets for this event, Microsoft will pay another ticket to that MIND member for free.

Really hope to see my MIND members appreciate all this.

http://mind.com.my/blogs/latestnews/archive/2007/03/16/IASA-IT-Architect-Symposium-_2D00_-Special-Promotion-ONLY-to-MIND-Members.aspx

Posted by chuawenching with no comments
Filed under:

Building a better team in Mesiniaga – New Hardware and Bowling

I am not just doing community externally but also within Mesiniaga’s Microsoft Developers Team. One of my initiatives is to help my colleagues to upgrade for a better machine.

Wow. My colleague got a brand new Dell desktop “Optiplex 745” machine which is so capable for Vista. Why I am so happy about it? Originally my Project Lead only wanted to give her Pentium M or the older generation which was Pentium 4. But I recommended her to think of long term benefits and after a few times convincing her, she got her this cool desktop hardware.

With 17” LCD monitor + 2 GB of RAM + 1 ATI (if not mistaken) and of course Core 2 Duo (the best specs till now)

I am happy to see my juniors getting better machines. She was the 3rd person who I had helped to push the hardware. Previously, lots of them complain on the slow machine. Guess I had done an excellent job in getting them passionate about their jobs. Furthermore I just request for another one for my colleague. Hope it will be approved.

Well not only that I had taken another big step to seek a budget for bowling team building session next Friday in this team. I am targeting 40 people including the Human Resources. It is very tough as there is no such allocation budget for such activities here. Guess I make things impossible and happening.

I still know my boundaries and I know when I should not have crossed it.

Phew J

Posted by chuawenching with no comments
Filed under:

Got 11.33% Increment – Is this a lot?

I am not sure whether it is a lot though. But I heard my company average increment was around 7%. My boss told me that at my grade as a developer the salary increment I got was one of the best.

I was actually expecting more. Basically in my company performance rating 1 to 4  (1 = best; 2 = good; 3 = average; 4 = bad) I got 2 and my mark was very close to 1. Plus I was highlighted in the company’s portal under Thought Leadership for lots of times. Meanwhile, I received quite a number of praises email from managers from other departments.

Just imagine while maintaining a good record at work plus I am doing so many community works, I almost no time for my personal life. Mum was complaining last weekend. Hehe. Lucky I am not longer attached with a girl friend. Life is so free now.

Lastly I was sad at first on this percentage as I was expecting at least 20%. But I believe working in passion is the key to be successful in career. Probably have to be patience.

Posted by chuawenching with 3 comment(s)
Filed under:

Windows Server 2003 Service Pack 2 is out

Just got to know today. Outdated again lol :)

Time to patch your servers now.

But it is only for 32 bits server

Download here http://www.microsoft.com/downloads/details.aspx?FamilyID=95ac1610-c232-4644-b828-c55eec605d55&DisplayLang=en

Posted by chuawenching with no comments

Visual Studio 2005 Service Pack 1 Update for Windows Vista

Yes finally it is out http://www.microsoft.com/downloads/details.aspx?FamilyId=90E2942D-3AD1-4873-A2EE-4ACC0AACE5B6&displaylang=en#Overview

Oops. I am not too updated on the service pack. It was released on 6th of March 2007.

Hope it solves my previous mysteries.

Posted by chuawenching with no comments
More Posts Next page »