We should feel privileged to be alive but feel disappointed that we are going to miss out on so much.
Admittedly, some people's lives are very tough indeed and for many people around the world, hardship, suffering, poverty and hunger dominate.
But I am privileged. I live in the UK with a reasonable job and I have access to things that my parents couldn't have dreamed of. I live on the information super-highway; I have access to knowledge at my finger-tips which means I no longer need to retain the information in my own head. I just need to know where to look for the information.
As an example... I have been watching the latest Virgin Mobile advertisement on television in awe. I say watching, but I really mean listening. The accompanying song is one of the most beautiful sounds I think I've ever heard. I "need" to hear it again. And by the power that I have at my finger tips, I can search for "Virgin Mobile train advertisement song" and the first hit I get back from Google tells me that Mazzy Star performed the song which is called "Into Dust". I fired up Spotify and searched for Mazzy Star and within ~2 minutes of the advert being aired on television, I'm listening to the track.
Just a handful of years ago, the track would've been lost. I would never have found it. I went from having no knowledge of Mazzy Star to elevating "Into Dust" into my Top 10 songs of all time within minutes. The internet has allowed me to no longer feel ignorant.
All of this leads me to my next point. There is no excuse for ignorance anymore. All the information that the lay-person could ever hope to acquire is available. When someone asks me a "how do I" type of question, I'm more inclined to ask them why don't they already know the answer - especially if they are asking me the question over some form of instant messaging tool. Surely asking the question of Google would've been just as easy as asking me the question?
However, I guess the fact that people aren't capable of finding the information they are seeking is the thing that keeps me (and other IT consultants) employed.
BTW: I really do recommend "Into Dust" by Mazzy Star. It's a joy.
In a world where technology is supposed to make things simpler, why is it that the world seems to be more complicated? This blog is made up of the ramblings of an IT Security Consultant specialising in IBM Security software with a heavy focus on IGI, ITIM/ISIM, ITAM/ISAM and ITDI/ISDI. All opinions expressed are my own and have nothing to do with any employer past or present. I hope you find them useful.
Saturday, July 18, 2009
Wednesday, July 01, 2009
ADSI Guru
So the past few days were spent struggling to write a binary attribute into my Active Directory instance. Java isn't too clever when it comes to binary objects yet I seemed to be capable of generating a perfect binary object which I could write into ANY other LDAP compliant repository. Of course, Active Directory is merely LDAPpy - as I christened it yesterday.
Most of my efforts were probably in vain as the IBM Tivoli Identity Manager Active Directory Adapter does not support binary objects. Generating such an object an assigning it to a person record within ITIM would have been futile as would trying to generate the object on the fly during workflow.
The fact still remains that I absolutely must get this binary attribute into Active Directory as part of the provisioning process. And to that end, I wrote my first complete ADSI script today. I've spent years working on unix boxes and working with "real" LDAPs. To be scripting in VBScript and attempting to update AD was rather alien. I learned a thing or too on the way. VBScript desperately needs to know the precise size of your arrays, for example. Java, as we know, is fairly tolerant to lazy coding. VBScript desperately needs object types to be precisely as it expects whereas Java is quite tolerant when it comes to determining the difference between 1, "1" and "one"!
Design
I decided that I could write an ADSI script that would commit these binary objects to my accounts after they had been created with the AD Adapter. But I don't merely want to call this process as part of workflow. I've decided to take it a step further and create a separate service and adapter which will perform this function. ITIM, calling ITDI to write these attributes (which are based on attributes assigned to person objects as strings anyway) and ITDI calling a VBScript to commit the write.
Args
My ADSI script take command line arguments, of course. Things like the bind DN & password; the target AD instance; the target user; the raw data to be converted into binary. I'm pleased with the args processing. Not quite the way I would do it in shell scripting, but easy enough:
Dim args
Dim sBindUID
Set args = WScript.Arguments.Named
sBindUID = args.Item("bindUID")
I can now call the script as such:
cscript myscript.vbs /bindUID:Administrator
Binding
Next, I bound to the AD instance using scripting methods I found by Googling:
Dim oDS
Dim oAuth
Dim oConn
Set oDS = GetObject("LDAP:")
Set oAuth = oDS.OpenDSObject(sServer, sBindDN, sPassword, &H0200)
Set oConn = CreateObject("ADODB.Connection")
oConn.Provider = "ADsDSOObject"
oConn.Open "Active Directory Provider", sBindDN, sPassword
And then attempted to find the target for my update:
sSearchObject = "<" & sServer & ">;(" & sTarget & ");name,ADsPath;subtree"
set oRS = oConn.Execute(sSearchObject)
Set oUser = GetObject(oRS.Fields(1).Value)
oUser.GetInfo
Updating
Then came the tricky bit. I had a multi-valued attribute which required each attribute to be converted into a binary stream. I shan't bore you with the binary conversion as it is convoluted in the extreme. However, the multi-valued issue required use of the PutEx method:
oUser.PutEx ADS_PROPERTY_UPDATE, "mybinaryattribute", aEntityGUIDs
And, of course, my aEntityGUIDs object need to be an array of a size equal to the number of values in the array. Time for some Redim. Redim, of course, is not something I've ever had to do in Java! A goodly two hours were spent pondering my failure to commit my values to AD before it dawned on me that the size of the array may have an impact.
I tarted up the code to add a logging mechanism. ERROR, FATAL, WARN, INFO and DEBUG messages are written to a log file by calling a little function that includes this code:
Stuff = dateStamp & ": " & loggedString
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set WriteStuff = myFSO.OpenTextFile("myvbs.log", 8, True)
WriteStuff.WriteLine(Stuff)
WriteStuff.Close
I'm not 100% sure but I'm fairly convinced that others would be fit to declare themselves VBScript/ADSI gurus. I shan't do likewise but I now have a better understanding of the pitfulls of VBScripting AD access.
NOTES
I haven't shown all the Dim statements for the objects defined in the code above - I'm sure you can work that out for yourself.
Most of my efforts were probably in vain as the IBM Tivoli Identity Manager Active Directory Adapter does not support binary objects. Generating such an object an assigning it to a person record within ITIM would have been futile as would trying to generate the object on the fly during workflow.
The fact still remains that I absolutely must get this binary attribute into Active Directory as part of the provisioning process. And to that end, I wrote my first complete ADSI script today. I've spent years working on unix boxes and working with "real" LDAPs. To be scripting in VBScript and attempting to update AD was rather alien. I learned a thing or too on the way. VBScript desperately needs to know the precise size of your arrays, for example. Java, as we know, is fairly tolerant to lazy coding. VBScript desperately needs object types to be precisely as it expects whereas Java is quite tolerant when it comes to determining the difference between 1, "1" and "one"!
Design
I decided that I could write an ADSI script that would commit these binary objects to my accounts after they had been created with the AD Adapter. But I don't merely want to call this process as part of workflow. I've decided to take it a step further and create a separate service and adapter which will perform this function. ITIM, calling ITDI to write these attributes (which are based on attributes assigned to person objects as strings anyway) and ITDI calling a VBScript to commit the write.
Args
My ADSI script take command line arguments, of course. Things like the bind DN & password; the target AD instance; the target user; the raw data to be converted into binary. I'm pleased with the args processing. Not quite the way I would do it in shell scripting, but easy enough:
Dim args
Dim sBindUID
Set args = WScript.Arguments.Named
sBindUID = args.Item("bindUID")
I can now call the script as such:
cscript myscript.vbs /bindUID:Administrator
Binding
Next, I bound to the AD instance using scripting methods I found by Googling:
Dim oDS
Dim oAuth
Dim oConn
Set oDS = GetObject("LDAP:")
Set oAuth = oDS.OpenDSObject(sServer, sBindDN, sPassword, &H0200)
Set oConn = CreateObject("ADODB.Connection")
oConn.Provider = "ADsDSOObject"
oConn.Open "Active Directory Provider", sBindDN, sPassword
And then attempted to find the target for my update:
sSearchObject = "<" & sServer & ">;(" & sTarget & ");name,ADsPath;subtree"
set oRS = oConn.Execute(sSearchObject)
Set oUser = GetObject(oRS.Fields(1).Value)
oUser.GetInfo
Updating
Then came the tricky bit. I had a multi-valued attribute which required each attribute to be converted into a binary stream. I shan't bore you with the binary conversion as it is convoluted in the extreme. However, the multi-valued issue required use of the PutEx method:
oUser.PutEx ADS_PROPERTY_UPDATE, "mybinaryattribute", aEntityGUIDs
And, of course, my aEntityGUIDs object need to be an array of a size equal to the number of values in the array. Time for some Redim. Redim, of course, is not something I've ever had to do in Java! A goodly two hours were spent pondering my failure to commit my values to AD before it dawned on me that the size of the array may have an impact.
I tarted up the code to add a logging mechanism. ERROR, FATAL, WARN, INFO and DEBUG messages are written to a log file by calling a little function that includes this code:
Stuff = dateStamp & ": " & loggedString
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set WriteStuff = myFSO.OpenTextFile("myvbs.log", 8, True)
WriteStuff.WriteLine(Stuff)
WriteStuff.Close
I'm not 100% sure but I'm fairly convinced that others would be fit to declare themselves VBScript/ADSI gurus. I shan't do likewise but I now have a better understanding of the pitfulls of VBScripting AD access.
NOTES
I haven't shown all the Dim statements for the objects defined in the code above - I'm sure you can work that out for yourself.
Tuesday, June 30, 2009
Active Directory Hell
I've spent a number of years playing at knowing a thing or two about LDAP but I've managed to avoid spending any worthwhile time playing with Active Directory.
Now, the observant amongst you will notice that I succeeded in writing a sentence that included LDAP and Active Directory. Active Directory is merely LDAPpy, for want of a better word (though now I've written it, I'm quite pleased with the way it looks and sounds).
Today, I had to work out how to write an attribute into an Active Directory instance. Trivial. At least, I thought it would be trivial. The attribute is a schema extension and is used to store a binary representation of a GUID. GUIDs are things I can handle... a lengthy string of HEXish characters! What could be easier.
Well, things are never straightforward. I have some VBScript which details how the GUID should be "manipulated" by taking the two characters starting at position 7, then the two characters starting at position 5, etc., etc. The resulting string of two character hex codes is still quite lengthy but quite jumbled from the original GUID. But here is where the fun begins. This attribute is of type java.lang.String (according to the schema) but is actually a binary object! The VBScript opens an ADODB.stream object (of type text) into which it places the ChrB representations of the HEX codes. It then strips of the UTF-8 marker and rereads the stream as a binary object before putting it into the directory.
Why? I have no idea other than someone said their application performed better if it was done that way!
Now... how do you create a stream object of type text, split of the UTF-8 marker then commit the resulting stream as a binary object from within Java?
I struggled, I can tell you. And my dear old friend Google wasn't being much help. In exasperation, I decided to test that I wasn't banging my head off a brick wall. My AD instance already had examples of accounts with these particular attributes populated by the VBScript routine. I was able to extract this data using IBM Tivoli Directory Integrater and inspect each byte. I was then able to determine exactly how the binary value was being created and recreated the object in code.
However, committing this object to AD failed with some kind of attribute constraint. I was mystified. After much scratching of the head, I decided to create an Assembly Line with the following 2 connectors:
In other words, try to update the AD object with the same values that it already has.
It failed. Attribute Constraint! So, by merely reading some data and writing it directly back to the source, I managed to generate an attribute constraint error.
I may give up... I'm not happy with the way AD behaves and I'm certainly unhappy with the VBScript. I suspect the fact that the attribute is defined as a String but is storing a binary object is the route of all the evil. So today has ended on a low... no resolution as yet to a problem which I suspect may not be solved by conventional methods.
Now, the observant amongst you will notice that I succeeded in writing a sentence that included LDAP and Active Directory. Active Directory is merely LDAPpy, for want of a better word (though now I've written it, I'm quite pleased with the way it looks and sounds).
Today, I had to work out how to write an attribute into an Active Directory instance. Trivial. At least, I thought it would be trivial. The attribute is a schema extension and is used to store a binary representation of a GUID. GUIDs are things I can handle... a lengthy string of HEXish characters! What could be easier.
Well, things are never straightforward. I have some VBScript which details how the GUID should be "manipulated" by taking the two characters starting at position 7, then the two characters starting at position 5, etc., etc. The resulting string of two character hex codes is still quite lengthy but quite jumbled from the original GUID. But here is where the fun begins. This attribute is of type java.lang.String (according to the schema) but is actually a binary object! The VBScript opens an ADODB.stream object (of type text) into which it places the ChrB representations of the HEX codes. It then strips of the UTF-8 marker and rereads the stream as a binary object before putting it into the directory.
Why? I have no idea other than someone said their application performed better if it was done that way!
Now... how do you create a stream object of type text, split of the UTF-8 marker then commit the resulting stream as a binary object from within Java?
I struggled, I can tell you. And my dear old friend Google wasn't being much help. In exasperation, I decided to test that I wasn't banging my head off a brick wall. My AD instance already had examples of accounts with these particular attributes populated by the VBScript routine. I was able to extract this data using IBM Tivoli Directory Integrater and inspect each byte. I was then able to determine exactly how the binary value was being created and recreated the object in code.
However, committing this object to AD failed with some kind of attribute constraint. I was mystified. After much scratching of the head, I decided to create an Assembly Line with the following 2 connectors:
- Lookup AD for a particular user entry
- Update the same user entry in AD with the attribute values retrieved in step 1
In other words, try to update the AD object with the same values that it already has.
It failed. Attribute Constraint! So, by merely reading some data and writing it directly back to the source, I managed to generate an attribute constraint error.
I may give up... I'm not happy with the way AD behaves and I'm certainly unhappy with the VBScript. I suspect the fact that the attribute is defined as a String but is storing a binary object is the route of all the evil. So today has ended on a low... no resolution as yet to a problem which I suspect may not be solved by conventional methods.
Thursday, June 04, 2009
DB2 Stored Procedure Hell
I'm a systems integrator and have no desire to understand everything at the lowest level of detail possible. I understand things conceptually and know where to find manuals to help me complete tasks but I have not got the time to understand every technology going.
Today, I had my first need to create a DB2 Stored Procedure and use it. In 20 years, I've never had to do that - which seems strange even to me. I've always known about them and understood their power but it has always been "someone else" who has created them and consumed them in their applications. Remember... I integrate systems?
So - how hard can it be? Well, my good friend Google helped when I asked for information on "creating a stored procedure". A tonne of links - must of which assumed that I would be using some heavyweight IDE. I'm a command-line kind of guy though!
It was at that point that I thought that even though this is a simple task and I'm fairly convinced I'll be able to do this within minutes rather than hours, I still figured I should maybe record the process I went through. The reason? I'm fed up being sent down blind alleys by trash on the internet.
I create a myfirstproc.sql file with the following contents:
I applied it (eventually) using the db2 -td@ -vf myfirstproc.sql command.
Next, I wanted to use IBM Tivoli Directory Integrator to invoke the stored procedure. I created a passive JDBC connector called manageDB and created a script as such:
The new JAR file was put in place and the routine executed again. "Method Not Yet Supported" again. Now - that's quite frustrating! Searching for "Method Not Yet Supported" yields information on how the method I'm calling isn't supported. In other words, a useless message!
Trawling through the code, it wasn't immediately obvious what the issue could've been. Not obvious because the code looked syntactically correct (and in any case, if there was a coding error, surely I would've been presented with an appropriate error message).
Well, the eagle eyed amongst you will notice that the original code above was attempting to set parameter 2 to a value of 1 as a string. Converting this to a setInt statement rectified the problem! The resulting code:
Today, I had my first need to create a DB2 Stored Procedure and use it. In 20 years, I've never had to do that - which seems strange even to me. I've always known about them and understood their power but it has always been "someone else" who has created them and consumed them in their applications. Remember... I integrate systems?
So - how hard can it be? Well, my good friend Google helped when I asked for information on "creating a stored procedure". A tonne of links - must of which assumed that I would be using some heavyweight IDE. I'm a command-line kind of guy though!
It was at that point that I thought that even though this is a simple task and I'm fairly convinced I'll be able to do this within minutes rather than hours, I still figured I should maybe record the process I went through. The reason? I'm fed up being sent down blind alleys by trash on the internet.
I create a myfirstproc.sql file with the following contents:
CREATE PROCEDURE MYFIRSTPROCStraightforward, eh?
(IN username CHAR99), IN disclaimer INT)
LANGUAGE SQL
BEGIN
IF disclaimer = 1 THEN
INSERT INTO USER (USERID, DISCLAIMER) VALUES (username, 'Y');
ELSE
INSERT INTO USER (USERID, DISCLAIMER) VALUES (username, 'N');
END IF;
END @
I applied it (eventually) using the db2 -td@ -vf myfirstproc.sql command.
Next, I wanted to use IBM Tivoli Directory Integrator to invoke the stored procedure. I created a passive JDBC connector called manageDB and created a script as such:
var con - manageDB.connector.connection;Now, that all looks quite neat but there is a bug in the code. When I ran the code I received a "Method Not Yet Supported" message. Now, what can you imagine would cause such a message? My first thought was that maybe I was using an out-of-date driver so I decided to get the latest one. This in itself is a major undertaking as anyone who has tried to find anything on the IBM website will testify! Certainly searching for db2jcc.jar (as I did) did not take me to anywhere from which I could download it!
command = "{call MYFIRSTPROC(?,?)}";
try {
cstmt = con.prepareCall(command);
cstmt.setString(1, "H12345678");
cstmt.setString(2, 1);
cstmt.execute();
cstmt.close();
}
catch (e) {
task.logmsg(e);
}
The new JAR file was put in place and the routine executed again. "Method Not Yet Supported" again. Now - that's quite frustrating! Searching for "Method Not Yet Supported" yields information on how the method I'm calling isn't supported. In other words, a useless message!
Trawling through the code, it wasn't immediately obvious what the issue could've been. Not obvious because the code looked syntactically correct (and in any case, if there was a coding error, surely I would've been presented with an appropriate error message).
Well, the eagle eyed amongst you will notice that the original code above was attempting to set parameter 2 to a value of 1 as a string. Converting this to a setInt statement rectified the problem! The resulting code:
var con - manageDB.connector.connection;So, why share this with you? Well... I'm not I guess. I've written this more as a reminder to myself. The important following lessons have been learned:
command = "{call MYFIRSTPROC(?,?)}";
try {
cstmt = con.prepareCall(command);
cstmt.setString(1, "H12345678");
cstmt.setInt(2, 1);
cstmt.execute();
cstmt.close();
}
catch (e) {
task.logmsg(e);
}
- Don't trust the information on the internet - it's typically out-of-date (just as this article will be as soon as I hit the publish button?)
- Don't trust error messages - they've been constructed by developers and could be meaningless
- Good luck with searching that IBM website
- Everything is possible with a smidgin' of perserverance
Tuesday, May 19, 2009
The Problem With The Web....
... is currency!
I have a Windows 2003 Server VMWare image within which I build demos and test environments. (I do have a SUSE Linux v10 demo environment for real stuff but sometimes customers want to see applications running happily inside Windows). The latest installation I attempted chucked a hissy-fit when it came to calculating disk space. It wanted 10GB and I only had 7GB on my C:!
Resolution 1
I thought, no problem... I'll add a new virtual disk, give it 20GB and call it my D: drive. After just a few moments, my disk was available and I restarted the installation. But guess what... it refuses to install anywhere other than C:
Resolution 2
Disappointed, I figured I'll just resize my primary partition. And the fun began...
VMWare Workstation 6.5 comes with vmware-vdiskmanager.exe which allowed me to resize the virtual disk. (For information, I took it from 15GB up to 30GB). But, of course, that doesn't help unless I resize the partition as well.
Time to boot Windows 2003, bring up a command prompt and type diskpart in order to resize. But diskpart will refuse to resize a bootable partition! Doh!
That's OK though - I have a copy of Easeus Partition Manager! Try to install it and it said "You've got Windows 2003 Server! Please purchase the Server Edition of EPM".
hmm.... seems my EPM version is for non server based Windows installations. Off to the Easeus website then and I found that the server edition will set me back $150!
Google Time
I'm not paying $150 for a one-off resize! Someone must've done this before so let's give Google a bash.
It seems that people have had this problem before and I study their techniques for resolving the problem. I find 3 possible options:
Option 1 - Knoppix with QTParted
I download 700mb of a Knoppix Live (as instructed) and boot my VM using the ISO image. But... the latest version of Knoppix doesn't ship with qtparted any more. The instructions I've found on Google are, sadly, out-of-date.
Option 2 - Knoppix with ntfsresize
Fortunately, my version of Knoppix does have ntfsresize so I give it a go. It says that it will resize my C: but only if the partition has been resized first so I have to use FDISK. I launch fdisk and tell it to increase the number of cylinders to be used on that partitioni and it point-blank refuses. More Googling tells me to delete the partition and recreate - but that just merely destroys all my data (I know - I did it - but only after I'd backed up my partition - phew!)
Option 3 - vmware converter
Next, I follow the procedure sfor vmware converter. I say follow... I did download the converter (which took a while) and installed it (which took longer) and then ran it. The screens didn't offer up the options that were describe by my Google search! It seems that my version of converter is a lot more recent than the one described in the web article and the functionality I'm looking for no longer exists.
Option 4 - GParted
My final options was GParted - a live bootable ISO image that claims to do the job. I searched for it, found it on Sourceforge, hit the download button and..... NOTHING. Doesn't exist or at least it's offline for the time-being.
Time to give up and go to bed
Next morning, though, I tried to retrieve GParted again and thankfully it was now available. Downloaded it, booted, clicked a couple of buttons and my partition was resized perfectly.
The Moral
This was a very simple procedure and it did not require too much effort to achieve it... in the end. The problem is that this is just the latest example of the web sending me off on tangents because the information that I found is no longer relevant or out-of-date. Unfortunately, the information has been round long enough to find itself high up on the search results yet the up-to-date, relevant stuff was actually tricky to find.
Don't get me wrong, I'm a big fan of Google but as the web clogs up with more irrelevant information, I'm finding it more and more difficult to get the information that I need.
It would be great if the custodians of information would clean-up their act. Maybe a "Best Before" date ;-)
I have a Windows 2003 Server VMWare image within which I build demos and test environments. (I do have a SUSE Linux v10 demo environment for real stuff but sometimes customers want to see applications running happily inside Windows). The latest installation I attempted chucked a hissy-fit when it came to calculating disk space. It wanted 10GB and I only had 7GB on my C:!
Resolution 1
I thought, no problem... I'll add a new virtual disk, give it 20GB and call it my D: drive. After just a few moments, my disk was available and I restarted the installation. But guess what... it refuses to install anywhere other than C:
Resolution 2
Disappointed, I figured I'll just resize my primary partition. And the fun began...
VMWare Workstation 6.5 comes with vmware-vdiskmanager.exe which allowed me to resize the virtual disk. (For information, I took it from 15GB up to 30GB). But, of course, that doesn't help unless I resize the partition as well.
Time to boot Windows 2003, bring up a command prompt and type diskpart in order to resize. But diskpart will refuse to resize a bootable partition! Doh!
That's OK though - I have a copy of Easeus Partition Manager! Try to install it and it said "You've got Windows 2003 Server! Please purchase the Server Edition of EPM".
hmm.... seems my EPM version is for non server based Windows installations. Off to the Easeus website then and I found that the server edition will set me back $150!
Google Time
I'm not paying $150 for a one-off resize! Someone must've done this before so let's give Google a bash.
It seems that people have had this problem before and I study their techniques for resolving the problem. I find 3 possible options:
Option 1 - Knoppix with QTParted
I download 700mb of a Knoppix Live (as instructed) and boot my VM using the ISO image. But... the latest version of Knoppix doesn't ship with qtparted any more. The instructions I've found on Google are, sadly, out-of-date.
Option 2 - Knoppix with ntfsresize
Fortunately, my version of Knoppix does have ntfsresize so I give it a go. It says that it will resize my C: but only if the partition has been resized first so I have to use FDISK. I launch fdisk and tell it to increase the number of cylinders to be used on that partitioni and it point-blank refuses. More Googling tells me to delete the partition and recreate - but that just merely destroys all my data (I know - I did it - but only after I'd backed up my partition - phew!)
Option 3 - vmware converter
Next, I follow the procedure sfor vmware converter. I say follow... I did download the converter (which took a while) and installed it (which took longer) and then ran it. The screens didn't offer up the options that were describe by my Google search! It seems that my version of converter is a lot more recent than the one described in the web article and the functionality I'm looking for no longer exists.
Option 4 - GParted
My final options was GParted - a live bootable ISO image that claims to do the job. I searched for it, found it on Sourceforge, hit the download button and..... NOTHING. Doesn't exist or at least it's offline for the time-being.
Time to give up and go to bed
Next morning, though, I tried to retrieve GParted again and thankfully it was now available. Downloaded it, booted, clicked a couple of buttons and my partition was resized perfectly.
The Moral
This was a very simple procedure and it did not require too much effort to achieve it... in the end. The problem is that this is just the latest example of the web sending me off on tangents because the information that I found is no longer relevant or out-of-date. Unfortunately, the information has been round long enough to find itself high up on the search results yet the up-to-date, relevant stuff was actually tricky to find.
Don't get me wrong, I'm a big fan of Google but as the web clogs up with more irrelevant information, I'm finding it more and more difficult to get the information that I need.
It would be great if the custodians of information would clean-up their act. Maybe a "Best Before" date ;-)
Wednesday, May 13, 2009
Self Promotion
I had the pleasure of attending a wonderful wedding at The Manoir last weekend.
I was fortunate to be asked to be "Best Man" at the event. Of course, I had to give a speech which was quite nerve-racking but it went down a storm.
Speaking at such an event is a great way of getting introduced to people. Everyone came to me after I had spoken to congratulate me and tell me how much they enjoyed what I had to say. Would they have been so eager to speak to me if I had been a mere mortal at the event?
So lot's of strangers spoke to me and the usual conversation ensued: "How do you do?"; "Nice weather, isn't it?"; "What do you do for a living?".
Normal run of the mill stuff you might think and you'd be right. However, I did get some interesting questions:
I guess the answer to these questions differ depending on the business that you are in, but for me, getting business and self-promotion is all about the following:
Indeed, giving a Best Man's speech, while important for the recently married couple in question, is another means of self-promotion I guess - unless you make a mess of it!
So how do I keep on top of my reputation? Time... might just take a few minutes each day to post to Twitter; maybe 15 minutes to write a blog entry (like this?); and just a few moments each month to check that my website is still relevant.
It doesn't take much and there really is no excuse for people allowing their reputation to waver!
As for being a friend on Facebook? Again, it might be reputationally damaging for me to be friends with certain people - I don't do too many randoms! Gain my trust first please.
I was fortunate to be asked to be "Best Man" at the event. Of course, I had to give a speech which was quite nerve-racking but it went down a storm.
Speaking at such an event is a great way of getting introduced to people. Everyone came to me after I had spoken to congratulate me and tell me how much they enjoyed what I had to say. Would they have been so eager to speak to me if I had been a mere mortal at the event?
So lot's of strangers spoke to me and the usual conversation ensued: "How do you do?"; "Nice weather, isn't it?"; "What do you do for a living?".
Normal run of the mill stuff you might think and you'd be right. However, I did get some interesting questions:
- How do you get business and how do you promote yourself?
- How do you keep on top of your reputation?
- Would you be my friend on Facebook?
I guess the answer to these questions differ depending on the business that you are in, but for me, getting business and self-promotion is all about the following:
- Reputational enhancement through constant delivery
- Ensuring the right people are made aware of the delivery success
- Promotion through social networking (LinkedIn, Twitter, Website, Blog, etc.) and being careful what I say on each medium
- Standing up in front of people and speaking - getting noticed
Indeed, giving a Best Man's speech, while important for the recently married couple in question, is another means of self-promotion I guess - unless you make a mess of it!
So how do I keep on top of my reputation? Time... might just take a few minutes each day to post to Twitter; maybe 15 minutes to write a blog entry (like this?); and just a few moments each month to check that my website is still relevant.
It doesn't take much and there really is no excuse for people allowing their reputation to waver!
As for being a friend on Facebook? Again, it might be reputationally damaging for me to be friends with certain people - I don't do too many randoms! Gain my trust first please.
Friday, May 01, 2009
Identity Mapping
got to thinking the other day about my online "presence". I do the Facebook thing, the Twitter thing, the LinkedIn thing and I have a .tel domain now!
Some of these "things" talk to each other. Twitter feeds Facebook and Plaxo, for example. I thought it would be quite cool to try to map these services to show the linkages (and it was more difficult than I thought). I haven't included Flickr, Trip IT, Friends Re-United and probably a whole host of other services that I use but here is the current map:
I pulled together this map not by merely recalling the services that I use (although I could've done that quite easily with this particular map) but rather by taking a look at my Password Safe datbase and going through the various accounts I have. My Password Safe now has 257 items in it and I know there are some accounts missing!
257 account details. Whatever way you cut it, that's a lot of accounts. Thankfully, I only know the password to a couple of services (and have never known, and probably will never know my Facebook password, for example). I rely almost entirely on Password Safe to access my online accounts.
And here's the issue... So paranoid am I about losing my Password Safe database that I have it copied from my desktop PC to my Mac Mini (on a nightly backup). It is synchronised with my 8gb Freecom USB disk. It is then synchronised with my two laptops (one personal and one work) and it is copied to a secure location on a server I have in a data centre.
So, my precious information is stored in a number of locations. That's a few opportunities for the baddies to try to get it from me. What are the options, though?
Well, of the 257 accounts that I have, hardly any of them support some kind of federated security model. It is true that I can log in to some services using my Google ID or my Yahoo ID, but not many. OpenID? Again, hardly any of my service providers support this. In fact, it seems that I have THREE amazon accounts - one for purchasing; one for Affiliation and one for Amazon Advantage! (I may have an amazon developer account for their API, but can't remember!)
So managing my identity is a fairly manual process just now. Not the case, necessarily, for big corporations who can throw a Sun, Oracle or IBM Identity Management solution at their various data repositories. Could these tools be used "in the cloud" for web users? Would I want to pay for that? Could I host IBM Tivoli Identity Manager on a server on the net, build some connectors to the major websites (such as Facebook, Twitter, Google & Yahoo) for managing accounts? Could I, host a reverse-proxy on this internet-facing server which would provide me with a web-based single-sign on solution to these services?
Technically? Everything is possible. Is it likely? Not a chance... well... not yet. Too many companies are trying to gear themselves towards offering this terrific opportunity to be the master of identity related data but you've got to question why any organisation would want to do it. For your benefit? Not likely.
Maybe I'll build an IdM service just for me :-)
Some of these "things" talk to each other. Twitter feeds Facebook and Plaxo, for example. I thought it would be quite cool to try to map these services to show the linkages (and it was more difficult than I thought). I haven't included Flickr, Trip IT, Friends Re-United and probably a whole host of other services that I use but here is the current map:
I pulled together this map not by merely recalling the services that I use (although I could've done that quite easily with this particular map) but rather by taking a look at my Password Safe datbase and going through the various accounts I have. My Password Safe now has 257 items in it and I know there are some accounts missing!
257 account details. Whatever way you cut it, that's a lot of accounts. Thankfully, I only know the password to a couple of services (and have never known, and probably will never know my Facebook password, for example). I rely almost entirely on Password Safe to access my online accounts.
And here's the issue... So paranoid am I about losing my Password Safe database that I have it copied from my desktop PC to my Mac Mini (on a nightly backup). It is synchronised with my 8gb Freecom USB disk. It is then synchronised with my two laptops (one personal and one work) and it is copied to a secure location on a server I have in a data centre.
So, my precious information is stored in a number of locations. That's a few opportunities for the baddies to try to get it from me. What are the options, though?
Well, of the 257 accounts that I have, hardly any of them support some kind of federated security model. It is true that I can log in to some services using my Google ID or my Yahoo ID, but not many. OpenID? Again, hardly any of my service providers support this. In fact, it seems that I have THREE amazon accounts - one for purchasing; one for Affiliation and one for Amazon Advantage! (I may have an amazon developer account for their API, but can't remember!)
So managing my identity is a fairly manual process just now. Not the case, necessarily, for big corporations who can throw a Sun, Oracle or IBM Identity Management solution at their various data repositories. Could these tools be used "in the cloud" for web users? Would I want to pay for that? Could I host IBM Tivoli Identity Manager on a server on the net, build some connectors to the major websites (such as Facebook, Twitter, Google & Yahoo) for managing accounts? Could I, host a reverse-proxy on this internet-facing server which would provide me with a web-based single-sign on solution to these services?
Technically? Everything is possible. Is it likely? Not a chance... well... not yet. Too many companies are trying to gear themselves towards offering this terrific opportunity to be the master of identity related data but you've got to question why any organisation would want to do it. For your benefit? Not likely.
Maybe I'll build an IdM service just for me :-)
Subscribe to:
Posts (Atom)
