Thursday, May 10, 2012

Recent Political Revelations

Don't worry, this isn't a post about gay marriage and I don't intend on starting an argument.  Let me be clear, I am going to try to ensure that this post isn't about either side of the argument.

That said, I would like to let people know the rules that I play by when engaging in passionate debate with others on political or religious topics.

How to Argue


  • I'm not going to argue with my good friends trying to convince them that they should think or choose one way or the other.  I'll let our democratic republic system of government determine that.  
  • I don't feel a particular need to broadcast the side of the issue on which I stand.  
  • I will not berate anyone for announcing their own position, nor will I berate anyone for trying to convince others of the reasons behind their position.  
  • I will play fair and make statements like 'I believe...' and 'I think...' instead of statements like 'It is a fact that...'.  I will not say, 'You are wrong' nor 'I am right'.
  • I will probably choose to not engage with people who try get me to contravene these rules.  If someone can't have an argument within these constraints, I don't think arguing will produce any meaningful results.
  • I will be concise and logical in my arguments.
  • I will admit I am wrong when someone points out the logic in my arguments.
  • I will allow others time to rephrase or explain their arguments if I point out a flaw in their reasoning.

So, where on the moral-issues-that-are-laws scale does gay marriage fall?  Let me give the boundaries of my moral scale: murder and coffee.  I morally believe murder is wrong and it should be outlawed.  I morally believe drinking coffee is wrong, but it should not be outlawed.  My question is not whether or not gay marriage actually is morally wrong.  My question is not really whether or not it should be outlawed because everyone is free to choose and that free will engenders disagreement.  My question is whether or not the majority of the people think it should be outlawed.  

I stand on one side of the gay marriage issue, and my conviction is such that no amount of argument will sway me.  I am open to any discussion about the issue, pending my availability after work and family responsibilities.

Wednesday, May 2, 2012

SNMP Counter32 vs. Gauge32

I ran into a problem recently where a manufacturer had built a MIB that contained an OID for 'objects in cache' with syntax Counter32.  However, when polling the value of that OID, it was discovered that the OID didn't behave like a Counter32; it went up and down (Counter32 is supposed to only go up; a lower value than the previous poll indicates a roll-over).  It occurred to me that the manufacturer probably meant to indicate the current number of objects in cache and mistakenly set the syntax to Counter32.  Since the actual number of objects in cache can rise or fall, a Counter32 wouldn't accurately represent this.  Instead, a Counter32 would indicate how many items had been added/removed from the cache since the previous poll (since most NMS systems would take the delta between the previous counter value and the current counter value).  While knowing how many items had been added or removed from the cache since the previous poll might be useful, what is probably more useful would be the total count.  The difference actually has nothing to do with the value returned by the device.  The problem is that since the MIB indicated that the OID is a Counter32, most NMS systems interpret that type of object differently, performing a delta instead of reporting the actual number returned by the device.

The fix for this is to change the way the NMS system interprets the returned value by changing the MIB.  In this case, the syntax needs to be changed from Counter32 to Gauge32.

Here is what the MIB contained originally:
 proxyNumObjects OBJECT-TYPE
  SYNTAX Counter32
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
   "The number of objects currently held by the proxy."
 ::= { proxySysPerf 2 }

Here is what the MIB needs to be changed to:
 proxyNumObjects OBJECT-TYPE
  SYNTAX Gauge32
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
   "The number of objects currently held by the proxy."
 ::= { proxySysPerf 2 }

Changing this syntax in the MIB and recompiling into the NMS system instructs the NMS to use the raw value returned instead of performing a delta with the previously obtained value.

In NetVoyant, recompiling the newly edited MIB will be sufficient to correct this problem.  However, a restart of the Mibs service is required before the newly compiled syntax gets used.  Since everything depends on the Mibs service, everything will get restarted.

Monday, April 30, 2012

How to use a CD/DVD on a Computer That Doesn't Have a CD/DVD Drive

A friend of mine asked me today how to use a CD on a computer that doesn't have a CD drive.  Luckily, this is an easy, albeit technical, one.  The overall strategy goes like this: create an ISO file of the CD, get the ISO file onto the CD-drive-less computer, open the ISO file with an emulator.


Creating an ISO file of the disc

This is where half the magic happens.  An ISO file is basically a file that exists on your hard drive that contains everything about an optical disc.  It's just like a Word document or an Excel workbook.  Except instead of opening in Word or Excel, you have to open it in a special program (don't worry, it's as easy as double clicking the ISO file).
The first thing to do is download and install ISO Recorder by Alex Feinman.  This will allow you to copy the CD to your computer's hard drive in the form of an ISO file.  After you've installed it, put the disc in your drive and look in 'My Computer'.  You should see the CD-drive icon change to the icon of the disc inserted.  Right click on that drive and click "Create Image from CD/DVD".
ISO Recorder will pop up asking where you want to save the new ISO file.  Pick a good place for it and hit next.  Wait for it to finish and you're ready for the next step.


Moving the ISO file to the CD-drive-less computer

This part can be accomplished via whatever method you choose.  The easiest (and least technical) is to just copy the ISO to a USB flash drive.  Then copy the ISO from the flash drive to the new computer.  Other options are to copy via the network or via torrent (depending on the size).


Opening the ISO File with an Emulator

This is the fun part.  Download and install Daemon Tools Lite on the CD-drive-less computer.  You may need to reboot after the installation; do that before continuing.  Once that's finished, find the ISO file and double click it.  You should get a message saying "Mounting Image to Virtual Drive".  After your mouse stops showing the hour glass and/or the message goes away, look in your 'My Computer'.  You should see a CD-drive.  WHAT?!  This is the virtual drive.  It should have your virtual CD in it.  You can now use the CD as if it were installed in a real drive.  And guess what, this CD can't get scratches on it.

ISO version of discs are a very handy way of keeping backups of discs.  Especially if you are worried that kids may destroy the originals.  Of course, DVDs manufactured by the movie industry usually have copy protection on them, so you might not be able to do this for just any disc.

Thursday, April 19, 2012

Managing NetVoyant through Web Services

Web services can be used to manage NetVoyant devices.  I've had at least one customer who built auto-provisioning of NV monitoring through web services.  It can be a headache, but it is possible.  I won't go into details about how to actually automate the use of the web services; go take a class for that.  This practice actually goes against my preferred method of adding all devices to NV and using class designations, auto-discovery rules, and auto-enable rules to manage what gets monitored.  However, in some cases, that can't be done.  Here are the details on the web services.

In any distributed system, there are two types of systems: NV Master Console and NV Poller.  NV uses scopes to manage the devices to be monitored.  Each scope details an IP address to be monitored, a subnet mask, and the poller responsible for monitoring it.  The process of adding and removing devices from NV involves manipulating the scope that corresponds to the device to be added or removed.


Adding a device to NetVoyant

If you are using web services to add devices to a distributed NetVoyant system, you'll either want to add the device to the poller responsible for polling all the devices in that region OR you'll want to add it to the poller that is least loaded (in terms of total number of devices).  It's also possible that you may have multiple pollers covering a single region and need to determine which poller is least loaded.In order to find out the number of devices on each poller, the GetDeviceCount operation of the NetVoyantService should be invoked on each poller (and not the master console).
The NetVoyantService can be found at /pollerwebservice/NetVoyantService.asmx?WSDL on each poller.  By invoking this procedure without any arguments, the result will be XML indicating how many devices total are on that particular poller.  Unfortunately, this must be run against each poller to get that poller's count.  Below is shown a sample output.

<?xml version="1.0" encoding="utf-8" ?>
<int xmlns="http://netqos.com/NetVoyantWS/">41</int>

Wednesday, April 11, 2012

Using the browser view to add custom content to NPC

A while ago I started making flash videos using Camstudio as a way of teaching people how to use NPC. Camstudio outputs a swf with accompanying html to make it easy to post the video to a website. I wanted this to be added to NPC so i started using the browser view. I needed a place to post the html and swf files so that the browser view could access the files through a url. So, i went into IIS on the npc system and added a virtual directory pointing to a folder on the D: drive. I put the swf and html files into that folder and pointed the browser view to the url. It worked pretty well. Given a little skill with html, anyone could insert anything into NPC pages.
One handy way to use this would be to insert small snippets that help people understand what specific views mean, or how to use/interpret specific pages.

Friday, March 30, 2012

Understanding SuperAgent Network Regions

I've found that many people don't understand the concept of regions in a network definition in SuperAgent.  Given the power of a region to make defining networks easier and give more granular reports, I'm actually quite surprised that it hasn't been evangelized a bit more.  So, here's my explanation:

SuperAgent organizes data according into buckets.  SA could store the analysis data for every single client IP address in its own bucket in the database, but that's kind of the point of MTP.  Also, having reports that are that granular are only helpful if you already know where the problem is.  In addition, if you think about it, storing the analysis of two client IP addresses in two individual buckets in the database doesn't make sense if those two client IP addresses are connected to the same switch, which is using the same router to get to the WAN which is coming into the same network hardware in the datacenter.  If the two clients are using all the same network hardware, measuring two different network round trip times for those two clients is virtually impossible.  Think about it, the only thing that is different is the client's NIC, which doesn't really affect SA metrics, due to modern technologies like TCP offload engine (TOE) which bring the ACK turn around time on the NIC down to sub-millisecond.

Ok, so there's the reason to summarize networks according to the network path.  If a bunch of IP addresses use the same network path to get back to the servers monitored by SA, there's not much value in storing the analysis on a per-IP basis.

However, for groups of IP addresses that do use different network infrastructure, it is imperative to separate them so that the differentiating network hardware can be isolated and therefore identified and troubleshot (troubleshooted?).

Therefore SA provides the ability to define client networks.  Each client network instructs SA how to group IP address blocks together and treat them as one unit for analysis and storage.  Each network definition should only contain the IP addresses that share all of their network infrastructure.

This is nice because it cuts down on the amount of configuration required in SA.  To illustrate, let me give an example.  A US company has decided that its IP address scheme is to allocate an entire /10 block of IP addresses to each time zone (e.g. 10.0.0.0/10 for Eastern, 10.64.0.0/10 for Central, 10.128.0.0/10 for Mountain, and 10.192.0.0/10 for Pacific).  It then decides to allocate an entire /19 block of IP addresses to each site within that time zone (e.g. 10.30.0.0/19 for NYC, 10.74.32.0/19 for Chicago, & 10.200.128.0/19 for LAX, among others).  This is actually really easy to configure in SA.  The networks would be defined in SA as such:
Network NameNetworkMask
EST10.0.0.010
CST10.64.0.010
MST10.128.0.010
PST10.192.0.010
NYC10.30.0.019
......19
CHI10.74.32.019
......19
LAX10.200.128.019
......19
Each of the time zone IP address blocks should be configured so that any clients in the time zone that don't match a site definition get categorized somewhere.  Any traffic showing up in those networks is an indicator that a site is missing.  On a side note, the time zone networks could be given their own network type and special, tighter thresholds could be applied so that incidents trip immediately for any amount of NRTT.  A special network incident response could be setup to send an email to the SA admin to notify him/her that traffic has been seen on a time zone network (indicating a site network definition that is either missing or incomplete).

While this is great, the network administrators at the US based company decided that a standard of 32 VLANs should be implemented at every site.  Each VLAN should be a /24 subnet and each VLAN has a standard use (floor 1, floor 2, floor 3, printers, servers, wireless, etc.).  With the networks above defined in SA, the network administrator won't be able to differentiate between bad performance on a wireless VLAN and bad performance on a wired VLAN.  At this point the administrator has two options: 1) either he can rebuild all the network definitions defining every single /24 subnet or 2) he can define 32 regions in each of the site network definitions.  The better option is #2.  Here's why:

Defining 32 regions on a /19 network definition in SA is equivalent to defining all 32 /24 sub-subnets within that /19 network.  It's shorthand.  Once defined, the /19 network definition will have a plus sign (+) next to it.  When clicked, the admin can see that SA actually has 32 networks defined within that /19.  The nice thing is that they are all grouped together according to site (/19 network).

One disadvantage is that the name originally assigned to the /19 network is the same one originally assigned to all the sub-subnets (regions).  This however can be overcome by expanding a /19 (hitting the plus sign) and renaming the VLANs as necessary.  Each region can be named individually.  The way to get around this is to use option 1 and create a CSV containing all the /24 networks each with a site name prefix and a VLAN designator (name and/or VLAN number).

Thursday, March 29, 2012

Understanding SA Discovery and Pruning/Grooming

First of all, a little conceptual history around SuperAgent:
SuperAgent was meant to automate the task of analyzing packet captures for essential metrics indicating server or network latency.  An engineer wanted a better way to do it than manually and SA was born.  Since its inception, it has grown by leaps and bounds increasing its capabilities.  Despite the growth, one major concept has remained: SA is meant to automate a manual process for your top applications.  This is not a scalability issue.  It's something fundamental to the through process behind every revision of the product.  SA is meant to analyze the transactions of applications of interest to determine where latency lies.

With the most recent version, SA added a feature that automatically discovers and configures applications.  This opened up a whole new area of SA since admins didn't have to automatically configure the applications they were interested in.  All they had to do was identify the servers that might be involved and SA did the rest.  Expectations began to rise since admins could now easily increase the bounds of what was considered an 'application of interest'.

In order to prevent performance problems that might arise in very complex environments, the developers imposed a limit on the discovery process.  When the discovery process has discovered and configured 1000 servers or 1000 applications (whichever comes first) a pruning process will begin.  This algorithm reevaluates the active combinations every 5 minutes to determine which 1000 servers and which 1000 applications will remain in the configuration.  This doesn't affect any applications configured by the administrator and shouldn't affect the largest, most active applications.  Administrators have to understand that this is by design and that the applications configured in SA don't necessarily represent all the applications hosted by a server.

Luckily, the server and application limits can be raised with a simple query in the database.  To view the current limits execute the following query:
select * from parameter_descriptions where parameter like 'maxNumAuto%';
Updating those values will change the limits.  Remember, those limits were put into place to prevent performance problems.  Also SA hasn't been tested by CA's QA department with any limit other than 1000, so if you run into any problems after changing those limits, you'll get push back from support because of it.  This is one of the things included in the CIG, which is basically required for every case, so support will know that you did it.  

I have increased the limits by 500 in some cases, just to push the envelope a little.  I didn't experience severe, immediate problems.  If you need much more than that, consider more infrastructure (read more SA master consoles).

Wednesday, March 21, 2012

Disabling SuperAgent Relationship Groups

When an application is configured in SuperAgent, the application actually consists of two parts: the application configuration item itself and the servers assigned to the application.  In order to grant permissions to specific applications, administrators would need to create a group in NPC containing both the application configuration item and the servers.  The problem with this is that the group that would be created would be static; any time the application configuration changed in SuperAgent, the group would have to be updated.

The answer to this problem is a pair of group sets created by SuperAgent that contain these items.  One set contains a group for every application in SuperAgent containing the application CI and the servers assigned to it.  The other set contains a group for every server containing the server and any application CIs the server belongs to.

This worked well in the past when applications were manually configured.  This only resulted in twice as many groups as the number of applications/servers that the admin was willing to configure.  However, with the advent of automatic application discovery and configuration in SuperAgent, it is possible that the number of these groups could skyrocket.  This high number of groups can degrade the performance of NPC sync.  As a result, there is a need to disable them.  The only bad part about disabling them is that you no longer can take advantage of the dynamic groups for permissions purposes.

In order to disable these groups, you have to go to SuperAgent and execute a couple of queries.  Before executing any queries you find on the internet, you should backup your database.  There.  You have been warned.
REPLACE INTO parameter_descriptions(Parameter, Level, Type, DefaultValue, Description) VALUES ('SyncRelationshipGroups',   'ProductSync', 'boolean', 'false', 'Sends App/Svr relationship groups to the performance center'), ('SyncRelationshipsEnabled', 'ProductSync', 'boolean', 'true',  'Sends App/Svr relationship combinations to the performance center');
UPDATE parameter_descriptions SET DefaultValue = '0' WHERE Parameter IN ('pullLastFullSyncTime', 'pushLastFullSyncTime', 'pullLastIncrSyncTime', 'pushLastIncrSyncTime');
UPDATE parameter_descriptions SET DefaultValue = 'true' WHERE Parameter = 'pullForceFullSync';
After running these queries, kick off a full resync of NPC.  It may take some time for all those groups to get deleted from NPC.  I don't suggest doing this on multiple SA MCs at once.  Do them one at a time and let NPC sync with one before moving on to the next.

Friday, March 16, 2012

How to Build or Modify Groups in NPC by using XML

In a previous post, I discussed how to build application reporting groups using dynamic system groups.  While this strategy is the recommended way of building application reporting groups, it can become tedious to actually copy and paste all the system groups into your application group.  Especially if you have the most recent version of SuperAgent and it has discovered a ton of applications and networks.  Luckily, there is an unpublished easier way: XML.  NPC has the ability to use XML to modify the group structure.  This includes the ability to put referential copies of system groups into custom application reporting groups.

The following is an excerpt from some documentation I wrote about how to use the web service to modify various portions of the NetQoS systems:

Group management in NPC is performed through the AdminCommand web service (found at PortalWebService/AdminCommandWS.asmx?WSDL ).  Adding or removing groups and adding or removing members from groups is accomplished by invoking the UpdateGroups operation (found at PortalWebService/AdminCommandWS.asmx?op=UpdateGroups).  Three main parameters are required: (1)useIDs, (2)allowDeletes, and (3) XML defining the groups (the groups to be added/removed/updated).  Groups themselves are defined explicitly in the XML while membership of groups is managed by a set of rules applied to each group.  Managed objects that match the rules are included as members of the group, objects that don’t match are excluded.  
The first two parameters are global and don’t change often.  The parameter useIDs instructs the operation whether or not to use the group ID values from the XML definition when identifying the group to be updated.  The useIDs parameter will need to be set to ‘true’ to ensure the correct groups are updated.  The only time a value of false would be used is when a single XML file is being used to import a group structure from one NPC system to another.

Thursday, January 19, 2012

Fighting SOPA and PIPA

SOPA and PIPA are two pieces of legislation aimed at decreasing the amount of illegal piracy that happens on the internet.  They could, if passed in their current version, grant the government powers that could cause problems for legitimate web sites.  I can't say it much better than Wikipedia and Google.  Read the information available before making any decision.

One thing I can do is help spread the message.  If you have a Twitter account and live in Texas, the following links will tweet a message to the Texas congressmen and women asking them to represent their constituents by opposing SOPA/PIPA.

Brought the bill to the house:
Lamar Smith

Texan representatives on Twitter:
Joe Barton
Kevin Brady
Michael Burgess
John Culberson
John Carter
John Cornyn
Henry Cuellar
Quico Canseco
Lloyd Doggett
Bill Flores
Kay Granger
Gene Green
Charlie Gonzalez
Louie Gohmert
Al Green
Ruben Hinojosa
Kay Hutchison
Jeb Hensarling
Sheila Jackson Lee
Eddie Johnson
Michael McCaul
Kenny Marchant
Randy Neugebauer
Pete Olson
Ron Paul
Ted Poe
Silver Reyes
Pete Sessions

Friday, January 13, 2012

How to Use Poll Instance Properties in a View


If you aren't completely, 100% comfortable with manipulating the database manually, stop reading this post now.  If you continue reading this post, you do so at your own risk.

In NV (and NPC if you've jailbroken it), you can create views using the NV Custom View Wizard.  One of the things the developers did but didn't really publicize is that you can pull poll instance properties into those views.  This includes any custom properties you may have added to the poll instance.  By default all poll instances have at least two properties: 'Name' and 'Description'.  Built in dataset poll instances (like ifstats) will have other properties which you can also use.  The trick is that you have to manipulate the database slightly in order to instruct the view to even look at the properties.  It isn't too bad, but like I said before, if you don't know how to do this with your eyes closed, don't try it.
  1. First you have to get the control id of the view (technically called a control) you have just created and will be modifying.  This is pretty easy to get, just open the view in the wizard and look in the url for the controlid parameter.  In this example, the id is 1200031.
  2. Next you need to get into the database and take a look at the control properties for your control.  Something like this: 'select * from control_properties where controlid=1200031 order by pageid, propertiesid, userid, propertyname;'
That should result in something like the following.

ControlID PageID PropertiesID UserID PropertyName PropertyType PropertyValue Editable Enabled
1200031 0 0 0 ColumnNames string latencymin,latencyaverage,latencymax Y Y
1200031 0 0 0 ControlType string PollInstance Y Y
1200031 0 0 0 Create.Date string Added at 1/13/2012 9:05:07 AM by nqadmin Y Y
1200031 0 0 0 data.chartType string Table Y Y
1200031 0 0 0 DataSetName string ISILONPerf Y Y
1200031 0 0 0 Description string This report focuses on the worst values for the specified parameter and therefore may be more prone to problems or failure. Y Y
1200031 0 0 0 DisplayFormats string ms|ms|ms Y Y
1200031 0 0 0 DisplayNames string Minimum,Average,Maximum Y Y
1200031 0 0 0 drillDown.target string Y Y
1200031 0 0 0 FieldNames string latencymin;latencyaverage;latencymax Y Y
1200031 0 0 0 FieldNames2 string Y Y
1200031 0 0 0 FieldNames3 string Y Y
1200031 0 0 0 FieldNames4 string Y Y
1200031 0 0 0 FieldNames5 string Y Y
1200031 0 0 0 Filepath string /nqWidgets/Poller/wptTopN.ascx Y Y
1200031 0 0 0 footer.text string Y Y
1200031 0 0 0 Limit string 10 Y Y
1200031 0 0 0 MibTables string ISILON_MIB.nodeProtocolPerfEntry Y Y
1200031 0 0 0 OrderBy string latencyaverage DESC Y Y
1200031 0 0 0 PropertyNames string Description,Name Y Y
1200031 0 0 0 RedThreshold string Y Y
1200031 0 0 0 Title string Isilon Node Performance Table by Protocol Y Y
1200031 0 0 0 Wizard.Action string ReportWizard('/npc/ReportWizard.aspx?PageID={PageID}&CtrlID={CtrlID}&PropertiesID={PropertiesID}'); Y Y
1200031 0 0 0 yaxis2.ColumnNames string Y Y
1200031 0 0 0 yaxis2.DisplayColors string Y Y
1200031 0 0 0 yaxis2.DisplayFormats string Y Y
1200031 0 0 0 yaxis2.DisplayNames string Y Y
1200031 0 0 0 YellowThreshold string Y Y

  1. You'll notice that I have a property called PropertyNames.  This is the entry you need to add to this table.  The propertyname will be 'PropertyNames' as shown.  The propertyvalue will be a comma separated list of the properties you would like to be available to this view.  For example, since I want both the description and the name properties available to this view, I added them both in there.
    You would normally add this record using an insert SQL statement.  A 0 in the pageid, propertyid, and/or userid fields represents a wildcard.  Technically, a view can exist multiple times on a page.  If it does, the pageid will contain the id of the page on which the control instance(s) exist(s).  The propertyid refers to which instance of the view on the page.  The userid refers to any properties that the user may have modified and saved to only their account.  If you want this change to apply to all instances of the view, the easiest would be to make the change to the default (pageid=0, propertyid=0, userid=0) then re-customize any views that have been customized.
  2. Once you've got that done, you can go back to the view wizard.  Go to the 4th step.  You can now use the property values within expressions or the 'Where' field.  The syntax is as follows: p_PropertyName.property_value, where PropertyName is the name from the comma separated list you entered into the database.  In my case, if I wanted to display the description, I would create an expression called 'Description' and the expression formula would be 'p_Description.property_value'.
One of the nice things about exposing properties is that you can use the properties in the 'Where' field of the view.  The where field allows you to pre-filter the view so that only certain objects show up.  For example, if I knew that the description contained an enumerated set of values (cifs, nfs, http, other), I could create a view that only shows the cifs objects by putting "p_Description.property_value = 'cifs'" in the Where field.

Unfortunately, this doesn't work for device properties like sysLocation, sysContact, sysName, sysObject, etc.  However, there is a script floating around that will take those parameters and store them in custom poll instance properties, which could then be exposed using this method.

Monday, January 9, 2012

How to convert VHS to DVD

We don't have that many VHS tapes lying around our house.  However, our wedding video is one important exception.  As a present for my wife on our 10 year anniversary, I decided to see if I had enough junk in my garage to do a conversion to a digital format so we could watch it.  Turns out I do.

The first think I would obviously need is a VHS player, also known as a VCR.  Fairly simple, nothing special.  I might have gotten a little better quality if the VCR had an S-video output instead of RCA composite video.  Maybe.

Friday, January 6, 2012

How to Wipe a Computer

I find myself leaving another job in favor of a better job.  Has happened quite a bit recently.  I wonder what that says about the economy?

Anyway, I've got another laptop I need to wipe clean before I can turn it back into my previous employer.  I figure, while I'm doing it, I might as well write down the various techniques.  You may want to do this anytime you're turning in an old computer or recycling it or giving it away.  Who wants to leave all that personal information on a computer!?

There are basically two options, the preference will be up to you.

Thursday, January 5, 2012

How to get Free HD TV

I hinted in my previous post that I made Hulu obsolete at our house at the time that I installed my Apple TV.  I didn't perform any real magic, but I do want to explain how I did it in case anyone out there is looking to do the magic that I do.

I normally only watch Hulu for ABC shows since I don't get good reception on our TV for the ABC affiliate here in Houston.  Let me explain.  Before I added the Apple TV to the mix, I used an antenna mounted in my attic which fed a signal to a pair of USB HDTV tuners connected to a pc connected to my TV.  I used Windows Media Center (WMC: a free piece of software included in every version of Windows Vista and Windows7) to watch and record TV.  WMC has a free guide built in and since I used two tuners, I could record/watch up to two shows at one time.  It was great.  I could pause live TV, I could schedule my favorite shows to record, and since it was a full blown PC, I could watch Netflix and use Hulu Desktop for online content.  I could even watch general conference via the internet browser.

All of this was great, except that the position of the antenna didn't give me great reception on ABC and I only got fair reception on some channels, missing out on the secondary channels altogether in some cases.  So, at the same time that I installed the Apple TV, I chose to get one other piece of hardware to alleviate the need of having a PC connected to the TV.  After all, I had to have the PC turned on all the time in order to ensure that all my shows would get recorded.  That combined with a big external hard drive that I had hooked up for TV show storage added to the power and heat inside my little entertainment cabinet.  I knew that I could use my XBOX as a media center extender, so I knew I could shift the load from the TV PC to my office PC.  The only problem was that I would have to run coax cable from the antenna down to my office and then plug in the two USB HDTV tuners.  I didn't want to have to run more cable through the wall.

The solution was to get a SiliconDust HD HomeRun Dual.  I found it used on the internet (thank you Amazon) for around $75.  The advantage of this device is that it combines the two tuners into one device and it uses Ethernet as opposed to USB for connectivity to the Windows Media Center PC.  This means that instead of running a coax cable from the antenna through the walls to my office PC, I could just run an Ethernet cable from the antenna/HomeRun Dual to my home router.  Since this is much easier due to the placement of my router, this became the optimum solution.

So, I installed the HomeRun Dual in the attic and connected it to the antenna.  I ran an Ethernet cable from there down to my punch-down and from there patched it into my router.  I installed the little utility on my office PC and fired up WMC.  WMC found the tuner on the network without any real work and before I knew it, I was watching TV on my office PC.  As it turns out, any other PC on my network can use one or both of the tuners as long as another PC isn't using them.  They are a pool of tuners available to everyone on the network.  Awesome!

The only problems was that the reception had changed.  I wasn't getting all the channels I was getting before or I was getting them, but not well enough to watch.  This wasn't unexpected since any time you change wiring in regards to an antenna, things can change.  I decided I needed to get my antenna higher so it would get better reception for those channels.  I mounted the antenna on the chimney and checked things out.  Lo and behold, I got wonderful reception on all the channels I used to get and I also now get very good reception on ABC and the affiliates.  I even now get 3 sub-channels to PBS!

Now that I get ABC, I don't really need Hulu.  If there is something I want to watch that I don't get through Netflix, over the air HDTV, or isn't in my collection of DVDs, I can always check Hulu.  If all else fails, Amazon and gohastings.com are always there to help with a used DVD.

Wednesday, November 23, 2011

NPC Application Groups

As mentioned in a previous series of posts, when building groups in NPC, there needs to be a 'Reporting Groups' group.  Expanding on the need for reporting groups, I figured I'd detail exactly what should go into that group and how to work with it.

The most important group that should exist in the reporting groups is an application group.  This application group doesn't contain any objects of itself and really isn't used for any reporting.  It's just there to assist in managing the groups that it will contain, namely application groups.  While the strategies outlined in my previous posts build the groups needed to organize the geographical layout of your infrastructure, the Applications group is where the logical layout of your applications is built to facilitate reporting on individual applications.

Monday, November 21, 2011

What a unified object model means

After spending some time talking with customers at CA World, I've realized that not everyone gets the vision of a unified object model.  The other observation is that even though QR codes are everywhere (and I mean everywhere people, open your eyes!), half of the self proclaimed "techies" out there have no clue what a QR code is.  To continue with this tangent, I can't wait until we have 3D detectors on our phones and can keep them in our pockets.  Along the same line, just wait until a phone in your pocket can pickup and store the information encoded in 3D QR codes you pass by every day.  But I digress.

A unified object model is a method of designing systems so that they all have a concept of the types of data objects with which they will all interact.  For example, gohastings.com knows what a DVD is.  When I search, I can search for just DVD's or I can include books and video games.  This is a simple example, but the fundamentals are the same.

As for network monitoring software, it is essential that any user interaction interface know about the different types of objects contained there.  It is my understanding that this is one of the main goals of the Catalyst project at CA.  Before anyone out there begins to argue, I'm not saying that this is the most technically direct definition. I'm trying to boil it down.

NPC actually already utilized a somewhat unified object model, implementing a concept called context.  Context is refers to the object of focus of a control or page.  For example, one type of context in NPC is the interface context.  The interface context allows NPC to understand what an interface is and what products report data pertaining to interfaces.  ReporterAnalyzer (aka NFA), eHealth, and NetVoyant all deliver interface based statistics.  Since NPC knows what an interface is due to the object model implemented, it can deliver a mix of information from all three products.  The object model in NPC has its limitations, however CA has promised to expand that model (Catalyst).

For me, some of the most important contexts are group, site, application, server, router, switch, generic IP based device, interface, CPU, and memory, among others.  While it would be good to have a complete list of all the basic and intermediately complex contexts, what is most important is that context be extensible.

NetVoyant actually accomplished this in part due to the nature of the self certification process.  While top level contexts were fixed (group, router, switch, server), the child objects could be extended by building a new certification.  The advantage of this is that NetVoyant knew about every different type of child object.  Whether it was a temperature probe, a UPS battery, or a server case intrusion detection switch.  Also, every context had its own set of pages.  Which meant that when I drill into a battery, I always see battery related data.  When I drill into an interface, I always see the same interface report with the same layout, with the same types of graphs.  The only difference was the object focused on.

One of the limitations of the NetVoyant object model was that it only partially allowed for different types of devices.  While drilling into a server, a switch, or a router took me to their individually designed and tailored pages, any other type of device (firewall, WAP, wan accelerator, et al) would always take me to the same set of 'generic device' pages.

To some extent, this is the point of a unified object model.  Implementing the knowledge of how objects interact with each other and what kind of data is associated with each type of object.  Along with this, Catalyst seeks to unify how systems interact with each other when requesting information about each type of data.  By unifying and classifying this data and standardizing how the data is shared, more integrations can be made with less effort.  And that's the whole point of a unified object model.

Thursday, October 27, 2011

Automatically Tweeting with a QR Code

To continue with my QR fever, I've been looking into what can be easily automated using QR codes.

Twitter
The first thing I found is how to tweet from a QR.  This is fairly easy since any QR can contain a URL; So, the only thing needed is a URL that will tweet.  A quick search on the web revealed this.

http://twitter.com/home?status=insert%20your%20message%20here

Use these codes for special characters – (%20 is a space) (%40 is @) (%25 is #) (More here).  Given that, you could even include a mention, a hash tag, or even a tiny url.  I'm trying to figure out how to include a location in a tweet, but that's proving more difficult.  If anyone knows how to do that, please let me know.  Once you have the text, you can put it into the QR code generator on Google's chart API.

Facebook
The next thing I found is how to make a QR code to get someone to Facebook.  Unfortunately, there's not really an easy way to get people to 'like' something on Facebook by just scanning the code.  What you can do is point people to your Facebook page (or to any URL really) and hope they like it from there.  One thing you can do is point them directly to a 'like' page within Facebook.  This is accomplished by creating a URL like this:

https://www.facebook.com/plugins/like.php?href=http://stuart.weenig.com

Click on the link above to see what this looks like.  You can replace the href=http://stuart.weenig.com with your own URL (like href=http://www.facebook.com/NetQoS).  This will bring up a very small like button that the user can then click on.  The nice thing about this is that if they're already logged into Facebook in their browser, they'll get a richer experience.

LinkedIn
Turns out sharing something to LinkedIn is pretty easy.  I used the qr generator at QR Stuff to figure out the link:

http://www.linkedin.com/shareArticle?mini=true&url=http%3A//stuart.weenig.com


I thought it was weird that the colon needed to be translated but that the forward slashes did not.  If you find that you need it, the URL code for a forward slash is %2F.  As you can see by clicking on the link above, the forward slashes do not need to be encoded for the share to work.

Locations
My next goal will be to figure out how to enable location based check-ins through Facebook and twitter.  If anyone already knows how to do that, let me know.

Wednesday, October 26, 2011

Using QR Codes to Share Contact Information

I recently saw a QR code at the entrance to a local hobby store here in town and decided to see what would happen if I scanned it with my camera. Since I already have a QR reader app on my phone, I fired it up and took the shot. I was startled to see that my phone now had a contact screen showing the contact information for the store, hours, website, etc. It was pretty cool, especially since the store is a local store that has nothing to do with high technology.

Since then, I've decided to get ready for CA World by seeing how hard it would be to put my own contact information into a QR code. Then I could paste the QR code onto my badge and quickly and easily share my contact information with other people at the convention. It took a while and I learned a little bit, but here are the results:

The best place I've found to generate a barcode was (surprise, surprise) Google. They have a chart API that you can use to build charts and display them on web pages. Very cool. As it turns out, all QR codes are really just text. You start by embedding contact information in a very simple markup (popularized by NTT DoCoMo), then pasting that into the QrCode chart type.  Tweak the parameters and you end up with a nice little code that can be read by most scanners.

The trickiest part is to format the text using the markup language.  For example:
MECARD:N:Stuart Weenig;URL:http://stuart.weenig.com;

would result in this QR Code:


In order to embed more information into the code, just add fields.  For example, you can add one or more telephone numbers.
NameN:Designates a text string to be set as the name in the phonebook. (0 or more characters) When a field is divided by a comma (,), the first half is treated as the last name and the second half is treated as the first name
Phone NumberTEL:Designates a text string to be set as the telephone number in the phonebook. (1 to 24 digits)
Video Phone NumberTEL-AV:Designates a text string to be set as the videophone number in the phonebook. (1 to 24 digits)
E-mailEMAIL:Designates a text string to be set as the e-mail address in the phonebook. (0 or more characters)
MemoNOTE:Designates a text string to be set as the memo in the phonebook. (0 or more characters)
BirthdayBDAY:Designates a text string to be set as the birthday in the phonebook. (8 digits) The 8 digits consist of the year (4 digits), month (2 digits) and day (2 digits), in order.
AddressADR:Designates a text string to be set as the address in the phonebook. (0 or more characters) The fields divided by commas (,) denote PO box, room number, house number, city, prefecture, zip code and country, in order.
URLURL:Designates a text string to be set as the homepage URL in the phonebook. (0 or more characters)
NicknameNICKNAME:Designates a text string to be set as the nickname in the phonebook. (0 or more characters)

Another idea I had was to tape a QR code on the back of my phone. So that in case it gets lost, someone can at least know who it originally belonged to. This would also make it easier to share contact information with just about anybody.

Thursday, October 20, 2011

Techno Nursery

We're getting ready for 2 pair of little feet destined to arrive around February.  As such, I've been preparing the nursery.  I finished the moulding (still need to touch up a couple places) and got some bookshelves in.  As usual, I wasn't satisfied.  I needed to tech-ify the room.  So, I had a couple ideas:

Idea #1: Remote Lullaby
Over the last few months, I started collecting lullaby music into a playlist (thanks, Jewel for the inspiration and the starting tracks).  I even burned a CD so I could pop it into the little CD player/radio we put in there.  However, I knew that wouldn't do.  So, I dusted off the old Dell Hybrid pc and installed it behind some books on one of the bookshelves.  I dropped a network jack into that room and set it up as a headless pc.  The idea is to connect some small speakers and use the remote app on my iPhone to control the streaming of the lullaby playlist from my desktop to the nursery.  The idea being that I could roll over in bed and start up a lullaby without even getting out of bed.  So far so good.  Just gotta pick the speakers that are going to be connected to the pc.

Idea #2: Baby Monitor
Luckily for me, someone had already come up with a good way of doing this.  It only took about 20 minutes of searching on the web before I found JumiTech.  They have built an agent and an iOS app that work together to stream video from a webcam to an iOS device.  So, I installed their agent, plugged in a very, very old webcam from the garage, spent 20 minutes getting a driver that would install, and installed the app on my phone.  I started up the agent then started up the app on my phone.  After a couple of clicks (no serious configuration) I was looking at my face on my iPhone from the point of view of my little old webcam.  Very slick.  Next step is to purchase a night vision enabled webcam to see if it will work.  I should also be able to view the webcam from anywhere on the internet, thanks to UPnP.  I've disabled that for now, but we'll see if it becomes something I will enable later.  The agent supports audio, but since the webcam doesn't have a microphone and also since it only streams audio when connected, this won't work as a complete baby monitor replacement.  However, it's very cool that I can just rollover to my nightstand and within a couple clicks see into my nursery.

If you have any ideas for cool technology improvements for the nursery, I'd love to hear about them.  What else can I do with a network connected PC in the nursery?


Tuesday, October 11, 2011

How to use APD


APD (Application Performance Dashboard) is a very useful widget in NPC.  It allows the report designer to create a crosstab-like report showing the performance of a single set of networks when connecting to multiple applications.  The nice thing about this is that application traffic can be consolidated into a single view that is easy to troubleshoot.
The first thing you do is determine which network group to focus on.  If you've followed my best practice and created and 'All Sites' group, this usually becomes a great group to use for the network.
The next thing to do is to configure which applications these networks should connect to.  In order to see which of your SA configured applications are your front end, you can go to SA and look at the performance map filtered by the 'All Sites' network group.  The applications listed with the highest observation counts are probably your front ends.
After that, you can configure the back end applications.  The easiest way to do this is within the wizard itself.  Click 'add second tier' and look for the application with the highest observation counts.  APD counts a second tier application whenever it sees the server(s) of a front tier application acting as a network and connecting to the second tier application.  The same applies to a third tier application.

If you have a load balancer that only changes the destination address (and not the source address) on incoming packets, the true second tier application will appear as a first tier application.  In that case, add the true second tier application as a first tier application to the APD.

Friday, October 7, 2011

Hiding the D: drive (the restore drive) from Windows

Most computers today come with the hard drive split to look like 2 hard drives.  The reason manufacturers are doing this is because one is used for the computer and the other contains all the files necessary to restore the PC to factory settings (reimage the pc).  Since that partition is usually sized so that it doesn't have that much free space, nobody ever uses it as extra storage space.  As a result, it's pretty much a useless drive until you need it.  So, why not hide it from the operating system?  It could be done, but the manufacturers don't want to take the time to do it.
Taken from howtogeek.com:
Open regedit and navigate to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
The NoDrives key most likely does not exist by default, so you’ll need to create it with right-click \ new 32-bit DWORD and name it NoDrives.
This value is a 32 bit number, and the bits are arranged in reverse order with a value of 1 hiding that drive. For example, if we wanted to hide drives A: and F: we would arrange it like this:
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1

Converting 100001 to decimal we end up with a decimal value of 33 or a hex value of 0×21, so if you double-click on the key in the registry editor, choose Decimal and then enter 33 into the value field.
In order to see these changes, you’ll need to restart explorer.exe, which you can do easily from Task Manager or the longer way by just logging off and back on.

Thursday, October 6, 2011

NPC Sites and Groups 7 of 7: GXMLG - Exporting the Configuration Files

Part of a series of posts.  To see all posts, click here.

Once the sites and networks are completely configured in the tool, configuration files can be generated for NPC, NetVoyant, SuperAgent, and UCMonitor.

Before an NPC configuration XML file can be generated, the tool need s to know the path to the ‘All Sites’ group. If an XML file was imported that was exported from an existing ‘All Sites’ group, the tool extracted this information from the XML. If a CSV was imported or the Sites/Networks list was built manually within the tool, this setting must be input manually on the ‘Import’ tab of the tool.

Three other settings of importance exist on the ‘Import’ tab: NVDatasource, SADatasource, and UCMDatasource. If the values of these fields are set to ‘true’ the tool will include rules in the NPC XML for that type of datasource. The tool will also include CSV outputs for those data source types. Setting the value to anything other than ‘true’ will exclude that type of data source output.

There are two options for exporting the configuration files. On the ‘Export Config Files’ tab, the ‘Export All Config Files…’ button will prompt for a location to output the files. The tool will save the XML and CSV files in that target folder. Those files can then be imported into their corresponding products.

The other option for export is to click the individual generation buttons. These will generate the output and place it into a text box in the tool. The text could then be copied and pasted into a text editor to save the files.

Wednesday, October 5, 2011

NPC Sites and Groups 6 of 7: GXMLG - Automatic Config File Generation

Part of a series of posts.  To see all posts, click here.

At this point, this is all the information strictly needed to start with a Sites/Networks list and end up with a fully populated Sites group in NPC, a NetVoyant that should be discovering all devices at all sites, a SuperAgent that only needs an active monitor port, and a UCMonitor that only needs an active monitor port (if monitoring only Cisco telephony).

The obvious next step is to implement this into the product in such a way that this configuration is done in NPC and synchronized to the sub-products. However, since CA is currently sans an NPC Product manager, we’ll have to suffice ourselves with a third party tool.

Tuesday, October 4, 2011

First impressions of the iPhone 4S

I just finished watching the keynote video for the iPhone 4S. I have to say I am impressed. I am really excited about the release of the new iPhone, but I think I'm more excited about the release of iOS 5.  In my household there are two iPhones and an iPad, so the release of a new operating system is more exciting to me than a new device.
The release of Siri could turn out to be revolutionary or it could flop. There have been other voice recognition technologies, however none have used real English language commands. For example, Windows 7 and Vista both include voice recognition technology, but in order to use that you have to stick to a pre-defined list of commands.  The fact that Apple's new device allows you to speak to it in normal words could mean success where others have failed.
iOS is set to release next Wednesday, so, I'll give a full review of the new features when I get it installed.

In the mean time, I've promised a review of the Boxwave clip-on keyboard for my iPhone.
All in all, it's what I expected.  I hoped for a physical keyboard.  Here are the pros:

Pros

  • It was incredibly easy to setup.  I have used Bluetooth before, so I was familiar with the general pairing process.  It wasn't any different from any other Bluetooth device I had ever used.  
  • It's Bluetooth, so it doesn't require any cables and it doesn't occupy my sync port.
  • It is a physical keyboard, so typing on it has been an improved experience over the virtual screen keyboard because of the added real estate and because of the tactile nature of a physical keyboard.
  • It has a 'show/hide keyboard' button that allows me to show or hide the virtual keyboard just in case I ever want to go back temporarily.  I've actually had occasion where using the virtual keyboard was better (I'll explain in the cons).
  • It has arrow keys!  I can use the arrow keys to move the cursor around.  This is especially helpful when i'm editing text that I've typed incorrectly.  I can go back to the mistake without having to erase everything after the mistake and do it again.  The arrow keys also allow for 'home' and 'end' functions, especially helpful when typing.
Cons
  • Charging - while the keyboard is charging, there's a light.  When it's done charging, all the lights go off.  This is disconcerting because I came back after an hour of charging it the first time and I thought the charger had become unplugged and it hadn't been charging.  I discovered that about 20 seconds after unplugging it and plugging it back in, the charge light went out, hopefully indicating a full charge.  After a few charge cycles, this is indeed the behavior.  It was not documented anyway.  Boxwave, put a green light on there that lights up when it's fully charged.
  • They keyboard is not lit - the keys on the keyboard are not lit up which means that when it's dark, I can't use the keyboard.  I fumble around for the 'show/hide keyboard' button (or just power off the keyboard) to force the virtual keyboard to come up and I can use it like normal.  So basically, when it's dark, the keyboard is dead weight.
  • The apostrophe requires a function key to be pressed.  This is annoying since there are other keys, like the equals sign, that don't require a function key.  The apostrophe is going to be much more utilized than the equals sign.
  • Function/Shift keys - the keyboard has a plethora of function keys to allow numerals and additional characters, which is great.  However, when typing in a long string of numbers or special characters (think :-)), I can't just hold down the function key.  I can either press and depress the function key between each character (frustrating) or I can double tap the function key to go into function lock (double tap again to undo function lock).  While both of those options are great, I'd also like the ability to just hold down the function key and put in all the special characters I want.  Same goes for the shift key.  That way, it acts more like the keyboards I've been using for the last 30 years.
  • Autocorrect - now that I'm using an external keyboard, iOS' internal auto correct feature doesn't always work.  For example, if I type 'i', it doesn't get corrected to 'I', nor dont to don't.  Nor does it automatically capitalize the first word in new sentences.
That's pretty much it for now.  If I come across any other glaring problems, I'll post them.

NPC Sites and Groups 5 of 7: UCMonitor Locations and SuperAgent Networks

Part of a series of posts.  To see all posts, click here.


UCMonitor Locations
As mentioned before, the relationship between NPC Sites and UCMonitor Locations should be a 1-to-1 relationship. Locations should be named the same way the locations are named in NPC. All that remains is to ensure that the networks that correspond to each site are added to each corresponding location.

UCMonitor locations can be imported via a CSV file. The syntax is described in the Installation Steps documentation and is shown below:

Saturday, October 1, 2011

NPC Sites and Groups 4 of 7: NetVoyant Discovery Scopes


I have a philosophy about NetVoyant and discovery scopes. I believe that NetVoyant should be opened up to all segments of the network. Most people disagree saying there’s no need to discover workstations and printers.

While I agree that there’s not much value in discovering or polling people’s desktops or laptops nor network attached printers, there are mechanisms built into NetVoyant that allow partial discovery of those devices without using licenses. In fact, NetVoyant is setup by default to ignore workstations and printers. During discovery, NetVoyant will attempt to get the sysObject OID. Based on this sysObject OID, NetVoyant knows what type of device is being discovered. If it is a workstation or printer, it will be classified as such and placed into the workstations or printers group and discovery will halt for those devices.

The best scenario will depend on each individual situation. I’ll detail a middle-of-the-road solution that should work in indecisive situations.

Friday, September 30, 2011

NPC Sites and Groups 3 of 7: Building the Groups

Part of a series of posts.  To see all posts, click here.

Back when NPC underwent a dramatic set of upgrades, one of the new features was the group tree. Administrators could now create groups of monitored objects that could be applied to pages as filters. Recently, the NPC developers added a context page so that users could actually drill into a site. Instead of applying a filter, NPC would take the user to a set of pages specifically designed to show a set of site overview reports for the objects in the group. These site groups are crucial to implementing the best group structure.

Calling back to a Best Practice document written by NetQoS several years ago, NPC administrators should create five groups under the root, /All Groups: All Sites, Regional, Line of Business, Reporting Groups, and zExcluded Items. Optionally, a sixth group could be added, zRetired Groups, where groups that should no longer be used can be retired without actually deleting them.

Thursday, September 29, 2011

NPC Sites and Groups 2 of 7: Building the Sites/Networks List

Part of a series of posts.  To see all posts, click here.

Before any thought can be dedicated to configuring the products, a good Sites/Networks list should be compiled. The Sites/Networks list should represent the smallest building blocks for reporting groups. Ideally, if you wanted to report on anything smaller than one of these sites, you’d report on an individual device or poll instance.

This list may already exist in some form or another. You’ll probably need to clean it up a bit. Whether you start over fresh or take an existing list and clean it up, you should have a list similar to the one shown below. Columns could be added to the right to include metadata about the site like Line of Business or Regional membership. This information is not required to implement this best practice, but can help when filling out other groups. The information I’ve provided below will be used as an example throughout this document and should hopefully exemplify most of the complex situations possible in corporate networks.

Site NameNetworkLine of BusinessRegion
New York10.1.0.0/16Sales OfficeNA
Los Angeles (Bldg 1)10.2.0.0/16, 10.3.0.0/16CorporateNA
Los Angeles (Bldg 2)10.4.0.0/16, 10.5.0.0/16, 172.16.1.0/24Corporate, Sales Office, Data CenterNA
London10.100.0.0/16Sales OfficeEMEA
Singapore10.150.0.0/16, 192.168.150.0/24Sales OfficeAPAC
Table 1: Raw Sites List

Now that the sites list is compiled, it needs to be cleaned up a bit. The Los Angeles site is actually two sites. Also, Bldg 2 of the Los Angeles site is comprised of three different network segments, each serving a different line of business (LOB). I recommend treating each of these network segments as separate locations. Most reporting will want to segregate data center operations from the corporate network infrastructure monitoring. Also, since Corporate and Sales are two different LOB’s, splitting them into different sites will allow easier reporting by LOB later on. After cleaning up the raw Sites/Networks list, we end up with the list shown below:

Site NameNetworkLine of BusinessRegion
New York10.1.0.0/16Sales OfficeNA
Los Angeles (Bldg 1)10.2.0.0/15CorporateNA
Los Angeles (Bldg 2 - Corp)10.4.0.0/16CorporateNA
Los Angeles (Bldg 2 - Sales)10.5.0.0/16Sales OfficeNA
Los Angeles (Bldg 2 - DC)172.16.1.0/24Data CenterNA
London10.100.0.0/16Sales OfficeEMEA
Singapore10.150.0.0/16, 192.168.150.0/24Sales OfficeAPAC
Table 2: Final Sites/Networks List


You’ll notice that I’ve added to the names of Bldg 2 to make them unique. Also notice that I’ve simplified the network definition for Bldg 1 since the two subnets were consecutive and could be summarized using a smaller subnet mask.

To be continued...

Wednesday, September 28, 2011

NPC Sites and Groups 1 of 7: The Philosophy

Part of a series of posts.  To see all posts, click here.

A while ago, I started building a document that detailed the best practices I had developed around groups and sites in NPC.  I applied to present this at CA World this November, but the new direction of CA World wasn't compatible with this type of presentation.  As a result, I'm going to post my findings here.  I'll post the sections individually then maybe post the whole thing later as a single document.  I've also built a little applet (using my limited programming skills, so be nice) that takes a majority of the manual work out of following these best practices.


The Philosophy

After having setup countless instances of the NetQoS suite of products and after the most recent release of SuperAgent, I’ve stumbled upon a discovery that I think is significant.  Frankly, I’m surprised no one at NetQoS has realized or built on this relationship.  Perhaps they have, but due to the recent evacuation of NetQoS talent from CA, no one has stepped in to fill the gap.  This is why I’m writing these posts.
This discovery came after being tasked to revamp the group structure in a NetQoS Performance Center (NPC) installation.  At the same time, a request came in to clean up the locations in Unified Communications Monitor (UCM).  It was then, that I noticed that the information required for both was essentially the same.  I needed to know what locations we had and what subnets were in use at those locations.  Not long after that, I realized that the same information is needed, although in a slightly different form, for SuperAgent and NetVoyant configurations.
Therefore, in order to configure four of the NetQoS products, one set of core data is required.  There are obviously other pieces of the configuration that are required to get the best monitoring.  In these posts, I’ll detail how the Sites/Networks list can be used to best configure the core NetQoS products.

To be continued...

Tuesday, September 27, 2011

iPhone5 Release Date Heavily Hinted

Apple has issued invitations to a press conference that can only mean the release of iPhone5.  The only real question I have is whether or not iOS 5 will come out at the same time.  Nobody outside of Apple really knows and those inside Apple aren't talking.  However, since I already have 2 iPhones and an iPad, I won't be running out to get another device to replace the perfectly good one I already have.  It looks like I've entered the friend zone with Apple.  The friend zone is the place where you aren't really affected by the huge, amazing, wonderful, new stuff coming from a provider and instead have to deal with being a second rate citizen to whom the provider isn't really interested in since you've already spent your money with them.

Too many companies ignore the customers in the friend zone.  How many times have you seen your internet provider offer a deal for home internet that's at least half of what you're paying now for internet, but you don't qualify because you're an existing customer?  Or a mobile phone provider/carrier?

Look people, you wouldn't have to spend so much money attracting new customers (who, face it, were probably at one point in the past one of your loyal customers) if you extended the new offers to your existing customers as well.  I wouldn't even consider leaving my current internet provider if I got the same deals that new customers get.  I'm not saying they have to automatically give me the deals new customers get, but at least don't disqualify me.  If I'm willing to sit on the phone for 2 hours just so I can get a better price on my internet and continue to remain a loyal customer, give me the deal!

Monday, September 19, 2011

I am such a geek

As if you didn't know, I am a geek.  A nerd.  I like Star Wars and I can tell you most of the back stories of all the X-men.  However, tonight I have outdone myself.

Tonight, will go down in history as one of those I-told-you-so moments for Mrs. Moore, my 7th and 8th grade math teacher.  I remember well the day we were given the assignment to produce detailed drawings of our implementations of "constructions".  Constructions were the epitome of geometry.  Constructions consist of using a rule and a compass (remember: that sharp thing with a pencil on the other end that no one knew what exactly it was used for) to make various geometric calculations, like finding the half way point on a line or drawing a line that is perpendicular to another line or finding the center of a circle.  I struggled through them for what seemed like weeks.  It was a 3 day assignment, but I was smaller then so everything else was bigger, right?  I remember at least ten times a day someone asking Mrs. Moore why we would ever need to know how to do constructions.  Well, little did I know...

One of the constructions we had to learn was how to bisect an angle.  It's actually pretty easy once you understand a little about what a compass can do.  Anyway, when hanging crown moulding in a room, when two pieces of crown moulding meet, you have to miter them.  Mitering a piece of moulding basically means cutting it at an angle so that the two pieces that touch actually touch.

Well, when mitering two pieces of moulding, you have to cut the edge of the moulding at an angle that bisects the angle where the two pieces meet.  In other words, if two pieces meet at a 90° angle, each piece has to be mitered at 45°.  If they meet at 135°, each piece is cut at 67.5°.  Well, tonight, I found myself trying to hang moulding with my buddy, Dusty.  He brought his electric miter saw and we thought we would fly through it.  Little did we know.

So, we made some cuts, then had to fix them, then had to make some more cuts.  Eventually we got to a corner where we couldn't get the cuts to match up.  The angle was wierd and we kept going back to the saw to try to even it up.  Then I heard the voice of my 8th grade math teacher when Dusty said, "We need to split that angle in half, whatever it is."

At the beginning of my engineering schooling, I bought a very nice compass set thinking I would finally learn how to use the enigmatic compass.  Eight years later, I blew the dust off it and used it for the first time.  I used the construction I learned in 8th grade and finally proved Mrs. Moore right.  The cut was perfect, the two pieces fit together like the blocks on an Egyptian pyramid.  Well, what do you know: I do need to know how to do constructions for real life!

Saturday, September 17, 2011

And Google+ Takes an Astounding Hit!

Well, the battle between G+ and Facebook is heating up.  Google+ exploded onto the scene with some wonderful new features that instantly propelled it into the ring with heavyweight social networking champion Facebook.  Circles and meetup were desperately needed in a social world where people were limiting what they did on other social networks because of our own dual sided nature.  I only had social friends on Facebook and all my professional connections were on LinkedIn.  I only recently added twitter where I've been mostly posting from my professional life.  Everyone had this problem, so Google stepped up and presented an elegant solution: circles.
Now with G+ you could post something and choose which circle of friends would see that post.  You could put all your professional friends in one circle, your social friends in another, and even make a closer circle just consisting of family and close friends.  It was a stroke of genius on Google's part.  Facebook took a huge uppercut to the jaw right after the round started.
Facebook floundered, modified the chat interface, promised an HTML5 based iOS app, and make a couple other small changes.  But Facebook wasn't out of the game yet.

Monday, September 12, 2011

More BlackBerry woes

In case you hadn't noticed, BlackBerry isn't doing so hot.  According to a comScore report, RIM has lost another 3.7% of the mobile market, giving it up mainly to Google and Apple (See the chart below).
Source: comScore - http://bit.ly/qixHpB
This leads everyone in the mobile industry wondering what will happen to BlackBerry.  Some people have said that BlackBerry still has strengths.  Oddly enough, those strengths are the same ones they have had since before Google even came to market: great keyboard and easy to understand navigation (BlackBerry's the only phone with a right click intuitively similar to Windows' right click).

So what is a washed up mobile phone maker to do when facing obviously superior competition?  Well, they can do what most technology companies do: steal.  What will it take to get Google's Android on BlackBerry hardware?  In that case, it wouldn't even be stealing.  Some people are even talking about this as an alternative for BlackBerry (BlackBerry's Support Forums) and I wouldn't be surprised to see some hacker out there loading Android on a BlackBerry (if they can jailbreak it).  

Another option is for RIM to start manufacturing a bolt on keyboard for iPhone and Droid.  Could you imagine what would happen if Otterbox or Boxwave were to partner with RIM to make a case with a flip out BB style keyboard?  It would be a killer for RIM since they would lose the entire BB-has-the-best-keyboard market.  But really, what else can RIM do?

Honestly, I see BlackBerries running Android within a few years.  It's their only viable option.  

Monday, August 15, 2011

RIM's last chance

Well, in case you didn't hear, Google bought Motorola Mobility (a split off company from Motorola that built their phones).  This is Google's second attempt at manufacturing hardware for mobile phones (the first being the very underwhelming Nexus).  This will make Google much more like Apple and RIM when it comes to mobile phones: they will now make the hardware as well as the software for their mobile phones.  While Google claims the acquisition is in response to the MSFT/APPL led coalition which won the battle over the defunct Nortel's immensely valuable set of patents, it coincidentally lines up Google to directly compete with Apple in the mobile world.

Now that Apple has proven that, given the right spark of ingenuity, it's best to produce the phone and the operating system together, it only makes sense that the largest smart phone operating system builder would follow suit.  They'd be dooming themselves to failure if they didn't.  Microsoft made a similar gamble making a huge deal with Nokia (not an acquisition but more of an agreement) to have them produce the hardware that Microsoft hopes will rocket their mobile operating system (or their unified operating system, does anyone think that will really happen?) into a level of decent competition with their old rival Apple.

All of this begs the question: what about everybody else?  What other players are out there, and will the addition of another 800 lb. gorilla into the market allow anyone else to survive without putting on the gorilla suit?  What will happen to Microsoft (who is pretty much the only other smart phone operating system maker)?  What will happen to RIM (who has had the most dismal of quarters followed by "streamlining" [read layoffs])?

Here's what i see: RIM is betting everything on their QNX operating system.  With good reason, it's supposedly revolutionary (I am not an operating system developer so i couldn't tell you whether it is or not, but the experts have said that it is).  However, RIM is dead set on releasing the next version of their BlackBerry OS for their entire line of phones before dumping that as soon as possible for QNX.

If RIM survives that self induced roller coaster, it could emerge as the next gorilla to enter the playing field.  If not, RIM will not have much choice but to show up in Redmond wearing a short skirt and high heals promising incredible experiences for not much money.  At that point Microsoft (who has never really had any success building hardware for their own operating systems, at least not compared to the success that Apple has had) will have the opportunity to gobble up a hardware maker that is already established in the enterprise market. If Microsoft doesn't screw it up (like Cisco did with the Flip), they may emerge as the next suited gorilla in the market, finally able to compete with Apple and Google.

The other players in the smart phone market don't stand much of a chance at this point.  Who in their right mind would try to build a phone and put Google's operating system on it?  Who could really compete with a Google OS/Google hardware phone using a Google OS/[Any] hardware phone?  Is Samsung up to the challenge?  Who knows.

Tuesday, August 2, 2011

Creating detour loops in powerpoint

Often when giving a presentation i use visual aids.  Since there's nothing like powerpoint out there, i've tried to learn as much as i can about it.  One tip i can give is how to create what i call detour loops.  Detour loops allow the presenter to detour onto another topic temporarily then return to the main topic without losing the flow of the presentation.
This technique essentially uses links that the presenter can use to jump to another position within the presentation and jump back.  So, let's say i'm describing the functionality of a certain piece of software.  I'll give an overview with a slide that has some explanatory text on it.  Normally, when i'm done with this slide, i'll switch over to the software itself and show the student how to do what i'm doing by using the actual software (no powerpoint slides needed for that part).  However, sometimes it can be useful to not show the software itself but rather a screenshot of the software (think large groups or buggy software).  In that case, i want to show some powerpoint slides then resume the show.
Well, on the preceding slide that has the explanatory text, i'll put a link to the slide containing the screenshot.  This slide is actually the next slide in sequential order, but i've hidden it so it normally doesn't show up.  That's the first slide of my detour.  All of the slides in the detour are hidden.  That way they don't show up unless i click the link.  The nice thing is that once you navigate to a slide that's hidden, all the slides after that will show up even if they were hidden.

Friday, July 15, 2011

Google+ and how it will change the world (or not)

This post is not much more than a place holder.  I got my G+ account already (gplus.to/sweenig), but i haven't spent enough time to figure out how or if it will change the world.  I promise it will come.

Thursday, July 14, 2011

New Job

Sadly, I'm leaving RIM after 9 months to pursue a consulting job mainly serving CA customers through installation/configuration services, training/knowledge transfer, and advanced consulting related to the CA|NetQoS suite of products.  I'm sad to leave RIM, especially when things are getting really exciting, but I'm also optimistic about my new position at Enterprise Iron.

Monday, July 11, 2011

Using auto refresh in Chrome

I belong to an online community hosted by CA.  They recently overhauled the website and added a chat feature so you can chat with other community members.  While this is great and functions much like the facebook instant message feature, the page is set to timeout (i.e. log out the user) after 15 minutes.  The timer resets whenever i navigate to another page in the community.  However, if i just open the community page and leave for 15 minutes, i'll end up getting logged off and showing offline to the other community members.  When i was at RIM, i built a simple html based page using an inline frame and some javascript to auto refresh the iframe.  This basically refreshed the page every 5 minutes.  This worked and had to be done this way since i could only use IE.

Now that i principally access the community on my own computer, i use chrome and have found this wonderful little add in that will refresh any page for you.  It's called Auto Refresh Plus. I now have a little button i can press to display a simple clean menu.  The menu has various time options; i pick 5:00 and click start.  Now the page automatically refreshes every 5 minutes.  Woohoo!

Monday, June 27, 2011

How to create a ring tone in iTunes

Turns out this feature used to be built into iTunes, but Apple got greedy so they took it out so most people would just buy ring tones.  While this is dumb, it's perfectly legal to create a ring tone for your iPhone using a song you've already purchased or an mp3 you already have in your library.  It uses the 'fair use' clause of copyright law.  Fair use is the same clause that allows you to use your DVR or make a mix tape all while 'copying' copyrighted content.  It's totally legal.

Wednesday, June 22, 2011

Efficient use of wireless bandwidth

Michael Mace recently posted his second article about the impending doom of mobile executives.  The article (and it's sequel) are very good summaries of the dire straights in which mobile execs find themselves.  They are between the signature rock and a hard place, with either decision they make resulting in the probable loss of their career. 

Monday, June 6, 2011

Best Hurricane Tracking Information

Living in the south and being involved in several hurricane clean up projects, i've acquired several useful links that i monitor during hurricane season to make sure i'm up to date on the current status of anything that may be headed our way.  I figured i'd share this information with the world.

There are usually a couple others that i use, i'm still looking for them.