Comments

# jokiz's blog said on August 12, 2005 8:57 PM:

In relation to my previous post on Anchoring bugs, here is a follow up.  Most developer uses visual...

# anjin said on August 14, 2005 12:46 AM:

hi!

i believe the reason they explicitly said "Do not use Hungarian notation" is because the notation was so misunterstood by people, it was better not having it.

When Charles Simonyi invented the hungarian notation, his original purpose was to prefix a variable based on their type (meaning purpose), rather than the type of the variable in a language.

So for example you'll have "ms" for milliseconds and "tck" for ticks. If you see a code like

msTotal + tckPrev

then it's obviously wrong, since they are not of the same type (purpose) even if they maybe both Integers (so the compiler does not notice).


# Supremo said on August 17, 2005 9:51 PM:

You can also do this way

try{

}
catch{throw;}

# keithrull said on September 11, 2005 4:47 PM:

Yeah, they dont allow executable and dlls to be attachments. they even read the contents of zip files to check if it contains those type of binaries and if you change your extension to .txt, it would put the contents of that file to the message. so if you rename a executable to .txt, you will see tons of garbage appended to your message. :)

# jokiz said on September 14, 2005 6:11 PM:

i assume that you will also have something to do inside the catch block aside from rethrowing because there's no sense of catching it in the first place.

Note that a non-parameterized catches all the other exceptions not defined in managed code.

# jokiz said on September 14, 2005 6:13 PM:

ic, well thanks for those additional info keith...

# dehran ph said on October 13, 2005 7:44 PM:

So you track Brad Adams blog, it very nice entries. I found that topic there.

# jokiz said on October 17, 2005 9:04 PM:

hmmm, wasn't able to read this entry from his blog, found this out the hard way... :p

# keithrull said on October 21, 2005 3:15 PM:

Isn't DatakeyField still allowed in 1.1? i still use it.

# jokiz said on October 23, 2005 10:45 PM:

i also use it, but it only works for single column/property PK not for complex/clustered PKs

# dehran ph said on November 9, 2005 2:26 AM:

like this?
public int DeleteCustomer(int customerId){

}

instead of
public int DeleteCustomer(Customer customer){

}

now you'll hate me, hehe...

# jokiz's blog said on November 9, 2005 8:26 AM:

In response to dehranph's comment on my previous post (http://community.devpinoy.org/blogs/joeycalisay/archive/2005/11/08/401.aspx),...

# Keith Rull said on January 3, 2006 10:29 PM:

Finally! We haved decided who won the "Why should Keith give me the VS.NET and SQL Server 2005 Cds!" contest. It was a tough judgement that me and our judge Woody Pewitt, my local Microsoft Evangelist need to take.

As with any contest, we were hoping that alot of people would be joining the contest since the prize is every .NET Developers dream.. A package containing both VS.NET 2005 and SQL Server 2005.

The decision making process long hard but we dont want to torture ourselves thinking about who would win the prize between the entries of jokiz, kitty_droza, and allice_666. So Woody just decided to give this guys 1 copy each of their very own Visual Studio 2005 Standard Edition and SQL Server 2005 Standard Edition!!!! Thanks Woody! [:)]

Congratulations guys! You stepped up and what can I say, you've earned yourselves this covetted prize!

God Bless you guys and develop more cutting-edge applications with this latest and greates software that has been added to your geek toolbox!

# Keith Rull said on January 3, 2006 10:30 PM:

Finally! We haved decided who won the "Why should Keith give me the VS.NET and SQL Server 2005 Cds!" contest. It was a tough judgement that me and our judge Woody Pewitt, my local Microsoft Evangelist need to take.

As with any contest, we were hoping that alot of people would be joining the contest since the prize is every .NET Developers dream.. A package containing both VS.NET 2005 and SQL Server 2005.

The decision making process long hard but we dont want to torture ourselves thinking

# Keith Rull said on January 3, 2006 10:33 PM:

Finally! We haved decided who won the "Why should Keith give me the VS.NET and SQL Server 2005 Cds!" contest. It was a tough judgement that me and our judge Woody Pewitt, my local Microsoft Evangelist need to take.

As with any contest, we were hoping that alot of people would be joining the promo since the prize is every .NET Developers dream.. A package containing both VS.NET 2005 and SQL Server 2005. But then again, only the boldess survive and succeeds in this goal driven world.

The decision making process was long and hard and we dont want to torture ourselves thinking about who should win the prize between the entries of jokiz, kitty_droza, and allice_666. So Woody just decided to give this guys 1 copy each of their very own Visual Studio 2005 Standard Edition and SQL Server 2005 Standard Edition!!!! Thanks Woody! [:)]

Congratulations guys! You stepped up and what can I say, you've earned yourselves this covetted prize!

God Bless you guys and develop more cutting-edge applications with this latest and greates software that has been added to your geek toolbox!

# keithrull said on January 11, 2006 9:13 AM:

i do this all the time... but ofcourse you need to be careful not to offend the other persons feelings...

i also have this excel file in my desktop of stuff that i have heard and learned that i want to read more about... it usually contains questions that i get from my co-developers or just sudden burst of my logical mind talking to me about certain streams in the IT realm.

# keithrull said on January 26, 2006 3:24 PM:

:) also thank Woody! he made the cd promo possible! :)

# jokiz said on January 26, 2006 7:04 PM:

yeah, i forgot his name while posting this entry. Thanks a lot Mr. Woody!

# keithrull said on January 27, 2006 12:04 AM:

we got more to come this february :) alot lot lot lot lot more :D

# dlconejos said on January 29, 2006 3:29 PM:

I believe that this book would be of good help for the university as well as for my students. Having a copy of this book would be a good review of its contents and outline to our subject Software Engineering. Knowing that here in the University of San Carlos, Computer Engineering Department, one of the major is Software Engineering then the book would then be very helpful. Not only to Software Engineering students but as a whole to the Computer Engineering community.

Engr. Dioscoro L. Conejos Jr.
Head, Computer Networks Cluster
Computer Engineering Department
University of San Carlos Talamban Campus
Cebu City 6000
Philippines

# kitty_drosa said on January 29, 2006 6:53 PM:

me too thanks sir
Im excited to study the msdn b4 continuing

# jokiz said on January 30, 2006 2:40 AM:

hi sir!

if you would like to join the contest, you would have to ask for your own blog space here, and not add your entry as a comment to mine. if you want, i can set you up for one...

# dehran ph said on February 8, 2006 6:26 AM:

I am using the .Net Configuration Snapin to manage my GAC. But very seldom I use the GAC.

# bonskijr said on February 9, 2006 3:03 AM:

you can also try Treesize Freeware(www.jam-software.com)..

# bonskijr said on February 9, 2006 3:05 AM:

The freeware TreeSize from Jam Software does the same thing too and it's not limited to XP. (www.jam-software.com)

# jokiz said on February 9, 2006 3:38 AM:

thanks but i don't really like installing too much...

# jokiz said on February 9, 2006 3:39 AM:

well i use it a lot to install controls...

# dehran ph said on February 9, 2006 5:28 AM:

And so to make our codes testable and benefit mock objects we need to code into into interfaces. btw joey, codebetter also have great articles and posts on testdriven and mock objects.

# cruizer said on February 9, 2006 10:09 AM:

i think one of the trickiest stuff to test is database interaction. try doing mock objects on that one!

mocking a DAL/DAO is easy, but mocking a database connection raises a lot of hairy issues.

# smash said on February 9, 2006 3:29 PM:

back in the old days we just code, debug and refine. frankly it still works. the real problem really is when we start coding without really fully understanding the parameters of the problem we are trying to solve.

# jokiz said on February 9, 2006 4:24 PM:

i got that bookmarked rodel and try to read more when i have time. thanks for that comment cruizer.

# keithrull said on February 9, 2006 5:23 PM:

i used to be a victim of this style before :P things change when you start realizing the true ways and means on how to validate objects using the .NET way. :)

# keithrull said on February 9, 2006 5:32 PM:

btw, he probaly is from the vb.net realm.. in vb.net 1.1 we dont have the as operator... in 2.0 we have something in similar called trycast()

# jokiz said on February 9, 2006 6:09 PM:

from a vb.net perspective, i know they can use equality of types, i dunno the syntax but i've come across it before...

# jokiz said on February 9, 2006 6:20 PM:

they have is pre, if typeof control is TextBox

# cruizer said on February 9, 2006 8:41 PM:

i have my own reason for avoiding P/Invoke and COM interop: I'd like my app to be cross-platform someday :D

# keithrull said on February 9, 2006 9:17 PM:

i think the typeof thingy is different from the as statement. try mo tol sa reflector.. trycast lalabas :)

# keithrull said on February 9, 2006 9:18 PM:

INI Files! Yikes!

# jokiz said on February 10, 2006 1:02 AM:

both is and as operators tries a cast internally kaya nga mas efficient and as kasi you have already cached the object to a variable when you want to do something with the validated type instance. is statements are perf hit for fxcop if you try to cast the instance after an is statement

# bonskijr said on February 15, 2006 6:49 AM:

heheh, good cover

# keithrull said on February 21, 2006 7:01 PM:

i'm proud of you man! :)

# bonskijr said on February 22, 2006 8:42 AM:

Keep it up...

# budoi said on February 22, 2006 4:21 PM:

You the man. Keep those topics coming...

# jokiz said on February 22, 2006 9:09 PM:

thanks guys!

# cruizer said on February 26, 2006 10:48 PM:

the TDS protocol allows non-Windows machines to access SQL Servers too :)

also you might be interested to find out that the TDS protocol originated with Sybase, not Microsoft. MS SQL Server was in fact a Sybase port targeted towards x86 little servers then in the times when big-iron UNIX ruled the roost.

# jokiz said on February 26, 2006 11:23 PM:

as long as they can understand the protocol, dapat pwede.

i know that it was formerly called Sequel bought by MS from Sybase.  thanks master...

# cruizer said on March 3, 2006 1:48 AM:

thanks for the heads-up jokiz!

looks like there is no such thing as 0.0 in double precision floating point! :P

# bonskijr said on March 5, 2006 10:12 PM:

sort of like column selection in ultra-edit.. ayos ah.. thanks for the tip

# dehran ph said on March 6, 2006 12:37 AM:

this feature was inspired by java IDEs and TextPad.

# jokiz said on March 6, 2006 1:19 AM:

are you sure?  wordstart has it before says usenet...

# cruizer said on March 6, 2006 1:46 AM:

yep wordstar had it decades ago Stick out tongue [:P]

# CryptoKnight said on March 6, 2006 2:38 AM:

yep, wordstar & sk (sidekick)! ;-)

# dehran ph said on March 6, 2006 4:36 AM:

haha really, well I am very sure ws4 dont have this before.

# cruizer said on March 6, 2006 9:41 PM:

meron wordstar 4! :)

^KB, ^KK and ^KN yata...

# bonskijr said on March 7, 2006 12:42 AM:

inde ba ^KC? nkalimtan n rin heheh.. sa ultraedit ALT-C lng yan eh

# CryptoKnight said on March 7, 2006 12:57 AM:

^KC is copy yata... kung hindi ^KN baka ^KH.

nagkakahalataan ng age... ;-)

# dotnetapp said on March 7, 2006 7:50 AM:

oo nga nagkakahalataan na ng age ha ha ha :D

^KB - mark start of a block
^KK - mark the end of a block
^KN - set mark on column mode.
^KC - copy
^KH - hide marks.
^KX - delete

yes sidekick and wordstar had this long time ago.

Thanks for the power ALT tip.

# cruizer said on March 9, 2006 4:04 PM:

ah, according to Kent Beck the power of test-driven development is that it gives you the confidence to take teensy-weensy steps (e.g. that set property test you discussed above) and big steps (e.g. test a big/crucial method). so it really depends on you.

in my case i'd rather not take the teensy-weensy steps if i'm pretty sure of what i'm doing. besides, the tests in the big steps are likely to fail if simple property set/get are not working OK. that's why it's crucial to have comprehensive tests in the big/crucial methods. you shouldn't be contented with like one or three test cases just for it. i think a code coverage solution (like NCover) can help you find out if your tests are actually exercising only a small portion of your code (bad) or a large portion of it (good/better).

:)

# jokiz said on March 9, 2006 5:46 PM:

thanks andre for the feedback.

i think i'll try to look for automated generation of those teensy-weensy steps (so far i've seen codesmith templates that uses reflection) to complement those crux tests.

thanks also for the NCover tip.

# cruizer said on March 12, 2006 3:44 PM:

uy congrats! slides/videos naman dyan! Yes [Y]

# jokiz said on March 13, 2006 1:15 AM:

thanks! di pa ako tapos article...

# cvega said on March 13, 2006 7:52 PM:

Press Ctrl-Enter to insert page-break.

# CryptoKnight said on March 13, 2006 7:53 PM:

you can use Ctrl+Enter as a shortcut ;-)

# jokiz said on March 13, 2006 9:17 PM:

thanks guys

# Orange said on March 13, 2006 9:20 PM:

You will post it? Cause, I've been reading your blog since I start studying .NET. It's nice to learn from the .NET masters. :)

# TuldokLambat said on March 13, 2006 11:14 PM:

I wish there's something like that in real life, just "press <key>" to take a real break <sigh>.

# cruizer said on March 14, 2006 5:50 PM:

i think the first time you accessed the site, it wasn't able to capture your user credentials. the fake yahoo login page just serves to capture your username/password; it can't capture your cookie (because the domains are different). when it redirected you to the real yahoo site (after it captured what you typed in the username/password boxes) of course you were already logged in to yahoo. so there.

matakot ka lang kung itinype mo mismo yun username and password mo dun sa bogus login page! Stick out tongue [:P]

# cruizer said on March 14, 2006 5:54 PM:

oh yeah it's sending emails to

who_wants_my_picture@yahoo.com

spam away folks! Stick out tongue [:P]

# jokiz said on March 14, 2006 6:00 PM:

thanks a lot cruizer for the confirmation.

# dehran ph said on March 16, 2006 4:53 PM:

nakakainis nga yan, i often end up loading the BOL while what I want is just to clos the Ent. Mgr.

# cvega said on March 16, 2006 7:43 PM:

"Help" is not available to all the applets running in MMC. Applets cannot insert to context menu, it can only append, that explains the position of "Help" context menu's location.

# jokiz said on March 16, 2006 7:52 PM:

i don't get it.  when you open mmc, the "help topics" menu is included just below "close".

# dehran ph said on March 16, 2006 10:08 PM:

Because the MMC Snapins have predefinde interfaces and behaviour.

Obviously you can see that Help menu was under Actions menu and not on Help menu and the contents of ContextMenu is the contents of Actions Menu.

# jokiz said on March 16, 2006 10:41 PM:

again, again... i'm talking about the context menu from the taskbar...

# bonskijr said on March 20, 2006 6:10 AM:

Apparently @@IDENTITY is a holdover from SQL Server 7 when there was no SCOPE_IDENTITY function yet. You're aware of the differences and you should always use SCOPE_IDENITY at all times, @@IDENTITY however has the advantage of being available  in TRIGGERS. SCOPE_IDENTITY will return NULL when used in a TRIGGER. Not to mention also that the author might have been targetting sql server 7 and up and wasn't aware of the new functions IDENT_CURRENT and SCOPE_IDENTITY

# jokiz said on March 20, 2006 5:14 PM:

duplicate post detected... :p

# cruizer said on March 20, 2006 5:44 PM:

yep, that library is cool. makes me wonder how come MS didn't create something like that for .NET 2.0

# punzie said on March 20, 2006 7:14 PM:

Mono uses the C5 generics collection library. I wonder how this compares.

# jokiz said on March 20, 2006 7:33 PM:

i agree.  i wonder why MS didn't include it in 2.0 special collections.  C5 collections for 2.0 is the alternative daw.  i haven't tried the powercollections yet...

# bonskijr said on March 21, 2006 4:36 AM:

hehe sensya na.. :P

# dehran ph said on March 21, 2006 7:59 PM:

I dont like using VS for executing and testing T-SQL scripts. Its error messages doesnt make sense most of the time, unlike using QA where detailed messages are given.

# jokiz said on March 21, 2006 8:45 PM:

yep, and it's easier to know which line caused the error in QA rather than the "incorrect whatever near ekek" of VS.  bearable though for minor script revisions...

# keithrull said on March 21, 2006 10:21 PM:

How about SQl Assist.

http://www.roundpolygons.com/

this used to be free a couple of months ago.

and http://www.promptsql.com/ which was the original sql intellisense tool

# jokiz said on March 21, 2006 11:44 PM:

well, as much as possible, i want to limit the running processes, so devenv power.

# dehran ph said on March 22, 2006 4:38 AM:

if you can reproduce this shot perhaps you can report this VS Team.

# jokiz said on March 22, 2006 4:48 AM:

i can because it's always what i see when i launch it... :p

# keithrull said on March 22, 2006 8:07 AM:

hmmmm.... have you reported this bug to microsoft yet?

btw, mine doesnt display the:

Open   Project | Website
Create Project | Website

mine only has project as option for create and open.

# TuldokLambat said on March 22, 2006 8:08 PM:

>>yep, and it's easier to know which line caused >>the error in QA rather than the "incorrect >>whatever near ekek" of VS.  bearable though for >>minor script revisions...

In addition, you only need to double click the error message and there you are in the offending line.

# phatrick said on March 22, 2006 11:22 PM:

hmm... I should be aware. coz mine too is from keith's. hehe. ;)

# jokiz said on March 23, 2006 5:05 PM:

it's not an issue phatrick... btw: you should be thankful, do you know how much is the standard edition, more expensive than the 2k books, :p

# Orange said on March 23, 2006 5:36 PM:

I like that info. :)

# dehran ph said on March 28, 2006 7:43 PM:

embedded resource gives me a lot of headache also  in VS 2005. When I accidentally delete a file under the resource folder, my toolbar disappear and all its buttons.

# cruizer said on March 29, 2006 11:55 PM:

ayos ito jokiz ah!

nmock pala gamit nya...

# keithrull said on March 30, 2006 9:08 AM:

I'm using coderush and refactor! pro as my productivity tool for Visual Studio and SQL Compare from Red Gate for sql.

I love using refactor so much that i was even looking for it when i was using NetBeans :D

# dehran ph said on March 30, 2006 11:23 PM:

I uninstalled my coderush because it makes my VS2005 really slow and behaves abnormally on windows forms. i quite contented with VS built refactoring tool.

# onlineshopper said on March 31, 2006 1:04 AM:

A WONDERFUL MOTHER

GOD made a wonderful mother,
A mother who never grows old;
He made her smile of the sunshine,
And He molded her heart of pure gold;
In her eyes He placed bright shining stars,
In her cheeks, fair roses you see;
God made a wonderful mother,
And He gave that dear mother to me.

~Pat O'Reilly~

http://www.phgifts.com/default.asp
http://www.phgifts.com/shopdisplaycategories.asp
http://www.phgifts.com/westernunion.asp
http://www.phgifts.com/guides.asp
http://www.phgifts.com/shopdisplayproducts.asp?id=41&cat=Roses
http://www.phgifts.com/shopdisplayproducts.asp?id=24&cat=Candles
http://www.phgifts.com/shopdisplaycategories.asp?id=19&cat=Cakes
http://www.phgifts.com/shopdisplayproducts.asp?id=74&cat=PlushToys
http://www.phgifts.com/banktransfer.asp
          M-O-T-H-E-R

"M" is for the million things she gave me,
"O" means only that she's growing old,
"T" is for the tears she shed to save me,
"H" is for her heart of purest gold;
"E" is for her eyes, with love-light shining,
"R" means right, and right she'll always be,
Put them all together, they spell "MOTHER,"
A word that means the world to me.
-----------------Howard Johnson----------------------

http://www.gifts2pinas.com/default.asp
http://www.gifts2pinas.com/shopdisplaycategories.asp
http://www.gifts2pinas.com/westernunion.asp
http://www.gifts2pinas.com/shopdisplayproducts.asp?id=41&cat=Roses
http://www.gifts2pinas.com/howtoorder.asp
http://www.gifts2pinas.com/banktransfer.asp
http://www.gifts2pinas.com/shopdisplaycategories.asp?id=19&cat=Cakes
http://www.gifts2pinas.com/shopdisplayproducts.asp?id=33&cat=GiftBaskets

Mother's Day Mini-Hats

One of my favorite television stations is Home and Garden Television.
I recently viewed a program that had a very good idea regarding making
a Hat Tree for Mother's Day.  
Mother's Day Mini-Hats

Whether it's a centerpiece for the Mother's Day luncheon, or just for
Mother's Day fun at home, these little hats are fun, easy, and
inexpensive to make. Even if you don't have a special event on your
calendar, you might make these for a Barbie doll, for place card
holders, or just because they really ARE fun to make.

Materials:
Styrofoam cups
acrylic paint, nylon net, ribbon, rubber stamps, etc. for decoration
cookie sheet

Steps:
1.Pre-heat oven to 350-degrees.
2.Place cups upside down on cookie sheet and place in oven for 1 to
1-1/2 minutes. The different length of time will give you different
results.
3.Decorate as desired.

Variation Suggestions:
1.Cut off the band from the top of the cup before baking.
2.Cut the cup in half before baking.
3.Cut the band using decorative scissors.
4.Paint or rubber stamp the cup before baking. Be certain to use
acrylic and / or other water based paint.
5.Give the hat a larger head size by placing an aluminum foil ball
under the cup before baking.
6."Plant" a tree of bare branches (lilacs are excellent) in a flower
pot and "grow" a tree full of hats.
7.Cut a 3" x 4" piece of card stock or construction paper and draw a
face on it. Roll into a cylinder, tape or glue to hold, and place a
hat on top. A pill bottle filled with a weight can be placed inside if
more stability is required.
8.Paint faces on eggs and place a hat on top.
9.Make a hat for a Barbie doll.
10.Use individual hats to decorate place cards.

http://www.manilablossoms.com/default.asp
http://www.manilablossoms.com/guides.asp
http://www.manilablossoms.com/westernunion.asp
http://www.manilablossoms.com/banktransfer.asp
http://www.manilablossoms.com/shopdisplayproducts.asp?id=41&cat=Roses
http://www.manilablossoms.com/shopdisplayproducts.asp?id=26&cat=Chocolates

Mothers Day Recipes

Mothers Day is the perfect time to pamper your mother with some delightful meals. Here are some great Mothers Day recipes ideas ranging from Mother's Day cakes, pies and cookies to Mothers Day breakfast, brunch and dinner recipe.

Mothers Day Cookie Recipes

Low Fat Peanut Butter Cookie Recipe
A low calorie, low fat treat you can try when you get that urge for a sweet treat.

Ingredients
1 can (14 oz.): Low fat sweetened condensed milk
3/4 cup: Reduced fat peanut butter
1/4 cup: Fat free egg substitute
1 teaspoon: Vanilla extract
2 1/4 cup: Reduced fat biscuit mix
1/4 cup: Sugar

Method
1.Mix the milk, peanut butter, egg substitute and vanilla with a mixer on a low setting until it becomes smooth.
2.Add the biscuit mix and blend them well. Cover and chill for at least 3 hours.
3.Preheat your oven to 350.
4.Drop the dough by teaspoonful 2 inches apart on a cookie sheet coated with nonstick spray.
5.Spray with sugar and bake the cookies until they become light brown, for about 6-8 minutes.

http://www.philflora.com/default.asp
http://www.philflora.com/shopdisplaycategories.asp?id=10&cat=Flowers
http://www.philflora.com/about_us.asp
http://www.philflora.com/shipping_policy.asp
http://www.philflora.com/shopdisplayproducts.asp?id=54&cat=Mother’sDay
http://www.philflora.com/shopdisplaycategories.asp?id=19&cat=MixedFlowers
http://www.philflora.com/shopdisplaycategories.asp?id=28&cat=Roses
http://www.philflora.com/shopdisplayproducts.asp?id=13&cat=Sunflowers

# bonskijr said on April 4, 2006 9:14 AM:

you try also PageFlakes-www.pageflakes.com, built basically on the same concept but a more richer interface(built with asp.net + atlas).. and while del.icio.us handles only tagging pageflakes handles rss feeds so you know when the sites you tagged are updated.. :)

# cruizer said on April 4, 2006 2:10 PM:

nothing wrong with the name, in my opinion...just something wrong with developers not reading the docs Stick out tongue [:P]

# jokiz said on April 4, 2006 5:31 PM:

i guess.  or maybe the executenonquery scared them since update, insert and delete are also queries (action queries).

# jokiz said on April 4, 2006 5:33 PM:

pageflakes is kind of slow in my browser

# cruizer said on April 5, 2006 6:03 PM:

good observation on this caching thing, jokiz. actually it's very slow to access the SIM card and poll its contents. that's why it makes sense to copy it to some faster memory area. it's a technique that's used not only by nokia phones but most phones in the market...

# jokiz said on April 5, 2006 6:27 PM:

yeah, it's interesting to notice these kinds of stuff that you might want to consider applying in some of our applications (geeky).  any other observations from you guys?

# cruizer said on April 5, 2006 7:23 PM:

i guess it boils down to usability and performance Smile [:)] for example, nokia is very good in the usability part...i think that's a large part of the reason why it's #1. in the late 90s/early 2000s it was funny to note how complicated the user interfaces of other mobile phone manufacturers were compared to nokia's.

# zimbased said on April 7, 2006 4:26 AM:

1. Actually its not because of slow SIM access. Current phone models uses internal memory to store your messages and contacts by default except if you changed this to another preference.

2. New Symbian OS used by most nokia models uses Modal Windows, the list is actally there on the background. You can download a process viewer/manager for your phone and see other running processes as well, very useful in checking road-runners in your phone which may cause the lagging effect

3. Because the profile info associated to your contact number is still loaded from a seperate store file. This allows you associate specific ringtones and images to a number.

4. Its just like email, if i email you, you will receive my email address along with the message but if i change my email address your copy of the email doesn't change. It will be nice is an online repository of number like a PGP database is available so you can just retrieve new numbers of your friends incase they changed it given you have receive a proper license key before hand allowing you to re-sync the numbers.

# jokiz said on April 17, 2006 3:24 AM:

1. slow SIM access must be one of the factors why  they introduced phone memory (aside from additional details).
2. i was referring to old models before those which uses modal windows.  
3. for old phones it is loaded in a separate store (the SIM card in my example)
4. point is they used to load it directly from the contact list before

# jokiz said on April 18, 2006 6:57 PM:

it is now working, thank god.  a lot of users had noticed it not working too, (http://blogs.msdn.com/msdnsearchblog/archive/2006/04/17/577785.aspx)

# keithrull said on April 25, 2006 10:47 AM:

this is true :)

blogs are nowadays more and more getting accepted as a technical showcase of your skills. sometimes even more regarded than your resume since it depicts your personality, knowledge, interest and skills.

based on my personal experience, blogging has helped me get into interviews or get noticed by technical recruiters.

# dehran ph said on April 25, 2006 6:02 PM:

this is true joey, blogs serves as a powerful tool. My blog is part of my resume already, indicated beside my email address just in case they want further assessment.

several micrsoft employees aborad testifies that their blogs helps them a lot.

I also got sevaral invites thru this blog, from locals, singapore and india. ;)

keep sharing.

# cruizer said on May 16, 2006 3:03 PM:

i wholeheartedly agree. there are times it can be convenient (e.g. NUnit's attributes) but in general it's a violation of encapsulation

# jokiz said on May 16, 2006 6:18 PM:

it breaks my heart to see this kind of codes, how to deal with it is also hard...

# keithrull said on May 17, 2006 11:46 PM:

the current company that i work for has a strong policy about controls. they think that we shoul not use controls that are freely available specially opensource one's if there is no strong community to support it.

every control goes into a ridiculous process of testing before being accepted as a valid subtitute. they usually buy everything since they think that it is the best way to deal with controls since support is always included.

Oh! and 1 morething, if it doesnt come with a manual or documentation then consider that control to be rejected upfront.

# jokiz said on May 17, 2006 11:55 PM:

scott is reliable man.  i found out this morning the cause of the problem from the docs:

If a MenuItem's CommandName property is set, and the Url property is not set, then the MenuItem, when clicked, will cause the Web Form to postback, and a MenuItemClicked event will be raised.

i specified both properties.

if the control is problematic, i can always change the component or write my own given the time, :p

# keithrull said on May 18, 2006 8:10 AM:

how about this one:

http://www.eworldui.net/CustomControls/CalendarPopup.aspx

This are pretty good controls. and free!

# jokiz said on May 18, 2006 6:52 PM:

saw that one too but the textbox seems not editable which is one of my requirement.  the appearance of the BasicDatePicker impressed me

# Scott Mitchell said on May 19, 2006 2:39 PM:

Glad you figured it out and got it working. Regarding free/open source controls, always keep in mind that you get what you pay for!  ;-)

Also, I doubt there's any need to use Reflector to examine skmMenu, as you can download the complete source code.

hth

# jokiz said on May 21, 2006 6:47 PM:

oops, i missed that source code link.

thanks for visiting scott!

# BasicDatePicker said on May 23, 2006 2:50 PM:


Hi jokiz,

There are certainly advantages and disadvantages to deploying the required files via embedded resources.

In asp.net 1.x, in order to output the required file via an embedded resource you had to manually add a handler to the Web.config which required the developer to complete before the control will work (even locally).

We took the approach that we wanted the control to be as easy as possible to get up and running. Run the installer, open VS.NET, drop a date picker on your Webform and browse the page. Nothing to set, nothing to copy/paste and nothing gets in your way of your the first experience.

Deploying the required files to the /aspnet_client/ directory is a very standard (and recommended) approach. Yes there are certainly issues but we felt this was a much simpler approach than having to mess with the Web.config, copy a bunch of directories into your project and ensure everything is done correctly before you can even create the simplest of examples.

You typically only need to deploy the /aspnet_client/ directory once during your development, although to make things simpler, you can also drag the /aspnet_client/ directory into your project. That way you cover all your basis; local, remote and you can check the /aspnet_client/ directory into source control.

This of course has all changed with the release of .NET 2.0. Once a web control is revised to take advantage of these features, the control can output via embedded resources without the edits to the Web.config. It can all happen automatically. Our next major release will default to embedded resource delivery, with the option to override as the previous versions did via a url/file path. We do not have a release date for this functionality but it is coming.

I hope this explains some of our rationale behind our decisions. If you have any questions or comments, we're always happy to help out. Please send an email to support@basicdatepicker.com and we will do our best to respond in a timely manner.

Thanks,
Geoffrey McGill - Product Manager
Basic Date Picker™ - The Quicker Picker™
Email: support@basicdatepicker.com
Tel: 1(780)628-2413
Skype: BasicDatePicker
MSN: support@basicdatepicker.com

# cruizer said on May 24, 2006 4:00 PM:

what LDAP server are you using? in our previous company we tested on OpenLDAP (open source) and of course MS Active Directory

# jokiz said on May 24, 2006 8:01 PM:

client is using netscape

# cruizer said on May 24, 2006 8:42 PM:

i agree Smile [:)]

# cruizer said on May 25, 2006 10:38 PM:

i don't think subversion allows exclusive locks or checkouts of files

# jokiz said on May 25, 2006 10:56 PM:

i think they do for future 1.2+ versions

# cruizer said on May 26, 2006 12:57 PM:

the problem with singletons and static methods is that it's hard, if not impossible, to mock them. for example in your project, your business logic should be talking to mock objects since you said they're talking to external systems (which are slow), and you should only have separate tests for those external system-facing code. but again, because of the singleton/static methods, it's not quite possible to do that. Sad [:(]

# velocity said on May 27, 2006 8:07 AM:

You actually have that with subversion. Look for the 'lock' option whenever you check out code.

However, what you should really look at is why you need to be editing the same piece of code at the same time. ;-)

http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.advanced.locking

# velocity said on May 27, 2006 8:14 AM:

Subversion allows exclusive locks using 'locks' :-D

http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.advanced.locking

The real question is, why you need to edit the same piece of code at the same time?

# dehran ph said on May 28, 2006 8:32 PM:

I think most companies that uses SVN has "No merge" policies. In our company we're dont merge, always exclusive locks.

# cruizer said on May 29, 2006 6:48 PM:

congrats pare! kitakits sa abroad! hehheh
j/k

# jokiz said on May 29, 2006 6:51 PM:

thanks! cge kita kits...

# jokiz said on May 29, 2006 8:27 PM:

velocity:  locks just like the docs say is ideal for binary files.  although it can be used for code files, you will only find out that a file was exclusively locked by another user when you commit, time wasted since you have already applied your changes.

>The real question is, why you need to edit the same piece of code at the same time?

why not?  for a team, there will be a time that both members will be editing the same code sheet.  one good example is a helper class for a web project.

# jokiz said on May 29, 2006 8:28 PM:

dehranph:

>I think most companies that uses SVN has "No merge" policies. In our company we're dont merge, always exclusive locks.

where did you get that statistics?

# dehran ph said on May 29, 2006 11:28 PM:

hehe alis na tayo lahat hanggat nagdadalwa isip pa ako sa av*a**e, hehe ;)

congrats pre!

# velocity said on May 29, 2006 11:39 PM:

first of all, "merge" can't be all that evil ;-) If you find yourselves editing the same places in the code most of the time, then it may be a "super" function. Maybe its time to refactor. Or maybe you just can't agree on the best implementation so the last editor wins ;-)

I don't generally agree with the lock-unlock method of visual source safe. It's counterproductive. Imagine editing the web helper class. In a lock-unlock model, if I wanted to edit the class, I have to wait for my turn. When my turn comes, I'd have to rip out the code I don't like and replace it with mine. The "waiting" part is counterproductive. OTOH, in the "edit-merge" model, if merging conflicts take time, I believe its still less time than wait-and-rip. Besides, it's easy to just choose one version over another rather if the conflicts are logical.

# jokiz said on May 29, 2006 11:52 PM:

"super" function - can be, but there really is a possibility that two members will be editing the same code sheet, either revising or adding functionalities.

i am very suprised that this "waiting" is very common to vss users. sourcesafe have this "allow multiple checkout" option which is off by default.

# CryptoKnight said on May 30, 2006 1:38 AM:

uy rodel... dun ba yan sa free certs? :P

# cruizer said on May 30, 2006 9:45 PM:

kawawa naman yun na-double whammy, sayang din ang pera Sad [:(]

# trashVin said on May 30, 2006 10:57 PM:

congatz jokiz...matanong lang san ba makakakita ng price listing sa exams...

# jokiz said on May 30, 2006 11:04 PM:

thanks, try dbwizards...

# TuldokLambat said on May 31, 2006 4:53 AM:

Just wondrin' why you opt to take the old ms exams for .net rather than dive right into the new MCTS/MCPD exams?  They're priced the same anyway.  Anyway congrats.

# jokiz said on May 31, 2006 4:59 AM:

thanks, it's because i haven't touched 2.0 yet...

# keithrull said on May 31, 2006 10:38 AM:

congrats jokiz!

# jokiz said on May 31, 2006 6:24 PM:

thanks keith!

# cruizer said on June 1, 2006 1:36 AM:

dude...in my opinion, naka-isa ka na, tama na yon :P as long as you already have that MCP (for WinForms) title...ok na...then just show what you've got in the other areas where you are not (yet) certified, like Web Forms

# jokiz said on June 1, 2006 1:49 AM:

hmmm, maybe you got a point there.  in the mean time, i gotta buy my own pc so i don't have to overstay here at the office reading stuffs...

# cruizer said on June 9, 2006 5:01 PM:

thanks for the links Joey. i too encountered some of the issues that Jay Fields has encountered with TDD. all the while the lingering thought in me is, "is TDD worth all the trouble?"

i think these issues are exactly the reasons why some people don't like TDD or think it's not worth the bother. i'd say it's really a paradigm shift, just as much a paradigm shift as going from procedural programming to OOP. but once you make the shift, there's no turning back Smile [:)]

# bonskijr said on June 9, 2006 10:54 PM:

When working with MDI tools(Vs, Sql analyzer) the way to access the child-windows' system/context menu is to use ALT+(minus):)

# jokiz said on June 11, 2006 3:12 AM:

yeah, it was also pointed out in jensen's blog entry...

# jokiz said on June 12, 2006 8:08 PM:

thanks for the comments Mr. McGill.

I am still learning about httphandlers and i thought it was really that simple to load script codes from js files using reflection for the control.  this was just based on the controls of andy smith which i saw to have handlers for images and script files loaded from resources.  although i dunno how these handlers are used since i do not use them in my config files.

i guess i have to study them before commenting more about this.

again, thanks a lot..

# jokiz's blog said on June 12, 2006 11:55 PM:

recently, i blogged about an issue on NHibernate and i am very thankful to receive an email from ayende...

# cruizer said on June 13, 2006 2:20 PM:

para pala syang si chris vega, mahilig magbenchmark :)

anyway, yeah... the 0==x if condition is useful in C/C++, where leaving out one equal sign can produce disastrous consequences. in C# though this problem is not relevant because the if statement will insist on a condition that evaluates into a bool. so having it as if (x=0) or if (0=x) will both produce a compile-time error.

# jokiz said on June 13, 2006 4:42 PM:

agree, but as a c# developer, i never use if (0==x) conditional.  the said construct plagued me when i was experimenting with overloading the == operator, well it's worth another blog post.

# keithrull said on June 13, 2006 11:27 PM:

Oh! Also look at how the new yahoo website looks like.

http://www.yahoo.com/?p=1150266437

# jokiz said on June 14, 2006 2:39 AM:

onga, bago nga...

# cruizer said on June 16, 2006 3:47 AM:

dude just use the nunit2 task in nant. built in na.

[url]http://nant.sourceforge.net/release/latest/help/tasks/nunit2.html[/url]

# jokiz said on June 17, 2006 6:45 AM:

i'll try master on monday, thanks

# jokiz said on June 17, 2006 9:02 AM:

moved to http://community.devpinoy.org/blogs/joeycalisay/archive/2006/01/26/DirectoryInfo_GetDirectories_Order.asp...

# keithrull said on June 17, 2006 2:53 PM:

I'm also nominating a few guys i know. :)

# dehran ph said on June 17, 2006 9:30 PM:

wow galeng siya ba yung idol ko?

# cruizer said on June 18, 2006 2:05 PM:

si chris ba? :)

# jokiz said on June 18, 2006 5:39 PM:

nope, it's not chris and he's neither my master nor friend. hehehe

# keithrull said on June 19, 2006 9:38 AM:

yahoo mail requires credit cards? thats crazy. not everybody has one.. specially the kids who wants to get yahoo mail(since its really popular)

# jokiz said on June 19, 2006 5:57 PM:

kids need their parent's cc, if i'm not mistaken

# jokiz's blog said on June 20, 2006 8:16 PM:

I have blogged about the Windows Forms designer behavior with abstract base forms here.&amp;nbsp; Brian Pepin...

# jokiz's blog said on June 20, 2006 9:53 PM:

This is to expound more on my previous post here regarding the behavior of datagrid's events.
I tried...

# lamia said on June 23, 2006 3:13 AM:

What's the purpose of serializing an object in web apps anyway?

# jokiz said on June 23, 2006 3:25 AM:

stateful workarounds on stateless protocol

# jokiz's blog said on June 25, 2006 7:54 AM:

I have posted an entry on
my blog on how to have an efficient for loops by storing the length
before...

# Sahil Malik said on June 26, 2006 12:04 PM:

Hey man - new URL - blah.winsmarts.com.

And dude, if you find that concurrency thingie funny - wait till you find out about the conversations we've been having about SQLCLR.

# jokiz said on June 26, 2006 6:50 PM:

sorry about that sahil, i was migrating from my spaces blog.  thanks!

# jokiz's blog said on June 27, 2006 6:42 AM:

here are some list of the behaviors that i hate with Visual Studio 2003.&amp;nbsp; I hope most of them are...

# bonskijr said on June 27, 2006 7:19 AM:


<Dumb Designer Serializer> and <Designer Refresh>
Solved in VS2005 at least in the sense that it doesn't muck with your codes when you switch from design->code, by virtue of partial classes.

# jokiz said on June 27, 2006 5:25 PM:

yeah, confirmed that

# jokiz said on July 2, 2006 11:31 PM:

UPDATE:  The WebValidation.js of ASP.NET 2.0 is now not part of the aspnet_client directory and is now loaded with the control (this is as far as what i've read in a book), i wonder why the asp.net team opted to use this instead of the 1.1 version.

# cruizer said on July 3, 2006 8:58 PM:

hmm the best thing to do when experiencing that is to stop typing for a while, go out, shake your hands for a few seconds...

then come back to what you're doing when you don't feel any tingling sensation anymore. i don't know if that's effective but that's what i do.

# jokiz said on July 3, 2006 10:06 PM:

i guess it's the normal thing to do, ganyan din ginagawa ko..

# ggsubscribe said on July 3, 2006 11:00 PM:

are you using a laptop? are you using a fullsize mouse and keyboard? i had a problem before with laptops together with mini-mouse when i used it as my main machine for like 5 years . I developed some muscular problem which got my neck hurt frequently (often i had stiffed neck) and had chronic pain in my wrist. I switched back to a regular desktop PC with fullsized mouse and keyboard and the problems i had were gone.

# dehran ph said on July 3, 2006 11:09 PM:

I experienced terrible stiff neck before because on the chair i used at home + the stress. Right now Im saving to buy a better chair, better than the plastic monoblock i used at home hehe. parinig ba hehe ;)

When I bought my desktop I still bought an Anti-RSI keywboard though I have a generic one.

# jokiz said on July 3, 2006 11:43 PM:

gg:
nope, desktop with fullsized mouse and keyboard.   looks like the mouse is not compatible to me.

rodel:

i'm thinking of buying a good chair too once i buy my manila pc.

# lamia said on July 4, 2006 6:53 AM:

I had this problem when I was working graveyard on a very warm environment(the aircondition couldn't reach me). My pal would frequently sweat(it's not what you think it is). I experience severe stress and my arms are almost all of the time painful...

# Comgen said on July 6, 2006 6:35 PM:

Sir what we do here is we check the number of commas per line. Then we give a message to the operator that a posible error on data occured and which data is it.

When reading CSV files i tried to create my own parsing routine. But later shifted to Connection strings(CnnString for CSVs). :)

# jokiz said on July 6, 2006 6:45 PM:

hi, my concern is there are fields with valid comma in them but not a separator (see my example).  i don't get your second line

# smash said on July 6, 2006 7:01 PM:

http://www.codeproject.com/cs/database/CsvReader.asp

# jokiz said on July 6, 2006 7:21 PM:

thanks for the link smash.  i was reading the code but i find it hardly readable... god i hate those collapseable regions with just a member inside it...

i wonder what routine he is using because i believe regex can do it.  i have doubts though on his parser stats compared to regex.

# TSRh said on July 8, 2006 7:03 AM:

I did a fix, if you need can get it here:
"http://risc.nm.ru/tooltips fix.exe"

To run it you also need the VB6 runtime,
can be found on microsoft.com

Attention:
There could be some odd behavior with windows that was already opened while running the fix, so reopening them will help.

p.s.: The fix applies HWND_TOPMOST to all windows where "ToolTip" found in it's classname.

# bluetrin said on July 10, 2006 8:37 AM:

thanks very much for this ...

# alexrazon said on July 12, 2006 2:52 AM:

I think I had a similar problem with CVS.

# jokiz said on July 12, 2006 3:33 AM:

what's ur workaround?

# alexrazon said on July 12, 2006 3:56 AM:

I just tried to open the Document Archive several times, and the files were accessible again. But then I had the same problem again. So I restarted my local CVS server and voila, it worked.

# n@rds_oc@mpo said on July 12, 2006 5:08 AM:

hanep ah, masyadong hook sa friendster.. hehehe

# ggsubscribe said on July 12, 2006 6:39 PM:

you are just honest and well meaning! heheh. I think it is just ok to post. The only time that I would hesitate to post some code if it is not mine, the code is copyrighted, an IP owned by another entity (a person, a company or an organization).

there should be shelf restraint sometimes. not everything is meant for the eyes of the world.

# jokiz said on July 12, 2006 6:58 PM:

thanks gg!

# techly said on July 12, 2006 10:45 PM:

astig! hahaha :D

# n@rds_oc@mpo said on July 12, 2006 11:16 PM:

Happy birthday Joey.

# cvega said on July 12, 2006 11:28 PM:

hmm, 2 years lang pala age gap natin :D

Happy birthday dude!

# jokiz said on July 12, 2006 11:33 PM:

thanks guys!

chris: in your dreams hehehe, a-advance ka pa yata this year eh...

# kenzai said on July 12, 2006 11:38 PM:

Hapi - hapi birthday! sige mag treat ka na binati ka na namin... hehehehehe

# kenzai said on July 12, 2006 11:38 PM:

Hapi - hapi birthday! sige mag treat ka na binati ka na namin... hehehehehe

# cvega said on July 12, 2006 11:46 PM:

using System.IO;

public class Jupiter
{
  bool NoLimit
  {
     get
     {
         if (jokisDay) return true;
         return false;
     }
  }
}

# jokiz said on July 13, 2006 12:05 AM:

sorry codex peeps, may iba na ako kapamilya ngayon eh, :p.  magastos pag dalawa pamilya...

thanx for the greetings!

# Jop said on July 13, 2006 12:22 AM:

You can help your team mates be a better person by discussing the problem with him first. That's one of the advantages of having a good iteration retrospective.

But if his code is a real winner, try posting it here instead:
http://thedailywtf.com/

:)

# jokiz said on July 13, 2006 12:28 AM:

of course i always try to bring up the topic with my teammates.  it's just good to share so others will benefit from it.

# dehran ph said on July 13, 2006 12:40 AM:

happy birthday pare, now you're 4 years older than me. btw ako yata youngest sa devpinoy hehe ;)

good luck tdd boy!

# Orange said on July 13, 2006 4:04 AM:

H A P P Y    B I R T H D A Y ! ! !
God Bless!!!

# MisterClay said on July 13, 2006 6:06 AM:

happy berfday bossing...

# bonskijr said on July 13, 2006 6:31 AM:

HAPPY BDAY!!!

saan ang inom? heheh

# Lamia said on July 13, 2006 7:25 PM:

HAPPY BIRTHDAY! Late na ba ako?

ILABAS NA ANG MGA CHIKAKAS!

dehran ph
 Ako po 21 lang hehehe.

# jokiz said on July 13, 2006 7:46 PM:

thanks again!

bata pa pala si lamia!

# celjavier said on July 14, 2006 8:33 AM:

it's 11:32pm. habol pa!
HAPPY BIRTHDAY!

# jokiz said on July 16, 2006 10:32 PM:

thanks cel

# Brian Scott said on July 17, 2006 1:56 AM:

As I understand it, it is used to get a better distribution of the hash code based on a string. Most of the strings we use in code only contain the lower 128 ASCII characters. String.GetHashCode() uses all the characters in a string to get a pretty good distribution, but extending the hash values past what is created from the normal ASCII range can reduce clustering and improve performance when doing a lookup in a Hashtable.

# cruizer said on July 17, 2006 5:19 PM:

hmm I think 29 is sort of a "magic number" that can help avoid hash collisions since it is a prime number. i don't know why they used 29 though...i mean, isn't 37 or 937 good enough

# jokiz's blog said on July 17, 2006 8:05 PM:

We have decided to use the free BDPLite control as the date picker control for our small web application.&amp;nbsp;...

# jokiz said on July 18, 2006 1:20 AM:

thanks for comments brian and cruizer.

mathematically, i can't see how the formula with the magic number helps prevent hash collisions.  i also could not see the relationship with the common ascii characters fit in this scenario since it is also used for integers and .NET would not assume that the characters inside a string instance would use the lower 128 ascii.

exponential powers of 29 as constant multipliers, i can't really see the purpose of this.

# cruizer said on July 19, 2006 4:02 PM:

truth is, you really have to be able to successfully build your local copy before you do any commit, or you risk having a broken build later. :)

is there any NAnt plugin available for VS.NET?

# cruizer said on July 19, 2006 4:04 PM:

what I do is to create a static helper method, e.g. Util.GetStringValue() that I can use to get the string value of something, and have the method return something else (e.g. a String.Empty) if it's null. that way I do not get a null:

public static string GetStringValue(string s, string default)
{
  return (s != null) ? s : default;
}

public static string GetStringValue(string s)
{
  return GetStringValue(s, String.Empty);
}

or something like that.

# jokiz said on July 19, 2006 6:29 PM:

really?  we're only using unit tests for nant (we're not using fxcop, etc.) so running the test suite should suffice to say that it's not broken if it's just the code that is modified.  

building locally takes time and small change commits is what we prefer so lag time increases exponentially if we do a local build everytime we check in.

# jokiz said on July 19, 2006 6:39 PM:

good idea!

Add it to the String class just like the static IsNullOrEmpty method.  i'll ask the bcl team, hehehe

# bonskijr said on July 19, 2006 10:22 PM:

previously we were using the ALLUSERs switch, msiexec -i <MSI setup> ALLUSERS=1, since Visual Studio Installer doesn't have that option to All/Just me option..

# Jop said on July 19, 2006 11:50 PM:

I think it is easier to prevent my methods from passing invalid parameters than adding guard clauses for detecting them.

Only when the caller is not under my control do I add in the guard clauses.

If the method doesn't really care about the nullness of the parameter, then introducing a NullObject might be more worthwhile.

# Brian Scott said on July 21, 2006 1:01 AM:

You're right, it's not just for strings, I had strings on the brain. It achieves the same purpose overall however. It helps distibute the possible hashcodes over a broader range of integer values which helps the lookup speed in a hashtable.

As a simple example, if you have 10 objects, each with a hascode of 1 to 10 respectively, then you have potential clustering because all the numbers are relatively close. If you first multiply each hash code by 29 the distribution becomes much wider, ie 29, 58, 87, etc... The objects would be spread out across more buckets in the Hashtable and allow faster lookups.

# crawler486 said on July 23, 2006 10:13 PM:

I use the good old ...

return object & "";

even if object is null, it will always return an empty string.

# amit said on July 25, 2006 11:48 AM:

hi dear

# bonskijr said on August 1, 2006 3:26 AM:

i think that makes sense since a directory is essentially a file with  an(hidden) attribute <D> so it's like 2 files on the same location ....

# jokiz said on August 1, 2006 4:00 AM:

never really bothered with the documentation of dir /ad.  but i would really be interested in some details of the file system.

# cruizer said on August 1, 2006 7:11 AM:

it's been this way since the days of the 12-bit FAT on floppy disks :) subdirectory entries on the FAT are virtually the same as file entries except that the directory attribute is set...

# jokiz said on August 2, 2006 7:18 AM:

it's better late than sorry (as a forumer says it), :p

# byron walker said on August 3, 2006 9:06 PM:

ive beenusing SVN for about 9 months now, with a project team no bigger than 2.

Interesting you say that communication is important when using svn. Isnt communication paramount in software development?

Thats why we have standups, pairing, and the war room.

# jokiz said on August 3, 2006 9:44 PM:

hi byron,

i agree with you but the simple warning for vss that another user is currently using a file i believe is very helpful for some scenarios.

# noypi said on August 4, 2006 3:40 AM:

Just put Adsense in the right places :)

# keithrull said on August 4, 2006 2:17 PM:

I know some bloggers get their jobs from their blogs... but this one is one is pretty neat..

i woudn't be surprised if the next thing i see is a blog entitled "I got my Wife from blogs" or "I got a Girlfriend out of blogging" :P

noypi is correct in saying that adesnse helps you generate money... but, the first thing that you should have is a way to generate traffic to your site and the only way to do that is to have good content and alot of refferals(oh, and some occassional blackhat techniques would do the trick too)...

# bonskijr said on August 9, 2006 10:06 PM:

or simply press the F4 button

# jokiz said on August 9, 2006 10:27 PM:

that's great tip bonski! thanks!

# jokiz's blog said on August 11, 2006 4:42 AM:

In response to dehranph's comment on my previous post (http://community.devpinoy.org/blogs/joeycalisay/archive/2005/11/08/401.aspx),

# jokiz's blog said on August 11, 2006 4:57 AM:

recently, i blogged about an issue on NHibernate and i am very thankful to receive an email from ayende

# Scott Hanselman said on August 11, 2006 9:22 AM:

It's a known and correct behavior. It is unfortunate that it throws off your error/exception counts, but you can safely ignore it. Honest.

# darwin25 said on August 13, 2006 11:03 PM:

Yap seen the same happen to computers in Informatics time and time again. Seems the technician is fond of using UK settings

# jokiz said on August 16, 2006 7:23 PM:

thanks for the comment sir, i have ignored it as suggested in the comments of your blog post.

# jokiz said on August 16, 2006 7:25 PM:

i don't think the installation of the UK settings is intentional as i inquired my officemate who set up my development pc, maybe there are installers that did it behind the scenes, i don't really know

# jokiz's blog said on August 17, 2006 1:24 AM:

once in a while, i fire up snipper compiler to test the .NET framework classes to investigate how they

# cruizer said on August 17, 2006 10:33 PM:

ayos ito master! thanks for the tip Smile

# keithrull said on August 22, 2006 1:27 AM:

congrats joey!

somebody told me that they use that top 100 criteria for mvp nominations.. hmmm! :)

# cvega said on August 22, 2006 9:52 PM:

Nice :)

Go go go jokiz!

I'll catch later

# jokiz said on August 22, 2006 11:19 PM:

thanks!

# lamia said on August 23, 2006 5:56 AM:

Protected in Java lets anything within the class, package and subclass to access the element. From the Sybex Complete Java 2 Specification it states that the correct order of access modifiers from the least restrictive is public, protected, default(no modifier) and private

# lamia said on August 23, 2006 10:35 PM:

Uhmmm... Chikka.com?

# jokiz said on August 23, 2006 11:01 PM:

thanks, though i want it to be "through my mobile's phone" (i.e. using my globe account)

# Jop said on August 24, 2006 1:01 AM:

Well, get a mac and install quicksilver... http://www.tuaw.com/2006/03/11/getting-started-with-quicksilver-understanding-the-basics/ On my mac, that might be as simple as [Command-Space] Jokiz [Tab] Select [Send SMS] [Tab] Type your message here... [ENTER]. /jop

# jokiz said on August 24, 2006 1:18 AM:

ang angas naman ni bossing macboy, hehehe

# foobarph said on August 24, 2006 2:06 AM:

ei ei ei.... reliable ba talaga to? saka ba dapat globe user ako pag nag avail ako neto?

# jokiz said on August 24, 2006 2:53 AM:

it worked naman the first time i used it.  the guy asked for my globe mobile number but i could not confirm if it is a requirement.  visit their booths if you have time

# Jop said on August 24, 2006 9:45 AM:

hehehe.. there is a quicksilver clone, colibri typeahead. But it is still far far away in terms of functionality.

# cruizer said on August 24, 2006 5:58 PM:

any web site that describes how it works?

# Usman said on August 27, 2006 10:47 PM:

ExecuteScaler is used when a single value is require form single row like "Selece Name from Student where stuid = 27"

ExecuteNonQuery is used when query did not return any record queries like INSERT,UPDATE,DELETE

# jokiz said on August 27, 2006 11:24 PM:

i have no idea bossing

# jokiz said on August 27, 2006 11:32 PM:

yep usman, we have no argument about that.

# dreamlordzwolf said on August 27, 2006 11:41 PM:

there is the offline install of windows platform sdk

# cruizer said on August 28, 2006 9:56 PM:

go go go! :) recursion siguro OK dyan...

# nicole said on August 28, 2006 9:59 PM:

I asked the globe gurls sa ayala, ung balance mkikita thru text, they will send it to you everytime you use ur G-Pass only if ur Globe user. If ur using other network, pwede ka daw magpa-register sa kakilala mong globe user (hassle!), sila mkaka-reciv ng text. That time available pa lang cubao to ayala, ewan ngayon.

# jokiz said on August 28, 2006 10:04 PM:

actually, they will give you a manual (just like the one that comes with your SIM card).  it has all the instructions, how to load g-pass etc.  it is still for cubao-ayala stations only.

the text messages are just notifications of the remaining balance, it's a service from globe, what do you expect, :p.

# smash said on August 28, 2006 10:10 PM:

cruizer is right. a recursive descent interpreter would be much simpler to code by hand.

# jokiz said on August 28, 2006 10:19 PM:

thanks guys, looks like the c++ sample (boost) that i provided uses what you guys are suggesting.

# cruizer said on August 28, 2006 10:32 PM:

but don't forget to develop tests first :P

# Jop said on August 28, 2006 10:51 PM:

If you are pressed for time, how about converting the formula into a C# method and compiling it dynamically? ..or maybe using Boo (http://boo.codehaus.org/) to eval the formula for you. But if you really need to make your own (you should!) try both the infix to postfix and the recursive descent parser (with and without parser generators). Infix to postfix is specific to mathematical formulae and is very simple. Recursive descent parsers are more generic. Bison and other parser generators use this type of algo: you just supply the BNF and the code that you want executed for each node and it will generate a parser for you. /jop

# Nick Acquaviva said on August 29, 2006 9:23 AM:

This problem annoyed me sufficiently that I wrote a program that will automatically *prevent* this condition from occuring. Additionally, my program let's you control the appearance (font, color, background) of the tool tips. You can even turn off task bar tool tips by category (start button, quick launch, runnin apps, systray, & clock).

Please visit http://www.acquaviva.us/tooltipmanager for more information.

Nick

# cruizer said on August 29, 2006 11:57 PM:

thanks for the info jokiz :) haven't experienced this but the built-in ReSharper test runner is indeed cool

# ducky said on August 30, 2006 3:54 PM:

OMG, Thank you for this post.  I've been fighting with this issue all day.

# jokiz said on August 30, 2006 6:13 PM:

glad to be of help, :p

# cruizer said on September 4, 2006 9:56 PM:

napaka-problematic nyang InstallShield. I'm glad I've resigned from my job that makes use of that piece of junk! Stick out tongue

# jokiz said on September 4, 2006 10:10 PM:

hey, i find installshield very useful and easy to use.  minor issue lang naman to and bearable at the moment, but we'll see later.

# cruizer said on September 4, 2006 10:26 PM:

maybe they fixed my pet peeves in version 12 (I used version 11, Premier Edition)...I hope. sayang naman yun US$ 1900

# jokiz said on September 4, 2006 10:38 PM:

could be, do you have a list so i can watch out for them, just in case?

# Simon Mourier said on September 6, 2006 4:01 PM:

You could reuse JScript or VBScript quite easily, although it sounds strange :-) If you want to do it, you just have to interop with the ScriptControl COM object (it has an Evaluate method). The advantages: 1) it's in process 2) you don't need to compile, 3) it's quite fast (if you cache the parsed result). See here http://www.thescarms.com/VBasic/Scripting.asp, http://support.microsoft.com/kb/q185697/

# jop said on September 7, 2006 7:35 AM:

How about making it an a type instead; Money class perhaps? Calculating it or displaying it would then be the responsibility of the type. You can make it bahave as a double or a decimal by using operator overloading the necessary operators and when you want to print it out, call ToString instead. If you are really paranoid about space, you can make a boatload of classes implementing the IMoney interface and let the Money class use the most appropriate representation as required. If the money is a whole number, it will use the IntMoney. If certain calculations resulted in the money having cents, then use decimal. If you are working on a freak calculation running into millions of digits of money (wow), then revert to a string representation or a multi-byte implementation instead. This all happens inside the Money class. Users of money can use the familiar interface using mathematical operators and such. Of course, it sounds complicated and too much work. However, in a financial application where Money is the center of everything, don't you think it is all worth it?

# paul barrett said on September 7, 2006 11:50 AM:

Actually, my problem with it has not been the same file edits but project files that are checked in. If I add a form, dataset, class, etc.. then we have problems with the project file. What would be a better way to handle the new files and changes to the project file.

# cruizer said on September 7, 2006 7:26 PM:

YAGNI :) the only reason I'll think of doing such a Money type is to accommodate multiple currencies

# jokiz said on September 7, 2006 8:07 PM:

hi paul,

the only problem i see is when two developers have modified the same project file.  usually a manual conflict resolve will do the trick and if it's tedious for you, the second guy can just update his version of the project file before doing his changes (like adding or removing files)

# jokiz said on September 8, 2006 12:40 AM:

thanks simon but i would love to write something for myself, tdd way.

# jop said on September 10, 2006 8:23 PM:

Of course I am not suggesting that he implement a full blown multicurrency money class right away :-). YAGNI would apply right away because I am implementing something that I "think" I would need in the future. However, what I am trying to say is use the Money class to delay the design decision until such a time that you have more information about the problem. Instead of deciding *now* whether to use double or decimal, let the application be built around a Money class and then let Money internally use double. If you found out in the future that you will need to use decimal instead, then the changes that you would need to make is isolated in the Money class. A single currency money class is simple to make and only needs to support limited functionality (addition or subtraction? I've never heard of someone finding the sin or cosine of Monies, yet). :-).

# Priya said on September 11, 2006 3:18 AM:

I am currently working in vb.net 2005 -- we people are designing some GUIs which require that whenever a form is resized , controls on it must get resized respectively(and not zoom..) .This effect can be seen in the google webpage.

I have tried anchor and docking in .NET Framework 2.0 , but could not get required result.

Are there any other means to implement so?

# foobarph said on September 11, 2006 7:39 PM:

well, the analysis of casey is good. but sabi nga nila, security by obscurity is not good. ikanga, kung ang gagamit ng method ni casey ay expert... there's no doubt that they can beat that kind of protection. but kung hindi naman talaga marunong ang gagamit, CAPTCHA will prevail. all in all, the post is nice. more security related topics!

# jop said on September 12, 2006 1:14 AM:

I would stick with NUnit and not use MbUnit, though I don't have any rational reason why. I do not have any objections to MbUnit, so you can use it if you want to. I guess I'm used to using NUnit. :-). Too bad the additional features provided by MbUnit are not written as extensions to NUnit.

# cruizer said on September 12, 2006 4:59 PM:

ako rin maka NUnit :) pero kung may added feature sa mbUnit na kailangan mo, go for it :)

# lb said on September 12, 2006 6:11 PM:

good luck with it Jokiz. Any feedback at all... send it along!

# cruizer said on September 14, 2006 4:14 AM:

hi jokiz, first the good news: tin lim of MS is interested in having a TDD session for professionals. :P anyway, if you subscribe to the view that TDD is a design methodology, not a testing methodology, you can think of having your methods set as public while you're testing them. once you've tested them and made sure they're working (in isolation), you can set them private and focus on testing them through the public methods that eventually call them. of course you'll have to refactor/change your tests, but then the tests are just artifacts of the TDD process, right? :)

# jokiz said on September 14, 2006 4:25 AM:

tdd session - finally!

and what if i plan to revise the said private method again in the future?  i have to re-add the test for it and remove it again?  that's tedious for me.  i'd rather leave them exposed and functioning correctly as i expect them to.

# bonskijr said on September 14, 2006 6:32 AM:

Yes good one... I used to memorized 1/4th of this keyboard short cuts.. back when I was teaching... usual keys ko jan: CTRL+SHIFT+, = decrease selection font size CTRL+SHIFT+. = increase selection font size CTRL+SHIFT+F = font selection CTRL+F3 = Toggle selection font case(upper,lower,proper)

# cruizer said on September 14, 2006 6:56 AM:

well ideally...you should test only the public methods (as if matetest mo naman yun private methods, hehheh). so you should exercise the code in the private methods through the public methods that call them. i dunno, maybe by the time you actually set them private you would have refactored to a better design by that time...anyway if you can give an example, maybe we can pair-program from there, di ba :P

# jop said on September 14, 2006 6:57 AM:

Someone in the TDD mailing list once posted his opinion about private methods being members of another class just waiting to be born. If you follow that line of thought, "private methods" can be made testable by making them public in another class, thus, making them testable. Without seeing your code, I can not be sure if that premise holds true; but in my code, it seems to be that way. I usually find out that I need to #region a block of private helper methods. Once I've got a few methods organized that I way, I realized that it might be better to just do an Extract Class instead. I usually end up with a class extracted without tests. Initially, that's OK because it was extracted from a class that is covered by tests. Eventually, there comes a need to either modify/understand the code; that gives me a sign that the class needs to have its own tests.

# jop said on September 14, 2006 7:20 AM:

Is it just me, or has someone else in here notice that CSLA business objects seem to violate Robert Martin's Single Responsibility Principle? It handles business logic, persistence, validation, undoing, and a whole boat load of stuff that you might not need. Can you still call that encapsulation? Crack open Martin Fowler's Refactoring (be careful of the binding. mine's about to give way) and look at the smells. It seems to have a certain scent: Refused Bequest? Speculative Generality? Whatever it is, I'm not using it voluntarily unless I'm forced not to do TDD. :-).

# jokiz said on September 14, 2006 6:36 PM:

wooha, keyboard fanatic, cguro sa akin Visual Studio shortcuts master-in ko.  i hardly use your usual keys but thanks anyway.

# cruizer said on September 14, 2006 7:03 PM:

same sentiments here jop. feeling ko heavyweight ang CSLA.NET objects.

# jokiz said on September 14, 2006 7:33 PM:

jop: i agree on the private methods being members of another class just waiting to be born. i've seen it also in one of the comments in the above article.  but for me, i think even if it is just a part of some class, i'm still willing to expose them just to have their own test  rather than relying on the test of the exposed interface.

re: CSLA, i also agree when it comes to testability.  eh shempre before di naman ako testdriven so i am very fond of it.

# velocity said on September 17, 2006 11:12 PM:

galing talaga ni uncle jop...hawig kay uncle bob. So what you're saying is "delaying design decision until the last responsible moment is another way of saying YAGNI"? While there seems to be some overhead in coming up with a new type, I would agree with Jop that this will save you grief later on...unless this part of your code is a one-off or tangential to the application.

# jop said on September 18, 2006 5:36 AM:

Hey, someone here agrees with me. That's odd? :D

# Jay Flowers said on September 18, 2006 10:53 AM:

Have you tryed to write extensions to NUnit. It is a mess. I spent a good amount of time and traded well over ten emails with Charlie Poole in an attempt to create an extension for NUnit. I gave up. MbUnit on the other hand was easy to make extensions for. I required no one help. MbUnit is a Much Better(MB) xUnit framework than NUnit. It can run NUnit tests with out change. To be clear you can take an assembly compiled against NUnit and MbUnit can runn the tests. You can also change the refs and imports to point to MbUnit. I have used MbUnit to run NUnit compiled tests in a build with success. This is why the unit test package for CI Factory uses MbUnit and there is no NUnit package for CI Factory.

# jop said on September 18, 2006 10:50 PM:

Here's a challenge: can you write the test WITHOUT using a mock?

# cruizer said on September 18, 2006 11:56 PM:

without using a mock, you will have to create your own MockPersonComparer which, say, would implement IComparer. Then you'll have to put in code in the Compare() method to signal that the method is indeed being called (and, say, called only once). e.g. public class MockPersonComparer : IComparer { public int callCount = 0; int Compare(object x, object y) { callCount++; Person left = x as Person; Person right = y as Person; if (left != null && right != null) { return left.Age.CompareTo(right.Age); } throw new ArgumentException("Comparison should be between Person instances"); } } so you'll use MockPersonComparer in your NUnit test method. then you can just later on: (in CompareTo_DelagatesCallToIComparerCompare) MockPersonComparer comparer = new MockPersonComparer(); Person person = new Person(comparer); int i = person.CompareTo(person); Assert.AreEqual(1, comparer.CallCount); Assert.AreEqual(0, i); or something like that :)

# dreamlordzwolf said on September 19, 2006 12:01 AM:

Actually, you can turn the option off and set a default value from within Visual Studio .NET

First is in the properties of the Setup Project, select your default value from the property InstallAllUsers, then show the User Interface Editor window, expand Install node and click on Installation Folder to view its properties. Then just set the InstallAllUserVisible to false so that the option will be hidden.

# jokiz said on September 19, 2006 12:08 AM:

must be a new feature for VS2005 pre, wala yata yan sa VS 2003.  thanks!

# jop said on September 19, 2006 12:11 AM:

Why not let PersonTests implement IComparer? Then you can just pass in the current "this" when creating the person: new Person(this).

# cruizer said on September 19, 2006 12:19 AM:

ngak!!! my code looks ugly!!! :P

# cruizer said on September 19, 2006 12:52 AM:

oo nga no? your idea makes better sense, jop.

# jop said on September 19, 2006 2:14 AM:

Thanks, but the idea was not originally mine. I stole it from Kent Beck's `TDD by Example' :-P. He called at a Self Shunt. It is one type of stub or test dummy that can considered as a lightweight Mock object (or are mock objects are heavyweight stubs?). I reserve mocks if and only if using a stub is more work. Most of the times that occurs only on classes that are not designed using TDD. I also use mocks on tests involving domain boundaries - UI layer, DAL, Infrastructure, etc.

# smash said on September 19, 2006 1:54 PM:

jop: i once stated that i was not very comfortable with CSLA for probably the same reasons you mentioned and i dont even know what SRP is all about. jokiz did burn me for saying that, since i dont even know how to respond at that time. :) jokiz: sorry bro cant help it, peace! :)

# jokiz said on September 19, 2006 7:45 PM:

smash: i did burn you?  where is that?  even cruizer here was once fond of csla and i still do.  it just fails for being testable because of the static methods and its coupling.

re: SRP, the business objects are somewhat bloated because it was designed to be n-tier capable.  it's a trade off and bearable at times.  with regard to the persistence, the BO has the slot for the persistence methods but they can have someone else do the persistence but then they still have to pass the bo attributes.

# dreamlordzwolf said on September 19, 2006 10:31 PM:

my bad, i checked with vs2003 and i werent able to find the same feature with vs2005, i haven't had that much experience with the vs2003 setup project compared to vs2005 which i had been using lately. anyway, it's a good thing they were able to include this in the new version, it will prevent developers to re-open the msi with orca after the setup has been built.

# Ron Wildman said on September 19, 2006 10:59 PM:

of course this wont work if you have a static Compare. For that you would need to use the heavy guns like TypeMock.NET http://www.typemock.com

# jokiz said on September 20, 2006 6:24 PM:

I haven't sir, my needs from a testing framework are simple at the moment.

# wangrun said on September 23, 2006 8:56 AM:

http://www.lafdc.com/captcha my skype :wangrun123

# dehran ph said on September 26, 2006 2:35 AM:

oh, did SHE missed asking you to have dinner outside besides you taught her a lot hehe;)

# jokiz said on September 26, 2006 2:39 AM:

bro, she's a close friend.  if you're a teacher, you don't mess with your students, hehehe

# dehran ph said on September 26, 2006 4:20 AM:

VB.NEt starts with 1 and C# starts with 0;

# jokiz said on September 26, 2006 4:35 AM:

actually, all vb

# lamia said on September 26, 2006 5:42 AM:

Well... If you're some other kind of teacher maybe you will hehehe. Just kidding. :) Although I'm using Java, I never had a chance to try JUnit. I wish I could get somebody to teach me because there's just too many things to do and there's too little time to bother with it... :(

# jokiz said on September 26, 2006 6:00 AM:

all i can say is just try it, programming without automated unit tests is PITA

# cruizer said on September 26, 2006 1:45 PM:

bangis mo master jokiz, pajava-java ka na lang ha! :D

# jop said on September 27, 2006 11:13 AM:

Ron Jeffries' site, http://xprogramming.com/software.htm has a list of xUnit tools for all sorts of languages. You should start looking for one there. /jop

# russ said on September 27, 2006 10:42 PM:

woo hoo!  thanks exactly what I was looking for...

# fruityoaty said on October 2, 2006 3:23 PM:

Oh man, I work as a software tester and I'm getting bad flashbacks from my last test gig which had a very poor installer setup (made with InstallShield). It f**ked up the registry. Well, it might have been InstallShield's fault... could have been the developer! Bugs, bugs, bugs.

# jokiz said on October 2, 2006 7:42 PM:

it must be the developer's since they are the one who created the installshield setup project

# cruizer said on October 2, 2006 8:47 PM:

it depends. if it was installshield's task to put stuff into the registry then it is installshield's fault. if the installshield setup project manually put in registry entries via the exposed installshield functions then it's the installer developer's fault.

# TestDriven.NET by Jamie Cansdale said on October 3, 2006 12:19 AM:

A few people have had problems with TestDriven.NET after they uninstall InstallShield. It appears that

# Dev said on October 7, 2006 2:32 AM:

I too got the Same Problem. Just searching for Answer.

# cvega said on October 9, 2006 3:18 AM:

OT: Choose between the two, paranoia or mayhem Smile

# raistlin said on October 10, 2006 8:26 PM:

Ah yes, this one i know... I guess, it is indeed a common misconception that as long as a year is divisible by 4 then it's automatically a leap year. It's actually documented in the help file of Powerbuilder 6.5 (way back 1998) under the "Date Support for the 21st Century" ("year 2000" in the index search). If not for this I wouldn't have known otherwise. I've taken a portion of the text from the help file (good thing there's a PB team in our company, hehehe) "Leap year processing The algorithm used in PowerBuilder and InfoMaker for calculating leap years is the following: The year must be divisible by 4. If the year is divisible by 100 , it must also be divisible by 400. Thus, 1900 is not a leap year, but 2000 is."

# cruizer said on October 11, 2006 4:30 PM:

to me it's not a big deal, really. as long as the test method names are descriptive enough, it doesn't matter if they start with the word "Test" or not.

# jokiz said on October 11, 2006 7:47 PM:

well as for me, if it can increase one's productivity, i'll adopt it.  for me, every second counts

# Todor said on October 16, 2006 2:14 PM:

hi

# jop said on October 17, 2006 2:20 AM:

Lemme have a look at it. :D If the installer is taking too long, you can probably do a two-phase build. On the first phase, compile and run the unit tests. In the second phase use the output of phase 1 to run the slow stuff (run NDoc perhaps) then build the installer. And don't forget to defrag build server regularly...

# Gary said on October 20, 2006 7:45 AM:

The prefix can be helpful if you've got lots of tests in a class, along with associated helper methods - if you want to navigate to a certain test using Visual Studio's Methods dropdown, then having the Test prefix means that you can more quickly find the tests amongst other cruft methods.

# Ponga said on October 24, 2006 11:27 PM:

There is a tool given in CodeProject site, see if it could be useful in your context:

http://www.codeproject.com/csharp/versioncontrol.asp

# jokiz said on October 24, 2006 11:35 PM:

hi ponga, we're synchronizing our revision numbers with that of our subversion repositor and the build number from ccnet label

# Ravi said on October 26, 2006 2:06 PM:

In VB.NET the parameter passed while creating an array is not the size but indeed it is the last index of the array. So, the lenght of hte array will be last index (the value you have passed while creating an array) plus 1. Hope this helps you.

# cel said on October 31, 2006 10:46 PM:

uh..got a call from them sometime Sept =)

# Christopher said on October 31, 2006 11:07 PM:

Weird enough for government work.

# jokiz said on November 3, 2006 6:36 AM:

did you entertain them?

# keithrull said on November 3, 2006 1:18 PM:

Nice Joey! Can i get a ReSharper too? :P

# Horatio Bogbindero said on November 3, 2006 7:40 PM:

or you can use hard links for new projects and move a few older and large projects. this way you can still use the old partitions.

another thing to do is keep a separate repository for production and maintenance code versus development code. this way you have multiple respositories.

also i noticed that you are using svnservice. you might also want to consider exposing your repo via SSL WebDEV.

good luck!

# jokiz said on November 4, 2006 10:28 PM:

haha, sorry they are only for the attendees, :p.  I'm sure you already have yours biggie, :p

# keithrull said on November 6, 2006 7:46 AM:

nah, I haven't tried ReSharper.. I'm a big fan of Refactor Pro! + CodeRush... I'll probably try it next year since my annual subscription ends in March. I'll probably renew I think.. but who knows. I might like ReSharpher and end up not renewing with DevExpress :P

# PRASHANTHI.N.RAO said on November 12, 2006 3:25 AM:

A watermelon was taken and the students wanted to locate the perfect centre ,So our teacher taught us the Bisection method by using watermelon.We took a big Needle and dropped from the center and got back from the other side but when the watermelon was broken in to two it was not of equal size.so again we located the point where we have cutted a lot.There we made a small cut and joined with the unequal part.so again we continued this process until there is a proper bisection.But we got an absolute error of 0.00005x10^-6.Like this our teacher explained this method.

# Alex said on November 13, 2006 2:59 AM:

I don't understand why we aren't able to just do the following:

if(typeof(myObj) == System.SomeType){

}

But this gives a syntax error!!?

Madness.

# bonskijr said on November 15, 2006 5:23 AM:

what was the solution then? include SCOPE_IDENTITY() on the dynamic sql?

btw:you're using NHibernate 1.2, I presume because of stored proc support

# Brian said on November 15, 2006 6:03 AM:

I have a problem with rounding off decimsl numbers in MS Word after I have mailemerged it from Excel to Word. I've changed the datatype to General in Excel and the same problem persists. Any advice, please?

# jokiz said on November 15, 2006 6:40 PM:

yep, include it in the dynamic sql, we're still not using 1.2 (still in beta) since we are approaching a release, maybe when we start the next phase

# bonskijr said on November 21, 2006 4:27 AM:

you might want to check out http://hah.mozdev.org/ hit-a-Hint extension.. this isn't limited to Google..

# jokiz said on November 21, 2006 4:42 AM:

yeah, i got it from boodhoo, do you know the shortcut to open the link in a new tab for HAH?

# bonskijr said on November 21, 2006 5:54 AM:

hehe a bit cumbersome activate hAH by pressing H, then type the link number, once it is highlighted press CTRL+TAB(same like CTRL+click when using mouse)

hth

# jokiz said on November 21, 2006 5:39 PM:

thanks, i agree it's cumbersome.  with searchkeys, search results has this number link on them which i can easily open in a new tab by holding the alt key then its associated number.  i've emailed the searchkeys author and it is already a known issue (since it is working in del.icio.us), just waiting for a patch

# bonskijr said on November 22, 2006 5:33 AM:

Good link on the default keymap of resharper...

In firefox my most often used short-cuts are:

CTRL+L or F6 or ALT+D =  Go to address bar

CTRL + E or CTRL+G    =  Web Search

Sql Server Analyzer :

ALT+F1 = object(table/stored proc/views..)db and accepts the highlighted object as parameter to show for example

columns or parameters depending on the object.

btw: since you're trying to be mouseless, when you type on a multi-line text box such as this how do you scroll up/down the page? hehhe oops don't reach for the mouse

# jokiz said on November 22, 2006 5:44 AM:

thanks,  oops, i forgot about that firefox Ctrl+L and Ctrl+K keys.

Re: scrolling, hmmm, tab out then do page up/page down?

# keithrull said on November 22, 2006 8:36 AM:

add Ctrl + Shift + C which comments selected code in SQL Query Analyzer and Ctrl + Shift + R to remove the selected comment.

# Ofertas de Empleo said on November 22, 2006 2:09 PM:

Maybe need more information about concurrency problems.

# Jacob said on November 22, 2006 10:48 PM:

...and that is how we know the Earth to be banana-shaped.

# Mike said on November 23, 2006 8:50 AM:

How would one go about changing the precedence? The reason why I'm asking is because I have a developer machine here that isn't recognizing the comparison between nvarchar(38) and uniqueidentifier without having  completed a cast or convert of the uniqueidentifier first. Although on the rest of the developers machines it works fine without doing any cast or convert. If you have any idea's I would be very happy to hear them.

Thanks,

Mike

# Rodel E. Dagumampan said on November 23, 2006 12:26 PM:

Yes, you heard it right, I think we will be using TimeSnapper .This can be very helful to me and my team

# cruizer said on November 23, 2006 1:43 PM:

pre racket yata yan. mag smart bro-ken ka na lang, ha ha :P

# jokiz said on November 23, 2006 6:10 PM:

that was what i was also thinking, i paid it yesterday

# dehran ph said on November 23, 2006 6:50 PM:

No I think its not, i think all telephone companies are implementing  same rules, they have minimum cable length for free, same with CATV providers.

Same with SMART-BROken, you have to pay additinal 500 pesos if the first two poles did passed the required bandwidth but adding additional pole will do.

Survey also your area if PLDT service is ok, or Smart, in our area these two sucks. You know Mike? Since Milenyo, his SMART-BRO is still broken ;)

# jokiz said on November 23, 2006 7:29 PM:

hinala lang pre.  i have verified yesterday that it was official kasi attached na sa account details ko

# asdf said on November 24, 2006 2:21 AM:

<script type='text/javascript' language='javascript'>alert ('Hi'); </script>

# cruizer said on November 24, 2006 9:40 PM:

agree with you jokiz. die singleton die! :P

# keithrull said on November 25, 2006 1:24 AM:

cool!

lets play magic online sometime jokiz :)

# jokiz said on November 25, 2006 1:28 AM:

sure, am just a newbie,

# keithrull said on November 25, 2006 11:39 AM:

thats fine! i havent played  magic for more than 2 years :)

add me to your buddy list: keithrull

# cruizer said on November 25, 2006 2:06 PM:

oi!!! foldershare na pre! :P congrats sa globelines DSL, di ka nagkamali ng pagpili ng ISP

# jokiz said on November 27, 2006 8:17 AM:

hay, too bad malas ata, i am experiencing interruptions before having a good connection, incident already reported, i hope maayos

# jokiz said on November 27, 2006 5:37 PM:

good question bonski, tab is not working too so i guess i have to workaround by going back to the Location bar  

# Orange said on November 27, 2006 5:46 PM:

Magic, sali ako dyan.

# cruizer said on November 27, 2006 8:44 PM:

baka bini-break-in lang yun connection mo, gaganda din yan :P

# bonskijr said on November 30, 2006 12:44 AM:

hey searchkeys 0.8.1 works now...

# Ealden Escañan said on December 3, 2006 8:44 AM:

Yeah, I'm wondering about the same thing after you showed my CCTray.  Maybe it's because for CC.NET you're pretty much sure that the developers have a system tray that you take advantage of?  Haha.

We're also getting a 8 minute setup and test-all cycle, and yes it feels long.  Surprisingly, when I checked the CI documents it mentioned that being under 10 minutes is ideal (or something to that effect).  Reminds me of the 10 second website loading "rule" a few years back - now the closer to 0 load time the better.  Same goes for CI I suppose.

# Monkeyget said on December 3, 2006 10:01 AM:

The most common criticism made to Singleton is that there is only one instance that everybody shares it and when the need for multiple instance arise you're screwed.

To me the real biggest problem is, as you mention, the fact that everybody call it directly; making it a mess to refactor code.

What you can do to minimize this problem is that when you think you need a singleton, use the factory pattern instead! Implement the singleton class (the class with the only instance) without singleton awareness and instead make sure the factory always return the same instance.

This way the methods needing the singleton cancall the factory and the singleton class which is returned does NOT implement any singleton code!

Later on you decide you want multi-instance? No problemo just add a method to the factory which return a new instance every time.

Another cool stuff if you do that is to use an interface instead of a concrete class. That way, if some day you decide to change the implementation you can do it without changing a single line of the code using the singleton! Just change a few line in the factory and you're set!

At also allows you to choose which implementation use at compile time or even at runtime.

The drawback of this is that it's much more code and more complicated and that you risk to have multiple instance if some code uses directly the singleton class and bypass the factory.

To take your application configuration imagine that instead of creating a simple class wrapping the config file you start to create an interface for it, then a factory to access it,... ugh!

Excuse me for this long comment but your blog entry remembered me of this and i formalised my thinking by writing here.

I should really open a blog to put these kind of stuff instead of abusing people comment system :) .

# cruizer said on December 3, 2006 7:30 PM:

i just wonder...would it be possible to have builds done by more than one server in distributed fashion? like one DLL would be compiled by one server, then the other DLL on another...then at the end of the process they'll link their outputs together. that would dramatically scale down build time ;)

# jokiz said on December 3, 2006 7:38 PM:

yep it's possible to distribute tasks between machine, but compiling per project as a distributed task would not be ideal in my opinion because of project dependencies.  i'd rather have one build machine do the compile the copy the dlls to another machine. the other machine could run the integration test suite while the main machine will just run the unit test suite, and perhaps another will continue with the installer build.  all this is possible with the "trigger" builds of ccnet

# cruizer said on December 3, 2006 8:13 PM:

hmm sounds like a great idea jokiz. have one machine do the compiles, then let the other do the tests. they should have a way of stopping what they're doing if one of the machines (in the build cluster) reports an error, of course.

ano, gawin nating project? ;) or meron na bang existing build system na ganito? tutal pakikinabangan naman ng mga kumpanya natin ito...hehe

# jokiz said on December 5, 2006 7:43 AM:

thanks for the rather long comment monkeyget, i appreciate it. having a factory for the singleton is a good idea and a cleaner way to put it. interfaces has proper place for me and i love them for ideal "unit" testing. i actually had an interface for the application configuration for my last project.

# jokiz said on December 5, 2006 7:49 AM:

problem is limited build server eh, hehehehe. boss thinks we need an upgrade but i dunno if it will materialize.  majority of the .NET projects are using CCNET bossing

# cruizer said on December 5, 2006 3:32 PM:

is the error message coming from NHibernate or from MySQL?

accessing MySQL databases can use either of two protocols: a TCP-based one, or a UNIX socket protocol (I presume Windows has an equivalent protocol for this) for local-only access (server and client are in one physical and logical machine). it might be that for some reason the local socket protocol is being used with a non-local IP address.

# jokiz's blog said on December 7, 2006 3:43 AM:

I have been using SearchKeys for a while now as I explore my mouseless computing world . It's good because

# Frank said on December 7, 2006 5:01 AM:

Christ, the issue here is not wether or not there is a flaw in the design forcing developers to edit the same file, or even some of the same lines of code; you are just moving away from the real issue.

I have experience with both vss and svn. vss in teams up to 45 people and svn in teams up to 9 people. I have never experienced the supposedly long waiting hours in vss, but i HAVE experienced numerous problems with svn. Both major merge problems, but the merge algorithm/approach is also flawed. Several times i have experienced that svn merges with no conflict - only to find that some of my bugfixes/features are _gone_. This leaves all of us with a sence that things will blow up each time we do a commit, and some times they do.

And on the more irrelevant side: the tortoisesvn gui is counter intuitive.

Bottom line is: i will never recommend svn, except when purchase price is a major issue. And even that won't hold, since buying software is far cheaper than having a team of developers being only 80% productive due to missing code, faulty merges etc.

Granted, vss has some issues (i believe that is the Microsoft translation of "bug"), but basically the checkout/edit/checkin approach is _way_ less errorprone.

# keithrull said on December 7, 2006 1:52 PM:

wow! great job joey!

and nice to see a new version of MbUnit. Congrats!

# jokiz said on December 7, 2006 4:27 PM:

thanks keith!

# SELaplana said on December 7, 2006 11:59 PM:

to let you know blogging is my occupation now. see... i am here just to blogs and earn money through it.

# cruizer said on December 8, 2006 10:20 PM:

great job! score that one for having automated unit tests

# jop said on December 9, 2006 1:41 AM:

Good for you.

I hope you wrote a failing test before putting in your change. :D

# Ealden Escañan said on December 14, 2006 12:13 AM:

Sadly, I use CTRL-W to close my Firedfox tabs :P

# jokiz said on December 14, 2006 12:21 AM:

i use it too sometimes for firefox, problem is when you're used to using ctrl+f4 from visual studio

# cruizer said on December 14, 2006 12:25 AM:

well dude...somebody's gotta do the dirty work! :P

# dehran ph said on December 14, 2006 12:28 AM:

the real world in consulting. never been there so far ;).

# jokiz said on December 14, 2006 12:30 AM:

yeah, the handyman...

# toolkit said on December 14, 2006 4:35 PM:

http://www-128.ibm.com/developerworks/java/library/j-ap11146/ seems to suggest that you can use CCTray to connect to a regular Cruise Control server, and downloading the latest CCTray version also seems to suggest this is a possibility?

# darwin25 said on December 14, 2006 5:39 PM:

ay yeah. I remember the time when I had to ask dehran_ph why I cant what is wrong with my ADO statement here:

cmd.CommandType = adCmdStoredProc        

cmd.Execute("InsertQueryName",Array & _(Parameters))

for freaking out loud Im using an insert query in MS Access and the ADO statement is showing the error "Expected: =". So I would have to modify my statement in to this

cmd.CommandType = adCmdStoredProc        

Set rs = cmd.Execute("InsertQueryName",Array & _(Parameters))

Its sking for a recordset when MS Access dont return recordsets. It turn out that this is the correct syntax

cmd.CommandType = adCmdStoredProc        

cmd.Execute "InsertQueryName",Array(Parameters)

It turned out its those freaking parantheses that's causing the problem

# jokiz said on December 14, 2006 5:50 PM:

didn't notice the third connection type of cctray, thanks for pointing that out toolkit

# jokiz said on December 14, 2006 6:36 PM:

wow, rodel the consultant

# LaTtEX said on December 17, 2006 11:01 PM:

Physics grad ka pala. Ako din eh. :p

But I did tinker with VB6.

# jokiz said on December 17, 2006 11:21 PM:

wow pareho pala tayo

# cruizer said on December 18, 2006 12:33 PM:

sana ako hindi ma-assign sa VB6, he he

# bonskijr said on January 8, 2007 9:20 PM:

Seen that one before with jQuery(now it's all over Ayende's tools (eg.NH Query Generator and rhino-mocks), before there was a term for that was called chainable methods.

example jQuery(jscript library)

$("p.surprise").addClass("ohmy").show("slow");

# jokiz said on January 9, 2007 1:59 AM:

chainable method, eh. ei, bonski, since you are my first commenter for this year, i owe you one, just inform me if you'll be returning to the phils, you got some laguna goodies from me :p

# bonskijr said on January 9, 2007 8:22 AM:

I don't back down especially with freebies heheh, hopefully this November I'll be there(hopefully inde pa expired yang freebie Stick out tongue)...

# cruizer said on January 10, 2007 1:16 AM:

he he it's in jop's code too!

# velocity said on January 10, 2007 4:26 AM:

Wouldn't this go against the "Law of Demeter"?

http://jayflowers.com/WordPress/?p=78

While I admit that looking at the code it is "seductive", would it not lead to what they call a train wreck --- strong coupling between objects?

Creating a "fluent interface" in this manner does seem more conversational and thus makes code more readable. However,as I understand it from Fowler, fluency has more to do with code that reads like it was a business document describing its domain -- his thinking on domain specific language.

# Ken Ng said on January 10, 2007 9:41 AM:

Hi, TSRh's method works and it's the best I've found so far. I've bloged(http://atpeaz.placidthoughts.com/index.php?/archives/153-Fixing-the-Windows-XP2003-Taskbar-Tooltip-bug.html) on how I used it with a shortcut key assigned to execute the fix. It's so good I've even mirrored the fix at the expense of my hosting bandwidth in case anyone wants it...

# hip2b2 said on January 15, 2007 2:28 AM:

Well you can continue to use Yahoo Messenger (YM) using the GAIM Open Source client which support archiving and logging :-D

# jokiz said on January 15, 2007 2:58 AM:

thanks william, i'll check it out...

# Alex said on January 15, 2007 5:05 AM:

That's very good! Put to my website as well.

# Jay said on January 15, 2007 8:30 PM:

I wonder if it's really good that they make an archived of your conversations online.

# jokiz said on January 15, 2007 8:48 PM:

of course you can turn it off if the conversation is a private one

# Ealden Escañan said on January 16, 2007 8:50 AM:

I believe Gaim still saves the logs locally.  You could choose to save it as plain text or HTML though, which is  more easy to manipulate than YM's binary archive.

Oh and yes I like using GTalk.  I'm not a fan of it's non-standard interface but the Gmail-like grouping of windows is interesting.  I do hope it gets a WinKey-Y equivalent to that of YM's, esp. for keyboard junkies.

# jokiz said on January 16, 2007 6:01 PM:

wow, i didn't know about the winkey-y shortcut for YM

# cruizer said on January 17, 2007 9:08 PM:

ngek kainis naman yun...

banks do have different cut-off times when transactions are considered to be for the next banking day.

# keithrull said on January 17, 2007 11:49 PM:

this goes to show that jokiz has alot of money :P hehehe! libre naman diyan master!

# jokiz said on January 17, 2007 11:59 PM:

lols, look who's talking, :p.

@cruizer: for pci what is the cut-off time?

# cruizer said on January 18, 2007 12:23 AM:

it's around 11 or 11:30pm for EPCIB, from what I remember.

# Mark said on January 19, 2007 5:16 AM:

Why would you be "teaching the basics of inheritance in java" if you "haven't really used java"? lol

# jokiz said on January 19, 2007 6:41 AM:

hi mark, i'm into C# which is very close to .NET

# uki said on January 21, 2007 9:35 AM:

whatbis the combination for the safe

# Jon Limjap said on January 22, 2007 4:49 PM:

Ironic ano? In thinking that try-catching all will help him, he actually makes it more difficult to debug and refactor code.

# Jon Limjap said on January 22, 2007 4:50 PM:

Look at the kind of processing that the constructor does. I would bet many of these processes can be delegated to separate methods or properties.

However if the process really just does one big important thing, maybe just put it in a separate method and call the method from the constructor.

Single-responsibility principle applies to constructors too.

# cruizer said on January 22, 2007 5:45 PM:

it depends.

if part of the design of the class is to have it ready in some state upon initialization then in my opinion it's perfectly valid to call some processing routine within the constructor. what i don't like though is a constructor that does everything within itself :P

# cruizer said on January 22, 2007 5:46 PM:

too much reliance on the debug/console window leads to scroll-blindness Stick out tongue in my opinion, if you're doing too much debugging/console logging, you're better off adopting TDD Wink

# jokiz said on January 25, 2007 12:02 AM:

ei, cruizer, i once paired with him to write a single unit test, after it passed, he commented, he does not feel right with the assertions, he wanted to see it to be sure, using console logging.  di pa lang talaga nya ma-embrace unit testing.

# jokiz said on January 25, 2007 12:03 AM:

the thing for me is, if it's initialization is very intensive, i'd rather delegate the construction of the said class from another (like a manager?).  at least the constructor is lightweight and can be easily used by the test cases (and fast)

# cruizer said on January 25, 2007 8:06 PM:

ah, so something like a builder pattern. you delegate the intricacies of the task of building an object to a separate class. in my opinion that's better and more testable :)

# jokiz said on January 30, 2007 11:54 PM:

hi frank,

months have passed and we haven't had any conflicts with subversion such as yours, specifically the bug in merge (if there is any).  locks are real pain and i agree now as confirmed with some of my friends.  i guess the key to us is we're using CI, so i commit on an hourly basis to prevent these conflicts.

i think i can relate on the merge conflict and i believe it happens even in vss.

# jop said on February 1, 2007 10:49 PM:

Tough luck. I too was involved in a project that does not in a project where the team members are "hostile" to agile practices. I wrote tests for my code and created a continuous integration server that only I use.  Programmers are very territorial: programmers are not allowed to modify code that they do not own. More so on parts that they have already tested manually.

Things changed when, one by one, the team members slowly get assigned to other projects (or other companies). I have inherited the whole codebase, and with that the responsibility of making the application work.

Adding tests to a finished (but buggy) application is hard work. Especially when the business logic is embedded in the stored procedures. I have no choice but to generate rows of data for the stored procedures to process. That is not the fastest thing in the world. But by the time I'm finished with the project (which also happens to be my last day in the company), I've already written about half a thousand tests and it takes more than 5 hours to run them all.

So what is my point? Add at least one test a day. By the end of one week, your 31 tests have risen to 36, and you now have a few more places that can be safely refactored. Read Micheal Feather's book: Working Effectively with Legacy Code and go look for the chapters on refactoring code without tests.

Good luck!

# jokiz said on February 4, 2007 1:26 AM:

half a thousand tests which runs in 5 hours! wow!  you never told me that you also have a CI server on that company.  

# Richard said on February 4, 2007 2:59 PM:

Aren't you just missing "Call" before "MsgBox", as it's a procedure?

# jokiz said on February 4, 2007 6:25 PM:

i've seen the docs and it says it's optional

# Damien Guard said on February 5, 2007 6:14 AM:

Hi there, I'm the guy responsible for the icon work on AnkhSVN but I'm having trouble understanding how to reproduce this issue/exactly what the problem is.

Could you please get in contact with me either in #anikhsvn on irc.freenode.net or damieng@gmail.com

Thanks,

[)amien

# dehran ph said on February 7, 2007 7:57 AM:

True, but I still don't get it why your company are hiring people experienced in TDD/CI combo devs while you know they are very few and you can hardly find .NET devs with such qualification. I only know two companies here. Why not just give others the oppurtunity to learn and be trained from it. Is agile companies promotes elitism?

# cruizer said on February 7, 2007 1:42 PM:

i think it's not a hard requirement. i have experience with TDD but not CI. si build master calisay lang may experience dun, he he. then some of our new teammates don't practice them either. i guess it's just a big plus when it comes to the evaluation. di naman siguro elitism rodel :)

CSLA.NET -- master jokiz pag may time tayo gawa tayo ng MbUnit extension na pang-handle ng testing nito :) or meron na ba? :D

# jokiz said on February 7, 2007 5:42 PM:

rodel:

elitism? nope.  it's just a plus if you've worked in that kind of environment.  too bad my boss did not know about the statistics of local .net devs (mas marami pa nga ata for java) on those xp practices.  

besides, the boss does not even require us to practice tdd/ci.  na-setup na kasi ng previous devs, and hopefully, hindi mamatay yung trend.  it's us developers which encourage teammates too.  in our current project, i was not that successful in encouraging my teammates, as a result of my previous posts

cruizer:

sure, pag may time, :p

# cruizer said on February 7, 2007 6:52 PM:

nahihirapan tuloy ako dito sa current project ko, tightly-coupled ang classes sa data storage mechanism nya...hirap i-test :P

# jokiz said on February 7, 2007 7:00 PM:

if it's tightly coupled, it's really hard to test in isolation, but you can always depend on integration tests

# Jon Limjap said on February 8, 2007 1:06 AM:

Maga-apply na ba ako kahit wala akong experience sa TDD, CI at CSLA? Hehehehehe. :p

# cruizer said on February 8, 2007 2:20 AM:

he he teka, sino kaya sa amin ni jokiz ang makakakuha ng referral fee, ha ha :P

# Gušter said on February 9, 2007 7:38 AM:

Yes it is: crap, spam, scam, etc - all the worse.

# lamia said on February 12, 2007 9:33 PM:

Hahaha! It's nice to know I'm not the only one trying to beat his own record! I never stayed for more than six months in a company so that's what I'm trying to do now. :)

# velocity said on February 13, 2007 4:04 AM:

I'm glad it worked out well for you. :-)

# DotNET @ Kape Ni LaTtEX » Blog Archive » And I thought I had a jumpy career said on February 13, 2007 6:37 AM:

PingBack from http://dotnet.kapenilattex.com/?p=23

# cruizer said on February 13, 2007 12:56 PM:

hey build master! happy one year! pakain naman! joke.

ha ha, sana makaisang taon din ako!

# keithrull said on February 13, 2007 1:48 PM:

i think my longest tenure in the past 3 1/2 years here in the US is 1 year and 1 month :D

# Jay said on February 13, 2007 9:09 PM:

makes me wonder what I have been doing here for the past 8 years LOL

# jokiz said on February 14, 2007 4:30 AM:

nice one jay, :p.  

# bonskijr said on February 15, 2007 12:44 AM:

lols, get a grip with yourself man...

all of the above sucks once you get used to VS.net and C#, and other goodies(OOP etc)

VB/A editor was very good a decade ago, but it still resembles the tech during those years:(as mentioned):

1.) No native support for the scrollwheel, add-ins were buggy. But you're keyboard mostly guy, who needs the freaking mouse when coding.(not designing forms)

2.) the CTRL+Y is a key binding from Word star

happy vba coding... :)

# jokiz said on February 15, 2007 1:10 AM:

re: scrollwheel, i gotta do something when i'm thinking, hehehe... kidding.  i still prefer mouse scroll when reading (codes/articles).  gives me the continuous reading feeling, di yung, asan na bang line ako natapos last time.

# bonskijr said on February 15, 2007 2:47 AM:

add'l param to start the service every time the server is started: "start= auto"

# jokiz said on February 15, 2007 5:11 AM:

yeah, i forgot about that, i set that from services.msc, :p

# bonskijr said on February 15, 2007 5:51 AM:

@Jay: I share the sentiments, I'll be 6 yrs this Oct., although it was the circumstance w/c made me stayed this long. This coming Oct though...

# lamia said on February 15, 2007 11:47 PM:

As long as you're happy, you're learning and you're earning. There's no reason to leave a company! Lolz!

# Slarti said on February 16, 2007 10:53 AM:

so the "selection change is committed", but the (bound to data) 'selected value' property still shows the old selected value???? BWAHAHAHAHHAHHHHAAA give me a break; who wrote this shareware we call C# ????

# jokiz said on February 18, 2007 5:38 PM:

u seem to be confused slarti, what seems to be the problem?

# bonskijr said on February 20, 2007 9:15 PM:

then you'll even love the v5.0 of reflector, check out a mini-review @ http://jayflowers.com/WordPress/?p=136

# jokiz said on February 20, 2007 9:49 PM:

i just downloaded v5 yesterday but haven't seen the release notes, thanksfor the link

# cruizer said on February 21, 2007 1:54 AM:

version 5 of Reflector works with Mono already Smile

# harshitha j said on February 22, 2007 11:21 PM:

no

# cruizer said on February 23, 2007 12:52 AM:

those J and K keys came from the good ol' vi text editor for unix-like systems Smile

# jokiz said on February 23, 2007 1:02 AM:

yeah, that was the same comment from jop, di ko lang mahanap. at least nakagamit naman ako ng vi during college days

# Joben.Rara.blogs(".NET") said on February 23, 2007 3:31 AM:

Jokiz wrote about how bloglines and gmail used very similar keyboard shortcuts for moving around. jokiz

# anish.a said on February 26, 2007 7:07 AM:

i wnt to know wr r u wt r u doing

# Nastya said on February 28, 2007 12:43 PM:

8

# Comgen said on March 1, 2007 2:44 AM:

I don't know if im getting this right.

>> tests for the correct data should be part of the client's testing

Yes this is correct. The client's (end users of your app/component) should be the one doing the initial checking for the inputs and output. Here at the bank we have sign off sheets. This is a proof that the data and info that our app is producing are correct.

This is sheet is signed both by the Heads/Users/Developers after a Parallel/Mac Test.

Or else if the developers will be the one cheking it. They'll be paying hours of hours using "DEVELOPERS RATE" for checking the inputs and outputs. =)

Pero Ganun talaga minsan ang users reklamo agad pag mali ang output pag chineck natin hehehhe inputs pala nila ang problem.

# Charu said on March 1, 2007 7:13 AM:

I am yr old friend .we studied in K V MADRAS FOR 2 YRS (3RD and 4th ) standard in 1974-75.If U REMEMBER  me ,do respond.

lv jayashree

# Charu said on March 1, 2007 7:14 AM:

I am yr old friend .we studied in K V MADRAS FOR 2 YRS (3RD and 4th ) standard in 1974-75.If U REMEMBER  me ,do respond.

lv jayashree

# jokiz said on March 1, 2007 8:31 AM:

hi comgen,

i was referring to the "client" as the client application developed in .NET

# MD said on March 1, 2007 4:09 PM:

I'm encountering this same issue. SelectedText seems to be set only *after* the SelectionChangeCommitted event is fired. This goes against the event documentation's own example...

# cruizer said on March 1, 2007 5:11 PM:

hi jokiz, your experience here is another argument for the importance of testing stuff in isolation. in your case, an error in another module (the one generating the file) cascaded into your module. it's perfectly valid to expect, in your case, error handling on your excel workbook stuff if it's a user that will feed data to it. but since it's a machine, it is expected that it should be giving you correct data.

# jokiz said on March 1, 2007 6:50 PM:

thanks for confirming that cruizer.  as a result of this, tester often encounter breaking in my assertions or even invalid castings which are taking my time to debug on which was the cause.  i think it will be better that i include a somewhat data cleansing utility or test that i could run on the newly written workbook, just to tell if client is behaving as expected.  well, that's just to easily tell if it's the client app's fault.

# Comgen said on March 4, 2007 5:08 PM:

Hehehehe mali nga ang kuha ko =P

# darwin25 said on March 6, 2007 8:24 PM:

Wahehehe. Welcome to my world bro. VBA development is no easy task if I may say.

# Randeep Singh said on March 7, 2007 3:51 AM:

Shortcut Keys

# Slava Imeshev said on March 10, 2007 5:48 PM:

jokiz,

Our Parabuild supports running builds on multiple hosts in parallel out of the box.

Regards,

Slava Imeshev

# jokiz said on March 14, 2007 7:12 PM:

We have been using NHibernate for most of our apps here in our company and having persistence tests for

# cruizer said on March 14, 2007 10:22 PM:

i think this calls for having a database instance for integration testing that's separate from the actual database used for the application.

that way, a test can be configured to run a particular method that will populate the integration test database with initial data for the test run. then at the end of the test, the data can be wiped clean.

# Ward Bekker said on March 15, 2007 1:07 AM:

Hi Jokiz,

Good point. For the NHibernate Generator of our GenWise Studio product, we are also generating NUnit tests automatically. Currently they are non destructive, only testing correct mapping.

I think it would be a great feature that a tool like GenWise Studio can automatically generate all CRUD Nunit tests and can auto-generate test data. GenWise already has extensive information about the database schema and the resulting NHIbernate mapping. The issue you describe (object c depends on b, which depends on the existance of a) unfortunately makes the generation of these kind of tests much harder, but it would be extremely cool IMHO ;-)

# Ealden Escañan said on March 15, 2007 1:48 AM:

I sort of encountered the same problem ago.  Reloading the test data on every test is slow and would sway developers from actually writing them (as what is happening to our Struts Action tests).  

I took note of how save() DAO tests (which modifies DB state) work in a blog post before.  Not perfect, since developers should still be mindful in writing said tests.

http://blog.ealden.net/article/testing-dao-save-methods

I'm not that familiar with rollbacks but if it would provide a transparent way of isolating tests then that would be great.

# cruizer said on March 20, 2007 1:59 AM:

yeah, thanks to Keith Rull for telling me about it (via his blog) too -- :)

# keithrull said on March 20, 2007 9:53 AM:

Thanks for the props cruizer :)

Generics is great. Use if right and you'll have clean and maintanable code. Use it wrong and you'll be doomed with the curse of non-maintainability.

# Jon Limjap said on March 21, 2007 1:26 AM:

Yep, generics are great. Not only can you subclass them the way keithrull did, but you can add constraints so that your subclass only accepts objects of a specific type.

Great for the application above.

# jokiz said on March 21, 2007 6:40 AM:

@cruizer-having a separate database is no need if i can just re-run the scripts before and after running the suite, it's a little complicated when data of each test cases is considered.

@ward-thanks, good luck with your product

@ealden-yep, similar views, rollbacks is just the same transaction envelope that you talked about

# jokiz said on March 21, 2007 11:28 PM:

@jon - you can also add the same constraint with collectionbase in .net 1.x, through onvalidate, but there is a trivial hack for that

# Jim said on March 26, 2007 10:53 AM:

This might just be a fluke, but it seems I get the combobox to work correctly if I click the button portion of the control, but it does not fire the SelectionChangeCommited event if I click in the text portion of the control.  The validated event seems to fire in either case.

# Keith Rull said on March 26, 2007 4:44 PM:

A few days ago we helped Rolvin sort the list of girls he wants to date .. this time we'll help him find

# Mayuresh said on March 27, 2007 11:56 AM:

How did you uninstall the UK settings ?

Thanks mayuresh

# dehran ph said on March 27, 2007 12:17 PM:

the way i see it no matter how passionate a developer can be, or how good a company can be in terms of opprunities to get invoilved and experienced the trends and latest, at the end of the day, its all about money.

it just bad for companies who invested much from recruitment to re-training etc when in a very short term they will just leave and go. worst if a project contract was already signed and everything was laid out and ready to kickoff.

I have been to several situations like these but i think its still good to wait and see and but do my homework first and finish.

I understand sometimes we encounter offers that are just too good to be declined hehe but I would just say, its your call, good luck!

# keithrull said on March 27, 2007 1:04 PM:

I believe that you are one of thre brightest guys in the local scene right now and i see you as somebody who is really worth the big bucks(and the distinction of being a great developer) ;) especially knowing that you have so much knowledge about technology... and that knowledge would really benefit any company that you go to.

God Bless Build Master Jokiz :) and I wish you all the dinero that you greatly deserve to come flowing in your pockets ;) :P

# hip2b2 said on March 27, 2007 3:21 PM:

sometimes it is not just about money. sometimes it is about "perceived" opportunities. junior people tend to see things in terms of cash and perks. that is the reason why google was so good at recruiting. they did not pay high salaries in the bay area scale. the just gave a really cool work environment and stock options. both are tools of "perceived" opportunity especially when google didn't even make a single cent.

# Comgen said on March 27, 2007 5:59 PM:

Misys Wow... Big Bucks here specially for RPG Programmers. Misys developed the system we breath here at the bank. but 2 of my team mates here came from Misys. =P My company offered a higher pay =)

# jokiz said on March 27, 2007 6:41 PM:

@rodel - thanks!

@keith - salamat sa bola

@william - i've done that in my junior years, choosing other valuable opportunities over salaries. this time, i wanted to save more for the future.  working abroad is very tempting

@comgen - ganun, ano bang company yan?  they might have been just pirated for the application

# lamia said on March 27, 2007 6:59 PM:

In my very short experience in the business. The only thing I can say is that companies work for the sake of their own personal interest. Just like how countries would ally each other not for the benefit of the other, but for itself. So I don't see anything wrong with choosing the direction that is right for you and that you truly deserve.

# Comgen said on March 27, 2007 7:42 PM:

Yaps your right sir Jokiz =)

# dehran ph said on March 27, 2007 7:47 PM:

@jokiz: lols, maybe we're not getting any younger. i must agree, retire young is a long term goal.

@keithrull: i must agree, probobly in the philippines .net arena, he's a master. so i wonder why he's still hesitant to take the bug bucks outside, hmmm....

@hip2b2: i must disagree with that sir :). i think its the seniors that perceived things more in terms on salaries and perks. stock options are only good for startups to make developers stay in the company at certain time or make seniors (spend x years in company) stay longer. offering stock options for a new senior employee, i think is not so appealing.

@comgen: i just know very little about Misys but only i can rememver in their .Net Programmer post, you are required to have knowledge in PC troubleshooting and maintenance of vb6 aps. no offense :)

# cruizer said on March 27, 2007 8:02 PM:

oo nung wala pa akong pamilya, wala akong pakialam sa sweldo :P

jokiz pasensya na at hindi mo na makukuha yun referral fee :( nevertheless salamat, cormant is one of the best companies i've worked for, kahit na sandali lang

# jokiz said on March 27, 2007 8:24 PM:

@rodel- re: misys and vb6. hey, i just knew vba, pwede na ba un? hehehe

@cruizer - re: referral, oks lang yun bossing, salamat din sa ideas.

# xypho said on March 27, 2007 9:48 PM:

bah, if you want to call a function or sub with parenthesis and not have to get a return value write:

Call MyFunction(bla, bloum)

it is the same as

MyFunction bla, bloum

but at least you have the parenthesis... I just hate the "Call" word... it puts blue everywhere and makes the code quite confusing sometimes, but I prefer it to calling functions or subs without parentesis.

As someone mentioned, this "call" is not needed anymore in .NET... what a relief...

(like the "Set" for the objects... given that everything is an object, even the in-built types, I found that illogical too...)

Have fun!

# keithrull said on March 27, 2007 9:56 PM:

@jokiz: this is true bro. i think alot of guys lookup to you. just look at your feedburner subscriptions :P and your google hits. you are a smart guy and alot of the guys here can attest to that.. and heck! you can use us as your technical reference ;)

@hip2b2: i think its the potential of the company that got those people to stick with the company. just look at some of the startups today.. i know several people who stay with their startup employers because they believe that greener pasteurs are ahead of them if the company goes up to where they believ it should be. plus.. nowadays its the bills you pay that rules your decision.. although i know that in my current situation its my happiness with the work that i am doing thats keeping me with the same company(even thou i got several offers.. its the comfortability that made me stay).

# Jon Limjap said on March 27, 2007 10:35 PM:

Langya kayo, ipipirata niyo ako tapos iiwan niyo ko?!

Joke! :p

Cruizer and I have together seen some of the worst possible scenarios an IT company can face, and if he says that Cormant is good, I would believe him -- we've had enough sh*t already.

Likewise, because I already have a family (not as big as cruizer's though :p ) going abroad is something that I'm actually trying to avoid.

And because my resume is already *too* colorful, I'm actually looking for a company to settle with for, oh, at least the next 2 years. :p

So let's see...

It's my last day in Azeus pala. See you guys on Monday.

# jokiz said on March 27, 2007 11:47 PM:

@jon - di pa naman ako aalis, just want to explore the outside world lang to know what has changed, what is around.

tagal mo kasi, nainip na ako. see you after holy week then, grand vacation ako eh hehehe.

# Comgen said on March 28, 2007 12:00 AM:

@dehran ph - Thats why im still with my company and not with misys hahahaha

# jokiz said on March 30, 2007 2:56 AM:

hi mayuresh,

just delete it from the text setvices and input languages settings

# jokiz said on March 30, 2007 2:57 AM:

hi jim,

if there was no change, i believe selectionchangecommitted does not fire, i have to check it out again.

# jokiz said on March 30, 2007 3:08 AM:

i once joined a team in developing a procurement/bidding system in ASP.NET. it involved "project for

# Comgen said on March 30, 2007 4:19 AM:

Master Jokiz, I have not tried this but i think adding a trigger for the table is another option

# amilr said on March 30, 2007 6:01 AM:

some other alternatives I've used for this:

1) generate a GUID for the ContractorId (easy way out :P)

2) normalize the ContractorId into another table where it will be the incremental Id

# jop said on March 30, 2007 7:58 PM:

My first option would be to use a dates (if necessary, datetime) instead of version IDs.

When contractors change, I log the date on when the change will be effective.

When looking for the contractor profile for a project, then I'll just use the a projects start date/bid date an look for the contractor "version" that was effective during that date.

# jop said on March 30, 2007 8:09 PM:

Read Temporal Objects from Martin Fowler's website (http://www.martinfowler.com/eaaDev/TemporalObject.html) for an object oriented solution for your problem.

In your scenario, a Contractor will be a temporal object. Projects can have many bidding contractors. The relationship is contained in another object, say ProjectBid, which knows a project a contractor and the date the contractor joined the project.

# Jon Limjap said on March 30, 2007 8:59 PM:

As amil pointed out, you could've just used sequential GUIDs. Some other ID/PK should then be used to indicate the linked profiles. Use the GUID to link that specific profile instance to the bid.

# cruizer said on March 30, 2007 11:23 PM:

papasa sa mga ganyang interview yun mga bookish :P

# jokiz said on March 31, 2007 12:11 AM:

i'm also a trivia man boss, i also like those questions for fun

# cruizer said on March 31, 2007 12:39 AM:

yeah but sometimes you get people who know what they are but don't know how to apply them in real-world problems. or you can turn away those who work great in solving real-world problems but don't know everything you're asking (yun mga "just in time" learners, in contrast sa mga "just in case" learners; see Kathy Sierra's blog entry:  http://headrush.typepad.com/creating_passionate_users/2005/03/motivated_to_le.html)

# jokiz said on March 31, 2007 1:30 AM:

we're both on the same side boss, exactly what this post is about. thanks for the link boss, reminds me of what i teach my students in high school, learn not to memorize the mathematical formulas but how it was derived, and why it works so they have a deeper understanding of the type of problem

# cruizer said on March 31, 2007 3:18 AM:

naging teacher ka pala jokiz?!

# jokiz said on April 10, 2007 8:05 PM:

not actually, i had few students lang (3-6) for my math summer classes

# jokiz said on April 10, 2007 8:10 PM:

@keith: 30 feedreaders?  malaki na yan sa iyo?

# jokiz said on April 14, 2007 6:29 PM:

thanks guys!

# cruizer said on April 15, 2007 3:52 AM:

for me integration tests help me flesh out a good API for my classes and contribute to ensuring SRP. but in my experience, doing mock testing did not help ensure i have a bug-free app. nowadays i think "testing" is a misnomer. i tend to agree now with the BDD people who say that tests should be called specs and that BDD/TDD is a design process, not a testing process :)

# Bonski's Box said on April 17, 2007 6:11 AM:

Previously jokiz bloged about this one , I'd like to add further. The same issue cropped up again in

# viewer said on April 18, 2007 3:07 AM:

we called it "Divide and Conquer" Algorithm

# Sanjay M said on April 24, 2007 1:08 PM:

Thats interesting...! Another possibility is a mismatch between 32 bit and 64 bit binary for operating system.

# Alex said on April 25, 2007 6:47 AM:

Thank You

# ISSoft said on April 25, 2007 10:19 AM:

Thanks for the information. I was just looking for where to put the XML documentation when the DLLs are on the GAC.

Just a hint, invalid comments are worse that no comments. It's better to not generate docs if they're not updated that to have invalid information.

If you keep the old documentation you never know when you can thrust on what Intellisense sais.

Just my 5 cents.

Thanks again.

# Loas said on April 25, 2007 12:41 PM:

Hi!

Im doing a aplication to smart device.. and we don´t have selectionchangecommitted.. what to do in this case?

# jokiz said on April 25, 2007 5:25 PM:

yep, but it's very common for the xml documentation to be not synchonized with the code, i've seen it 90% of the time

# jokiz said on April 25, 2007 5:25 PM:

i guess you have to take selectionindexchanged and work around it, don't forget the DesignMode checks for windows forms, it would help sometimes

# juan said on April 26, 2007 9:07 AM:

I agree with Frank, svn sucks! We were forced by the team manager to use it and we all (a 10+ people team) miss the good old vss times. The edit merge model is not for us. My main complain is you don't get any warning when modifiying files that other persons are modifying at the same time. At least you should have given the option to wait. Then you go througt the tedious colnflic solving process. awful

# nermin said on May 1, 2007 8:56 AM:

I know this could be kind of late, but I believe I have found an elegant solution to mocking dependencies to Csla objects using TypeMock library:  please check my post at:

www.nermins.net/PermaLink,guid,d9a9fa9c-a700-4157-9c5e-59119bf0ea08.aspx

# Joku said on May 1, 2007 12:11 PM:

I feel the same way about passing the IDs around. Those tie IDs are specific to the database and tie you to the database. You should just be passing around business objects... but it doesn't look like that's a common practice in ASP.NET

# cruizer said on May 11, 2007 12:28 AM:

great finding jokiz :) certainly unicode should only be used if the non-ASCII characters appeal to you or is absolutely needed/expected for the app

# jokiz said on May 11, 2007 12:44 AM:

thanks to boss, he's the geek who observed about it

# Ayende Rahien said on May 11, 2007 4:14 AM:

Yes, prefer to use Unicode at all times. It is more space, but when you get to size that you really are concerned about it, you almost always needs unicode

# Ward Bekker's Blog said on May 15, 2007 1:25 AM:

NHibernate v1.2.0 Released - A impressive production-ready release from the NHibernate team. If it was...

# cruizer said on May 23, 2007 1:37 AM:

wow sarap! sayang di ko inabot... :)

# jokiz said on May 23, 2007 1:42 AM:

alin boss?  inabot mo yung project na un ahhh

# cruizer said on May 23, 2007 1:59 AM:

i mean yun books.

seriously yun project na yun was one of the most enjoyable i've had, thanks to TDD and CI :) namimiss ko na yun dito...hindi CI dito, at hindi rin TDD (here, "unit testing" means you test the code yourself, ha ha)

# jokiz said on May 23, 2007 2:34 AM:

awww, ang slow ko grabeh... i agree, once you've worked in a tdd-ci environment, you wouldn't turn your back and do it the old way again (given the chances, meaning if you're not working in a bank, hehehe)

# Jon Limjap said on May 24, 2007 7:14 PM:

Well I guess the real problem would lie on defining what "sufficient" code coverage is. There was this post on object mentor (blog.objectmentor.com/.../100-code-coverage)that said that "if your goal is 100% coverage, you’ll focus on that goal and not focus on writing the best tests for the behavior of your code."

So the challenge would be to strike a balance between teaching the *value* of TDD and code coverage, as well as writing good tests, so that the objective is not 100% code coverage, but instead, something like 80% code coverage but *with very good tests*

# Jon Limjap said on May 24, 2007 7:24 PM:

Ako pala yung nagsabi ng best "legacy code" :P

As I explained, maybe the difference is in how I define legacy code. My definition goes like:

a) Code that was made by me more than 6 months ago (yes, that fast). Sometimes even code made by me more than a week ago because I easily forget things! :p

b) Code that was made by others, no matter how new.

The operative concept being intent: once you forget or don't know or understand or is confused by the intent of the code, it's legacy code.

However I would agree that, because the tests document the intent of the existing code, code that is covered by *good* tests can't really be considered legacy.

# jokiz said on May 24, 2007 7:44 PM:

good point. i intentionally didn't define what is sufficient code coverage for me since i really don't know what is should be.

i've read that object mentor post before and i agree with his point.  

however, i know most of our developers are not really into writing automated tests and the way i see it, forcing them to write tests would mean keeping a 100% code coverage.  not so good tests are acceptable at first since we are still learning but we'll know about them not being good as we go along the way.

personally, i still have some quandaries on the ideal way to test things, setting up tests, etc.  and i still don't have anyone to tell and share these stories with, are you in? :p

# Robert Locke said on May 24, 2007 7:44 PM:

At the risk of sounding draconian, you could insist that no code be committed to the code base unless accompanied by the appropriate test cases.  To make this more manageable, you could enforce this policy on the newer developers only.

# jokiz said on May 24, 2007 8:04 PM:

hi robert, incorporating code coverage rule in our continuous integration setup is better than having just a policy since breaking this rule will break the build, :p.

OT: mobius company? you from downstairs, there's a mobius company in our building at net one, taguig

# jop said on May 24, 2007 8:55 PM:

If the new developers still do not understand the value of TDD, then the only thing you can do is seduce them to the test driven way of programming :D. Most of the times, though, they are the ones that produce the most bugs. When defects arise, take advantage of the situation and let the team think of the tests that would have uncovered that bug if only the code was test driven. It is not directly helping to the "code coverage" metric but it doesn't matter. What matters is that the team learned something out of the bug. Hopefully, the guy that introduced the bug learned something, too.

There are also those developers that are test driven already but are tempted to go back their old ways because they think they've hit a hard to test code. When that happens, then you can just all agree to call up a meeting and brainstorm on the ways to test it. I think when you start doing this, you'll get meetings every few minutes. But as you go along and gain a lot of experience writing tests, the meetings should eventually dwindle. This idea came from Michael Feathers (I think) but I am unable to find a link.

# Jon Limjap said on May 24, 2007 9:42 PM:

Not sure if I'm qualified. I myself am not putting up as much tests as I should, nor am I putting up tests firsts the way I should. :p

These things are what you miss cruizer for.

# Jon Limjap said on May 24, 2007 10:10 PM:

I have a new post in my blog (dotnet.kapenilattex.com) that somewhat answers some aspects of your quandaries. Hope it helps :)

# jokiz said on May 24, 2007 11:12 PM:

@jop, i'd love to have those kind of meetings.  

the idea on pointing out the recurring bugs to the one who does not write tests sounds familiar, i've done that with some of my officemates.  it's really better for them to learn that way.  

but the worse scenario (which really happens) is when some of them leave and you're stuck there afraid to incorporate a feature in their module without breaking their existing implementation without tests.

# Robert Locke said on May 25, 2007 9:21 PM:

Yipes, I should've read your post more carefully before talking out of the proverbial you-know-what.  Yes, including coverage in the build success criteria is better than a policy (we live in PHP land where unit testing/coverage tools aren't quite up to snuff).

Do you personally insist on 100% coverage with the code you write?  If so, (and I have a feeling you do =), then  apply that standard and expect the same from your group, they will be better off for it.

OT: Yup, 8th floor.  Pay us a visit anytime. =)

# jop said on May 27, 2007 4:37 AM:

# jokiz

I understand your situation. Someone leaves and their knowledge about the module is not encoded in test form. The leaver will be asked to create a handover "braindump" document detailing whatever it is that is needed to be explained to the pitiful guy that will takeover the application.

I think there is a better way. Rather than ask the leaver to create the document, I think it is much better to just take over the application on the very day that he filed his resignation and try to work on the application. Start adding tests and refactoring, while the person is still there and you can still ask questions. Look for the biggest files, biggest, classes, longest methods, most complicated code, and work from there. Read Micheal Feathers' book and then memorize Resharper's short-cut keys. You'll be using it a lot. :D

# smash said on May 27, 2007 8:02 PM:

thanks for the heads up jokiz! the RowTestFixture is really cool. and so is the EmbeddedResource feature, since I'm embedding test documents.  

# r. budiana muharam said on May 28, 2007 12:41 AM:

can you send to me about that. I mean about keyboard shortcut for word 2002 and 2003?. thanks a lot.

# jokiz said on May 28, 2007 2:58 AM:

just click the link for the ms kb

# jokiz said on May 28, 2007 3:06 AM:

resharper's short cut keys?  hello, nasa dugo na rin yan!  well in our company, turn over happens in just one day sad to say.  btw, i'm currently browsing feather's book, thanks!

# jokiz said on June 1, 2007 12:57 AM:

Jetbrains has just released their beta version of Resharper 3.0, download it here . Again, VB.NET guys

# Avery said on June 1, 2007 10:46 AM:

I had 2.5 installed and installed 3.0 Beta over it. It broke my intellisense :( I can't get visual studio or resharper intellisense working now. Really disappointed. Oh well, back to 2.5.

# Tony Merante said on June 2, 2007 9:25 AM:

Yea I'm experiencing some of the same problems. For the double resharper menu, You have uninstall all resharper versions and then run dev.exe /setup from a command. then install resharper 3.0... Of course that will reset any custom visual studio hotkeys you have set up.

# jokiz said on June 4, 2007 3:51 AM:

tony, the workaround proposed by jetbrains i think is better for the double resharper menu

# lamia said on June 7, 2007 7:28 PM:

I think this is a very good tool to look up to(for me) in the future. :)

# Rosario said on June 8, 2007 6:39 AM:

Thank you. I also have lost half of my working day to fix this small but really annoying issue.

# Victor@ru said on June 14, 2007 5:01 AM:

> ...kernel32.dll methods... PrivateProfile...

> the above functions are used just to read and write

> files.

Yes. The INI files.

We need this methods to support current applications.

New applications does not require the INI files.

> .NET is now using configuration files for an

> application configuration and they have provided the

> System.Configuration.ConfigurationSettings class for

> this.

The ConfigurationSettings class operates with the XML files. It's fine for applications... without backward compatibility.

# erantivas said on June 19, 2007 12:33 AM:

This has worked to me.

# chieripot said on June 22, 2007 10:29 AM:

Thank you so much!!! I was getting really mad when SelectedIndexChanged was firing multiple times. Thanks again!

# Vidhya said on June 26, 2007 12:09 AM:

Use ExecteScalar. ExecuteScalar is used when you just want one single value from one single row, as in:

SELECT Name FROM Users WHERE UniqueId = 42

ExecuteNonQuery is used for SQL statements that don't return any data (For example, INSERT, UPDATE, DELETE)

# cruizer said on June 26, 2007 1:30 AM:

or...don't attempt to fix it if you don't have regression tests at hand ;)

# Jon Limjap said on June 26, 2007 1:53 AM:

O bushing, what gives?

# jop said on June 26, 2007 2:59 AM:

Define "broken"?

# jokiz said on June 26, 2007 3:29 AM:

pagbigyan mo na ako boss, rant lang yan.  wag mo na ako pahirapan, :p

# Jon Limjap said on June 26, 2007 7:47 PM:

Kung code ang tinutukoy mo, alam ko tawag jan kapag ganyan.

Gold-plating code. :D

# cruizer said on July 3, 2007 1:17 AM:

thanks jokiz, your turn next year :) i think glenn moved his blog to phissug.org, that's why his devpinoy blog hasn't seen action lately...

# jokiz said on July 3, 2007 2:50 AM:

nyek, di naman ako kasing active ninyo.  anyways, para alam nila na star studded bloggers dito, hehehe.

re: glenn's blog, onga noh (phissug.org/.../default.aspx).  so he's an ex-devpinoy blogger now, sana aggregated na lang dito if possible with community server

# Brain bench C# said on July 3, 2007 3:00 PM:

I want to clear C# exame

# Deven said on July 3, 2007 3:01 PM:

I want to clear brain bench examination.

# Whiner01 said on July 3, 2007 11:58 PM:

it can't be important -- it can't be true - MS forgot to list it here:

List of the keyboard shortcuts that are available in Windows XP

support.microsoft.com/.../301583

and here:

Keyboard shortcuts for Windows [95 & 95]

support.microsoft.com

and this page is so stupidified, i can't tell if it's there or not, but it isn't:

Windows Vista Help_ Keyboard shortcuts

windowshelp.microsoft.com/.../2503b91d-d780-4c80-8f08-2f48878dc5661033.mspx

# ggsubscribe said on July 4, 2007 1:04 AM:

uy tnx jokiz! nde ako ex devpinoy blogger uy ... hinahanap ko kase yang aggregator na yan hehe. I really need to get things going din kase with phissug. was forced to blog there some months back kase nde na gumagalaw yung site. at least lately medyo gumagalaw na kahit papano. yung sql related blogs ko lang naman nalipat ng phissug. yung iba sa devpinoy pa rin. though wala ako mablog lately na nde related sa sql heheh.

pano ba gagawin para makita rin sa devpinoy yung blog ko from phissug?

# jokiz said on July 4, 2007 2:03 AM:

sorry bout that master glenn. i have no idea but i believe it is possible, a lot of bloggers are doing that with community server.  you should consult keith about this

# lamia said on July 12, 2007 8:03 PM:

Why are all the good people leaving the country!!! Though as you said, there's a possibility that you're not moving there. :)

# cruizer said on July 12, 2007 8:24 PM:

happy bday jokiz!!! :) sana'y matuloy ka rito...

# n.ocampo said on July 12, 2007 8:36 PM:

Happy Birthday, build master. Are you leaving(for singapore)?

# lamia said on July 12, 2007 8:51 PM:

Happy Birthday din pala! :)

# barakoboy said on July 12, 2007 9:29 PM:

happy birthday !!!

# jokiz said on July 12, 2007 9:55 PM:

thanks! di pa sure nards

# Jon Limjap said on July 13, 2007 2:06 AM:

Haba birdi tu yu! Mey yu hab mor birdis to ***! Mwahahahaha!

# diana said on July 13, 2007 3:35 AM:

Maligayang kaarawan sa iyo na isang tunay na techie! God bless you.

# cruizer said on July 13, 2007 4:27 AM:

oi diana kumusta...! pati sa yo rin barakoboy

# dehran ph said on July 13, 2007 3:13 PM:

happy birthdi jokiz, pacanton ka naman tska pahipon, wahehehe. sabi sa friendster kaw daw ay "tototot" yearsold na.

good luck pre.

# willydavidjr said on July 15, 2007 6:35 PM:

Sir kahit hindi pa po kita nakikita, Happy Birthday na rin! Aging gracefully ba? O halata na talaga?  Hihihi..Again belated po!

# jokiz said on July 15, 2007 7:18 PM:

@willy, weird, we've chatted na sa ms office months ago.

@rodel, cge padeliver ko na lang jan

again thanks

# jokiz said on July 16, 2007 1:30 AM:

I blogged last year last year about Overriding Equals and GetHashCode . You provide an Equals override

# cruizer said on July 16, 2007 1:55 AM:

i thought it had something to do with 29 being a prime number :P looks like i was mistaken! ha ha

# jop said on July 16, 2007 3:13 AM:

I agree - 31 is ok. But beware of 42. It is *not* a simple number: http://en.wikipedia.org/wiki/The_Answer_to_Life,_the_Universe,_and_Everything

# cruizer said on July 16, 2007 6:35 AM:

ha ha!!!

# Wes Weeks said on July 17, 2007 7:32 AM:

I realize this is an old thread, but I have to post(rant) somewhere.

Running naked full speed into a giant saguaro cactus is painful...

Getting 1000 papercuts on your face is painful...

100 monkeys armed with hammers trying to hit you in the crotch is painful...

SVN is something much, much worse.

I am at a client site where they recently made the switch from VSS to SVN due to a source safe database crash (so I'm not promoting VSS here).  But the switch to SVN (using both TortoiseSVN and ANKHSvn) has been the proverbial jump from the frying pan into the fire.  I have spent more time in the last month fighting conflicts, merges, lost files etc then I have in my prior ten years as a developer.  Developers cringe when they have to commit their changes (so they dont' do it as often, not a good thing) at what they will probably face trying to resolve conflicts.  The standard now before committing changes is to make a local backup of all of your source code beforehand due to issues with files coming up missing.  I didn't think it was possible to both Suck and Blow at the same time, but I have since been proven wrong.

I am on a team with only three developers.  I shudder to think of what trying to develop on a larger them with this POS must be like.

Save yourself a lot of time and grief.  If you are switching from VSS, looking at Team Foundation Server or SourceForge Vault (I'm sure there are others as well, but these are the only ones I'm familiar with).  I wouldn't voluntarily use Subversion again if I was paid $100 every time I modified a file. (well I might at that price, but I'd have to think about it ;)

If I can just save one person from going through my pain, I can rest easy when I die knowing I have eased the suffering of another...

# watashi said on July 17, 2007 11:23 PM:

Hello , I wnt to get the files in alphbetical order using c#.what should i do? thanks in advance

# jokiz said on July 18, 2007 12:03 AM:

if you're using FAT, you have to sort it manually

# cruizer said on July 18, 2007 3:51 AM:

oh no! so what's the solution then? program the class to catch the offending string (PRN) and replace it with another, harmless (to Windows) one?

# Jon Limjap said on July 18, 2007 6:17 AM:

Object name yan na PRN? Diba string lang naman yung gateway code...

# cruizer said on July 18, 2007 7:17 AM:

yes, and PRN is the directory name that's being created, which will fail.

# jokiz said on July 18, 2007 8:40 AM:

just prepend (tama ba word) the codes with underscore so no special handling for the keywords.

# jd2001 said on July 19, 2007 1:24 PM:

Posted a problem and commented a right answer. Unless when they come up with a reserved names with an underscore, probably in 10 years or never.

# jop said on July 19, 2007 8:20 PM:

# deadline driven development Ah, DDD, short for deadline driven development. At least you are not doing the other kind of DDD - document driven development. Btw, I need an MS Word plugin - if you know of a plugin that can syntax-highlight code and has intellisense - all inside the pristine confines of MS Word then I'll pay big bucks for it. :)

# jokiz said on July 19, 2007 8:24 PM:

what for?

# velocity said on July 19, 2007 8:43 PM:

How much big bucks are we talking about here? ;-)

# jokiz said on July 19, 2007 8:50 PM:

bastusan ba raw, cge pagbigyan ang mga bossing

# cruizer said on July 19, 2007 9:37 PM:

ha ha. jokiz i saw that "new search engine using deadline-driven methodology" comment before my last day in the company :P

personal observation though: using TDD didn't assure me of bug-free code. in fact some of the bugs that were reported during QA and UAT were because of my code :P but the tests helped me isolate the bugs and fix them. also doing TDD helped me come up with an API/interface that (I think) is usable.

that reinforces my belief that TDD is not about testing but designing software based on expected/desired behaviour.

# n.ocampo said on July 19, 2007 10:14 PM:

What a rant... it seems that you’ll going to reach your boiling point. “Deadline-driven development” Sacrificing the value of TDD. "Senior guy is giving junior guy latest copy of his bits every morning." >> Why? They don’t like using repository? Oh oh.. "From ASP.NET to ASP classic" >> this is funny. Why use ASP classic (I hate to see those inline codes.) when you can do it in ASP.NET with no pain.

# jop said on July 19, 2007 10:22 PM:

# jokiz - what for

Hehehe.. I've been doing a lot of coding in MSWord lately. We are required to get the documentation reviewed before starting coding.

# velocity - big bucks

two adult male antelopes :D

# cruizer - tdd

Now that you mentioned it, I should probably write an xUnit tool for MSWord. WUnit?

# barakoboy said on July 19, 2007 11:03 PM:

@cruizer very well said.

# jokiz said on July 19, 2007 11:30 PM:

@cruizer: agree that it doesn't assure bug free.  disagree on tdd is not about testing but designing classes.

tdd makes it possible for classes to be designed as testable, but in the end, all you wanted is to include automated tests EASILY.  these tests are the one helping you in the long run

automated tests are there to easily know if you've broken something, we all know how helpful it is.  if it's wrongly written, it will be discovered and should corrected.

# jop said on July 20, 2007 12:46 AM:

# cruizer - using TDD didn't assure me of bug-free code Yes it does assure me of bug-free code, BUT only on the code that is covered with test. # jokiz - disagree on tdd is not about testing but designing classes. TDD is about design - it forces you to think cohesion and coupling. It is also about requirements - you put your specs in the code, and you make it pass. BUT it doesn't stop there. Once your done with the test, then it moves on to its other role: as test.

# jokiz said on July 20, 2007 1:11 AM:

@jop, yep, agree that it is about design with a higher intention of "to test".  just disagreed on cruizer's comment "tdd is not about testing"

# cruizer said on July 20, 2007 1:29 AM:

well "TDD is not simply about testing" -- part of it, but not everything. i guess the reason why others shy away from TDD is because they think it's a replacement for actual testing, which it's not.

using TDD on the stuff you mentioned help me adapt the API quickly in the face of refactoring and changes. I probably wouldn't have pulled it off in a more efficient manner if not for the test harness (automated alright). It also helped me isolate class responsibilities.

# jokiz said on July 20, 2007 1:51 AM:

@cruizer - that's better than your first statement "TDD is not about testing".  :p.

# cruizer said on July 20, 2007 3:04 AM:

by golly yeah :D but to me the value of TDD is in allowing me to freely refactor code with wild abandon, knowing that the safety net of regression tests are there to keep me in check. thus I can easily evolve my classes and methods and see immediately that everything is still working as expected. so really it's more of a design tool to me ;)

# Jon Limjap said on July 22, 2007 9:51 PM:

Hehehe... Guilty as charged! (raises both hands and both feet)

Send me to the TDD slammer now ;)

When you're working with a non-TDD versed team (as we are at this point) someone has to somehow enforce it, usually the lead. But since no one is TDD-esque in the team anymore, including the lead, nobody's enforcing it, really, and many of the members treat the tests as obstacles rather than as tools.

# Jon Limjap said on July 22, 2007 9:59 PM:

Oh yeah... for #2: I eventually told the senior guy to ditch his CSV parser hand-coding and get a library. I'm not sure if he downloaded the same thing the junior guy was using. But it eventually saved him from all that trouble.

Seems to me senior guy has an NIH attitude that needs to be, ummm, regulated. :p

# DotNET @ Kape Ni LaTtEX » Blog Archive » The TDD wake-up call said on July 23, 2007 12:08 AM:

Pingback from  DotNET @ Kape Ni LaTtEX  &raquo; Blog Archive   &raquo; The TDD wake-up call

# velocity said on July 23, 2007 12:42 AM:

BDD is the course-correction needed for TDD. It's the same banana but peeled differently.

http://behaviour-driven.org/

# velocity said on July 25, 2007 11:18 PM:

Have you tried taking a look at WiX as an alternative to building setup/installer projects.

http://wix.sourceforge.net/

There's even a project(early in dev) to tie up MSBuild and WiX together.

http://www.codeplex.com/WiXML

# Kevin said on July 31, 2007 6:53 AM:

even in the release version of 3.0, I found it painfully slow on vb.net.

# The Senior Guy said on August 2, 2007 1:51 AM:

Well i guess second guessing comes natural when all the facts are not available, but uninformed condemnation is wicked. First off, has it occured to anybody that maybe those DDD comments were a (witty) expression of utter frustration to of how the current code goes against everything this senior guy expected how the this project would be ran (in all its promised test driven-ness, sacred object orientation, and Agile-ness). When youre required by your manager to put in more than 10 hours or work everyday, to work on Saturdays and Sundays, (and, yes neglect your email and daily news browsing) just so you can hit what the upper people promised to deliver on a date that was set even before the senior guy started work with the company. When somebody goes by your desk to ask if how come you havent finished fixing 10 bugs, after all it has been 1 hour since the last time he asked you. It surely doesnt sound TDD to me and i wont call it by any other name. Here's a trivial exchange from that project: 1. mgr asked sr developer to fix n bugs of a system he just inherited. 2. sr guy says it'll take a month just to modify the code, 3. mgr ask to render all waking hours as overtimes to finish it in a week, 4. sr. dev asked about time for the unit testing, 5. mgr says skip it. And oh, by the way, did i mentioned this company promised the sr guy that they never do overtimes. The csv incident. Who made the sr guy the team lead?!? because i assure you the sr guy doesnt know it. The team lead is the guy who holds weekly meetings but everybody seems to be afraid of talking with (cept the sr guy of course). If one does a quick hack of csv-to-database persistence by using the quickest means possible, he wouldnt bother looking for the perfect tool. And surely he wont put it up under version control since its still not ready. And if a jr guy asks everyday for something to do to help but doesnt have an idea how, would the sr guy keep the source code to himself? By the way, has anybody seen the csv importation code lately? The one that actually made it to svn. Does it contain a single call to a Split() method? I always wondered why you decided to work on csv imports/display when we were assigned to do separate tasks. It cost time by you not working on your module and us doing redundant work that has to be integrated. and... and.. it went against the skills training of the jr guy by you thinking it througg for him. The ASP.net/ASP classic argument. As has been repeatedly mentioned by the team lead who holds weekly meetings, the whole point to the project is to get clients interested in what the system has to offer. Up to this point its still classified as inhouse and, hence, is paid for by the company as an expense (as opposed to being an income). The object is to demo it as soon as possible using (ASP.NET, ASP classic, perl, sql, or whatever.) The senior guy doesnt care, as long as it worked. The irony is the ASP.net version somehow got checked in with compile error. I dont think tdd is the only way to test code, but at least one should code the code before it is checked in. As to ASP.net vs ASP classic, thats another story worth another thread. Whew, nothing like a long rant against a long rant... Nice blog site. Best regards,

# jokiz said on August 2, 2007 2:57 AM:

@the senior guy

am sorry to hear about your bad experiences with the project.

"If one does a quick hack of csv-to-database persistence by using the quickest means possible, he wouldnt bother looking for the perfect tool. And surely he wont put it up under version control since its still not ready." - i disagree, if it is a team development (2 counts as a team), it should be in version control even if the code is not yet ready or not using the perfect tool.  besides, it's free!

"By the way, has anybody seen the csv importation code lately? The one that actually made it to svn. Does it contain a single call to a Split() method?" - yes, the point is the time wasted when you two are doing the same thing differently which you both have no idea at that time.

"I always wondered why you decided to work on csv imports/display when we were assigned to do separate tasks. It cost time by you not working on your module" -  i did not work on any import, i said i saw both of your codes as you both asked me for some help at your desks so the rant was just my observation.

"it went against the skills training of the jr guy by you thinking it througg for him." - i just led him to do it in the correct way to do it because he was asking me how to do things properly.

"The irony is the ASP.net version somehow got checked in with compile error. I dont think tdd is the only way to test code, but at least one should compile the code before it is checked in" - this is my fault, i did not setup our CI server early on because there was none available.  besides you also had problems checking in code which does not compile on our machines.  this should have been captured by the ci server which i set up before i left.

thanks for commenting!

# The Senior Menace said on August 2, 2007 3:57 AM:

Errata:  <br>

By "code your code..." i mean "compile your code..."

# The Senior Menace said on August 2, 2007 4:45 AM:

As a personal preference i dont check-in test code. Just because its free doesnt mean it doesnt come with a cost. Ive not yet even finalized the file names. To check it in would mean a lot of rework for me later on. Anyway its a personal judgement just as you have your own. Time is only wasted when the jr guy or the sr guy didnt learn anything about what theyre doing. Theres nothing wrong with doing things differently. It's an exploratory period, its natural to test things out. And besides, the task is simple enough for one person to do. The team lead assigned the jr guy to me not so much for help but for training. If the jr guy is made to do redundant tasks, its not w/o a reason. Youre right, i too am guilty of checking-in code that broke a build (which i do quite often if i may say), but i fix it the moment i find out about it. And its mostly because of new files i forgot to check in. The asp.net code stayed broken for more than a week until i had to replace it because we needed to do a demo. Anyway, on a personal note, i have a lot of respect for you as a fellow senior developer and a work mate. If theres something sour about this whole thing is that the rants useem to have unfairly (wittingly or unwittingly) made a bad person out of me. You will probably not know the things i did just to make that project a better one. For one i was probably the first person to inform the team lead how bad the existing design was. Thats why we had a reenginering project in the first place. I always (and still does) welcome your feedbacks just as i direct them to you personally about things i dont like about the code or the design. By the way, how do you format these blog text into paragraphs anyway?

# jokiz said on August 2, 2007 7:14 AM:

"Ive not yet even finalized the file names. To check it in would mean a lot of rework for me later on. Anyway its a personal judgement just as you have your own." - i respect your view on this, but note that subversion stores history of files even when you renamed it, :p.

"Time is only wasted when the jr guy or the sr guy didnt learn anything about what theyre doing. Theres nothing wrong with doing things differently. It's an exploratory period, its natural to test things out. And besides, the task is simple enough for one person to do. The team lead assigned the jr guy to me not so much for help but for training. If the jr guy is made to do redundant tasks, its not w/o a reason." - point taken on your explorations on csv parsing.  same reason why i was surprised when jr guy was doing it in asp classic, so i introduced him on how to do it using repeaters and gridview, to train him.

"Youre right, i too am guilty of checking-in code that broke a build (which i do quite often if i may say), but i fix it the moment i find out about it. And its mostly because of new files i forgot to check in." - you know why?  because you disabled AnkhSVN which should be the one to automatically add the files to subversion when you add new files to the project. i was surprised why the jr guy has ankhsvn disabled too and i found out you advised him to.

"The asp.net code stayed broken for more than a week until i had to replace it because we needed to do a demo." - i'm not aware of this, you should have confronted the jr guy who did it since he was ranting to me that you replaced his code with the asp classic style.

"If theres something sour about this whole thing is that the rants u seem to have unfairly (wittingly or unwittingly) made a bad person out of me" - sorry about this but this post was to share my reader my experiences with work and at the same time raise argument with them for a discussion if ever there are some points that i view differently from theirs.  this is not meant for officemates or bosses to read, :p.

"I always (and still does) welcome your feedbacks just as i direct them to you personally about things i dont like about the code or the design." - I also did direct to you both items that apply to you (2 and 3).  #2 i asked you why not use subversion, #3 i asked you why do it in asp classic way, i even asked you to choose between classic or the asp.net way for our implementation.

"By the way, how do you format these blog text into paragraphs anyway?" - double line breaks will do (html disabled, drop your <br/>'s)

# The Senior Menace said on August 2, 2007 7:21 AM:

@Jon Limjap.. on NIH First: Split() is not what i can claim as my own csv parser; Second: im the one who told you about how cool the csv parser tool i found on the net that treated csv files as stream object. i was looking for csv parsers even before i told you about it. Third: I have an old habit of understanding what my needs are before i go forth and look for a tool. I have been burned countless times by 3rd party tools not delivering on what theyve promised. Nothing's wrong with using a 3rd party library/tool just as long as you know why youre using it. The sin is when one continously use them when theyre no longer needed. Fourth: I hope time will never come when one should have to regulate intellectual curiousity and creativeness.

# Jon Limjap said on August 2, 2007 10:10 AM:

Just to let both of you know, I also disable my AnkhSVN because it hangs my VS, but I have little or no problems with doing manual adds in Subversion because I made it a habit to diff the files that I'm going to commit.

I usually do this to check if I'm committing any "test aka trying-it-out" code, or commented code (everyone knows how I hate those). So I see which files haven't been added yet. It doesn't take too much time because I commit few files at a time often -- at least most of the time.

Maybe that could help

# Jon Limjap said on August 2, 2007 10:24 AM:

Senior guy,

Point taken -- however, most of the time you have to be realistic, take a step back, and think: hasn't someone else solved this problem before? Someone must have addressed this and posted their solution somewhere.

I'm not saying that we should rely on 3rd party solutions all the time, but we could take time to check some of them out (especially the open source ones), see if they fit our needs, see if they work, get rid of them if they don't. Especially if the problem is something like CSV parsing, complete with all its caveats.

And I do remember telling you to "not reinvent the wheel"... I'm now not sure which came first, the 3rd party tools or me telling you that :P

It's nice to explore our intellectual curiosity and creativity, but there's also the need to be pragmatic and prudent, especially when you're on a deadline :p And I think I've heard the boss tell you once to not treat everything as an academic exercise.

I hope you don't misconstrue our intentions here: we're merely sharing what we think is the best for all of us devs. That includes you. ;)

# The Senior Menace said on August 2, 2007 4:12 PM:

@Jon Limjap

There's a difference between understanding the problem and reinventing the wheel. I used a fine and existing csvReader wheel. Is that a snipe at the customized expression evaluation we've been using? :P

I think satisfying our intellectual curiosity and expressing our creativity is not merely nice, but an intrinsic need. Why else would jokiz ponder upon the number 29 in generating hash codes. or why would I write a number-to-words script using SQL, or why would anyone try to fix a working code.

The Boss asked the *whole group* not to "treat everything as an academic exercise" in reference to the OOP class (which I refrained from attending) and as a reminder that the Project is a real application that's going to be used by real clients.

Is there any other way anyone can misconstrue a rant? Its alright, everybody's entitled to one. Thing is, I probably have more to rant about than any of you but I do my ranting on weekly meetings and group emails (and yeah, even source code comments!) where we can actually do something about them. Painting a bad picture of some dev however anonymous with half informed statements is hardly sharing what is best for us (which excludes the target dev).

# The Senior Menace said on August 2, 2007 11:54 PM:

(sorry jokiz, just one last shot..)

Training is one thing, spoon feeding is another. I dont believe in "training" somebody by spending a large part of the day sitting down with him showing the one "correct" way. And please, let's avoid speaking about correctness as if its something absolute. Id rather encourage someone how to think (inside and outside of the box) and make sound and independent decisions. They may not always be decisions I can agree with, but its better than parroting.

I know exactly why I dont use AnkhSVN. And its not because somebody told me so.

# jokiz said on August 5, 2007 7:58 PM:

ahh, if you're talking about those moments where we paired using test-driven development, it's training in my vocabulary, besides, i let him drive the keyboard (no mouse, :p) 80% of those times.

# jop said on August 5, 2007 8:50 PM:

Junior Guy (or is it Junior Menace), if you are reading this, you are also free to butt in. I'm also eager to know what's on your mind, or, judging from the comments made by your collegues, what's not (yet) in it. :D

# DotNET @ Kape Ni LaTtEX » Blog Archive » When TDD goes red said on August 9, 2007 4:36 AM:

Pingback from  DotNET @ Kape Ni LaTtEX  &raquo; Blog Archive   &raquo; When TDD goes red

# keithrull said on August 18, 2007 8:50 AM:

Congrats jokiz! I knew it! Kaya pala tahimik ka na eh dahil nagiimpake ka na! :P ;)

# cruizer said on August 18, 2007 7:24 PM:

selamat datang! :)

# jop said on August 18, 2007 7:44 PM:

Eto pa yung iba...

Enna vishayam (Tamil)

Suswaagatam (Hindi)

Huan ying (Mandarin)

# modchip said on August 18, 2007 7:52 PM:

Boss cruizer, Indonesian yang selamat datang diba? :D

# Jon Limjap said on August 19, 2007 1:06 AM:

Goodluck bushing!

# jong.net said on August 19, 2007 1:57 AM:

congratulations bossing!

# n.ocampo said on August 20, 2007 6:42 PM:

goodluck buildmaster!

# Melvin said on August 21, 2007 10:58 AM:

Congrats! Welcome to kamote coding! nyahahaha!

# jokiz said on August 21, 2007 3:57 PM:

thanks guys, ouch @ melvin

# cruizer said on August 21, 2007 5:41 PM:

bakit kamote coding <offended />

ha ha :P

# barakoboy said on August 22, 2007 1:58 AM:

@melvin hahahaha baket nga ba kamote coding bossing?  :D

# Dan said on August 23, 2007 7:47 PM:

Thanks. Nick your program worked a treat. TSRh's link led me to some russian page.

# Junior Guy said on August 28, 2007 3:17 AM:

I just visited your site, just want to say goodluck to your new job! :D

# n.ocampo said on August 28, 2007 11:47 PM:

nice tips. VS Team should enable this by default.

# cruizer said on August 29, 2007 1:32 AM:

nice tip ;) kanina lang i was cursing VS 2005 for making it confusing for me to edit two similarly-named .cs files in two separate projects/namespaces. pwede naman pala i highlight. great! :)

# jokiz said on August 29, 2007 1:45 AM:

nyahaha, see? may nagbenefit pa, hehe

# n.ocampo said on August 29, 2007 1:46 AM:

VS Team should enable that by default. nice tip...

# bonskijr said on August 30, 2007 7:33 AM:

good thing it's enabled by default in VS2008 Orcas..

# cruizer said on August 30, 2007 11:20 PM:

i don't like clearcase either...i miss subversion ;) although i think the company chose clearcase because it's backed by IBM/Rational and its strength is in branching

# rmisra said on September 2, 2007 1:59 PM:

Automated merges never made sense to me to begin with but with SVN there have been conflicts 90% of the time where SVN has attempted to merge local changes during a checkout.

The whole idea of an auto-merge is counter intuitive. Suppose developers A and B are working on file 1. Both A and B go through their unit testing and A checks the file in and B merges those changes back into their working copy. Doesn't this mean that B should really re-unit test since they really do have a new code file?

Also we have a development team of 20 and we have mandated a lock-modify-unlock process in our production pipeline and we have NEVER had anyone sitting there twiddling their thumbs with nothing to do because someone else has a file they need. We simply have them work on something else until the file they need is is available.

# samy said on September 4, 2007 6:53 AM:

Good one...... thank you so much

# Crache said on September 5, 2007 8:35 PM:

Under Visual Studio 2005 .NET, to get IntelliSense to work again if Resharper broke it, you can go into the \Common7\IDE\ directory and run "devenv.exe /ResetSettings" to reset VS back to defaults.  If you have a lot of custom settings, maybe you can look at a way to backup the important ones, but this made IntelliSense usable again.

There may be a more direct way to solve the problem without resetting everything, but I've never tried Resharper and haven't had this problem myself, so you're on your own.

# mike said on September 7, 2007 8:27 AM:

This worked perfectly...it solved a problem I had struggled with for an entire day, namely SelectedIndexChanged firing multiple times. I appreciate you insight and expertise!

# basildonbond said on September 11, 2007 7:27 AM:

I read Wes's excperience with incredulity...

Anyone losing code when committing to svn really needs to rtfm - see svnbook.red-bean.com/.../svn.tour.cycle.html

Doesn't anyone spot all those files with .mine extensions appearing in their working folders?!!!

See also svnbook.red-bean.com/.../svn.basic.vsn-models.html

for a good discussion of lock-modify-unlock vs. copy-modify-merge.

# jd2001 said on September 11, 2007 3:57 PM:

LEFT JOIN = LEFT OUTER JOIN

RIGHT JOIN = RIGHT OUTER JOIN

# Chomsky said on September 11, 2007 6:17 PM:

For point 2:  FROM Table1, Table2  

This is a syntax defined in SQL 92.   Oracle people are used to this form.  

It can be an inner join or an outer join depending on the where clause.  For example, you can have this:

FROM Table1 T1, Table2 T2  

Where T1.KeyID = T2.KeyID

# jokiz said on September 12, 2007 6:33 PM:

@chomsky - my teammate also told me that, smart engine.  but i do not know if it really tries either of the two joins?  i need to verify it myself, ;p.

thanks!

# Penny said on September 13, 2007 8:18 PM:

I am finding it harder and harder to explain how to round off numbers to my daughter who is in the 3rd grade, she just doesn't understand, do you have a simple way to explain to her?

# Gurijala said on September 15, 2007 5:05 PM:

Hi jokiz,

Nice little tip.

Thank you.

# jop said on September 17, 2007 7:36 PM:

I like to be in control. I map Ctrl-9 to View.TrackActivityinSolutionExplorer and press the keys when I need to find out where I am in the Solution Explorer.

# NorthwindDBA said on September 20, 2007 1:42 PM:

would have been simpler to use this.

isnull(au_fname, '') = isnull(@firstname, '')

# kymistry said on September 24, 2007 7:43 PM:

in your 1st example. i'm confused???? if it is a 0.5 you round down or up. because the 1st example has no continuity. please help/advise????????????

thank you

# Guy N. Hurst said on September 26, 2007 2:07 PM:

With the merge model, you should always do an "svn status -u" to see if someone else already made changes before you commit. If there are changes already there, you can do an "svn diff" with various options to see what they are. If you don't go through a process like this before you commit, you will indeed have headaches!

Another thing, there are known issues with AnkhSVN not doing a rename properly. I wouldn't judge SVN based on a freeware graphical interface to it. At its core, it is a command-line program, and that is how I have used it for 18 months. I think it is great! It is reliable, secure, and fast. But again, people using this tool need to use it correctly by following an orderly process.

Currently, we are considering using it not only in our Unix environment, but also on our Windows/.NET platform in place of VSS. I am checking out various integration options for use with VS2005. I personally would avoid AnkhSVN until it improves. Right now, it seems to be giving SVN a bad name...

Guy

# Rajesh Kumar Muntimadugu said on September 30, 2007 10:29 PM:

Thank you very much This information is very useful to us. We have spend 2days for solve this issue using SelectionIndexChanged. But after seeing this information we changed that to SelectionChangeCommitted It is working fine now.

once again thank you

# Craig said on October 4, 2007 10:47 PM:

I am experiencing the same thing.  This is really annoying, but i know of a way to "kinda" get around it.  If you go a head and write all of your code for the nested switch statements, and then manually tab the first case statement of the nested switch, and then select all of the lines below that and click edit->advanced->format selection it will correct the unusual indention.  I wish there was another way around this silly, overlooked error.

# Craig said on October 4, 2007 10:50 PM:

It seems Microsoft is aware of the issue and refuses to fix it.  See the link: connect.microsoft.com/.../ViewFeedback.aspx

# ann said on October 9, 2007 12:20 AM:

really, is it 20,000 now. i remember u need to send a text message and show them the confirmation before you're able to get your rewards. do they still do this...?

how did you inquire about the new rewards program? they should give us a new phone instead..

# Peter said on October 9, 2007 11:53 AM:

Great tip Jokiz, I've noticed this issue a while back but didn't pay attention to it to much but just found this link and it worked like a charm.

# Prerak said on October 11, 2007 5:52 AM:

Hi,

I have been facing problem because SelectionIndexChanged firing multiple times. I am using now SelectionChangeCommitted event.

It solves my problem but now when I try to select any item in my combo for the first time, it selects first item only and it works properly when I select any item next time.

FYI, I am using this combobox in my datagrid.

Looking for help!

Thanks a lot,

Prerak

# prerak_v_shah said on October 11, 2007 5:56 AM:

Hi,

I have been facing problem because SelectionIndexChanged firing multiple times. I am using now SelectionChangeCommitted event.

It solves my problem but now when I try to select any item in my combo for the first time, it selects first item only and it works properly when I select any item next time.

FYI, I am using this combobox in my datagrid.

Looking for help!

Thanks a lot,

Prerak

# Cesar Sanz said on October 19, 2007 9:32 AM:

Thanx for the aclaration, it helps me a lot.

Regards

# velocity said on October 22, 2007 8:28 PM:

By default, word automatically repaginates, esp. when you're in page layout mode.

View your doc in normal mode or turn off automatic repagination.

Assuming you're on Word 2003, go to Tools->Options->General and clear the background repagination checkbox.

For a more generic troubleshooting approach, you can refer to support.microsoft.com/.../en-us

# Robert Locke said on October 28, 2007 9:54 AM: