<link rel="canonical" href="http://aztec-it.blogspot.com/" />
<meta http-equiv="refresh" content="30;url=http://aztec-it.blogspot.com/" />
<?xml version='1.0' encoding='windows-1252'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5006505</id><updated>2010-04-28T19:04:25.860+10:00</updated><title type='text'>Aztec IT Services: IT blog</title><subtitle type='html'>Useful information for IT people.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.aztec-it.com.au/itblog'/><author><name>theZoo</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5006505.post-1224745552948818153</id><published>2010-04-28T19:04:00.001+10:00</published><updated>2010-04-28T19:04:25.919+10:00</updated><title type='text'>This blog has moved</title><content type='html'>&lt;br /&gt;       This blog is now located at http://aztec-it.blogspot.com/.&lt;br /&gt;       You will be automatically redirected in 30 seconds, or you may click &lt;a href='http://aztec-it.blogspot.com/'&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;       For feed subscribers, please update your feed subscriptions to&lt;br /&gt;       http://aztec-it.blogspot.com/feeds/posts/default.&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-1224745552948818153?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/1224745552948818153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/1224745552948818153'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2010_04_01_itblog-archive.html#1224745552948818153' title='This blog has moved'/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-7478881322109455346</id><published>2009-11-23T12:27:00.004+10:00</published><updated>2009-11-23T12:35:14.958+10:00</updated><title type='text'>Drive Image Backup Software: An Evaluation</title><content type='html'>&lt;p&gt;In the last few months I have searched for and evaluated a number of hard drive backup software programs. My goal was to find a dependable, low-priced system for backing up an entire drive, such that I could both browse that image (to extract a couple of files as needed) or to restore that image to fix a drive problem or transfer a drive’s data. I never originally intended to evaluate a series of programs, but problems and limitations encountered with various products forced me to try others. Eventually, I have discovered a program (Macrium Reflect Free) that is free, does everything I need it to do, and has an easy-to-use interface. But the path to Macrium led me across some alternatives. Below are my evaluations of Acronis True Image, DriveImage XML, and Macrium Reflect Free.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Acronis TrueImage&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Initially, I chose Acronis True Image (version 9) based of favourable web reviews. Acronis (&lt;a href="http://www.acronis.com/"&gt;http://www.acronis.com/&lt;/a&gt;) is very speedy. It can image 80 gigs of data in about 40 minutes, and performs compression that shrinks the image to around 50gb. Acronis creates a single-file drive image that can be browsed from within Windows Explorer (provided you have Acronis installed on the computer). Acronis worked well for me across three computers using Windows XP Professional and Windows Vista Home. I never performed a full drive restore with Acronis, but I did restore single files and folders as needed with no problems.&lt;/p&gt;&lt;p&gt;Acronis had one annoying bug (that should have warned me that more was to come): Although I would specify an external drive as the backup location, when I would run the backup, Acronis would often report that the backup location was invalid (even though it wasn’t), forcing me to input the location again. When software behaves in this way, your confidence in it starts to erode (not a good feeling when you are talking about software that you are trusting to backup and possibly restore every file on your drive). &lt;/p&gt;&lt;p&gt;Acronis was also running two services (TrueImageMonitor and TimeOutMonitor) that were slowing my computer down and stopping me from unhooking external drives. I disabled them and this had no effect on what I was using Acronis for (full image backups), so I wish I been given the choice about running them.&lt;/p&gt;&lt;p&gt;Still, I stuck with Acronis, and when a client also needed backup software, I purchased and downloaded Acronis on-line (it had now moved up to version 10). I installed on the client’s computer, rebooted as required, and then….they could no longer access their network drives! The message &amp;quot;&amp;quot;not enough server storage is available to process this command&amp;quot; displayed when they tried to hook up to their required network drive. A quick web search for this message linked me to Acronis version 10; when I uninstalled it, the network access worked again. Needless to say, This was a very serious bug. Still, needing to get the client’s drive backup up, I persevered and installed Acronis version 9. This installed and ran, but failed as it neared the end of writing the backup file on an external drive. I tried again and it failed again. I gave up, used Norton 360s backup to backup files (it doesn’t do a full drive backup, which is what I wanted) and vowed to find a better solution.&lt;/p&gt;&lt;p&gt;I would have loved to stick with Acronis and save myself some time, but the bugs and anomalies finally made the need to switch necessary.&lt;/p&gt;&lt;p&gt;&lt;b&gt;DriveImage XML&lt;/b&gt;&lt;/p&gt;&lt;p&gt;DriveImage XML (&lt;a href="http://www.runtime.org/"&gt;http://www.runtime.org/&lt;/a&gt;) was my second test. I used the handy free version that they make available for home/personal use. Like Acronis, DriveImage XML creates a browsable image, with the added benefit that the drive file structure is saved as XML, making it accessible to other programs. However, as you will see, I lost patience before I got a chance to test out this feature.&lt;/p&gt;&lt;p&gt;I ran DriveImage XML  on my Vista system with 60 gigs of data. The start was not good. Immediately, the program told me I had to weaken security by disabling UAC (User Account Control). This required a reboot. The program then ran, but Vista was not happy, sporting an ominous red icon in the Task Bar, and prompting me to enabled UAC again. This did not give me the greatest of confidence.&lt;/p&gt;&lt;p&gt;Finally, I started backing up. To gain some perspective, Acronis can backup this 60 gigs of data in around 30 minutes. DriveImage XML ran its quaint, old-fashioned interface and chugged away, reporting wildly varying estimates of how long it would take. For a while, it reported it could backup the drive in one hour. Although this was slower than Acronis, I could have lived with it. But as it continued, it adjusted the estimate to two hours.  And it kept chugging away. After two hours, it finally reported that it was finished – and then started the slow task of writing its XML file (with no more progress bar to even give a clue to how long this was going to take). Frustrated, I realized I could not work with a program that backups this slowly. I cancelled the program and started searching for alternatives. But first I took a look at the size of the drive image that DriveImage XML has created. Not only is it slow, but it was big. It had written that image with no compression at all. Still, there are those that love this program, so your experiences may vary – especially if you’re not in a big hurry to get a backup done.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Macrium Reflect Free (Aztec Editor’s Choice)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Macrium Reflect Free (&lt;a href="http://www.macrium.com/"&gt;http://www.macrium.com/&lt;/a&gt;) has a free version (hence the name) with some limitations (it only does a full drive backup, while the version you purchase can do folder and incremental backups). I only need to do full images, so the free version was fine for me. It installed and ran on Vista without requesting that I disable any security features. Its slick, modern interface has a simple wizard that led me through a full backup and saved the settings I chose for future use. And it is lightning fast, Macrium backed up that 60 gigs of data in 22 minutes! Afterward, I successfully used Windows Explorer to browse the image it created and restore a couple of files as a test. Finally, I installed and ran Macrium on my two other computers – again, it ran quickly and perfectly.&lt;/p&gt;&lt;p&gt;I can fully endorse Macrium Reflect Free as the best of the tested programs if you need to do a fast, browsable backup of an entire hard drive.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-7478881322109455346?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/7478881322109455346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/7478881322109455346'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2009_11_01_itblog-archive.html#7478881322109455346' title='Drive Image Backup Software: An Evaluation'/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-4228858689598015527</id><published>2008-08-18T23:07:00.008+10:00</published><updated>2008-08-18T23:36:05.099+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;UltraWebTree and DataSet Relations: Building a tree on the fly&lt;/h2&gt;&lt;p&gt;We're heavily into .NET now, using Visual Studio 2008 along with the Infragistics NetAdvantage controls. The NetAdvantage controls are slick when used in their basic configuration, but if you want to do anything tricky, there are a paucity of examples. I needed to create an UltraWebTree on the fly, to fully take advantage of the ability to format each node as required. The source are a number of database tables. I pieced together this Subroutine from various bits of examples I found. In this example, we are using DataSet Relations to set up the hierarchical structure within the DataSet. This makes it easy to then write the UltraWebTree from the DataSet:&lt;/p&gt;&lt;br /&gt;&lt;p style="FONT-FAMILY: arial narrow"&gt;Private Sub BuildTree()&lt;br /&gt;  Dim rootNode As Node&lt;br /&gt;  Dim childNode As Node&lt;br /&gt;  Dim babyNode As Node&lt;br /&gt;  Dim ConnectionString As String = System.Configuration.ConfigurationManager.ConnectionStrings.Item("someWebConfigDefinedConnectionString").ConnectionString&lt;br /&gt;  Dim obConn As New SqlConnection(ConnectionString)&lt;br /&gt;  Dim SQL1 As String = "SELECT Level1ID, Level1Description FROM tblLevel1"&lt;br /&gt;  Dim SQL2 As String = "SELECT Level1ID, Level2ID, Level2Description FROM tblLevel2"&lt;br /&gt;  Dim SQL3 As String = "SELECT Level1ID, Level2ID, Level3ID, Level3Description FROM tblLevel3"&lt;br /&gt;  Dim obCmd1 As New SqlCommand(SQL1, obConn)&lt;br /&gt;  Dim obCmd2 As New SqlCommand(SQL2, obConn)&lt;br /&gt;  Dim obCmd3 As New SqlCommand(SQL3, obConn)&lt;br /&gt;  Dim DataAdapterElement As New SqlDataAdapter(obCmd1)&lt;br /&gt;Dim DataAdapterLevel As New SqlDataAdapter(obCmd2)&lt;br /&gt;Dim DataAdapterCriteria As New SqlDataAdapter(obCmd3)&lt;br /&gt;Dim DataSetAuditTree As New DataSet&lt;br /&gt;Try&lt;br /&gt;DataAdapterElement.Fill(DataSetAuditTree, "Level1")&lt;br /&gt;DataAdapterLevel.Fill(DataSetAuditTree, "Level2")&lt;br /&gt;DataAdapterCriteria.Fill(DataSetAuditTree, "Level3")&lt;br /&gt;&lt;br /&gt;Try&lt;br /&gt;DataSetAuditTree.Relations.Add("Level1Relation", _&lt;br /&gt;DataSetAuditTree.Tables("Level1").Columns("Level1ID"), _&lt;br /&gt;DataSetAuditTree.Tables("Level2").Columns("Level1ID"))&lt;br /&gt;Catch x As Exception&lt;br /&gt;Dim s As String&lt;br /&gt;s = x.Message&lt;br /&gt;Me.ErrorLabel.Text = "UltraWebTree is unable to display data due to the following exception message: " + x.Message&lt;br /&gt;End Try&lt;br /&gt;Try&lt;br /&gt;DataSetAuditTree.Relations.Add("Level2Relation", _&lt;br /&gt;DataSetAuditTree.Tables("Level2").Columns("Level2ID"), _&lt;br /&gt;DataSetAuditTree.Tables("Level3").Columns("Level2ID"))&lt;br /&gt;Catch x As Exception&lt;br /&gt;Dim m As String&lt;br /&gt;m = x.Message&lt;br /&gt;Me.ErrorLabel.Text = "UltraWebTree is unable to display data due to the following exception message: + x.Message&lt;br /&gt;End Try&lt;br /&gt;Catch x As Exception&lt;br /&gt;Dim m As String&lt;br /&gt;m = x.Message&lt;br /&gt;Me.ErrorLabel.Text = "UltraWebTree is unable to display data due to the following exception message: " + x.Message&lt;br /&gt;End Try&lt;br /&gt;&lt;br /&gt;Dim curLevel1ID As Int32&lt;br /&gt;For Each r As DataRow In DataSetAuditTree.Tables("Level1").Rows&lt;br /&gt;curLevel1ID = r("Level1ID")&lt;br /&gt;rootNode = New Node&lt;br /&gt;rootNode.Text = r("Level1ID").ToString() + " - " + r("Level1Description")&lt;br /&gt;rootNode.ToolTip = "ToolTip: Root Node " + r("Level1ID").ToString()&lt;br /&gt;For Each l As DataRow In r.GetChildRows("Level1Relation")&lt;br /&gt;childNode = New Node&lt;br /&gt;childNode.Text = l("Level2ID").ToString() + " - " + l("Level2Description")&lt;br /&gt;childNode.ToolTip = "ToolTip: " + l("Level2ID").ToString() + " - " + l("Level2Description")&lt;br /&gt;rootNode.Nodes.Add(childNode)&lt;br /&gt;For Each c As DataRow In l.GetChildRows("Level2Relation")&lt;br /&gt;babyNode = New Node&lt;br /&gt;babyNode.Text = c("Level3ID").ToString() + "" + c("Level3Description")&lt;br /&gt;babyNode.ToolTip = "ToolTip: " + c("Level3ID").ToString() + "" + c("Level3Description")&lt;br /&gt;childNode.Nodes.Add(babyNode)&lt;br /&gt;Next&lt;br /&gt;Next&lt;br /&gt;Me.UltraWebTree1.Nodes.Add(rootNode)&lt;br /&gt;Next&lt;br /&gt;End Sub&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-4228858689598015527?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/4228858689598015527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/4228858689598015527'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2008_08_01_itblog-archive.html#4228858689598015527' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-6292787837580932751</id><published>2008-03-21T14:40:00.005+10:00</published><updated>2009-05-20T01:02:19.126+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Exclamation Points (!) in CDO EMail Messages: Solved!&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;i&gt;Gerry Loiacono posts information on how to solve the seemingly random insertion of exclamation points when using CDO to send email&lt;/i&gt;&lt;/p&gt;&lt;p&gt;While sending automated emails using ASP and CDO, I discovered that an exclamation point and a space were being inserted, seemingly randomly, into the body of the message. I searched around the web and found quite a few snippets of information that led to dead ends. But what did solve it was a reference to line length. Apparently, somewhere along the line, a mail server was inserting breaks into long lines. By inserting carriage return/line feeds (VBCrLf) after each paragraph and break just before sending the body to a stored procedure, the problem was solved.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-6292787837580932751?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6292787837580932751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6292787837580932751'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2008_03_01_itblog-archive.html#6292787837580932751' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-5626954625489239119</id><published>2007-09-28T20:51:00.000+10:00</published><updated>2007-09-28T20:53:01.336+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Internet Explorer's Helping Hands (and why we don't like them)&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;i&gt;Gerry Loiacono talks about why Internet Explorer will probably never be able to conform to the W3C specifications&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Recently I encountered another incident of what I like to call, "Thanks but no thanks."&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I was programming in Javascript, CSS, and HTML, and for a time, was testing my web site solely in Internet Explorer 7. Everything looked good. But when I tried the same site in Mozilla Firefox, virtually every element was sitting in the wrong place and using the wrong font. Having seen this result before, I knew where to look straightaway: my Cascading Style Sheet (.CSS) file.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Sure enough, on the second line of this file, I had used a left parenthesis '(' instead of the required left curly bracket '{'. Internet Explorer 7 (and earlier versions of Internet Explorer) are smart enough to assume that I really meant to use a curly bracket. It fixes the code automatically, and processes the remainder of the CSS file. Firefox, however, reads this as an error and does not process the style in error or anything below it, which is why the page looks so wrong.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now, at first glance, you might think that IE's behavior is so much nicer. True, the page looked fine in IE. But the problem is that IE's behavior is outside the WorldWide Web Consortium (W3C) specification. That means that although the page will work in IE, it will not work in virtually every other browser. It would be so much better if IE simply conformed to the spec, rather than trying to create a new one. Developers would rather know straight off how their page will look everywhere, rather than getting a false positive.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;At one time, when IE was so dominant that it was possible to ignore other browsers, this wasn't a big issue. But nowadays, Firefox and others make up a hefty chunk (34% as of July 2007) of the browser market.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It was interesting to see that this situation was still occurring in IE7, even though Microsoft said they were going to conform IE7 to the W3C spec. In reality, they cannot - and here's why. If they take out their 'clever parenthesis' fixing (and the myriad of other special coding items like that), millions of web pages that are currently working in IE 6 and earlier would stop working. This could be disastrous for developers who were targeting IE only (eg; in-house applications where they were sure that IE was the only browser used).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So until some radical change happens, developers would be wise to test in IE and Firefox - and to double-check their parenthesis!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-5626954625489239119?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/5626954625489239119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/5626954625489239119'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_09_01_itblog-archive.html#5626954625489239119' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-9175234488785950836</id><published>2007-03-03T00:05:00.000+10:00</published><updated>2007-03-07T10:31:10.915+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Image Maps and Event Handlers&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;When tackling a new online injury reporting system, my first challenge was to present a generic representation of the human body, then allow a user to click anywhere on the image to place one or more markers indicating the injured areas. Clicking on a previously placed marker would also have to remove it. At first, I toyed with the idea of making the body image a different, solid color, and then detecting the pixel color below the cursor when the mouse was clicked. But I soon found out that there is nothing in the DOM to detect the pixel color. I also considered programming this functionality in Macromedia Flash - I had already done something similar, and I had no doubts that Flash could do it. But I didn''t want to require the client to load a plug-in.&lt;/p&gt;&lt;p&gt;Then I remembered &lt;b&gt;image maps&lt;/b&gt;. Image maps are built into HTML and provide a mechanism for defining clickable areas of a graphic. Because the area can be any irregular shape (a polygon), this solved my first problem. I created a clickable image map using the outline of the body as the polygon.&lt;/p&gt;&lt;p&gt;Creating the polygon could have been tedious or impossible without a handy little freeware program called &lt;b&gt;Map This&lt;/b&gt;. Written in 1995 (!) by Todd C. Wilson, it still runs just fine on Windows XP. &lt;b&gt;Map This&lt;/b&gt; allows you to load a graphic and trace a line around any shape to create a polygon area for an image map. (By the way, the great Todd C. Wilson is still around, and you can visit his website at &lt;a href="http://www.NOPcode.com" target="_new"&gt;www.NOPcode.com&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;A polygonal image map solved my first challenge. Now I needed a way to find out the X and Y positions where the click occurred. First, I used: &lt;i&gt;onclick="getPosition(event);"&lt;/i&gt; for the polygon area that called my function. Then, I got the position with some cross browser event handler code:&lt;/p&gt;&lt;p style="FONT-FAMILY: arial narrow"&gt;function getPosition(e) {&lt;br /&gt;var e = (window.event) ? window.event : e;&lt;br /&gt;var cursor = {x:0, y:0};&lt;br /&gt;if (e.pageX e.pageY) {&lt;br /&gt;cursor.x = e.pageX;&lt;br /&gt;cursor.y = e.pageY;&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;var de = document.documentElement;&lt;br /&gt;var b = document.body;&lt;br /&gt;cursor.x = e.clientX +&lt;br /&gt;(de.scrollLeft b.scrollLeft) - (de.clientLeft 0);&lt;br /&gt;cursor.y = e.clientY +&lt;br /&gt;(de.scrollTop b.scrollTop) - (de.clientTop 0);&lt;br /&gt;}&lt;br /&gt;CreateMarker(cursor.x,cursor.y);&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Now...how to place a little red dot where the user clicked? For this, I created a hidden &amp;lt;img&amp;gt; tag on the form:&lt;/p&gt;&lt;p style="FONT-FAMILY: arial narrow"&gt;&amp;lt;img src="clonemarker.gif" style="visibility:hidden" onclick="RemoveMarker(this);"&amp;gt;&lt;/p&gt;&lt;p&gt;The &lt;i&gt;CreateMarker&lt;/i&gt; function clones the hidden &amp;lt;img&amp;gt; and places it where the mouse was clicked:&lt;/p&gt;&lt;p style="FONT-FAMILY: arial narrow"&gt;function CreateMarker(xpos,ypos) {&lt;br /&gt;var clone_image = document.getElementById(''cloneMarker'');&lt;br /&gt;var new_image = document.getElementsByTagName("body")[0].appendChild(clone_image.cloneNode(true));&lt;br /&gt;new_image.id = "m" + xpos + "-" + ypos;&lt;br /&gt;new_image.style.left = parseFloat(xpos) - 4;&lt;br /&gt;new_image.style.top = parseFloat(ypos) - 4;&lt;br /&gt;new_image.style.visibility = ''visible'';&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;You might have noticed that an &lt;i&gt;onclick="RemoveMarker(this);"&lt;/i&gt; is placed within each &amp;lt;img&amp;gt;. This function simply sets the current marker as hidden.&lt;/p&gt;&lt;p&gt;And that''s all! A series of interesting challenges, all solved through the elegant power of the DOM!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-9175234488785950836?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/9175234488785950836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/9175234488785950836'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#9175234488785950836' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-6029224829006201061</id><published>2007-03-02T19:01:00.000+10:00</published><updated>2007-03-02T19:02:26.702+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Keep Your Passwords Safe&lt;/h2&gt;&lt;p&gt;If you an average Internet user, you probably have around 10 to 20 user names and passwords for various internet sites and services. If you’re an IT professional, you could have hundreds. Your method for storing and remembering these passwords could very well be unsecure and inefficient. What you need is a secure database where you can store all your user name and password information, access it easily, and lock it from prying eyes and fingers. Enter KeePass, a free Open Source program available from SourceForge.&lt;/p&gt;&lt;p&gt;KeePass calls itself a &lt;i&gt;password safe&lt;/i&gt;. It's a database designed specifically for storing entries with a user name, password, and URL. A notes field and the ability to attach documents adds flexibility. A master password or master key disk prevents unauthorized access to your passwords.&lt;/p&gt;&lt;p&gt;KeePass is easy to use and has a polished look, but unlike many other professionally produced Open Source applications, it still feels very much like a work in progress. This is not fully acceptable for a program entrusted with passwords. An example of unprofessionalism was the strangely limiting implementation of the &lt;i&gt;Import from CSV&lt;/i&gt; feature. Since all of my current sign-on information was stored in one big somewhat unstructured text document, it made sense for me to format this document and import it, rather than painstakingly copy and paste each line of information for over 70 different items. With no documentation attached to the product, I poked around for a fair while to get any idea about what type of picky CSV format KeePass would accept. Even after that, my attempts to import were either met with no success (but no error message either), or an error message that did not give specific enough information to identify the problem. Eventually, a article in the Forum helped me to get the precise CSV format to work. Needless to say, until I gain some confidence in Keepass's ability to safely store my password database, I will continue to use my old &lt;i&gt;system&lt;/i&gt; in tandem.&lt;/p&gt;&lt;p&gt;My uneasy feelings almost completely vanished when I started using KeePass while visiting websites requiring user names and passwords. KeePass groups entries in user-created categories, and also has a full database search, so it''s easy to find the entry you need. Then you just use Control-key combos to quickly copy and paste the user name and password from KeePass to the form. Voila! No more typing of user names and passwords, ever! In fact, the password always remains hidden, so no one looking over your shoulder can see it. And since you don''t have to remember - or type - the password, there is no reason why your passwords cannot be longer, more complex, and therefore more secure.&lt;/p&gt;&lt;p&gt;KeePass is available for free download from SourceForge. &lt;a href="https://sourceforge.net/projects/keepass" target="_new"&gt;Download KeePass&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-6029224829006201061?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6029224829006201061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6029224829006201061'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#6029224829006201061' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-5392483038230626644</id><published>2007-03-02T18:58:00.001+10:00</published><updated>2007-03-02T18:58:49.623+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Spyware Protection: Our Recommendations&lt;/h2&gt;&lt;p&gt;What program or set of programs do you need to safely protect your computer from spyware? I thought it a little suspicious that Spyware Stormer, the program recommended to me as a reputable spyware/adware remover, chose to attempt to convince me to buy it by popping up browser windows made to look like Windows windows, and to present fake scans of my system already in progress when I had not yet downloaded or installed it. Why would a program that proposes to remove spyware and adware use the very techniques that it is supposed to prevent?&lt;/p&gt;&lt;p&gt;Further research revealed that Spyware Stormer is considered a suspect spyware removal tool. It appears to be a knockoff of the reputable program &lt;b&gt;Adaware&lt;/b&gt;. Some screens and internal file names are identical, so it’s likely that the 'programmer' of Stormer reverse-engineered Adaware’s code and now sells it as his own. So I ruled out Stormer, and set out to load my toolbox with some reputable programs I could use to safely remove spyware.&lt;/p&gt;&lt;p&gt;Two types of programs are needed for spyware removal and patrol. The first type scans your system and removes any existing spyware. The second type is for prevention. It stops spyware from getting on your computer in the first place.&lt;/p&gt;&lt;p&gt;For the first type, I chose &lt;a href="http://spybot.safer-networking.de"&gt;Spybot Search and Destroy&lt;/a&gt;. This is a free program written by Patrick Kolla who started it as a personal project and has expanded it as needs have grown. The program has been recommended by PC World.&lt;/p&gt;&lt;p&gt;For the second type, I use two free programs, &lt;a href="http://www.javacoolsoftware.com/spywareblaster.html"&gt;SpywareBlaster&lt;/a&gt; and &lt;a href="http://www.javacoolsoftware.com/spywareguard.html"&gt;SpywareGuard&lt;/a&gt;, both published by Javacool software. They provide two different areas of protection. One runs in real-time and the other makes security changes to your browser to provide a safer internet environment.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-5392483038230626644?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/5392483038230626644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/5392483038230626644'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#5392483038230626644' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-2556136042590509608</id><published>2007-03-02T18:54:00.000+10:00</published><updated>2007-03-02T18:55:42.473+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;The Big Brush Strokes of Successful Search Engine Optimization&lt;/h2&gt;&lt;p&gt;There's little point in building a beautiful, functional website if no one ever sees it. Some websites are self-promoting; traffic will arrive. Other sites will never be visited unless a pro-active effort is made to establish links from other sites and to get ranked near the top in the SERPs (Search Engine Results Pages). As of April 2005, the leading search engine is Google, with Yahoo in second place and MSN third. These three search engines should be specifically targeted and catered to in all areas of SEO (Search Engine Optimisation).&lt;/p&gt;&lt;p&gt;SEO is all about the doing the little things in the big areas. This is merely a quick introduction to some of the major areas of focus, to help you get started with SEO.&lt;/p&gt;&lt;p&gt;Here's a look at the main areas that need to be addressed to achieve a high search engine ranking:&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. Content is King&lt;/b&gt;&lt;br /&gt;Content is still the most important factor in SE rankings. Ensure your content is focused on one major topic, add new content often, have heaps of content, and make it keyword-rich (without overstuffing it with keywords, which could be considered spam).&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. Use &amp;lt;TITLE&amp;gt; and &amp;lt;META&amp;gt; tags&lt;/b&gt;&lt;br /&gt;The &amp;lt;TITLE&amp;gt; tag is used extensively to help determine page rank, and often displays as the website description in SERPs. The title should be an accurate, keyword-rich sentence of about 7 to 10 words. The &amp;lt;META&amp;gt; &lt;i&gt;keyword&lt;/i&gt; and &lt;i&gt;description&lt;/i&gt; tags are no longer used by many search engines, but they are still a good way to keep an on-page record of keywords and description.&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. Clean Up That HTML&lt;/b&gt;&lt;br /&gt;Ensure that your DOCTYPE statement is valid. Validate your HTML using one of the free online services. Ensure there are no broken links. Use standard heading tags (H1 through H6) for headings, and make them keyword-rich. Use keyword-rich ALT attributes for images. Use descriptive TITLE attributes for text links.&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. Don't Use Tricks&lt;/b&gt;&lt;br /&gt;Don't hide keywords. Don't purchase two domains to host related content and then cross-link them to improve SE ranking. Search engines keep getting better and better at weeding out attempts to boost SE ranking with anything other than actual good content. Don't use anything that could be considered a trick, and keep up to date on the always-expanding list of what the major search engines consider to be 'tricks'. &lt;p&gt;&lt;p&gt;&lt;b&gt;Finally&lt;/b&gt;...search engines are constantly changing the algorithms they use to evaluate and rank websites, and to weed out spam. As of Feb 2007, Google is still the industry leader in providing the most discerning algorithms and therefore the highest quality SERPs. Everyone wants to get a high ranking in Google, but patience is needed, even if the new website you designed has been fully omptimized for your chosen keywords. Google takes 2 months to crawl a submitted site, and up to 8 months to fully weight any incoming links to the site. Initially, it is vital that you get some powerful, real, incoming links, to further increase the chance that Google with crawl the site as a result of one of these links.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-2556136042590509608?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/2556136042590509608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/2556136042590509608'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#2556136042590509608' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-8229010732867440624</id><published>2007-03-02T18:48:00.001+10:00</published><updated>2007-03-02T18:48:56.110+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;RSS for Publishers, Readers, and Developers&lt;/h2&gt;&lt;p&gt;RSS stands for Rich Site Summary...or Remote Site Syndication…or Really Simple Syndication. This confusion points to conflict, and stems from an early diversion in a &lt;i&gt;specification&lt;/i&gt; developed by different groups. We are left with a range of &lt;i&gt;standards&lt;/i&gt;. While this poses some challenges for those who are writing tools to read RSS feeds, it does not subtract from any of the excitement surrounding this new development. RSS is a set of formatting rules used to encode web information. Originally designed for summaries from news sites, it is now used for a wide variety of information types: website updates, book addendums, blog feeds, forums, etc. Once a publisher has converted their information to one of about seven possible formats (XML is but one of the formats), they can then apply to officially syndicate their content.&lt;/p&gt;&lt;p&gt;Here's how RSS content gets from publishers to readers: website publishers use one or more tools to write or convert their content to RSS format. They then make people aware of the URL where their RSS &lt;i&gt;feed&lt;/i&gt; is published. Readers then use &lt;i&gt;news aggregate&lt;/i&gt; programs to search for and assemble a list of RSS feeds in their interest areas. The news aggregate program automatically deciphers the feeds, and updates them for the reader whenever the publisher creates an update. The third party is the website developer, who also can add RSS feeds to their website.&lt;/p&gt;&lt;p&gt;There are benefits for each player. Publishers get an easy way to increase the distribution of their content, and they are assured that the readers want to be reading it. Readers get an easy way to keep up to date on the items that interest them. Website developers who incorporate RSS feeds get instant relevant content, updated frequently. This is just what the search engines like to see when awarding high rankings.&lt;/p&gt;&lt;p&gt;Publishers looking to feed RSS content from sites that already have a high volume of visitors can quickly buy into this new technology and increase the distribution of their content. Publishers from marginal sites are once again faced with a problem similar to the one posed by trying to gain search engine rankings: they need to find a way to let people know their RSS feed is available. In some ways, the vertical nature of RSS means that it should be a little easier to get included in a directory of related items. We'll talk more about this in future articles.&lt;/p&gt;&lt;p&gt;Readers wanting to browse their RSS feeds of choice can use one of the many RSS Reader programs available. Many are free, including the aptly named &lt;a href="http://www.rssreader.com"&gt;RSS Reader&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Website developers will want to add relevant RSS feeds to their site. Ideally, a server-side script (for example, ASP or PHP) should be used so that the RSS feed is delivered to the page as straight HTML. This will gain the most benefit for search engine ranking; the RSS content becomes your content. This approach also benefits the RSS publisher, as the links back to the publisher's site will be 'live' links on the developer's site, again much valued by the search engines. There are a number of free scripts available, including the &lt;a href="http://www.kattanweb.com/webdev/projects/index.asp?ID=7"&gt;KattenWeb ASP script&lt;/a&gt; and the &lt;a href="http://www.geckotribe.com/rss/carp/"&gt;CARP PHP script&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For a live RSS example (which uses the CARP PHP script behind the scenes) check out Aztec IT's implementation of the Eldis Gender Newsfeed on the &lt;a href="http://127.0.0.1/aztec/gender-issues/gender-newsfeeds.php"&gt;Gender Agenda website&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Website developers who do not have server-side technologies available for their website can use JavaScript to integrate RSS feeds onto the page. To visitors, the JavaScript-assembled page will look and present identically to a server-side-assembled page. There is a caveat, however. Because of the way JavaScript assembles pages in memory, search engine crawlers will not see the RSS feed on the page. This means that your page will not gain any ranking points. So whenever possible, use a server-side solution and present the RSS feed as plain HTML on the page.&lt;/p&gt;&lt;p&gt;RSS is a fledging development and the impact it will achieve is unknown. Imagine the implications and possibilities if all of the information on the internet was one virtual database? RSS is a small step in that direction. Will it evolve into something powerful and of great benefit to web users? Or will it be weakened by competing standards or polluted by marketeers? We'll just have to keep reading those feeds until we find out the answer.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-8229010732867440624?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/8229010732867440624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/8229010732867440624'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#8229010732867440624' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-6304955454538408942</id><published>2007-03-02T15:26:00.000+10:00</published><updated>2007-03-02T16:00:05.641+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;XHTML: The Better Choice For Web Page Development&lt;/h2&gt;&lt;p&gt;HTML (Hypertext Markup Language) and its various versions have long been the standard language for creating web pages for a great number of browsers. But the anarchy that helped evolved the power behind HTML also created a very loose system for interpreting and validating it. For the most part, browsers that read your HTML page try to be forgiving and will ignore a missing end tag for a paragraph, or a list, mixed case tag names (like &amp;lt;SELECT&amp;gt;, &amp;lt;Select&amp;gt;, and &amp;lt;select&amp;gt;) and attribute values enclosed in double quotes, single quotes, or no quotes at all. The advantage to this loose approach is that your page displays without errors. The disadvantages are many:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Your page may not display the way you intended at all, since the browser has to make arbitrary decisions about your coding intentions&lt;/li&gt;&lt;li&gt;The 'loose' approach can lead to very sloppy, inconsistent HTML writing, since it may not affect the output&lt;/li&gt;&lt;li&gt;Stricter browsers will throw errors when encountering incorrectly formatted HTML. This is even more likely to occur on mobile devices, where the small browser footprint does not include the overhead to correct poorly formatted code&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The other big negative about poorly formatted HTML is the search engine spiders will turn away, or report back with inaccurate information, if they encounter a formatting error. Anything that can affect a site's search engine ranking is bound to make web site developers sit up and take notice, and so it should.&lt;/p&gt;&lt;p&gt;So how can you ensure that your site is properly formatted, with no errors to cause problems? You can convert to using XHTML.&lt;/p&gt;&lt;p&gt;XHTML (eXtensible Hypertext Markup Language) takes HTML version 4.01 and closes up some of the weak formatting rules allowed in HTML. XHTML can be described as a 'stricter' version of HTML. It has been in existence since 1999 and has been a stable standard since 2000, so you can convert with no worries about it being a fleeting fad. It's here for good, and it is supported in virtually all current browsers. And by combining the best features of XML and HTML, it has another major advantage: It can be read by any device that can read XML.&lt;/p&gt;&lt;p&gt;Conversion of an existing web site is straightforward but not trivial. Due to the nature of some of the formatting changes, not all of them can be made by using a global find/replace. Some hand coding will need to be done. At Aztec IT Services, we have ensured that this hand coding would only have to be done once, by updating the source templates that we use to create all web pages to generate XHTML code.&lt;/p&gt;&lt;p&gt;The major changes in XHTML and HTML are:&lt;/p&gt;&lt;table id="AutoNumber1" style="BORDER-COLLAPSE: collapse" bordercolor="#ffffff" cellspacing="3" cellpadding="2" width="100%" bgcolor="#c0c0c0" border="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;b&gt;Loose HTML&lt;/b&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;b&gt;XHTML&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;All tags and attributes must be in lower case&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;P&amp;gt;Here is some text&amp;lt;/P&amp;gt;&lt;br /&gt;&amp;lt;P CLASS="headline"&amp;gt;Here is more text&amp;lt;/P&amp;gt;&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;p&amp;gt;Here is some text&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p class="headline"&amp;gt;Here is more text&amp;lt;/p&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;Attribute values must be enclosed in double quotes&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;p class=headline&amp;gt;Here is some text&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p class='headline'&amp;gt;Here is more text&amp;lt;/p&amp;gt;&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;p class="headline"&amp;gt;Here is more text&amp;lt;/p&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;All elements must be properly nested&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Here is some text&amp;lt;/p&amp;gt;&amp;lt;/b&amp;gt;&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Here is some text&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td gn="top"&gt;All &lt;b&gt;pair&lt;/b&gt; elements must have a closing tag&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;p&amp;gt;Here is one paragraph&lt;br /&gt;&amp;lt;p&amp;gt;Here is a second paragraph&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;p&amp;gt;Here is one paragraph&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Here is a second paragraph&amp;lt;/p&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;All &lt;b&gt;stand alone&lt;/b&gt; elements (like &amp;lt;input&amp;gt; and &amp;lt;img&amp;gt;) must have a closing delimiter&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;img alt="sun" src="sun.gif"&amp;gt;&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;lt;img alt="sun" src="sun.gif" /&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;Attribute minimization is not allowed (checked, readonly, disabled, selected, and others)&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;option selected id="m3" value="3"&amp;gt;Corn flakes&amp;lt;/option&amp;gt;&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;option selected="selected" id="m3" value="3"&amp;gt;Corn flakes&amp;lt;/option&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;The &lt;b&gt;id&lt;/b&gt; attribute replaces the &lt;b&gt;name&lt;/b&gt; attribute in the elements &amp;lt;a&amp;gt;, &amp;lt;applet&amp;gt;, &amp;lt;frame&amp;gt;, &amp;lt;iframe&amp;gt;, &amp;lt;img&amp;gt;, and &amp;lt;map&amp;gt;&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;img alt="sun" name="sun" src="sun.gif"&amp;gt;&lt;/td&gt;&lt;td valign="top"&gt;&amp;lt;img alt="sun" id="sun" src="sun.gif" /&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;A mandatory DOCTYPE element must be included at the beginning of the document. More information on DOCTYPE elements are included below.&lt;/td&gt;&lt;td valign="top"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;There are a number of smaller changes not detailed above. These will be discovered when you validate your page. The World Wide Web Consortium web site includes an excellent &lt;a href="http://validator.w3.org/" target="_new"&gt;XHTML validator&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As noted earlier, a mandatory DOCTYPE element must be included as the first line of the document. Choose from one of the following three elements:&lt;/p&gt;&lt;p&gt;&lt;b&gt;XHTML 1.0 Strict&lt;/b&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;&lt;i&gt;Use this when you want really clean markup, free of presentational clutter. Use this together with Cascading Style Sheets.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;XHTML 1.0 Transitional&lt;/b&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&lt;i&gt;Use this when you need to take advantage of HTML's presentational features and when you want to support browsers that don't understand Cascading Style Sheets.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;XHTML 1.0 Frameset&lt;/b&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&amp;gt;&lt;br /&gt;&lt;i&gt;Use this when you want to use HTML Frames to partition the browser window into two or more frames.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;The document specified in the DOCTYPE tag will be used to validate the document.&lt;/p&gt;&lt;p&gt;When your work is done, and your web site is fully XHTML-compatible, you will have cleaner, easier to read code that can be read without error by a wide range of browsers, devices, and search engine spiders/crawlers. It's definitely worth the time investment to make this change.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-6304955454538408942?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6304955454538408942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6304955454538408942'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#6304955454538408942' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-2114890715026755091</id><published>2007-03-02T00:01:00.000+10:00</published><updated>2007-03-07T10:27:37.275+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Cleaning Up Your Web Application With AJAX&lt;/h2&gt;&lt;p&gt;Wouldn't it be nice if you could develop a web application that can use Javascript - a client-side programming language - to get information from a web server? Imagine the possibilities of combining those two powerful and complimentary technologies! No more reloading the entire page every time you need to query a database or read an XML file. Well, now you can do just that, and the way to do it is with AJAX.&lt;/p&gt;&lt;p&gt;AJAX is short for Asychronous Javscript And XML. AJAX combines existing technologies to create a dynamic way to make your application faster, smaller, and more robust.&lt;/p&gt;&lt;p&gt;In the World Without AJAX, you query a server by loading your page with form input variables, or by tacking the variables onto the URL, and then submitting (and reloading) the entire page. This can mean a slow application that is not user friendly.&lt;/p&gt;&lt;p&gt;With AJAX, you work behind the scenes, using HTTP requests in Javascript to send and retrieve server data. Then you update only those bits of the page that need updating. When used properly, this creates a leaner, meaner application.&lt;/p&gt;&lt;p&gt;And best of all, AJAX is a cross-browser solution, supported in both Internet Explorer 5.5 and higher, and Mozilla Firefox. Note that problems in XML support for Opera and Safari exclude the use of AJAX in these browsers, but even so, AJAX is accessible to all but a tiny segment of web users.&lt;/p&gt;&lt;p&gt;How to do it? Refer to the simple and excellent tutorial at W3Schools: &lt;a href="http://www.w3schools.com/ajax/default.asp" target="_new"&gt;The W3Schools AJAX Tutorial&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The Implications: Generally speaking, web developers tend to simplify the design and limit the functionality of web pages to match the (former) limits of client-server data transfer. A large page with multiple calls to database tables can take ages to run and the page size can cause speed issues if the data needs to be updated using Javascript (especially in Internet Explorer, where javascript runs much slower than Firefox). With AJAX, there are virtually no limits to the number of distinct elements that could be included on one page. Using clever programming, each element can load separately and be updated on its own, rather than reloading the entire page. Older applications can be fully rewritten in AJAX, or just problem areas in speed and design can be updated as required.&lt;/p&gt;&lt;p&gt;There's no doubt about it: AJAX is changing the way web developers think about developing, and that means improvements across the board for web users.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-2114890715026755091?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/2114890715026755091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/2114890715026755091'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#2114890715026755091' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-9147002556146975043</id><published>2007-03-01T23:59:00.001+10:00</published><updated>2007-03-07T10:28:05.763+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Learning XML&lt;/h2&gt;&lt;p&gt;Extensible Markup Language (XML) is designed to improve the functionality of the Web by providing more flexible and adaptable information identification. It is called extensible because it is not a fixed format like HTML (a single, predefined markup language). Instead, XML is actually a metalanguage — a language for describing other languages — which lets you design your own customized markup languages for limitless different types of documents.&lt;/p&gt;&lt;p&gt;With XML use growing, it is prudent that technical writers become familiar with its concepts and features.&lt;/p&gt;&lt;p&gt;Here are some links to free XML information and tutorials:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ucc.ie:8080/cocoon/xmlfaq"&gt;The XML FAQ&lt;/a&gt;: Frequently Asked Questions about XML, intended as a first resource for users, developers, and interested readers.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.brics.dk/~amoeller/XML/index.html"&gt;The XML Revolution&lt;/a&gt;: Anders Møller and Michael I. Schwartzbach''s slide show provides an introduction and overview of XML, Namespaces, XInclude, XML Base, XLink, XPointer, XPath, DTD, XML Schema, DSD, XSLT, XQuery, DOM, SAX, and JDOMincluding selected links to more information about each topic.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.spiderpro.com/bu/buxmlm001.html"&gt;The SpiderPro Kickstart XML Tutorial&lt;/a&gt;: Understand the basics of XML with this beginner''s tutorial. Also available for download as an eBook.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3schools.com/xml/default.asp"&gt;W3 Schools Tutorials&lt;/a&gt;: Tutorials and quizzes, plus you can get your hands dirty on-line by writing some XML and viewing the results.&lt;/p&gt;&lt;p&gt;&lt;a href="http://java.sun.com/xml/tutorial_intro.html"&gt;Tutorial for the Java/Api for XML Parsing (JAXP)&lt;/a&gt;: Java''s XML intermediate tutorials include the use of XSLT (Extensible Stylesheet Language Tags) to produce custom output.&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmtutxmltutorial.asp"&gt;Microsoft''s XML Lessons&lt;/a&gt;: Microsoft provides 10 interactive XML lessons. These include the use of the C++ XML Data Source Object to bind XML to HTML within Internet Explorer.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www-106.ibm.com/developerworks/xml/"&gt;IBM''s XML&lt;/a&gt;: IBM''s extensive XML and XML-related lessons. Requires (free) registration.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-9147002556146975043?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/9147002556146975043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/9147002556146975043'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_03_01_itblog-archive.html#9147002556146975043' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-6694618936264693843</id><published>2007-02-27T23:25:00.000+10:00</published><updated>2007-03-07T10:28:55.124+10:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Enhancing and Customizing Browser Popups&lt;/h2&gt;&lt;p&gt;Standard browser popups are quick and easy to implement. But because the time they stay visible is limited, the amount of text that can be included and read is also limited. There are also severe limitations on the ability to format the popup text. We needed to make our own custom popups.&lt;/p&gt;&lt;p&gt;Standard browser popups are enabled by entering text for the 'title' field of most tags. The paragraph &amp;lt;p&amp;gt; tag is one example of an item that accepts a title element, and, therefore a popup. But browser popups are limited. They only display for a couple of seconds, so they must be kept quite brief - only a couple of words can be read in the time allotted. They are forced to be brief in Mozilla (Netscape 7); the total length of the popup is about 100 characters. And there is no special formatting allowed (no bullet points, images, etc.). We needed unlimited viewing, unlimited formatting, and unlimited size.&lt;/p&gt;&lt;p&gt;Here's how we did it. First, the styles:&lt;br /&gt;.GLpopup {padding:5; z-index:1000; border:1px solid #000000; font-family: Arial; font-size: 10px; color: #000000; background-color: #FFFFCC; position:absolute; visibility:hidden}&lt;br /&gt;.GLlink {cursor:pointer}&lt;br /&gt;&lt;br /&gt;The 'GLpopup' style creates a text box that resembles a standard popup. Note that 'position:absolute' is used, so that we can specify exactly where we want the popup box to display. Note also that 'visibility: hidden' is used to initially ensure that the popup box is not visible.&lt;br /&gt;&lt;br /&gt;The 'GLlink' style is used to define the text that will cause the popup to display when the cursor is stationed over it. This style simply ensures that the user is aware there is a popup available - the cursor will change to a hand.&lt;br /&gt;&lt;br /&gt;Next, here's the link within the body of the document that will cause the popup to appear if the mouse is moved over it:&lt;br /&gt;&amp;lt;p onmouseover="flyout_text('popup1');" onmouseout="unfly_text('popup1');" class="GLlink"&amp;gt;Popup example: move mouse over this text&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;Two functions are called here, one for when the cursor is over the text (onMouseover), and one for when the cursor moves away from the text (onMouseout).&lt;br /&gt;&lt;br /&gt;Next, here is the layer that contains the size, location, and contents of the popup:&lt;br /&gt;&amp;lt;div id="popup1" class="GLpopup" style=""&amp;gt;&lt;br /&gt;&amp;lt;p class="popupText"&amp;gt;The text stays on-screen until the mouse is moved away from the link&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;This layer also is placed somewhere within the body tags.&lt;br /&gt;&lt;br /&gt;Finally, here are the two javascript functions to display and hide the popup:&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;function flyout_text(divID) {&lt;br /&gt;  document.getElementById(divID).style.visibility = 'visible';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function unfly_text(divID) {&lt;br /&gt; document.getElementById(divID).style.visibility = 'hidden';&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;This popup has no time limitations, no size limitations, and no formatting limitations. However, since each popup must be placed manually, they take a little longer to write.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-6694618936264693843?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6694618936264693843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/6694618936264693843'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2007_02_01_itblog-archive.html#6694618936264693843' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-105708158287043585</id><published>2003-07-02T03:46:00.000+10:00</published><updated>2006-01-03T04:06:51.670+10:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;b&gt;Technical Writers in the Development Team&lt;/b&gt;&lt;br&gt;Technical writers can add value to their work by becoming an active member of the development team. Not all technical writer positions include this latitude, but in some cases, inroads can be made in areas of tech writing that overlap with development. A good example is software testing. Tech writers often become de facto testers as they document procedures. By providing the development team with clear bug reports and constructive suggestions for change and improvement, tech writers can raise their profile and make it easier to work with subject matter experts in the development team.&lt;/p&gt;&lt;p&gt;A useful website for getting insight into the development process is &lt;a href="http://www.stickyminds.com"&gt;www.stickyminds.com&lt;/a&gt;. Stickyminds has information on software testing, project management, defect tracking, configuration management, and much more.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-105708158287043585?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/105708158287043585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/105708158287043585'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_07_01_itblog-archive.html#105708158287043585' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-92981453</id><published>2003-04-21T23:47:00.000+10:00</published><updated>2003-04-23T18:46:59.000+10:00</updated><title type='text'></title><content type='html'>&lt;b&gt;Testing Your Documentation System&lt;/b&gt;&lt;br /&gt;A completed documentation product may work perfectly on the computer on which it was developed. However, it may not work properly on the user's computer. Common problems that may occur include:&lt;ul&gt;&lt;li&gt;missing graphics (they may work fine on your computer, but could be located and linked to a local or network drive that is not available to the user)&lt;/li&gt;&lt;li&gt;non-working functionality (possibly caused by a component included with the development system but not packaged and installed on the user's computer)&lt;/li&gt;&lt;/ul&gt;The only way to ensure that the user receives everything needed for a properly functioning documentation system is to install and test the system first on a completely 'clean' computer. A clean computer is defined as a computer that does not have the development software installed, and only has the minimum software installed that is required to run the documentation system.&lt;br /&gt;&lt;br /&gt;A 'clean' computer is needed repeatedly to test the documentation. It may be impractical to set aside a separate computer for this purpose, and it is time-consuming to wipe and reinstall operating systems and base software.&lt;br /&gt;&lt;br /&gt;One alternative is to use a partitioning tool like &lt;a href="http://www.powerquest.com"&gt;Partition Magic&lt;/a&gt; to segregate and boot to an area of your drive. &lt;a href="http://www.powerquest.com"&gt;Drive Image&lt;/a&gt; can then be used to take a snapshot of the clean partition. Within minutes, this clean partition can be restored for additional testing.&lt;br /&gt;&lt;br /&gt;Another alternative is to use a virtual machine like &lt;a href="http://www.vmware.com/"&gt;VMware&lt;/a&gt; to simulate another computer in an area of your drive. With VMware, you can actually run your standard operating system and the virtual machine simultaneously and communicate through the network. Again, a snapshot of the clean machine can be saved and restored quickly when needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-92981453?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/92981453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/92981453'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_04_01_itblog-archive.html#92981453' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-92283843</id><published>2003-04-09T21:36:00.000+10:00</published><updated>2003-04-23T18:30:19.000+10:00</updated><title type='text'></title><content type='html'>&lt;b&gt;The Future of Technical Writers&lt;/b&gt;&lt;br /&gt;Can technical writers be writing and communication specialists and remain successful at their craft, even if they have little or no knowledge of the technology they are documenting? This topic is debated constantly on &lt;a href="http://www.raycomm.com/techwhirl/"&gt;TECHWR-L&lt;/a&gt; (the technical writers mailing list). While there is no black and white answer, it is generally agreed that if two writers have comparable writing, communication, and editing skills, the writer with more knowledge of the subject matter will produce better results.&lt;br /&gt;&lt;br /&gt;The slump in IT has caused employers and recruiters to request longer wish lists of technology experience for technical writers they will hire. While this frustrates writers searching for work, it is a trend that I do not believe will change.&lt;br /&gt;&lt;br /&gt;A writer with strong technical knowledge in one or more areas can add tremendous value. As writers, we should not fear this trend. Rather, we can use this judgement by employers to increase our workplace value.&lt;br /&gt;&lt;br /&gt;My advice is to pick no more than three strong technologies in your geographical area, and learn all you can about them. Join professional associations, take training courses, read industry publications, visit web sites, and speak to SMEs. When jobs are advertised in these areas, you will have an advantage over other generic applicants.&lt;br /&gt;&lt;br /&gt;In the future, technical writers may become more ‘vertically’ oriented within markets, and most may work as contractors. They will be called in for short periods of time when documentation needs are high, much like a framer or drywall specialist is called in at the proper stage when building a house.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-92283843?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/92283843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/92283843'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_04_01_itblog-archive.html#92283843' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-91324067</id><published>2003-03-25T14:14:00.000+10:00</published><updated>2003-03-25T14:18:24.000+10:00</updated><title type='text'></title><content type='html'>&lt;b&gt;Tailoring Documentation Sets&lt;/b&gt;&lt;br /&gt;Some documentation projects may require two or more sets of documents, targeted to specific groups of end-users. For example, there may be a series of documents specifically for administrators, and another set of documents for non-administrators. Each of these document sets will share some of the same help topics, but each set will also contain unique topics not used or accessible to the other group.&lt;br /&gt;&lt;br /&gt;RoboHelp (published by the &lt;a href="http://www.ehelp.com/"&gt;eHelp Corporation&lt;/a&gt;) is one tool that can be used to produce this output. First, a master documentation set is created. This master set contains all topics. Then specific topics are grouped and tagged for each set. For example, the topic &lt;i&gt;Changing a User's Password&lt;/i&gt;, accessible only for administrators, is tagged as an &lt;i&gt;Admin&lt;/i&gt; topic. The topic &lt;i&gt;Emailing an Administrator&lt;/i&gt;, accessible only to non-administrators, is tagged as a &lt;i&gt;Non-admin&lt;/i&gt; topic. Other topics, such as &lt;i&gt;Logging In&lt;/i&gt; or &lt;i&gt;Saving Your Work&lt;/i&gt;, are tagged as &lt;i&gt;Global&lt;/i&gt; topics that will available to both sets. Finally, the sets can be compiled by choosing the suitable topic categories.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-91324067?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/91324067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/91324067'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_03_01_itblog-archive.html#91324067' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-90704282</id><published>2003-03-14T21:56:00.000+10:00</published><updated>2003-04-23T18:48:22.000+10:00</updated><title type='text'></title><content type='html'>&lt;b&gt;Why Open Source?&lt;/b&gt; Open Source software products (for example, Linux and Zope) are written by teams of volunteers interested in giving something back to the community, controlling their own destiny, keeping the commercial giants honest and accountable, and making a personal creative contribution to a new product. The Open Source movement continues to grow, with more contributors joining daily. Additionally, more and more corporations are turning to Open Source as a less expensive and more community-minded solution to their needs.&lt;br /&gt;&lt;br /&gt;For the technical writer, volunteering your time to write for an Open Source project can be part of a long-term plan to broaden your horizons, learn new technology, make contacts, work in a team, and participate in a growing global volunteer effort. It is &lt;i&gt;not&lt;/i&gt; a quick solution if you are out of work and need money today to pay the rent or mortgage. &lt;br /&gt;&lt;br /&gt;Open Source provides the following benefits:&lt;ul&gt;&lt;li&gt;Gain experience in a new technology&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Branch into paying work by writing a book on an Open Source topic or by making international contacts&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create usable writing samples&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get immediate and direct feedback&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Do charity work as a way of giving something back to the global community&lt;/li&gt;&lt;/ul&gt;For more information, &lt;a href="http://www.ibiblio.org/oswg/docs/projects.html"&gt;visit the projects sections of the Open Source Writers Group&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-90704282?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/90704282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/90704282'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_03_01_itblog-archive.html#90704282' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-89996017</id><published>2003-03-02T22:41:00.000+10:00</published><updated>2003-03-02T23:01:41.000+10:00</updated><title type='text'></title><content type='html'>The style, substance, and power of on-line help have advanced in many areas since the arrival of WinHelp. Some of the major changes that have occured during this period include:&lt;ul&gt;&lt;li&gt;Advanced search (using full sentences and other capabilities)&lt;/li&gt;&lt;li&gt;Live (dynamic) content&lt;/li&gt;&lt;li&gt;Embedding Help into the application; taking help out of the background and making it an integral part of the interface&lt;/li&gt;&lt;li&gt;Providing just-in-time training&lt;/li&gt;&lt;/ul&gt;Documentation specialists Cherryleaf Limited have published an informative article on this subject. The article is titled &lt;a href="http://www.cherryleaf.com/nine_trends_in_online_user_assistance.htm"&gt;The Future of Help? Nine trends in online user assistance&lt;/a&gt;. In my opinion, the advancements described in the article represent a list of Help milestones. Future Help advancements may build upon these changes, or could branch into all-new areas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-89996017?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/89996017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/89996017'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_03_01_itblog-archive.html#89996017' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-89239467</id><published>2003-02-18T00:14:00.000+10:00</published><updated>2003-02-18T00:46:51.000+10:00</updated><title type='text'></title><content type='html'>Recipes are not only for preparing food. The term &lt;i&gt;recipe&lt;/i&gt; is used in IT to describe a standard method for presenting information. This information is usually related to programming, but may include any procedure. Cookbook websites contain bundles of these recipes, grouped by category and usually targeted to a specific software application or platform.&lt;br /&gt;&lt;br /&gt;For example, at the &lt;a href="http://www.zopelabs.com"&gt;Zopelabs&lt;/a&gt; website, a large number of recipes are available for enhancing the natural power of the Zope Open Source Web Application. Recipes are grouped in categories such as Javascript, Perl script, Python script, or Security. Each recipe presents information in the following format: a &lt;i&gt;description&lt;/i&gt;, the &lt;i&gt;source &lt;/i&gt;(usually programming code), an &lt;i&gt;explanation &lt;/i&gt;(including step by step instructions), and reader &lt;i&gt;comments &lt;/i&gt;(discussion forum).&lt;br /&gt;&lt;br /&gt;By using standard sub-categories, the recipe format provides an assuring blueprint for locating information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-89239467?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/89239467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/89239467'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_02_01_itblog-archive.html#89239467' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-88914282</id><published>2003-02-12T01:14:00.000+10:00</published><updated>2003-02-12T01:15:55.000+10:00</updated><title type='text'></title><content type='html'>For the technical writer on a budget who is seeking to learn more about a specific industry or technical subject, the &lt;a href="http://ocw.mit.edu/index.html"&gt;MIT Open Courseware Project&lt;/a&gt; may be the solution. These completely free courses include on-line textbooks, lecture videos and notes, handouts, assignments, readings, and more. Courses are offered in many faculties, including Aeronautics and Astronautics, Biology, Chemical Engineering, Civil and Environmental Engineering, Economics, Mathematics, Physics, and many more. Additional courses are being added, with the program targeted to continue to expand until 2007.&lt;br /&gt;&lt;br /&gt;This valuable, cost-free learning alternative is purely self-study, with no opportunity for feedback, and no certificates of completion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-88914282?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88914282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88914282'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_02_01_itblog-archive.html#88914282' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-88564427</id><published>2003-02-05T12:09:00.000+10:00</published><updated>2003-02-17T23:50:27.000+10:00</updated><title type='text'></title><content type='html'>&lt;b&gt;About this Website&lt;/b&gt;&lt;br /&gt;This website is a &lt;i&gt;blog&lt;/i&gt; (short for &lt;i&gt;web log&lt;/i&gt;). In the most general terms, a blog is a format for posting information to the internet. The content can vary. Initially, blogs were used more for personal rants. Currently, they are evolving into an efficient way to post bite-sized chunks of any useful information. Blogs are now being used commercially for FAQs, communication between departments in companies, and so on.&lt;br /&gt;&lt;br /&gt;A blog differs from a diary in its format as well as its content. Blog entries are not only date-stamped; they are also usually time-stamped to add immediacy. Blog entries are meant to be made more often (perhaps not only daily, but more than once a day). Entries are listed in reverse date order (with the most recent entry at the top), so that visitors can easily identify what's new and what has not yet been read.&lt;br /&gt;&lt;br /&gt;Blogs are still evolving and gaining popularity. For example, there are now over one million blog writers at blogger.com.&lt;br /&gt;&lt;br /&gt;For more information, check out Meg Hourihan's excellent article, &lt;a href="http://www.oreillynet.com/pub/a/javascript/2002/06/13/megnut.html"&gt;What We're Doing When We Blog&lt;/a&gt;. Meg helped developed the technology behind blogger.com. Her blog can be found &lt;a href="http://www.megnut.com"&gt;here&lt;/a&gt;.&lt;br /&gt;To start your own free blog, check out &lt;a href="http://www.blogger.com"&gt;www.blogger.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-88564427?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88564427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88564427'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_02_01_itblog-archive.html#88564427' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-88441524</id><published>2003-02-03T09:41:00.000+10:00</published><updated>2003-02-03T10:48:00.000+10:00</updated><title type='text'></title><content type='html'>&lt;b&gt;The Inductive User Interface&lt;/b&gt;&lt;br /&gt;At my first technical writing position, I was fortunate to be involved with an innovative team that understood the value of good documentation and realized the advantages of involving the writer in the design process. Working with in-house alpha versions of the software, I would begin writing descriptions and process instructions for tasks. This quickly led to discoveries of software illogic and cul-de-sacs that made describing a process difficult or convoluted. When this occurred, I would suggest changes to the software which would then make the instructions for using the software simpler. Likewise, I suggested screen design and dialog box name changes to clear ambiguities. These changes, when implemented, improved the software and the documentation.&lt;br /&gt;&lt;br /&gt;While applying this principle to the design of their successful and innovative &lt;i&gt;Money 2000&lt;/i&gt; software, Microsoft coined the term &lt;i&gt;Inductive User Interface&lt;/i&gt; (IUI) and created a series of guidelines for using this method (although the method itself was in use long before this time).&lt;br /&gt;&lt;br /&gt;The Inductive User Interface model suggests that software can be made easier and simpler by:&lt;ul&gt;&lt;li&gt;Sub-dividing multiple software features into one feature that can be addressed on one screen and easily explained&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Having one screen per software task&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Designing the screen's contents specifically to one task, and removing extraneous or less-frequently used features&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Designing the screen so that the steps necessary to complete the task are obvious and straightforward&lt;/li&gt;&lt;/ul&gt;Not all projects will be structured to allow the writer to have input into creating an Inductive User Interface, but, where feasible, this should be advocated by the writer. If your manager is a Microsoft fan, &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/iuiguidelines.asp"&gt;you can use this article from the Microsoft website&lt;/a&gt; to help advocate for this design methodology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-88441524?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88441524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88441524'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_02_01_itblog-archive.html#88441524' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry><entry><id>tag:blogger.com,1999:blog-5006505.post-88396519</id><published>2003-02-02T09:32:00.000+10:00</published><updated>2003-02-02T09:32:17.816+10:00</updated><title type='text'></title><content type='html'>Since mid-2002, &lt;b&gt;Gordon Meyer &lt;/b&gt;has been publishing &lt;b&gt;Usable Help&lt;/b&gt;, a weblog for "&lt;i&gt;Examining documentation and help systems for software and consumer products&lt;/i&gt;". His well-written posts contain useful information for technical writers, with the focus toward on-line help systems in particular. &lt;a href="http://www.g2meyer.com/usablehelp/index.html"&gt;Check out Usable Help&lt;/a&gt;; it's a good way to start each day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5006505-88396519?l=www.aztec-it.com.au%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88396519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5006505/posts/default/88396519'/><link rel='alternate' type='text/html' href='http://www.aztec-it.com.au/2003_02_01_itblog-archive.html#88396519' title=''/><author><name>theZoo</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15560640843410609100'/></author></entry></feed>