joeware - never stop exploring... :)

Information about joeware mixed with wild and crazy opinions...

12/9/2010

An AdFind bug that sucked but you probably never knew existed…

by @ 3:00 pm. Filed under tech

I have been working on AdFind and AdMod again. I wanted to get a few things fixed that have bothered me and heard some interesting ideas for some new features that I have encountered. The more I go back to it the more I wish I had the time to perform a complete rewrite. It is something I have been thinking about for  a long time, but alas, I am still not rich enough to spend that time. 🙁

So anyway, one bug that I was able to get out of AdFind that has been painful for at least one company that I expect very few people have encountered is around largish groups. I don’t mean a group with 10,000 users in it, AdFind won’t even sneeze at that. I mean large groups, groups with hundreds of thousands of users in it. The issue is that when AdFind is outputting CSV and you have a very large group, it can appear to go out to lunch and in fact, actually may never return from that lunch. Now this isn’t something that most companies deal with because most companies don’t have hundreds of thousands of users to even put into a group, so it wasn’t something I thought about when working on the CSV functionality initially. I have only had one documented complaint that this was the cause of an issue and one case where I thought it might have been related but it turns out it wasn’t (at least we don’t think so to this point) in I don’t know how many years so I feel pretty justified in my decision at the time I put the CSV formatting in to do it like I did it.

Regardless of the number of people possibly affected, I might someday be affected by it because I work with a lot of organizations that could easily have that many members and quite frankly, from the standpoint of elegance, the issue pissed me off and I wanted to fix it. 🙂 So I did. I haven’t figured out the scale to which it will work now but so far it has worked with groups exceeding 725,000 members. I am currently adding another 300,000 objects to my test domain to add them to the test group so I will officially test it to just over 1,000,000 members. Anything above that and my friend Dean says my response to people should be, for a small fee you can have me build you an Enterprise version that works for that scale. Of course that small fee will be enough to pay for me to quit my job and start having nice Hawaiian vacations for the next few years because I write much better code in Hawaii. I just decided that. 🙂

So the next version of AdFind to come out in the next month’ish will have that fix. It will also have some other fixes including a fix for when you cut and paste a command from Outlook or Word and AdFind/AdMod have no clue what you sent in for the command because dashes and quotes get converted to a different but similar character in Outlook and Word. There is also at least one cool new feature though depending on how confident I am in that feature I may call it *beta* which means it could change in the next version. I am not ready to talk about the cool new feature yet but I did want to let the folks know that may have hit the CSV output blowing up once you get into the hundred thousand members range that relief is coming.

So I have a little time right now to chat so I will answer the question I was asked a couple of times as I have described this bug to several of my friends and that question is… well why does it break like that? My sarcastic answer is because resources are limited and you write code by the 80/20 rule…. But the real issue is because AdFind was never intended to output CSV when I first wrote it. The CSV functionality is out and out a hack I put into it. :)  Better?

Basically, and this is a dirty state secret and I will absolutely deny it if stated outside of our little group here, but in order to implement the CSV functionality I changed AdFind from writing its output straight to the console to writing it to a variable. And that variable is basically, well it actually is just a giant string. Maybe you see where I am going with this… It was the quickest fastest way to get it in there and at the time, the only way I could conceive to get it in there without rewriting the whole app because of how it was structured. Now once the data is in that string variable, I could manipulate it… Including restructuring the output into CSV formatted output. So once all of the object is loaded from AD it either shoots that string to the console or it sends it into a CSV rework routine which waves its hand over the string and does some string manipulation and then outputs the CSV. The problem here is when you have a lot of data in a single attribute say like hundreds of thousands of DNs, the cost in memory alone to duplicate the string so you can safely manipulate it is high, not to mention the cost on CPU to race through the string changing something like

>attribute: value1
>attribute: value2
>attribute: value3
>attribute: value4
>attribute: value5
>attribute: value6
>attribute: value7
>attribute: valueN

to

“value1;value2;value3;value4;value5;value6;value7;valueN”

is pretty darn high as well.

In the debugging that I have done, while it looks like AdFind is completely out to lunch, it is actually trying to process the string. Whether or not that would ever finish likely depends on your machine and how long you have available to wait though I am not guaranteeing it won’t just eventually blow up. The positive side of this, again, is that 99.99% of the folks out there never would have hit this and if you did, you very likely knew it because AdFind would just be sitting there blinking the cursor at you.

The fix was about a 5 on the complexity scale. Mostly because I have been away from the code base for so long. Had I been working on it like when I used to have more time to work on it, it likely would have been more along the lines of a 3. The basic fix was to tie into when attribute ranging is in progress which was already a special case anyway. Attribute ranging occurs, by default, when an attribute has more than 1500 values (1000 in Windows 2000 IIRC). It is a way for AD to return the data in a more efficient manner versus one gigantic single blob. You get the first 1500 values, then you have to ask for the next bunch, etc etc etc. Since the issue has only presented itself for very large groups, this seems like it will be the best way to handle it outside of a rewrite of the core underlying engine itself. It greatly reduced the surface area of what could be broken now based on the changes versus a rewrite.

That’s all for now. Smile

 

   joe

Rating 4.25 out of 5

12/8/2010

Does anyone know the answer to this Exchange question?

by @ 5:31 pm. Filed under tech

Back in the day I would configure special entries in the proxyAddresses attribute for users to denote some specific info that I needed to capture regarding mail systems, in particular this was around some mail routing type items that was intended to be used by non-MSFT systems looking at Exchange users. I would use a custom prefix (i.e. not SMTP or X400 or like) and then slap whatever info I needed. I tested this pretty extensively with Exchange 2000 and Exchange 2003 and never encountered an issue with doing it, Exchange effectively ignored those entries.

Does anyone know if this has changed with Exchange 2007 or Exchange 2010? My expectation is no, it is exactly the same but I was working on something today and recalled this solution and was wondering if it would still work.

Are there any documents with actual rules on the proxyAddresses data population? This isn’t likely with Exchange attributes but thought I would toss the question out anyway. ;o)

    joe

Rating 3.00 out of 5

12/7/2010

Compromise…

by @ 1:55 am. Filed under quotes

I like the thermostat set nice cool at 65.

My wife likes to crank it up to 70.

so we compromised.

It’s set at 70.

    – Craig Ferguson

Rating 3.00 out of 5

12/6/2010

Silicon Dust HD Digital Tuner on big time sale at Amazon!!!

by @ 8:07 pm. Filed under general

I love this thing! Use it with my Windows Media Center 7 but will work with other DVR software as well. On sale right now for $89.99, I bought mine for $149.99. Was going to buy another at that same price and saw it was on sale so did a cartwheel and then ordered it.

Also eligible for Amazon Prime if you have that available to you!

 

 

Rating 3.00 out of 5

12/3/2010

Can’t believe I found this again…

by @ 9:00 pm. Filed under humour

I first saw this, hmm I don’t know maybe in the late 90’s or so at a Financial company I worked at. I don’t know why but I can’t stop laughing at it. I recalled it last night while we were watching TV and one of those new funny pistachio commercials came on with a cat playing the keyboard…

 http://www.rathergood.com/independent_woman

I also really liked this one

 http://www.rathergood.com/punk_kittens

And another but with bunnies instead of kittens…

http://www.rathergood.com/bellrays

 

 

This is the pistachio cat commercial that is on TV now…

 

Rating 3.00 out of 5

12/2/2010

Thank you Microsoft

by @ 2:46 pm. Filed under tech

My main server got its system disk scrambled over thanksgiving break due to some power issues. I am not sure what exactly happened as I was a couple of hundred miles away but I came home to clocks blinking and computers shut down. My media center unfortunately lost its DVD drive. One of my laptops lost its power supply. Most oddly, my server’s system disk got discombobbled. This is odd because I have a nice UPS on the machine and I wouldn’t have expected the failure. Especially since I formatted the disk and ran patterns on it and it ran fine.

Anyway, the machine was running Windows Server 2008 and I had been wanting to upgrade to Windows Server 2008 R2 on it so I could stumble against any changes etc at home instead of in front of customers. After a couple of days now I have noticed that the server is very distinctly moving faster. I don’t know what or why or how, but it is definitely faster. So some change somewhere in the OS is just making it run more efficiently and I love that. Especially in this world of newer means fatter and more bloated and slower. I got this same result when I upgraded a couple of my test machines from Windows Vista to Windows 7 as well. I didn’t really expect it when moving from Windows Server 2008 to 2008 R2, but I am thankful that it is working out that way. Smile

 

    joe

Rating 4.60 out of 5

12/1/2010

iPad isn’t going to last long against this type of stuff, IMO

by @ 12:49 am. Filed under tech

http://www.engadget.com/2010/11/30/office-depot-welcomes-10-inch-viewsonic-g-tablet-into-the-fold/

Rating 3.00 out of 5

Not sure what to say about this one…

by @ 12:38 am. Filed under general

http://www.wired.com/autopia/2010/11/get-your-very-own-street-legal-tron-light-cycle/

Rating 3.00 out of 5

11/30/2010

Top Ten Arcade Classics

by @ 8:00 pm. Filed under general

http://www.reghardware.com/2010/11/19/top_ten_arcade_classics/

 

1. Space Invaders – Love it! I recall playing one of these with the monitor permanently colored so the black and white screen looked like it was in color based on how high up the invaders were.

2. Pac-Man – Ok. I was never so much into this game. I was a science nerd, spaceships were cooler than yellow blobs eating dots.

3. Defender – WOOO!!!! All time favorite standup video game. When I got bored I would go through and shoot all my guys so I could be in open space and having the alien ships totally going berzerk on me. Smart bombs were cheating. I can only play this game on the original standup, I was too in love with the initial offering. I just think back to a plate of greasie pizza, She Blinded Me With Science on the jukebox and Defender blisters on my fingers…

4. Battlezone – Love it! This was a blast. I really liked it. Especially the enemies blowing up. I would love that on my XBOX 360 now.

5. Star Wars – Love it! Who can’t love Star Wars. George Lucas is a god. Next time I get out to California I am going to tour some Lucas stuff. It’s good to know the right people. 🙂

6. Dragon’s Lair – Loved it but it was too expensive!

7. Out Run – Loved it! Racing around in a convertible hotrod. Hey I have a Mustang GT Convertible with big fat racing tired and reprogrammed computer now…

8. Shinobi – Never played it.

9. Street Fighter – Loved it!

10. Time Crisis – Don’t recall even seeing this one.

 

Some games that weren’t on the list that I liked

 

1. Moon Patrol

2. Donkey Kong

3. Joust

4. Galaga

5. Asteroids

6. Centipede

Rating 3.00 out of 5

Got to hate it when that happens…

by @ 12:47 am. Filed under tech

image

Rating 3.00 out of 5

[joeware – never stop exploring… :) is proudly powered by WordPress.]