<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-4415427790278061434</atom:id><lastBuildDate>Thu, 28 Jan 2010 21:09:51 +0000</lastBuildDate><title>Fergonian Thinking</title><description></description><link>http://www.mindyferguson.com/fergonianthinking.html</link><managingEditor>noreply@blogger.com (Mindy Ferguson)</managingEditor><generator>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-7042964451254322289</guid><pubDate>Thu, 28 Jan 2010 21:09:00 +0000</pubDate><atom:updated>2010-01-28T13:09:51.036-08:00</atom:updated><title>Problems with Add-ons in Firefox 3.6</title><description>I upgraded my browser to FireFox 3.6 and I have never had more problems with add-ons than I do now. In fact, it took a bit of research for me to figure out why they weren't working and then to ultimately fix them.&lt;br /&gt;&lt;br /&gt;So I downloaded several add-ons. Google Toolbar, FireBug etc.... and nothing would ever ever show up under my Tools Menu in Firefox. &lt;br /&gt;&lt;br /&gt;I ran across this great little tip today that worked:&lt;br /&gt;&lt;br /&gt;For Windowx XP, From the Start Menu, choose Run and type in:&lt;br /&gt;&lt;br /&gt;%APPDATA%\Mozilla\Firefox\Profiles&lt;br /&gt;&lt;br /&gt;It will go to a directory similar to:&lt;br /&gt;C:\Documents and Settings\mindy\Application Data\Mozilla\Firefox\Profiles\b6zwdmym.default&lt;br /&gt;&lt;br /&gt;There you will find 4 files that start with the name extensions.&lt;br /&gt;&lt;br /&gt;Now close completely out of Firefox. Make sure all windows are closed and the application isn't running anywhere on your machine. Go to the directory mentioned above and change extensions.ini, extensions.cache and extensions.rdf to something like old_extensions.ini, old_extensions.cache and old_extensions.rdf&lt;br /&gt;&lt;br /&gt;Re-start Firefox and you will likely find many of the add-ons you thought you already installed already there. If you received a -203 error when trying to download add-ons, you'll need to re-install those add-ons but this time they will work.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-7042964451254322289?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2010/01/problems-with-add-ons-in-firefox-36.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-7572188314942002669</guid><pubDate>Fri, 08 Jan 2010 01:05:00 +0000</pubDate><atom:updated>2010-01-07T17:05:09.847-08:00</atom:updated><title>Why Installing Eclipse for Android Development is Painful</title><description>So today, my goal was to install eclipse and the Android plug-in. It seemed like a reasonable goal. I set aside a chunk of time this afternoon to do it. I was reasonably focused. All of the planets seemed to be aligned. &lt;br /&gt;&lt;br /&gt;I am using Ubuntu 9.10 (pretty cutting edge huh?) ;)&lt;br /&gt;Getting eclipse installed was a piece of cake. I used the Ubuntu Software center and it installed like a dream. Now comes the bad part....the Android plug-ins.&lt;br /&gt;&lt;br /&gt;I followed these instructions to install the Eclipse Android Developer Plugins using Eclipse 3.5.1 and the default Ubuntu Karmic install. However I was presented with the following error message when clicking "Next":&lt;br /&gt;&lt;br /&gt;Cannot complete the install because one or more required items could not be found.&lt;br /&gt;Software being installed: Android Development Tools 0.9.5.v200911191123-20404 (com.android.ide.eclipse.adt.feature.group 0.9.5.v200911191123-20404)&lt;br /&gt;Missing requirement: Android Development Tools 0.9.5.v200911191123-20404 (com.android.ide.eclipse.adt.feature.group 0.9.5.v200911191123-20404) requires 'org.eclipse.wst.xml.ui 0.0.0' but it could not be found&lt;br /&gt;&lt;br /&gt;For some reason ubuntu doesn't include the standard update repository for Eclipse by default. To fix this:&lt;br /&gt;&lt;br /&gt;    * Go to "Help/Install New Software..."&lt;br /&gt;    * Add http://download.eclipse.org/releases/galileo/ to the update sites list (strange it's not installed by default on ubuntu)&lt;br /&gt;    * From there, install WST (use the filter box to find the package)&lt;br /&gt;    * Restart eclipse&lt;br /&gt;    * Go back to "Help/Install New Software..." and install the Android ADT as explained on the android website.&lt;br /&gt;&lt;br /&gt;Well this is going to fail so before you do the above step, do this:&lt;br /&gt;&lt;br /&gt;Go to System -&gt; Administration -&gt; Synaptic Package Manager and search&lt;br /&gt;for "eclipse"&lt;br /&gt;&lt;br /&gt;Then mark "eclipse" for install. This package provides the whole&lt;br /&gt;Eclipse SDK, along with the Java Development Tools (JDT) and the&lt;br /&gt;Plugin Development Environment (PDE).&lt;br /&gt;&lt;br /&gt;After installed, would be helpful to install Google Plugin tools&lt;br /&gt;(http://dl.google.com/eclipse/plugin/3.5) -- see the steps above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-7572188314942002669?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2010/01/why-installing-eclipse-for-android.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-7358495747560637222</guid><pubDate>Tue, 15 Sep 2009 18:25:00 +0000</pubDate><atom:updated>2009-09-15T12:19:14.931-07:00</atom:updated><title>XML Schemas</title><description>So today I spent a lot of time explaining to people how to validate XML and how to actually validate an XSD. I am always surprised at how many technical folks really don't understand how to create a proper schema (thankfully my team did very well on their task)... for the rest of us who can use the refresher here we go:&lt;br /&gt;&lt;br /&gt;An XSD is a XML Schema Definition&lt;br /&gt;&lt;br /&gt;What Is a Schema?&lt;br /&gt;&lt;br /&gt;A schema is a "Structure", and the actual document or data that is represented through the schema is called "Document Instance". If you have a background in database design, you can correlate a schema to a table structure and a document instance to a record in a table. For those who are more familiar with object-oriented technology, you can map a schema to a class definition and map a document instance to an object instance.&lt;br /&gt;&lt;br /&gt;XSD provides the syntax and defines a way in which elements and attributes can be represented in a XML document. It also advocates that the given XML document should be of a specific format and specific data type. &lt;br /&gt;&lt;br /&gt;    *  XSD Schema is an XML document so there is no real need to learn any new syntax, unlike DTDs.&lt;br /&gt;&lt;br /&gt;    * XSD Schema supports Inheritance, where one schema can inherit from another schema. This is a great feature because it provides the opportunity for re-usability.&lt;br /&gt;&lt;br /&gt;    * XSD schema provides the ability to define own data type from the existing data type.&lt;br /&gt;&lt;br /&gt;    * XSD schema provides the ability to specify data types for both elements and attributes. &lt;br /&gt;&lt;br /&gt;Let's look at an example -- Employee Information&lt;br /&gt;&lt;br /&gt;SSN&lt;br /&gt;Name&lt;br /&gt;DateOfBirth&lt;br /&gt;EmployeeType&lt;br /&gt;Salary&lt;br /&gt;&lt;br /&gt;Here is the actual XML document for the above information.&lt;br /&gt;&lt;br /&gt;  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt; &lt;br /&gt;- &amp;lt;Employees xmlns=&amp;quot;http://www.abccorp.com&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;xsi:schemaLocation=&amp;quot;http://www.abccorp.com/employee.xsd&amp;quot;&amp;gt;&lt;br /&gt;- &amp;lt;Employee&amp;gt;&lt;br /&gt;  &amp;lt;SSN&amp;gt;737333333&amp;lt;/SSN&amp;gt; &lt;br /&gt;  &amp;lt;Name&amp;gt;ED HARRIS&amp;lt;/Name&amp;gt; &lt;br /&gt;  &amp;lt;DateOfBirth&amp;gt;1960-01-01&amp;lt;/DateOfBirth&amp;gt; &lt;br /&gt;  &amp;lt;EmployeeType&amp;gt;FULLTIME&amp;lt;/EmployeeType&amp;gt; &lt;br /&gt;  &amp;lt;Salary&amp;gt;4000&amp;lt;/Salary&amp;gt; &lt;br /&gt;  &amp;lt;/Employee&amp;gt;&lt;br /&gt;  &amp;lt;/Employees&amp;gt;&lt;br /&gt;&lt;br /&gt;Here is the XML Schema for the above Employee Information&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;              &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;SSN=&amp;quot;xsd:string&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;xsd:element name=&amp;quot;DateOfBirth&amp;quot; type=&amp;quot;xsd:date&amp;quot;/&amp;gt;&lt;br /&gt;           &amp;lt;xsd:element name=&amp;quot;EmployeeType&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;           &amp;lt;xsd:element name=&amp;quot;Salary&amp;quot; type=&amp;quot;xsd:long&amp;quot;/&amp;gt;&lt;br /&gt;             &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;          &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;        &amp;lt;/xsd:element&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;Let's examine each line to understand the XSD Schema. &lt;br /&gt;&lt;br /&gt;For an XSD Schema, the root element is &lt;schema&gt;. The XSD namespace declaration is provided with the &lt;schema &gt; to tell the XML parser that it is an XSD Schema.&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;The namespace that references an XSD Schema is the W3C recommended version of XSD. The "xsd:" prefix is used to make sure we are dealing with XSD Schema, but any prefix can be given.&lt;br /&gt;&lt;br /&gt;"Element" is the important part of the schema because it specifies the kind of information. The following element declaration in our example is going to deal with Employee information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;An "element" declaration in XSD should have the following attributes.&lt;br /&gt;&lt;br /&gt;name: This attribute specifies the name of an element. "Employee" in our example.&lt;br /&gt;&lt;br /&gt;type: This attribute refers to Simple Type or Complex Type, which will be explained very soon in this article.&lt;br /&gt;&lt;br /&gt;minoccurs: This attribute will specify how many elements at a Minimum will be allowed. The default is '0", which means it is an optional element.&lt;br /&gt;&lt;br /&gt;Assume that minoccurs attribute carries a value of "1". This would mean the "Employee" element should be specified at least once in the XML document.&lt;br /&gt;&lt;br /&gt;maxoccurs: This attribute will specify how many elements at a Maximum will be allowed in an XML document. Assume that maxoccurs attribute carries a value of "2". This would mean the "Employee" element should NOT be specified more than twice.&lt;br /&gt;&lt;br /&gt;To summarize, let's say the minoccurs is "1" and maxoccurs is "2" for the "Employee" element. This means there should be atleast one instance of the "Employee" element in the XML document, but the total number of instances of "Employee" element shouldn't exceed two.&lt;br /&gt;&lt;br /&gt;If you tried passing three instances of "Employee" element in the XML document, the XML parser will throw an error.&lt;br /&gt;&lt;br /&gt;To allow the "Employee" element to be specified an unlimited number of times in an XML document, specify the "unbounded" value in the maxoccurs attribute.&lt;br /&gt;&lt;br /&gt;The following example states that the "Employee" element can occur an unlimited number of times in an XML document.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;Complex Type&lt;br /&gt;&lt;br /&gt;An XSD Schema element can be of the following types:&lt;br /&gt;&lt;br /&gt;    * Simple Type&lt;br /&gt;    * Complex Type &lt;br /&gt;&lt;br /&gt;In an XSD Schema, if an element contains one or more child elements or if an element contains attributes, then the element type should be "Complex Type"&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;        &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;          &amp;lt;xsd:element name=&amp;quot;SSN=&amp;quot;xsd:string&amp;gt;&lt;br /&gt;           &amp;lt;xsd:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;xsd:element name=&amp;quot;DateOfBirth&amp;quot; type=&amp;quot;xsd:date&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;EmployeeType&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;Salary&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;          &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;&lt;br /&gt;The Employee element has SSN, Name, Date of Birth, Salary and Employee type, which are specified as child elements. As a result Employee Element must be defined as a Complex Type because there are one or more elements under Employee element.&lt;br /&gt;&lt;br /&gt;xsd:sequence&lt;br /&gt;&lt;br /&gt;The &lt;xsd:sequence&gt; specifies the order in which the elements need to appear in the XML document. This means the elements SSN, Name, DateOfBirth, EmployeeType and Salary should appear in the same order in the XML document. If the order is changed, then the XML parser will throw an error.&lt;br /&gt;&lt;br /&gt;Simple Type&lt;br /&gt;&lt;br /&gt;In an XSD Schema an element should be referred to as a Simple Type when you create a User Defined type from the given base data type.&lt;br /&gt;&lt;br /&gt;Before going further into Simple Types, I would like to mention that XSD provides a wide variety of base data types that can be used in a schema. A complete description of the data types is beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;I would suggest reading at the following Web sites to learn more about data types.&lt;br /&gt;&lt;br /&gt;    * http://www.w3.org&lt;br /&gt;    * http://msdn.microsoft.com search for XSDs. &lt;br /&gt;&lt;br /&gt;Some of the base data types, which we used in the "Employee" element examples, are:&lt;br /&gt;&lt;br /&gt;    * xsd:string&lt;br /&gt;    * xsd:int&lt;br /&gt;    * xsd:date &lt;br /&gt;&lt;br /&gt;Knowing that Simple Type Elements can specify User-defined data types in XML Schema, the real question is how do we know where to use a specific Simple Type?&lt;br /&gt;&lt;br /&gt;Let's take a look at the schema again.&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;     &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;         &amp;lt;xsd:element name=&amp;quot;SSN=&amp;quot;xsd:string&amp;gt;&lt;br /&gt;         &amp;lt;xsd:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;DateOfBirth&amp;quot; type=&amp;quot;xsd:date&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;xsd:element name=&amp;quot;EmployeeType&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;xsd:element name=&amp;quot;Salary&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;&lt;br /&gt;Assume the Payroll processing company wants the social security number of the employees formatted as "123-11-1233".&lt;br /&gt;&lt;br /&gt;For this we will create a new data type called "ssnumber".&lt;br /&gt;&lt;br /&gt;The following is the code to accomplish the above requirement.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:simpleType name=&amp;quot;ssnumber&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;     &amp;lt;xsd:length value=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;     &amp;lt;xsd:pattern value=&amp;quot;\d{3}\-\d{2}\-\d{4}&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt; &amp;lt;/xsd:simpleType&amp;gt;&lt;br /&gt;&lt;br /&gt;To start with, we should provide the name of the Simple Type, which is "ssnumber".&lt;br /&gt;&lt;br /&gt;The restriction base specifies what is the base data type in which we derive the User Defined Data type, which is the "string" data type in the above example.&lt;br /&gt;&lt;br /&gt;To restrict the social security number to 11 characters, we require the length value to be "11".&lt;br /&gt;&lt;br /&gt;To ensure the social security number appears in the "123-11-1233" format, the pattern is specified in the following format.&lt;br /&gt;&lt;br /&gt;      &amp;lt;xsd:pattern value=&amp;quot;\d{3}\-\d{2}\-\d{4}&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;To explain the pattern,&lt;br /&gt;&lt;br /&gt;\d{3} specifies that there should be three characters in the start. Followed by two characters after the first "-" and finally followed by four characters after the second "-".&lt;br /&gt;&lt;br /&gt;Incorporating Simple Types into Schema&lt;br /&gt;&lt;br /&gt;Now that we know what Simple Type means, let us learn how to effectively incorporate Simple Type into an XSD Schema.&lt;br /&gt;&lt;br /&gt;First of all, Simple Types can be global or local.&lt;br /&gt;&lt;br /&gt;Let's first look at global usage of Simple Type Element "ssnumber".&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;      &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;              &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;SSN= type =&amp;quot;xsd:ssnumber&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;xsd:element name=&amp;quot;DateOfBirth&amp;quot; type=&amp;quot;xsd:date&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;EmployeeType&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;Salary&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;             &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;    &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;     &amp;lt;/xsd:element&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;xsd:simpleType name=&amp;quot;ssnumber&amp;quot;&amp;gt;&lt;br /&gt;     &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;xsd:length value=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;       &amp;lt;xsd:pattern value=&amp;quot;\d{3}\-\d{2}\-\d{4}&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:simpleType&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;In the above example, the child element name "SSN" of parent element "Employee" is defined as user defined data type "ssnumber".&lt;br /&gt;&lt;br /&gt;The Simple Type element "ssnumber" is declared outside the Employee element, which means if we have to define another element, say for ex. "Employer" inside the &lt;xsd:schema&gt;, then the "Employer" element can still make use of the "ssnumber" data type if it's needed.&lt;br /&gt;&lt;br /&gt;Let's examine a different case where the Simple Type element "ssnumber" will be specific to Employee, and it is not going to be needed elsewhere at all. Then the following schema structure accomplishes this.&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;              &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;SSN=&amp;quot;xsd:string&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;xsd:simpleType&amp;gt;&lt;br /&gt;      &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;xsd:length value=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;xsd:pattern value=&amp;quot;\d{3}\-\d{2}\-\d{4}&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt;   &amp;lt;/xsd:simpleType&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;xsd:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;xsd:element name=&amp;quot;DateOfBirth&amp;quot; type=&amp;quot;xsd:date&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;EmployeeType&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;Salary&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;          &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;        &amp;lt;/xsd:element&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;In the above example, all restrictions such as max length, pattern and base data type are declared inline, and it immediately follows the SSN element.&lt;br /&gt;&lt;br /&gt;Let's validate further by adding a "FullTime" or "PartTime" Employee Type element.&lt;br /&gt;&lt;br /&gt;To provide the validation, we should create a Simple Element Type called "emptype".&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;xsd:simpleType name=&amp;quot;emptype&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;      &amp;lt;xsd:enumeration value=&amp;quot;fulltime&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:enumeration value=&amp;quot;parttime&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:simpleType&amp;gt; &lt;br /&gt;&lt;br /&gt;The above schema will successfully create a Simple Type element with base type as "string" data type. The enumeration values are specified in enumeration attributes, which will basically restrict within two values. The enumeration attributes in an XSD Schema provides the ability to define an element in such a way that it should fall between the values given in the enumeration list.&lt;br /&gt;&lt;br /&gt;Let us incorporate emptype Simple Type element in our main Employee schema.&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;              &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;SSN=&amp;quot;xsd:ssnumber&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;xsd:element name=&amp;quot;DateOfBirth&amp;quot; type=&amp;quot;xsd:date&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;EmployeeType&amp;quot; type=&amp;quot;xsd:emptype&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;Salary&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;             &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;          &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;        &amp;lt;/xsd:element&amp;gt;&lt;br /&gt; &amp;lt;xsd:simpleType name=&amp;quot;ssnumber&amp;quot;&amp;gt;&lt;br /&gt;     &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;xsd:length value=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;       &amp;lt;xsd:pattern value=&amp;quot;\d{3}\-\d{2}\-\d{4}&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:simpleType&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;xsd:simpleType name=&amp;quot;emptype&amp;quot;&amp;gt;&lt;br /&gt;     &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;       &amp;lt;xsd:enumeration value=&amp;quot;fulltime&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;xsd:enumeration value=&amp;quot;parttime&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt;   &amp;lt;/xsd:simpleType&amp;gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;In the above example, the child element name "EmployeeType" of parent element "Employee" is defined as user defined data type "emptype".&lt;br /&gt;&lt;br /&gt;The Simple Type element "emptype" is declared outside the Employee element which is global to elements that fall under &lt;xsd:schema&gt;&lt;br /&gt;&lt;br /&gt;So we have defined two simple element types: one is emptype, which basically restricts the value within two enumerated values "fulltime" or "parttime". And another is "ssnumber" which restricts the length of the value to 11 and it should be of "111-11-1111" pattern.&lt;br /&gt;&lt;br /&gt;I highlighted the words "enumerated" "length" and "pattern" to emphasize that those words are referred to as Facets.&lt;br /&gt;&lt;br /&gt;In XSD Schema, facets provide the flexibility to add restriction for a given base data type. In our examples above, the base data type specified is "string".&lt;br /&gt;&lt;br /&gt;Similarly, facets are available for other data types like "int". A few facets available for "int" data type are Enumerated, Minexclusive, Mininclusive, and Pattern.&lt;br /&gt;&lt;br /&gt;Let's consider a new requirement. The payroll company wants to process tax information, so they want the employee information which is listed above plus the employee's state and zip code information. All the information should be under the separate header "EmployeeTax".&lt;br /&gt;&lt;br /&gt;The above requirement compels us to restructure the schema.&lt;br /&gt;&lt;br /&gt;First we will break down the requirement to make it simple.&lt;br /&gt;&lt;br /&gt;a. Payroll Company wants all the information listed under "Employee" element.&lt;br /&gt;b. Payroll Company wants state and zip of the given Employee.&lt;br /&gt;c. Payroll company wants (a) and (b) in a separate header "EmployeeTax"&lt;br /&gt;&lt;br /&gt;Fortunately XSD Schema supports object-oriented principles like Inheritance hierarchy. This principle comes handy in our requirement.&lt;br /&gt;&lt;br /&gt;The following structure can quite easily accomplish the above requirement.&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:complexType name=&amp;quot;EmployeeTax&amp;quot;&lt;br /&gt;      minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;            maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;xsd:complexContent&amp;gt;&lt;br /&gt;      &amp;lt;xsd:extension base=&amp;quot;xsd:Employee&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;          &amp;lt;xsd:element name=&amp;quot;state&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;          &amp;lt;xsd:element name=&amp;quot;zipcode&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;        &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;/xsd:extension&amp;gt;&lt;br /&gt;    &amp;lt;/xsd:complexContent&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;In the above code, we started with the name of the Complex Type, which is "EmployeeTax".&lt;br /&gt;&lt;br /&gt;The following line is very important. It tells the XML Parser that some portion of EmployeeTax content is getting derived from another Complex Type.&lt;br /&gt;&lt;br /&gt;    &amp;lt;xsd:complexContent&amp;gt;&lt;br /&gt;&lt;br /&gt;To refresh our memory, in simple element type definitions, we used restriction base, which mapped to base data types. In the same way, we need to specify the restriction base for the complex content. The restriction base for complex content should logically be another Complex Type. In our example it is "Employee".&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:extension base=&amp;quot;xsd:Employee&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;Once the extension base has been defined, all the elements of the "Employee" element will automatically inherit to EmployeeTax Element.&lt;br /&gt;&lt;br /&gt;As part of the business requirement, the state and zip code elements are specified which completes the total structure for EmployeeTax Element.&lt;br /&gt;&lt;br /&gt;Referencing External Schema&lt;br /&gt;&lt;br /&gt;This feature is very useful in situations where one schema has functionality that another schema wants to utilize.&lt;br /&gt;&lt;br /&gt;Take a case where the payroll company for ABC Corp. needs some information about the Employers, such as EmployerID and PrimaryContact in a separate XML document.&lt;br /&gt;&lt;br /&gt;Assume EmployerID format is the same as Employee SSN format. Since we have already defined the validation for Employee SSN, there exists a valid case for using the Employee schema.&lt;br /&gt;&lt;br /&gt;The first step in using different schema is to "include" the schema.&lt;br /&gt;&lt;br /&gt;To include the schema, make sure the target namespace is the same as your current working location.&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt; targetNamespace=&amp;quot;http://www.abccorp.com&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsd:include schemaLocation=&amp;quot;employee.xsd&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employer&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;              &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                      &amp;lt;xsd:element ref =&amp;quot;ssnumber&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;PrimaryContact&amp;quot; &lt;br /&gt;type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;          &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;        &amp;lt;/xsd:element&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;Please note the include statement, which references the schema location. Make sure the employee.xsd file exists in the same target namespace location.&lt;br /&gt;&lt;br /&gt;Once included, the "Employer" element references the ssnumber global element in the same manner as it had been declared within the document itself. Then an additional primary contact element, which is specific to "Employer" element, is defined after the ssnumber element reference.&lt;br /&gt;&lt;br /&gt;Annotations&lt;br /&gt;&lt;br /&gt;Comments have always been considered a good coding convention. XSD Schema provides a commenting feature through the &lt;Annotation&gt; element.&lt;br /&gt;&lt;br /&gt;The &lt;Annotation&gt; element has 2 child elements.&lt;br /&gt;&lt;br /&gt;    * &lt;documentation&gt;&lt;br /&gt;    * &lt;appInfo&gt; &lt;br /&gt;&lt;br /&gt;&lt;documentation&gt; element provides help on the source code in terms of its purpose and functionality.&lt;br /&gt;&lt;br /&gt;&lt;appinfo&gt; element provides help to the end users about the application.&lt;br /&gt;&lt;br /&gt;The following schema describes the usage of the Annotation element.&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;xsd:element name=&amp;quot;Employee&amp;quot;&lt;br /&gt;                     minOccurs=&amp;quot;0&amp;quot; &lt;br /&gt;                     maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;              &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;                 &amp;lt;xsd:element name=&amp;quot;SSN=&amp;quot;xsd:ssnumber&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;xsd:annotation&amp;gt;&lt;br /&gt;          &amp;lt;xsd:documentation&amp;gt;&lt;br /&gt;   The SSN number identifies each employee of ABC CORP&lt;br /&gt;                    &amp;lt;/xsd:documentation&amp;gt;&lt;br /&gt;           &amp;lt;xsd:appInfo&amp;gt;&lt;br /&gt;   Employee Payroll Info&lt;br /&gt;                    &amp;lt;/xsd:appInfo&amp;gt;&lt;br /&gt;            &amp;lt;/xsd:annotation&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;xsd:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;xsd:element name=&amp;quot;DateOfBirth&amp;quot; type=&amp;quot;xsd:date&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;EmployeeType&amp;quot; type=&amp;quot;xsd:emptype&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;xsd:element name=&amp;quot;Salary&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;             &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;          &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;        &amp;lt;/xsd:element&amp;gt;&lt;br /&gt; &amp;lt;xsd:simpleType name=&amp;quot;ssnumber&amp;quot;&amp;gt;&lt;br /&gt;     &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;xsd:length value=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;       &amp;lt;xsd:pattern value=&amp;quot;\d{3}\-\d{2}\-\d{4}&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:simpleType&amp;gt;&lt;br /&gt; &amp;lt;xsd:simpleType name=&amp;quot;emptype&amp;quot;&amp;gt;&lt;br /&gt;     &amp;lt;xsd:restriction base=&amp;quot;xsd:string&amp;quot;&amp;gt;&lt;br /&gt;       &amp;lt;xsd:enumeration value=&amp;quot;fulltime&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;xsd:enumeration value=&amp;quot;parttime&amp;quot;/&amp;gt;&lt;br /&gt;     &amp;lt;/xsd:restriction&amp;gt;&lt;br /&gt;   &amp;lt;/xsd:simpleType&amp;gt;  &lt;br /&gt;  &amp;lt;/xsd:schema&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-7358495747560637222?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2009/09/xml-schemas.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-1800120868302811509</guid><pubDate>Sat, 07 Feb 2009 06:51:00 +0000</pubDate><atom:updated>2009-02-06T22:51:01.420-08:00</atom:updated><title>The Lingo of Our Lives</title><description>I work at a large .com in Los Angeles and while we stay current with technology and we watch upcoming trends, there will always be words that we need to use to remain part of a thriving web economy:&lt;br /&gt;&lt;br /&gt;Advermation: the cross between advertising and information. It's a form of online advertising portrayed not so much as a marketing message as it is information to the viewer.&lt;br /&gt;&lt;br /&gt;Angry Garden Salad: a slang term for a poorly designed and incorrectly coded website interface. We've all found a website that when we click on a link, it takes us to something we totally didn't expect.&lt;br /&gt;&lt;br /&gt;Cornea Gumbo: a visually distracting and over-designed website with too many graphics, images and animation.&lt;br /&gt;&lt;br /&gt;Infosnacking: the act of jumping online at various times throughout the day for brief intervals.&lt;br /&gt;&lt;br /&gt;Interstitial: a form of advertising that appears as a pop-up or an intermediate online page that the viewer sees when they are moving from page to page.&lt;br /&gt;&lt;br /&gt;Mash-up: a web-based application that combines two or more services or tools from diverse websites to create a unique, multilevel tool.&lt;br /&gt;&lt;br /&gt;PeelAway: a pop-up ad that appears in the top right corner of a website. It looks like a page on a book that you can peel away to reveal the ad beneath.&lt;br /&gt;&lt;br /&gt;Plugoo: a widget that's connected to your IM provider; allowing you to chat in real time with your site visitors.&lt;br /&gt;&lt;br /&gt;Rasterbator: a web designer who suffers from CDM, or compulsive digital manipulation, in additional to obsessively tweaking designs in PhotoShop.&lt;br /&gt;&lt;br /&gt;TweetBeep: a free tracking and alerting service that monitors conversations monitoring you, your company's name and more. It sends you emails when those mentions occur.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-1800120868302811509?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2009/02/lingo-of-our-lives.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-346208782449653898</guid><pubDate>Fri, 06 Feb 2009 06:45:00 +0000</pubDate><atom:updated>2009-02-04T12:50:34.543-08:00</atom:updated><title>Words all of us in the Internet Age should know</title><description>Each year will always bring a new set of business phrases and 2009 is no different. Among the list of phrases we all should know:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Google slap:&lt;/strong&gt; This is when your search engine ranking takes an unexpected nose dive. Often, this is a result of a search engine changing its ranking methodology.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cockroach theory:&lt;/strong&gt; When you see one cockroach, you know there are many more, they just aren't visible. This phrase refers to bad financial news. It means there is more bad news where that came from. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cautious pause:&lt;/strong&gt; This is when businesses (and people) stop to ponder every purchase instead of buying on impulse or blindly approving purchases under a certain amount and only stopping to review large purchases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-346208782449653898?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2009/02/words-all-of-us-in-internet-age-should.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-3807775700289189139</guid><pubDate>Wed, 04 Feb 2009 20:44:00 +0000</pubDate><atom:updated>2009-02-04T12:44:52.167-08:00</atom:updated><title>Fear is not a growth strategy. Period.</title><description>This is the headline from an editor's note in the February 2009 edition of Entrepreneur Magazine.&lt;br /&gt;&lt;br /&gt;In this editor's note, Amy C. Cosper (Editor-in-Chief) says "Fear makes us irrational --  like thinking cutting and growing are the same thing. Cutting costs does not equal growing sales. Never has. Never will."&lt;br /&gt;&lt;br /&gt;Those words really struck me as I read them. I couldn't agree more and it is refreshing to see people in influencial positions write so eloquently the thoughts that have been on my mind for the past months. &lt;br /&gt;&lt;br /&gt;I also read in a magazine last year about the remifications of making multiple staffing cuts in an organzation that is downsizing as opposed to making one large cut. The mental ramifications and the loss of productivity from existing staff are tremendous. I worked for an organization that went thru so many staff reductions that by the time I left, I actually walked in the door each day wondering who would be let go that day. Would it be me? While I felt secure in my strengths, abilities and what I could deliver to the organization, the multiple cuts were taking their toll and I found myself no longer wanting to give my all to an organization that couldn't get a hold of their business and make firm decisions they could stand behind. &lt;br /&gt;&lt;br /&gt;We all know the economy hasn't hit the bottom yet. It is frustrating to be an employee at a business where management is so short-sighted that they are unable to see past tomorrow. &lt;br /&gt;&lt;br /&gt;While I think all of use have to head into each work-week with a cautious eye on the market and other economic factors, we also need to be motivated and we need to be productive. Once you stop producing for a business, you are giving them every reason to let you go. Make your impact...and make it known.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-3807775700289189139?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2009/02/fear-is-not-growth-strategy-period.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-8833990680073979201</guid><pubDate>Sun, 25 Jan 2009 18:21:00 +0000</pubDate><atom:updated>2009-01-25T10:25:05.152-08:00</atom:updated><title>Estimation</title><description>I am often amazed at how difficult it is for people to estimate how long it will take fo them to complete a task. For me, this has never been such a difficult thing but I think for programmers across the board, this is an area we struggle with. I seem to be the exception, not the norm.&lt;br /&gt;&lt;br /&gt;In any case, on of the most important parts of successful project management is the estimation process and we are more focused on this task where I currently work.&lt;br /&gt;&lt;br /&gt;We are working to take large projects, break them down into small blocks and then break them down again into tasks that make-up the blocks. We estimate at the smallest level we can get to in order to get a full picture and a better estimate of the larger functional blocks.&lt;br /&gt;&lt;br /&gt;We are doing better and each project makes us more successful at this as a group. If you or your group is struggling to get accurate estimations, drop me a line. I'd love to talk with you about how to get your estimations more accurate and how to get your team motiviated and focused on providing more accurate estimations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-8833990680073979201?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2009/01/estimation.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-1999664735388009849</guid><pubDate>Fri, 07 Nov 2008 21:24:00 +0000</pubDate><atom:updated>2008-11-07T13:30:57.370-08:00</atom:updated><title>Trying to Install SQL Server 2008</title><description>Thank you Microsoft.....&lt;br /&gt; &lt;br /&gt;Today's goal was to install SQL Server 2008, and then work on some consulting projects.  Well, 4 hours later.......I can now begin.&lt;br /&gt;&lt;br /&gt;I am running SQL Server 2005 Express on my machine and I wanted to leave that instance intact and install a new instance of SQL Server 2008.&lt;br /&gt;&lt;br /&gt;At first pass, the installation squaked at me by telling my I needed to install Visual Studio 2008 SP1. OK...done.&lt;br /&gt;&lt;br /&gt;During the next attempt of the "System Configuration Check" that takes place after you select everything that you would like to install, but before the files actually get installed, I received the following message, "The SQL Server 2005 Express Tools are installed.  To continue, remove the SQL Server 2005 Express Tools." &lt;br /&gt;&lt;br /&gt;Hmmmm. I didn't have the SQL Server 2005 Express Tools installed.  The tools aren't in my Programs list, in the Start menu, or on my C: drive at all.  How am I to uninstall something that isn't installed? &lt;br /&gt;&lt;br /&gt;After searching the Internet, I found this helpful advice.....&lt;br /&gt;&lt;br /&gt;Go into the Register and rename the following key&lt;br /&gt;&lt;br /&gt;HKLM\Software\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM&lt;br /&gt;&lt;br /&gt;Note: The affected 64-bit version key is:&lt;br /&gt;HKLM\Software\Wow6432Node\Microsoft\...&lt;br /&gt;   ...\Microsoft SQL Server\90\Tools\ShellSEM&lt;br /&gt;&lt;br /&gt;I renamed my key to ShellSEM.old and the "System Configuration Check" ran smoothly from there. &lt;br /&gt;&lt;br /&gt;I've read a lot in blogs about this being caused by Red Hat's SQL Prompt3 but I don't have SQL Prompt installed on this machine so try this trick (at your own risk of course) even if you aren't using Red Hat's SQL Prompt3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-1999664735388009849?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2008/11/trying-to-install-sql-server-2008.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-1502259845499115642</guid><pubDate>Wed, 05 Nov 2008 20:15:00 +0000</pubDate><atom:updated>2008-11-05T12:21:11.892-08:00</atom:updated><title>Fixing MySQL Server 5.0.51a Installation on Vista</title><description>There is nothing worse than trying to install something and it blows up. Well, yes, having to HACK it to get it to work is far worse.....but you have to do it to get MySQL Server 5.0.51a to install on a 32-bit version of Vista (I hear it is a problem on 64-bit Vista also).&lt;br /&gt;&lt;br /&gt;To install MySQL Server 5.0.51a in Vista &lt;br /&gt;1. Disable the UAC in Windows Control Panel-&gt;User Accounts &lt;br /&gt;2. Use mysql-essential-5.0.51a-win32.msi &lt;br /&gt;3. In the final step uncheck "Configure MySQL Server now" &lt;br /&gt;4. Download and run Resource Hacker &lt;a href="http://www.angusj.com/resourcehacker/"&gt;http://www.angusj.com/resourcehacker/&lt;/a&gt; &lt;br /&gt;5. Open ...\MySQL Server 5.0\bin\MySQLInstanceConfig.exe with Resource Hacker &lt;br /&gt;6. Navigate to 24\1\1033 &lt;br /&gt;7. Change &lt;br /&gt;&lt;requestedExecutionLevel level="asAdministrator" uiAccess="false"&gt; &lt;br /&gt;to &lt;br /&gt;&lt;requestedExecutionLevel level="requireAdministrator" uiAccess="false"&gt; &lt;br /&gt;8. Press "Compile script" &lt;br /&gt;9. Exit Resource Hacker and save the result (overwrite the initial MySQLInstanceConfig.exe) &lt;br /&gt;10. Now MySQLInstanceConfig.exe should start normally. &lt;br /&gt;11. Configure the server. &lt;br /&gt;12. Sometimes the server doesn't start: &lt;br /&gt;a) Check Windows Firewall settings (3306/TCP) &lt;br /&gt;b) Try changing the compability mode for the file ...\MySQL Server 5.0\bin\mysqld-nt.exe to Windows XP-SP2. &lt;br /&gt;13. That's all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-1502259845499115642?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2008/11/fixing-mysql-server-5051a-installation.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-5132458187654896433</guid><pubDate>Sun, 26 Oct 2008 21:53:00 +0000</pubDate><atom:updated>2008-10-26T15:01:45.312-07:00</atom:updated><title>White Paper Progress</title><description>For the past 16 years I have done the same daily exercise. No, not running on a treadmill :-) -- anyone who really knows me knows that isn't an exercise I would choose. Instead, I take 30 minutes out of each day to sit with nothing more than a blank piece of white paper and a pencil. &lt;br /&gt;&lt;br /&gt;I usually do this exercise outside (at least I have since moving to California). I wouldn't recommend this in the dead of winter on the east coast. Whatever the climate around you is, find a place where it is quiet. No TV, no radio, no noise or distractions. Sit quietly with your blank paper and pencil and wait for the ideas, thoughts, random musings to enter your mind...and write them down. &lt;br /&gt;&lt;br /&gt;I recommend not using lined paper as it causes the brain to think in a more linear fashion than what this exercise is meant for. Plain, white copy paper from your printer will work perfectly. &lt;br /&gt;&lt;br /&gt;Write down any and all things that enter your mind. Sometimes, I wrote down a grocery list, things I haven't done yet but should have done during the day, things that are on my mind for tomorrow or days to come.&lt;br /&gt;&lt;br /&gt;By writing down these ideas, these random thoughts, I jog my mind into a vetting emotion. I free myself mentally from all of the cobwebs and at the end of my 30 minute session, I feel free. &lt;br /&gt;&lt;br /&gt;I have spend countless hours in my life doing this. At times, I have very little on the paper and there are days when I have covered the front and back of the paper and can barely find room for yet another idea, concept or mark of pencil lead. Its at those times when I realize how valuable this lesson really is. &lt;br /&gt;&lt;br /&gt;Its like a blueprint of my mind. I can designed great software architectures by using this method. I have cut out sleeping pills because I have freed my mind from the distractions and I can rest peacefully at night.&lt;br /&gt;&lt;br /&gt;I always recommend to people that they try this exercise. Don't do it at work. There is too much going on to attempt this in such a tumultuous place. &lt;br /&gt;&lt;br /&gt;Find your 30 minutes of inner peace each day to try this exercise and I guarantee you will get back more than 30 minutes of peace in each day to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-5132458187654896433?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2008/10/white-paper-progress.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-8263227805116807007</guid><pubDate>Tue, 07 Oct 2008 01:22:00 +0000</pubDate><atom:updated>2008-10-06T18:26:08.207-07:00</atom:updated><title>EFCS</title><description>I have worked in a couple companies that believe in an EFCS approach. Employees First, Customers Second. I'm not sure I really agree with that. I think in this day and age where people are so focused on themselves and what they can get from a job, they fail to realize that employment is a two-way street. You get what you give. &lt;br /&gt;&lt;br /&gt;Don't get me wrong....I believe in taking care of your employees and staff but I also believe that by treating people right (not necessarily putting them first), you can foster a Customer First approach (notice I didn't say Employees Second). &lt;br /&gt;&lt;br /&gt;Urgency and Immediacy are both things that seem as if they can't be taught. I with the world worked at the speed in which I felt it should. Our customers would be better off and in my humble mind, so would our employees. &lt;br /&gt;&lt;br /&gt;Ford use to say "Satisfaction is Job One." I think that is a fair phrase. Satisfaction from doing your job well and helping customers should be job one and the reward you get in return invaluable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-8263227805116807007?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2008/10/efcs.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4415427790278061434.post-6901357215607842807</guid><pubDate>Sun, 17 Aug 2008 03:50:00 +0000</pubDate><atom:updated>2008-08-16T20:51:26.957-07:00</atom:updated><title>Welcome to Fergonian Thinking</title><description>Welcome to a website dedicated to teaching the management style of "Fergonian Thinking"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4415427790278061434-6901357215607842807?l=www.mindyferguson.com%2Ffergonianthinking.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.mindyferguson.com/2008/08/welcome-to-fergonian-thinking.html</link><author>noreply@blogger.com (Mindy Ferguson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>
