CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Brendan Tompkins [MVP]

Blog First. Ask Questions Later.


Published by

Comments

Peter van Ooijen said:

It's music or working, can't do both at the same time. But when I have to digest something taking my guitar can help to make things sink in.
# October 8, 2003 8:17 PM

Vazz said:

Company policy prohibits listening to streaming audio and MP3 from the office PC (bandwidth and legal reasons I guess). But nothing against listening to music from my ipod. I do that most of the time. :-)
# October 9, 2003 1:19 AM

Darrell said:

# October 10, 2003 4:29 AM

Brendan F Tompkins said:

Right! That's cool! If I weren't a consultant and actually had a budget for books, I'd buy it.
# October 10, 2003 4:34 AM

Darrell said:

What about (myString.Length == 0) or (myString.Length < 1)? :)
# October 14, 2003 9:42 AM

Brendan F Tompkins said:

Yeah. It looks the fastest. I don't know why, but I like using String.Empty better.
# October 14, 2003 9:46 AM

Doug Thews said:

Yes, it is documented that String.Empty is faster. The primary reason is that = "" actually creates an object, leading to more assembly code on the execution stack.

FYI ... Another tip when using strings is to use StringBuilder when concatenating strings.

You can check out a book I co-authored for other ASP.NET performance tips on Amazon.com. Look for "Professional ASP.NET Performance", by Wrox Press.
# October 14, 2003 10:38 AM

Steve said:

Nice! Why couldn't you have posted this a couple of months ago when I was trying to figure out why they would make it such a pain to copy font's between controls? :) Thanks for the tip!
# October 15, 2003 6:35 AM

Sigurdur G. Gunnarsson said:

Microsoft recommends using "string.Length == 0", there is even a rule to that ends in the latest FxCop versions :)
# October 15, 2003 7:05 AM

lars said:

Interesting. You'll have to tell the whole story sometime. I have looked at a few press releases re: Intrinsigo, and they tell a confusing story. Was Steve McConnell or Kord Kutchins the CEO? And was this *the* Steve McConnell?
# October 17, 2003 8:59 AM

Brendan F Tompkins said:

Lars..

There were three of us to start, and Kord was CEO for the first 3 months or so, if I can remember properly. Steve took over and focused on landing VC money, while Kord took on a business dev position.

No, this was not *the* Steve McConnell, of Code Complete fame, if that's what you mean. But it was *the* Steve McConnell as far as I was concerned... Great guy. ;)
# October 17, 2003 10:03 AM

Shannon J Hager said:

b, d
# October 29, 2003 2:33 AM

Thomas Tomiczek said:

d, d
# October 29, 2003 3:24 AM

Nicole Calinoiu said:

d, d
# October 29, 2003 4:08 AM

Jason Bock said:

d, d

FWIW I'd much rather use ActiveReports. It's just a better tool - I don't feel pain when I have to create a report ;)
# October 29, 2003 5:09 AM

Darrell said:

d, d
# October 29, 2003 5:18 AM

Manohar Gurpur said:

c,d
# October 29, 2003 7:56 AM

Blair said:

d, d
# October 29, 2003 8:14 AM

Theo said:

d and d no question, CR is just a nasty licens trap
# October 29, 2003 11:37 AM

Brian Desmond said:

c,d
# October 29, 2003 4:40 PM

ingig said:

b,d
# October 30, 2003 12:04 PM

Mark said:

You wouldn't happen to be one of the "Dotnet Gnomes" would you? Is that your costume for tonight?
# October 31, 2003 2:38 AM

Darrell said:

Cynical moral: Network admins are big hairy unfriendly people.

Realistic moral: The ogre is not interested in doing work, as evidenced by the fact that instead of investigating a complaint, he tried to blame anyone else, and then when confronted with evidence, dismissed the issue as unimportant.
# October 31, 2003 2:50 AM

Paul Laudeman said:

d,d
# October 31, 2003 6:01 AM

Sebastien Lambla said:

Top of my head, but if the internal route and the external route have different access times (bw aside), the only valid reason for it not working is on the TCP/Ethernet side of things. Few things to think about:
1. Would there be a switch between the server and local that fragment tcp packets?
2. Would there be a bad MTU configuration on one of the ethernet adapters causing an MTU negociation?
3. Is there some kind of IPSec going on the wire to access the server from inside?

Frankly, my best advice, use Ethereal and register the network data for this single request (using your nifty app) and look at the TCP frames directly. If they are the same, look at anything between you and the server.

Just a question, but, is there more latency or slow transfer? And is the image smaller than the TCP frame?
# November 1, 2003 7:44 AM

Brendan Tompkins said:

Sebastien,

Thanks for the tips. I haven't researched the latency vs. transfer, but my guess would be latency is the problem. The image is less than 1K in size. How could I go about veryifying the size of the TCP frame? I'm kinda clueless about this sort of thing.

Thanks again!

Brendan
# November 1, 2003 2:57 PM

Jesse Ezell said:

Factory classes should generally go in the same namespace/project as the classes they construct.
# November 3, 2003 4:12 AM

Steve said:

+1 for putting them in the same namespace/project as the classes they create.
# November 3, 2003 4:45 AM

Brendan Tompkins said:

I agree, but what if you cannot because of circular reference problems? Most of my factory created classes are in my Common tier.
# November 3, 2003 5:08 AM

Eric said:

Maybe the Ogre would be more agreeable to assisting in this endeavor if the Gnomes promised to buy him a beer?

Seriously,
Does the "slowness" happen on all segements of the internal network or just on a particular segment?

Is the web server in a DMZ? If so, your problem might be with the router between you and the web server.


Eric
# November 3, 2003 10:08 AM

Addy Santo said:

Same Namespace ++
# November 4, 2003 9:13 AM

Brendan Tompkins said:

Ha! The Ogre doesn't drink. Perhaps he should... like us Irish gnomes. :)

The Ogre called in a consultant company on Friday who fixed the problem. The problem was due to something called WebSense that the Ogres use to keep gnomes from looking at pictures of naked gnome women at work and downloading any software that could make our jobs easier...

They disabled WebSense for requests from our DMZ. Funny, because when I mentioned WebSense to the Ogre last week, he really barked at me. Anyhow. Our problem is fixed. The Ogre still says that IIS is somehow causing the problem, even though it was fixed by disabling WebSense.
# November 5, 2003 3:13 AM

Brian Desmond said:

This is definetely a convenience of being both the ogre and the gnome - i run the network, fix the network, and write the software ... not much that doesn't get routed through me at some point.
# November 5, 2003 1:29 PM

Paul Laudeman said:

I'm not sure if you can use these links to beat the orge into submission, but they may be helpful anyway:

Team Development with Visual Studio .NET and Visual SourceSafe
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/tdlg_ch2.asp

Web Projects and Source Control Integration in Visual Studio .NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vetchWebProjectsSourceControlIntegrationInVisualStudioNET.asp

Deploying an ASP.NET App Using Visual Studio .NET (see Creating the Project Remotely)
http://msdn.microsoft.com/msdnmag/issues/02/11/ASPColumn/
# November 6, 2003 3:45 AM

Paul Laudeman said:

Also, check out:

Debugging in Visual Studio .NET (see Remote Debugging Components Install)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vstchDebuggingInVisualStudioNET.asp
# November 6, 2003 3:48 AM

Brendan Tompkins said:

Paul. This is just what I was looking for! Thanks!
# November 6, 2003 4:02 AM

the past said:

glad to hear that being an asshole made you feel as though that was the best thing that ever happened to you. there's a whole part of the northeast that thinks otherwise.

by the way - you left out the part where you were a prick to the chick who put up with your neuroses for 5 years. you handled the departure like an asshole. no apology. no explanation. no equal distribution of profit. wonder how you explain that to the current lady.

good luck with that whole marriage thing. bet you feel good about yourself. keep in mind, once an asshole - always asshole. you have not done much to suggest otherwise.

and hey, just a reality check (to get you back to earth). i'm in my own committed relationship (lest you recall that i had little interest in being married . . . to you). good luck with all that. appreciate your consideration, sincerity, and concern. i sincerely feel none of that.
# November 6, 2003 9:12 PM

Brendan Tompkins said:

Um. Looks like my ex-girlfriend found my blog.

:)
# November 7, 2003 1:01 AM

Mark said:

hmm... sounds like someone is mad that you got married... How did she find your blog anyway? She must have been searching for you. Why was she searching for you if you were the bad guy in the comments above? Well, good luck fending her off in the future... looks like you've got a stalker on your hands!
# November 7, 2003 1:12 AM

Chris said:

geez man, I hope you don't have any pet rabbits or anything. ;)
# November 7, 2003 1:22 AM

anon said:

Yeah, a committed relationship to a guy in a white suit.
# November 7, 2003 1:24 AM

Kris said:

That girl must be desperate if she is gooling on Brendan Tompkins :)
# November 7, 2003 6:38 PM

Paul Gielens said:

Where's Dr. Phil when you need'm ;)
# November 7, 2003 10:09 PM

Sebastien Lambla said:

In my company, I must say we don't really do anything that would get the ogre invovled (even though they are very friendly guys, quite unusual in the IT world. I think I got them happy when they saw my corp laptop had an unapprooved os, with a skin, object dock, a beta of office 2003 and objectdock :) )

Anywy, about the TCP frame problem, what can happen is the following:
Let's say you have a network configuration with this:
A -> B -> C -> D -> E

A: Your web server
B: The IAS Server
C: a network router
D: another network router
E: Your computer

Now, your TCP stream is cut down into IP packets, and they follow a resumable cut / reconstruct algorythm.

For a 1400 bytes image for example, let's say A sends it. The TCP Frame, the packet containing the data, has a payload big enough (1500 to include the IP/TCP header and the data). You got a single packet flowing through the network.
Let's say B filter that packet, and cut it down because C, from time to time, says it has a problem routing the data (this also does happen under high network load). It will try to cut down your single nice packet into 5 packets, with a size of 300 bytes (this is an extreme unprobable case, but I saw it happen once or twice).

Now, your C is a network router, of the Cisco type. It receives the data, and because of priority, sends your packet 1, 2, 3, 4 and 5 in a completely different order (Unprobable but once again, can happen if C is a set of 10 nodes with alternative roads etc).

D may itself be configured to reorder the packets, and then buffers 1, 2, 3, 4 and 5 to get them in the right order. This has a tendendcy of happening if D is another IAS server (because they need to parse the data before sending it).

It will happily send these packets back to your computer, in the correct order. In the mean time, a lot happened.
While you can't do much about reordering, you can analyse the data you receive when you don't have any latency (using Ethereal or netmon) and see the payload of your TCP packet. You can then do the same thing for where you got latency. By seeing how the data differs, you can be pretty sure of a network problem.

Finally, as a tip, if they use WebSense, they use IAS. IAS has a very handy feature which is called the Firewall client, which install on the client machine and goes you through the IAS server without any kind of proxying. And most of the time, if you know the address of your proxy, just try to locate the installation files (there is a documentation on the ms site about where to find it, just look at the IAS doc in msdn).

If you're carefull enough, and if the ogre is not paying attention, you can get rid of any "non porn non hack non development nothing" kind of filters. For free. Oh, yeah, it's very handy for icq, messenger and IRC as well.

Seb
# November 8, 2003 11:47 AM

Sean said:

I think I dated her sister...that sounds so familiar; except when she spoke it was more like: blah blah blah!
# November 10, 2003 7:15 AM

James Curran said:

As a wise man once said "Closets are for Hangers/Winners use the door/So, use it Rosie/That's what it's there for..."

ArrayList was create *precisely* to fill that limitation in Array.
# November 10, 2003 8:28 AM

Scott Galloway said:

Yup...nice thing is you can just use the ToArray method of the arraylist to give you a 'real' array when you need it - I typically implement a couple of methods in an inherited class called ToStringArray and ToIntArray - guess what they're for :-)
# November 10, 2003 8:00 PM

Brendan Tompkins said:

You may be convincing me to just go with an ArrayList, but a simple array does have advantages. No casting, strongly typed, lean, more portable. And what's the big difference between implementing ToStringArray and adding an Append method? You're still adding code so I'm not sure I see the big payoff?
# November 11, 2003 1:47 AM

James Curran said:

Speed mostly. ArrayList is probably implemented as a linked-list to allow for fast insertions. Array is probably implemented as contiguous block, for fast access. Choose the task you want done fast.
# November 11, 2003 12:00 PM

D said:

Have you noticed, nobody has linked back to their site in any of these comments? :)
# November 12, 2003 2:12 AM

Derek said:

The "String to DayOfWeek" method works great for single words, but if you had an enum called "SingleParent", you probably would want to have the string displayed as "Single Parent", which defeats this method. Also, this is not very localization friendly.

- Derek
# November 21, 2003 8:09 AM

Brendan Tompkins said:

I agree, I'll ususally create a static method for getting the display string if I need something more than the enum string values.
# November 21, 2003 8:20 AM

Darrell Norton's Blog said:

# November 25, 2003 4:04 AM

Grant said:

That's frickin' hilarious! I have to share this with everyone I know . . .
# November 25, 2003 8:11 AM

Darrell said:

That image is too funny!

I like SDelete - "Securely overwrite your sensitive files and cleanse your free space of previously deleted files using this DoD-compliant secure delete program."
# December 1, 2003 6:49 AM

Paul Wilson said:

What was that diagram created with?

As for your question, can you roll up the common items into machine.config?
# December 3, 2003 4:58 AM

Brendan Tompkins said:

You know, it's been so long since I used machine.config, that I forgot about it... But I remember having difficulties with it in general. In short, it was hard to manage across multiple versions of the .NET Framework. This might have been just a bug with my server, but I remember having some problems with two machine.config files in different locations. I also want to be able to deploy my configuration with my installers, and I'm not entirely comfortable having an installer messing around with machine.config.
# December 3, 2003 5:35 AM

andy maurer said:

That is an interesting diagram.

Perhaps pull your duplicate settings out of the config file and put them in a central file/db and then in the config file just have a location pointer to those settings.
# December 3, 2003 5:36 AM

Brendan Tompkins said:

To anwser your other question, I created that diagram with Visio 2003 and Visio UML (to reverse engineer my framework). I originally created it to print out a big poster, but Visio's new web export is pretty cool. You can even search for method names, and it'll point out the containing class!
# December 3, 2003 5:38 AM

Brendan Tompkins said:

After more research, I've noticed that the above code DOES in fact set the time-to-live for the cache object. MS contradicts the sdk information here: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnspts/html/sharepoint_amazonwebparts.asp" From this MS doc:

This is the code used to write to the cache (and to specify a 30-minute timeout period):

PartCacheWrite(Storage.None, cacheKeywordResult,
new KeywordResultCache(keywordReq, productInfo), new TimeSpan(0,30,0));

I've also noticed in my code that this TimeSpan value seems to both set the time-to-live AND the time-to-write. Possibly someone from MS can clairify this for us all.
# December 10, 2003 3:18 AM

Grant Killian said:

# December 11, 2003 3:37 AM

Darrell said:

In a Dilbert-esque way, most people are promoted to their level of incompetence. This is more a reflection on bad management practices than it is on talented software engineers/developers/craftsmen.

At good companies, there is a technical advancement path. And, just like your baseball analogy, project managers can be managing software engineers that are paid more (maybe even much more) than they are!

Research shows that great developers can outproduce average developers by ratios of up to 10:1. If so, some of that value should be given to the great developer, mostly so that you don't lose him/her!

This is getting too long, but I am certainly interested in the topic. Maybe I'll post more at a later date.
# December 11, 2003 4:06 AM

Thom said:

Wow, I was having this exact same conversation with myself yesterday. What to do when you’re no longer excited about software engineering? Do you just grow old? Do you hang up the keyboard for pen and paper?

I had thought about the teaching path, but I'm not sure my temperament is right for teaching, all though I find that a great way to give back to an upcoming generation of IT professionals.

I know I couldn't just *retire*, I would drive my self insane.

You ask some interesting questions and hope that you get some feedback.
# December 11, 2003 5:06 AM

Charles said:

It's all about loyalty (or at least big chunk of it). Some people don't respect "managers" who haven't paid their dues in the trenches.

A lot of managers are great with politics but lack the ability to deal with the folks in the trenches.

They bridge the gap by looking for their "star" performers and promote them up the chain. These folks tend to have the respect of their fellow developers because they've been through the war together. When that person gets moved up the ladder, all the others are willing to support that person because he/she is a great guy/girl and have built a rapport with each other. They know the "manager" as a person... not as some flake off the street who's spent years going to seminars and can recite the "best practices" like the Pledge of Allegiance.

Those we've spent time in the trenches with know the "best practical practices" and that's why we're more open to coworkers we admire and respect when they progress to higher positions during their career.

# December 11, 2003 7:19 AM

Darrell said:

Probably books written by academics, like me (yeah I haven't forgotten that one!).

Or you could take some naming tips from here: http://www.mindprod.com/unmain.html
# December 16, 2003 7:09 AM

Darrell said:

# December 16, 2003 7:12 AM

Brendan Tompkins said:

Darrell, saying you were academic was a compliment! But looks like I did follow #6 on the "How to write un-maintainable code." Well, never said I was qualified to do this job. ;)
# December 16, 2003 7:13 AM

Mark said:

Hmm, how about this:

Derelict Accounts, def #1: http://dictionary.reference.com/search?q=derelict
# December 16, 2003 7:18 AM

Veintitrés Puros said:

Not sure I like your term "Idle" Not that it's not accurate, just that it's not normally used in software. If I saw "Idle" I may think that meant "ready to go"...
# December 18, 2003 2:02 AM

Darrell said:

From the article:

"If the 58cm high robot were human-sized, it would be able to run at a speed of about 2.4kph (1.5mph)."

Slow down there, speedy!!!
# December 18, 2003 10:51 AM

Paul Laudeman said:

# December 18, 2003 12:16 PM

Veintitrés Puros said:

There's lots of stuff out there on this. For one, see Re: Active Directory Available as Linked Server? at http://groups.google.com/groups?q=Query+Active+Directory+from+SQL+Server&hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=CJscpSE%24BHA.2260%40cpmsftngxa08&rnum=2

-The .NET Sheriff
# December 19, 2003 3:56 AM

Brendan Tompkins said:

Found this, which shows exactly how to do it:

"Joining Heterogeneous Data"

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/joining_heterogeneous_data.asp
# December 19, 2003 6:12 AM

Brendan Tompkins said:

# December 19, 2003 8:43 AM

Vijay said:

Definitely a cool utility ! A perfect reverse engineering tool if i may say eventhough i havent tried it out yet. Will check that out once i'm back from vacation.

And btw have you tried out Rational's VS.NET plugin to do reverse engineering. It is pretty good too.
# December 30, 2003 3:27 AM

Jesse Ezell said:

Google will give you more than 500 :-).

If DataView is in your code, try the context sensitive help. Otherwise, go to the index. Search sucks.
# December 30, 2003 5:39 AM

catcat said:

In Step 1:
I got the follow error:

??? OLE DB ???? 'ADSDSOObject' ????????
OLE DB ????[OLE/DB Provider 'ADSDSOObject' ICommandPrepare::Prepare returned 0x80040e14]?
# January 1, 2004 6:33 PM

Brendan Tompkins said:

See
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q299410 for more
detailed information on how to perform a SQL distributed query by using
ADSI.
# January 4, 2004 4:03 AM

Carl said:

I think expecting VisualStudio internal search capabilities to be comparable to Google is grasping.

Google's entire focus is earch technology. So it BETTER perform as good as it does.
# January 4, 2004 4:55 AM

Brendan Tompkins said:

Carl. Agreed. But, VS.NET help could throw us a bone, and if we search for DataView, at least give us a "Best Bets" pane or something like that.
# January 5, 2004 1:09 AM

Darrell said:

I should have made it more clear. The problem is when people are defined *only* by their job, letting other things like hobbies, fun activities, family life, friends, religion, etc. slide off the shelf.

That being said, I love what I do. I love going to work almost every day, and I love coming home in the evening. I would be lying if I said money doesn't matter, it does. But enough (not an overabundance) money combined with enough non-work time equals a happy me.
# January 5, 2004 2:18 PM

DonXML Demsak said:

I tried to cover this very topic a couple weks back by creating a consulting worksheet that can be used to convert FTE salaries to and from W2 rates.

DonXML Demsak
# January 6, 2004 5:29 AM

Brendan Tompkins said:

Very cool. This is one reason I posted this, to get this type of feedback. We should all be as aware of this stuff as we are of design patterns, IMO.
# January 6, 2004 5:32 AM

Queen said:

Is this the real life ?
Is this just fantasy ?
Caught in a landslide,
No escape from reality.
Open your eyes, Look up to the skies and see,
I'm just a poor boy, I need no sympathy,
Because I'm easy come, easy go, Little high, little low,
Any way the wind blows doesn't really matter to me, to me.

Mama, just killed a man,
Put a gun against his head, pulled my trigger, now he's dead.
Mama, life had just begun,
But now I've gone and thrown it all away.
Mama, ooh, Didn't mean to make you cry,
If I'm not back again this time tomorrow,
Carry on, carry on as if nothing really matters.

Too late, my time has come,
Sends shivers down my spine, body's aching all the time.
Goodbye, ev'rybody, I've got to go,
Gotta leave you all behind and face the truth.
Mama, ooh, I don't want to die,
I sometimes wish I'd never been born at all.

I see a little silhouetto of a man,
Scaramouche, Scaramouche, will you do the Fandango.
Thunderbolt and lightning, very, very fright'ning me.
(Galileo) Galileo. (Galileo) Galileo, Galileo figaro
Magnifico. I'm just a poor boy, nobody loves me.
He's just a poor boy from a poor family,
Spare him his life from this monstrosity.

Easy come, easy go, will you let me go.
Bismillah ! No, we will not let you go.
(Let him go) Bismillah ! We will not let you go.
(Let him go) Bismillah ! We will not let you go.
(Let me go) Will not let you go.
(Let me go) Will not let you go. (Let me go) Ah.
No, no, no, no, no, no, no.
(Oh mama mia, mama mia) Mama mia, let me go.
Beelzebub has a devil put aside for me, for me, for me.

So you think you can stone me and spit in my eye.
So you think you can love me and leave me to die.
Oh, baby, can't do this to me, baby,
Just gotta get out, just gotta get right outta here.

Nothing really matters, Anyone can see,
Nothing really matters,
Nothing really matters to me...

Any way the wind blows.
# January 6, 2004 5:40 AM

Brendan Tompkins said:

Wow.. Well, okay. Someone posted the lyrics to Bohemian Rhapsody. The only connection I can make to this topic is that the operatic part whic sees the Bohemian begging to be let out of prison "Bismilla!
We will not let you go! Let me go!.." But again realizes that he is doomed to
live his life in prison "Never let me go!"

So, someone's saying that we're (W2 contractors) imprisoned ?
# January 6, 2004 5:49 AM

Mark Bonafe said:

I think it was an excellent post, Brendan. I just went though a negotiating process where I switch from salaried. I used the company's own documentation on their benefits and what it cost to provide them. Funny how these costs get played down in one direction and played up in the other.
# January 6, 2004 6:43 AM

Veintitres Puros said:

You went from full time to W2? Good for you! You're right, funny how they'll double-talk you about $$.

Have you ever noticed that when dealing with agency people, they never actually speak the figures? They instead write numbers down on pieces of paper and pass them over the desk to you. Funny. It's like they can't say out loud how badly they're screwing you. The only other people in the world I know wo do this are car salesman.

In the language of my home country, we have a saying "Quien paga manda"
# January 6, 2004 7:09 AM

John said:

Who Offers, pays
# January 6, 2004 7:13 AM

Veintitres Puros said:

Lo siento,

- He who pays the piper, picks the tune.
# January 6, 2004 7:16 AM

John said:

Veintires poopos, aren't you supposed to be on "patrol"?
# January 6, 2004 7:22 AM

Darrell said:

37% for benefits? That's pitiful. Even at the shipyard it was around 42%.

With CapTech I'm sure it is more, since they pay 100% of my health care.
# January 6, 2004 11:33 AM

Brendan Tompkins said:

Hey D.

So, it's 42%... Good. The higher the better, as Mark B said, he was able to use this information to negotiate a better W2 wage.

-B
# January 7, 2004 12:47 AM

John said:

I propose a moratorium on people proposing moratoriums.

In conclusion, I propose a moratorium on Mr. Tompkins proposing future moratoriums.
# January 7, 2004 5:09 AM

Randolf said:

I second that motion. Further, I propose a moratorium on people who comment on moratorium proposals.

In conclusion, I propose a moratorium on John posting comments about Brendan proposing a moratorium. Therefore, a moratorium on proposing or commenting on moratoriums should be supported.
# January 7, 2004 5:12 AM

John said:

Hey Rudolf, why don't you stick your red nose somewhere else... I propose a moratorium on YOU!
# January 7, 2004 5:17 AM

Randolf said:

My name is Randolf. I propose a moratorium on your bad spelling!
# January 7, 2004 5:18 AM

Bert Sancloth said:

Despite these two moratorium doofs, I will gladly support this moratorium. I think it is completely not a waste of time. I feel that this would benefit me tremendously in my profession. Thank you so much for your courage to bring this issue to light!

Blog on Mr. Tompkins, BLOG ON!
# January 7, 2004 5:22 AM

Brendan Tompkins said:

Thank you to all who have been supporting my RFM (Request for Moratorium) ... I feel that by declaring your own moratoriums, you have each embraced the spirit of the New Year, and moratoriums in general. In your own way have, in fact, supported my orginial moritorium, even if only because you are behind moratoriums in general. Remember, "the moratorium the merrier."
# January 7, 2004 5:23 AM

John said:

Bravo!
# January 7, 2004 5:26 AM

Randolf said:

Yippy!
# January 7, 2004 5:26 AM

Bert Sancloth said:

Go Moratoriums, Go Moratoriums, Go Moratoriums!!!
# January 7, 2004 5:27 AM

Hugh Johnson said:

A moment of silence, please...
# January 7, 2004 5:32 AM

Mark Bonafe said:

Did something strange enter the food supply today?
# January 7, 2004 7:27 AM

Mark said:

My company placed a moratorium on listening to music. :)
# January 8, 2004 3:33 AM

Dren said:

"Many agencies will attempt to make you feel guilty when asking for a fair wage. My advice: your compensation should be fair, period. "

My advice - AVOID agencies all together. Yes there are good ones but its like 1 out of 100. You waste time dealing with leeches who often will not pull through for you. Imagine dealing with someone with no IT experience whatsoever yet has the nerve to tell you what your worth? Those greedy bastards will do anything to pay you crap including letting you take a "skill test" thats so retarded as to make sure you dont score well. You'd be much much better served (and rewarded) by getting your gigs and building your own client list. Piece of cake especially with in demand .NET skills. Always go direct.



# January 9, 2004 6:38 PM

Anders Jägard said:

How do you get this to work if you want to have different aspaths. Lets say you have an application where you can walk around in the "AD hierarki" and you choose to output a report...
# January 12, 2004 2:09 AM

Brendan Tompkins said:

Anders,

This can get tricky. Usually you will be able to add the OU= tag with the specific OU that you are interested in, i.e.

''LDAP://DC=whaever,DC=domain,DC=org,OU=webusers''

But, I've had difficulties getting this to work properly. Honestly, navigating LDAP is pretty difficult stuff, and requires a lot of trial and error. Good luck!
# January 12, 2004 2:14 AM

Brendan Tompkins said:

Anders,

You could also of course, provide a stored proc that takes the LDAP connection string as a paramater, and return the query result. Not as good for doing joins with other tables, but still will get you the data you need.
# January 12, 2004 2:17 AM

Anders Jägard said:

Thank you Brendan!
I was kind of thinking that way but havent used stored procedures. I will have to try to write one and test. Thanks again for your quick answer.
# January 12, 2004 7:29 PM

Anders said:

Brendan! You dont have any Example-SP that concats the (Input Parameter) LDAP string into the openquery statement - im having some trouble here... /Anders
# January 12, 2004 7:49 PM

Anders Jägard said:

Ive now done one working Stored Procedure but without any DB Table join...I cant join it - how do I do? Heres the procedure:


CREATE PROCEDURE [dbo].[FTADQuery] AS
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE FTADQuery @Ldap nvarchar(500),
@ObjectCategory nvarchar(10),
@ObjectClass nvarchar(10),
@Attribute nvarchar(500),
@Scoope nvarchar(10)
AS

DECLARE @strSQL1 nvarchar(2000)


SELECT @strSQL1 = 'SELECT * FROM OpenQuery(ADSI, ' + CHAR(39) + '<' + @Ldap + '>;(&(objectCategory=' + @ObjectCategory +')(objectClass=' + @ObjectClass + '));' + @Attribute + ';' + @Scoope + CHAR(39) + ')'

EXEC (@strSQL1)

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
# January 12, 2004 11:11 PM

Brendan Tompkins said:

Anders, since you're using Dynamic SQL, you can do this two ways, as far as I'm aware.

1) Select into a #TEMP table, and do your join that way.

2) Add your join to your original Dynamic SQL like this. Assuming your SQL table is called USERS, and the AD Login is USERS.AD_LOGIN

SELECT @strSQL1 = 'SELECT ADResults.*, USERS.* FROM OpenQuery(ADSI, ' + CHAR(39) + '<' + @Ldap + '>;(&(objectCategory=' + @ObjectCategory +')(objectClass=' + @ObjectClass + '));' + @Attribute + ';' + @Scoope + CHAR(39) + ') ADResults LEFT OUTER JOIN USERS ON ADResults.sAMAccountName COLLATE SQL_L