joeware - never stop exploring... :)

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

6/29/2008

200,000+ IOPS out of an HP C-Class blade system in 2009????

by @ 6:20 pm. Filed under tech

http://computerworld.co.nz/news.nsf/tech/99A7774F067EA284CC257474007C0076

 

Hewlett-Packard is working with Fusion-io to adapt the start-up’s high-performance, solid-state input/output storage technology to HP’s enterprise servers to improve their data access performance and energy efficiency.

“With our ioMemory architecture, we’re getting more than 200,000 IOPS within HP BladeSystem c-Class server blades today,” says Don Basile, Fusion-io’s chief executive officer. “So, working together with HP was the natural place to begin building upon our next generationtechnology.”

 

Wow. That’s a couple orders of magnitude over anything else internal I believe. And being solid state, that would be way cooler and way less energy requirements… I want a PC and a laptop that runs at that IOPS level.

Rating 3.00 out of 5

6/28/2008

PowerShell

by @ 12:56 pm. Filed under quotes

“PowerShell is the COBOL of the scripting world. In that I mean as you type out what you need to do your fingers actually get tired. Powerful no doubt, but it will require most PowerShell scripters to buy a gripmaster to build up finger strength for those marathon scripting sessions or more likely, there will be a good market for autocomplete IDEs for writing PoS code.” 

Rating 3.00 out of 5

6/27/2008

Thank you Bill. :)

by @ 12:05 am. Filed under general

I don’t expect Bill Gates will ever see this blog post but with Bill’s retirement from full time Microsoft operations I just wanted to offer a very sincere and heart felt “thank you very much Bill”.

Regardless of what anyone says of Bill or Microsoft, the face of computing is very different now than it would have been had he not been involved. I believe he has had far more impact on personal computers than any other person ever and possibly will ever as the impact and influence of Microsoft will continue for a very long time. I don’t think there is a person anywhere who can say that the influence and work of Microsoft hasn’t in some way impacted them and their use of computers today.

 

Some highlights

 

 

 

 

 

 

 

 

 

 

 

 

 

bill-gates

 bill-gates-4

bill-gates-2

 

Thanks again Bill, have fun. πŸ™‚

Rating 3.00 out of 5

6/25/2008

Was this Domain Controller a product of normal DCPromo or IFM DCPromo?

by @ 8:08 pm. Filed under tech

A friend of mine pinged me recently and asked

… can you think of way of determining with certainty that a DC was IFM promoted or not based on its DIT (logs are say long since retired)

I thought about this a moment,  furrowed my brow for another moment and then started down the path involving a special little implementation quirk I ran into long ago. I actually like implementation quirks, they can help you work out various things going on and in this case, possibly help you determine something that no one at MSFT may have thought you might want to know or be able to do someday or maybe just plain decided you didn’t need so never exposed the capability[1]… That so rarely happens[2].

The quirk is that when a new object replicates to a DC, all of the attributes replicated in update the metadata on the target DC in a specific fashion. That specific fashion is that the originating DSA (or DC in this example), originating USN, and originating time/date metadata are from the actual originating DSA… The DSA where the changes were initially made. With one exception… the RDN attribute… That ends up getting originating DSA info from the machine receiving the replicated object.

So for example if you look at my administrator userid metadata you will see

G:\Temp>repadmin /showmeta CN=administrator,cn=users,DC=test,DC=loc test-dc1

38 entries.
Loc.USN                          Originating DC   Org.USN  Org.Time/Date        Ver Attribute
=======                          =============== ========= =============        === =========
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 objectClass
   7366                      secondsite\TEST-DC1      7366 2008-04-12 23:50:33    1 cn
103078            Default-First-Site-Name\R2DC1   1186430 2008-05-28 20:39:12    1 title
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 description
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 instanceType
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 whenCreated
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 displayName
   7366            Default-First-Site-Name\R2DC1     12489 2006-05-11 23:39:56    2 nTSecurityDescriptor
103078            Default-First-Site-Name\R2DC1   1186430 2008-05-28 20:39:12    1 wWWHomePage
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 name
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 userAccountControl
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 codePage
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 countryCode
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 homeDirectory
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 homeDrive
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 dBCSPwd
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 scriptPath
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 logonHours
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 userWorkstations
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 unicodePwd
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 ntPwdHistory
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 pwdLastSet
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 primaryGroupID
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 userParameters
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 profilePath
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 objectSid
   7366            Default-First-Site-Name\R2DC1     12489 2006-05-11 23:39:56    1 adminCount
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 comment
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 accountExpires
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 lmPwdHistory
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 sAMAccountName
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 sAMAccountType
  70758                      secondsite\TEST-DC1     70758 2008-05-04 08:50:25  249 lockoutTime
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 objectCategory
   7366            Default-First-Site-Name\R2DC1      8194 2006-05-11 23:19:59    1 isCriticalSystemObject
3063976                      secondsite\TEST-DC1   3063976 2008-06-17 16:57:37   32 lastLogonTimestamp
170720                      secondsite\TEST-DC1    170720 2008-05-28 22:18:34    8 joewareExtended11
199736                      secondsite\TEST-DC1    199736 2008-05-28 23:05:49    2 joewareExtended10
1 entries.
Type    Attribute     Last Mod Time                             Originating DC  Loc.USN Org.USN Ver
======= ============  =============                           ================= ======= ======= ===
        Distinguished Name
        =============================
PRESENT      manager 2007-02-27 17:19:31   47e66f05-61fa-4bff-88e1-2a62b5ef8289    7403  555581   1
        CN=joe,OU=Users,OU=My,DC=test,DC=loc

As you can see, most of the attributes are showing that they were originated in May 2006 on R2DC1 but the cn is showing origination on April 12, 2008 on TEST-DC1. Clearly the date is off from the true instantiation of the account in the domain, but that is when it came into existence in the DIT this DC has. As a quick no brainer sidebar…. What day was TEST-DC1 dcpromo’ed?

 

So how, pray tell, you ask, does that help you with determining if a DC has been promoted from IFM or not? Well…. if you IFM a DC the DIT is the DIT from the DC you took the media from; the DIT is copied into place, it isn’t built locally in the normal way through replication. This is why it is faster. The same level of processing and validation isn’t done, the file just is there…  This means that the stamping on the RDN attribute will be from the DC that originally built the DIT, not the current machine. So if you, say, look at the replication metadata for the administrators account and specifically you look at the RDN attribute metadata (which is CN for users), it will list the old DSA, not the current DC like you would see on a DC that went through the normal DCPROMO process.

So a specific example…. Say I have DC1 which is the first DC in the domain and I look at the administrator’s account metadata for the ‘cn’ attribute. I will see DC1 listed as the originating DSA.. Now say I promote DC2 from DC1 in the normal way and look at the administrator’s account metadata for the ‘cn’ attribute, I will see DC2 listed as the originating DSA. Then let’s say I build IFM media from DC2 and promote DC3 with that IFM media. Looking at the administrator’s account metadata for the ‘cn’ attribute will show what… DC2… not DC3 for the originating DSA. Now later we make some IFM media from DC3 and we build DC4, what will the metadata show for the originating DSA for ‘cn’? Why DC2 again of course. Now what happens if DC2 gets demoted in the meanwhile, what will the metadata show then? The answer… “Deleted DSA”.

In the generic case, while I haven’t tested this in all scenarios, I expect just checking the metadata for any of the main three partition heads on the DC should be more than sufficient. Alternately you can check some other object that you know existed pre-IFM say like the administrator’s ID though you would need to be careful with how you do that in a generic way[3]. Using the configuration or schema partitions should be pretty stable since you don’t often see those renamed. πŸ™‚

Here is a quick little perl script (or one liner if you prefer) to check the DCPROMO status (IFM or normal) of a specific DC

if ((`adfind -h @ARGV[0] -config-s base msDS-ReplAttributeMetaData;binary -mvfilterdelim # -mvfilter \”msDS-ReplAttributeMetaData;binary= dc\” -list`)[1]=~/\\$ARGV[0]/i) {print “Normal Promotion”} else {print “IFM Promotion”};

Just save that to a perl script file and then execute the script with the short name of the DC as the parameter. This isn’t intended to be all inclusive, just something simple to show the basic idea of how it can be done. If you want to put that into a function in a larger perl script just change @ARGV[0] to $_[0].

Stay tuned for a matching post from Brandon over on his blog as he also got wrapped up in this exercise. Maybe he will explain some context of what this was about and why anyone would care if a DC was promoted from IFM or not from his viewpoint….

   joe

 

 

[1] Inside joke for those who are paying attention to other threads I have been involved in recently.

[2] NOT! Happens all the time, if MSFT knew what I wanted and what I was doing, joeware never would have come into existence.

[3] Think renames or object moves…

Rating 3.00 out of 5

6/22/2008

Most recent home project

by @ 8:14 pm. Filed under house stuff

I raised a flag pole just in time for Flag Day…

 

CIMG0935

CIMG0946

CIMG0952

CIMG0949

I still have quite a few rocks to put down as you can see. I will surround the whole flag pole with them and then put some nice soil over the top of it and then plant wild flower seeds.

Rating 3.00 out of 5

I know this will fit right in with many companies out there…

by @ 7:24 pm. Filed under humour

image

Rating 3.00 out of 5

6/19/2008

Major MUD Scripts…

by @ 10:51 pm. Filed under tech

Wow I went looking and actually found the SLIQ Major MUD scripts I talked about in the last post. Or at least I think I found most of them, even then I broke the stuff up into multiple files and modules.

I was poking around in one piece and found this section which was one of my favorite pieces as it always surprised the crap out of newbies who thought they could steal from me…

// Thief Routine
  if instr(line,”bumps you”) then
    dim pointer as integer
    pointer = 1
    if instr(line,”:”) then
      if instr(line,”:”) > instr(line,”)”) then
        pointer=instr(line,”:”)+1
      else
        pointer=instr(line,”)”)+1
      end if
    end if
    thief = MyMid(line,pointer,instr(line,”bump”)-pointer-1)
    Attack(thief)  
    fighting = TRUE
    monster1 = thief
    send
  end if

Basically you had people who would figure out that someone was running a script and then send a thief in to rob them blind. Up until I wrote my script, the scripts were so simple the thieves could get away with it because the script wouldn’t attack back. I sat and watched my character get robbed one day and said, hmm that isn’t happening to me again. So I wrote this routine to attack the thief that tried to rob me. Another routine would then chase the thief if he started running. Definitely not the normal script handling. πŸ™‚

I also had this cute little routine

// Character attacking Normal way
  if instr(line,”moves to attack you”)>2 and instr(line,”attack young”) = 0 and instr(trueLine,”You”)=0 then
    print “>>”+ line
    if instr(line,other) then
      send “Forgive ” + other
      goto end_parse
    end if
    lstart=instr(line,”moves”)-1
      if instr(line,”:”) > instr(line,”)”) then
        lslash=instr(line,”:”)+1
      else
        lslash=instr(line,”)”)+1
      end if
    command1=MyMid(line,lslash,lstart-lslash)
    if myInfo.pvp <> “” then
      if instr(command1,myInfo.pvp) then
        monster1 = myInfo.pvp
        fighting = TRUE
        Attack(monster1)
        goto end_parse
      end if
    end if
    if (myInfo.log AND DEBUG) then print #1, time+”   Under Attack>”+command1
    if caution_level = 9 then call get_out
    sayMessage(“Under Attack–>”+line)
  end if

That would attack anyone who attacked me, but for bonus it would tell the other character that the first character was “tagged” to to also attack.

Here was a routine that would have one tagged character help another that dropped to the ground

// Somebody hit the ground, find out who and help. 
  if (instr(line,”drops to the ground”)) then
    lstart=instr(line,”drops to the ground”)-1
    lslash=instr(line,”:”)+1
    command1=MyMid(line,lslash,lstart-lslash)
    if (myInfo.log AND DEBUG) then print #1, time+”   Someone hit the ground ->”+command1
    if instr(other,command1) then
      heal(command1)
      send “aid “+command1
      if fighting then Attack(” “)
    else
      if other <> “*none*” then send “!Oh That’s Got To Hurt!”
    end if
  end if
     

I love this stuff, so much fun. I am such a geek. πŸ™‚

 

     joe

Rating 4.33 out of 5

Scripting / SysAdmin Meme

by @ 10:29 pm. Filed under general

Well Darren has effectively said “Tag, you’re it” for this Scripting/Sysadmin Meme that is going around. I kind of liken this to the emails that say send this to 7 of your friends immediately but since I am not actually forwarding it, you have to come to me to read it, I will play.

 

How old were you when you started using computers?

I was 12 and I believe I was in 7th grade when I first started playing with computers.  

 

What was your first machine?

The first computer I used was a Commodore PET with cassette tape storage. It was in Manton Consolidated School’s Library. The first computer my parents owned that I played on was an Atari 800 which I believe I still have a book on programming the graphics for. Although we had that machine I believe I had begged and begged for a TI-99 before that. Also mixed up in there in my playing were an Apple II and the Tandy TRS-80 Model II and the first multi-user computer I used was a PDP-11/34 running RSTS/E 7.2.

 

What was the first real script you wrote?

I started with writing compiled and assembled languages. I had all of these languages down before writing my first script – BASIC, BASIC-PLUS, BASIC-PLUS-2, FORTRAN, COBOL, PL-1, Pascal, Assembler for like 3 or 4 different processor architectures, MACRO Assembler for PDP-11, and C back when I was still in High School.

I didn’t get too involved with scripting until I started playing a MUD in the mid-90’s called MajorMUD and then I used Qmodem Pro’s SLIQ Scripting language to write scripts that would run my characters around killing monsters and picking up cash and weapons. That was the first major script I wrote for anything and was thousands of lines (I wonder if I still have that around) and could handle nearly everything in the game and used text files for directions for easy updates. It was very cool as it allowed for two characters to work together (which I called tag teaming script) which was immensely better than just a single character running around scripting. I actually was able to sell copies of the compiled version to other players of the game. If anyone that used to play MajorMUD is reading this, my characters were Slayer Cricket which was a Ogre Witch Hunter and Hunter Cricket which was a Human Paladin (colloquially known as Hunter and Slayer). The scripts would talk to each other by passing text messages back and forth through a MUD private chat channel.

The first real scripting I did “professionally” was REXX and Perl back in the late-90’s (1996 or so).

 

What scripting languages have you used?

DOS batch, Fastlane FINAL (dabbled), REXX, Perl, VBScript, JScript, SLIQ, and I have dabbled with PowerShell because I have had too occasionally. πŸ˜‰  Out of the bunch, I find Perl to be by far what I prefer.

 

What was your first professional sysadmin gig?

Well I ran the PDP-11 at my high school which was kind of a real job though I didn’t get paid. Didn’t matter, that system had to be up and running and if it wasn’t, it was my ass. After that when I was about 17 and still in high school I got a job working for a company called Automated Tracking Systems which processed insurance info for GMAC loans and issues MIC insurance for anyone who didn’t have any insurance. It was an interesting job as we would get Mag Tapes from EDS and you never knew what format those things would be coming in as, it was all over the map. The job was as weekend operator. I worked 24 hours over Sat/Sun making sure PDP-11’s and VAXes ran ok processing loan tapes and doing other batch jobs. Mostly I slept and wrote code (MACRO Assembler and Basic-Plus II) to do system chores. 

 

If you knew then what you know now, would have started in IT?

Yes I think so. I would have started earlier and not taken the time off that I did and I very likely would be retired right now just sitting back having fun writing code and enjoying life a little more. While I started early, I took large blocks of time (years) off from the tech field as it kept burning me out and went out and explored the world a little doing sales, etc. I certainly would have started something joeware “like” much sooner and would have pushed harder to make it commercial as it is tougher to do now with the little time I have. I also wouldn’t have wasted my time and money going to University/College.

 

If there is one thing you learned along the way that you would tell new sysadmins, what would it be?

Share information. Information hoarded is ridiculous. I laugh when I see people in IT who think they are important because they are the only ones who know how to do this that or the other thing. I am very quick to tell people how to do things or at least help them learn things so I can move on and do other things. Who wants to be stuck doing the same thing over and over again. Also… Never stop exploring. πŸ™‚

 

What’s the most fun you’ve ever had scripting?

Well for pure fun, it was the MUD scripts I wrote. It was a huge challenge trying to make the computer “think” for me when I was off working so that my characters would get money, weapons, experience points and stay alive. People constantly would attack the scripts and try to trick you, etc. My scripts would play a song anytime they “bugged out” when there was too much danger of dying or something unexpected and therefore unhandled occurred…. the song… Blue Oyster Cult’s Don’t Fear The Reaper. πŸ™‚  Just hearing the opening bars will make the hair on my arms stand upright and wake me up instantly because usually when I heard that it meant that someone was attacking my characters and I might be dead. I recall the Hunter and Slayer scripts running on my Packard Bell computer while I slept in the next room the song would pop on and I would be flying out of bed before it got 15 notes into the song.

As for “real” scripts I would say I had a blast writing scripts for Ford Credit when I worked there. We implemented SMS replacements in perl as well as all sorts of other things.

 

Who am I calling out?

Eric Fleischman

Brett Shirley

Brian Desmond

Joe Kaplan

Gil Kirkpatrick

Laura Hunter

Nathan Muggli

Rating 3.00 out of 5

Hilarious response…

by @ 6:59 pm. Filed under humour

I saw this on an email today and had to share as it cracked me right up…

One very intelligent analyst I know was asked if a customer should be queried about the scope of a given project. His response was

“They will ask us for a 2008 Lincoln Continental. We’re reasonably equipped to deliver a 2001 Taurus.”

The fact that the Lincoln Continental was discontinued in 2002 makes this all the more funnier… And accurate.

Rating 3.00 out of 5

Question about configuring Active Roles Server property validation policies…

by @ 6:45 pm. Filed under tech

So I am working on Active Roles Server (ARS for now on…) and ran into a little issue that had me thinking for a little bit…

The thing was that I needed to auto-generate the user name and it needed to be

[LASTNAME],[SPACE][FIRSTNAME][SPACE][INITIALS]

So for example, say I have John Q. Public the name attribute (aka cn for user) needed to be Public, John Q

Now I don’t like this format for the name attribute on objects in AD, I much prefer using something that is unique, say like sAMAccountName. But for some reason, some people like to see the name looking like the displayName. Not sure why, just some people do. So anyway, it doesn’t matter what I think in this case, the standard that I have to follow is as I mentioned

 

Anyway… This is frighteningly easy in ARS. First I defined my rules for givenName, sn, and initials…

givenName = ^[A-Z]([A-Za-z]+[ -]?)+[A-Za-z]{0,1}$

sn = ^[A-Z]([A-Za-z]+[ -‘]?)+[A-Za-z]{0,1}$

initials = ^[A-Za-z]+$

and then via the GUI set the rule for name to autogenerate with

%<sn>, %<givenName> %<initials>

That works perfectly…

 

Right up until someone doesn’t have initials in their name… CRAP!

What happens is that you get

[LASTNAME],[SPACE][FIRSTNAME][SPACE]

and that trailing space is a P.I.T.A..

Does anyone here use ARS? If so, do you know how to handle this situation WITHOUT a script? I mean seriously, you should be able to do this in the basic auto-generation language.

Rating 3.00 out of 5

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