<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>

<channel>
	<title>ITauthor &#187; Programming</title>
	<atom:link href="http://www.itauthor.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.itauthor.com</link>
	<description>Stuff about technical writing and software</description>
	<lastBuildDate>Thu, 29 Jul 2010 07:27:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<!-- podcast_generator="Blubrry PowerPress/1.0.8" mode="advanced" entry="normal" -->
	<itunes:summary>Talking about technical writing, software and technology in general. The ITauthor Podcast is an advert-free, irregularly published show by technical writers for technical writers or anyone interested in software documentation or IT generally.</itunes:summary>
	<itunes:author>Alistair Christie - ITauthor.com</itunes:author>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.itauthor.com/images/ITauthor-PhotoLogo-300px.jpg" />
	<itunes:owner>
		<itunes:name>Alistair Christie - ITauthor.com</itunes:name>
		<itunes:email>comments@itauthor.com</itunes:email>
	</itunes:owner>
	<managingEditor>comments@itauthor.com (Alistair Christie - ITauthor.com)</managingEditor>
	<copyright>2006-2009</copyright>
	<itunes:subtitle>Talking about technical writing, software and technology in general.</itunes:subtitle>
	<itunes:keywords>itauthor, alistair christie, technology, writing, documentation </itunes:keywords>
	<image>
		<title>ITauthor &#187; Programming</title>
		<url>http://www.itauthor.com/images/ITauthor-PhotoLogo-144px.jpg</url>
		<link>http://www.itauthor.com/category/programming/</link>
	</image>
	<itunes:category text="Technology">
		<itunes:category text="Software How-To" />
		<itunes:category text="Tech News" />
		<itunes:category text="Podcasting" />
	</itunes:category>
		<item>
		<title>PHP (or Perl) one line if/then/else statements</title>
		<link>http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/</link>
		<comments>http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 06:53:35 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/</guid>
		<description><![CDATA[If you're toggling something between two states in PHP or Perl it's often handy to use an if/then/else one liner. In pseudocode this goes like this: &#60;if this evaluates to TRUE&#62; then &#60;parse this&#62; else &#60;parse this&#62; All you need to do is replace the &#34;then&#34; with a question mark and the &#34;else&#34; with a [...]]]></description>
			<content:encoded><![CDATA[<p>If you're toggling something between two states in PHP or Perl it's often handy to use an if/then/else one liner.</p>  <p>In pseudocode this goes like this:</p>  <p><em>&lt;<strong>if </strong>this evaluates to TRUE&gt; </em><strong>then </strong><em>&lt;parse this&gt; </em><strong>else </strong><em>&lt;parse this&gt;</em></p>  <p>All you need to do is replace the &quot;then&quot; with a question mark and the &quot;else&quot; with a colon:</p>  <p><em>&lt;<strong>if </strong>this evaluates to TRUE&gt; </em><strong>? </strong><em>&lt;parse this&gt; </em><strong>:</strong><strong> </strong><em>&lt;parse this&gt;</em></p>  <p>For example:</p>  <p><span style="color: #c0c0c0"><em>print</em>&#160; </span>$trueOrFalse ? &quot;you're telling the truth&quot; : &quot;you're lying&quot;;</p>  <p>Ignore the print command, it's not part of the if/then/else statement, it's just here to do something with the outcome of that statement.</p>  <p>The expression immediately to the left of the question mark is evaluated. The expression between the question mark and the colon is parsed if the expression evaluates to TRUE, otherwise the expression immediately to the right of the colon is parsed. So in the above example, either &quot;you're telling the truth&quot; or &quot;you're lying&quot; is printed, depending on whether $trueOrFalse is ... you guessed it ... TRUE or FALSE.</p>  <p>But perhaps a more common situation is toggling the value assigned to a variable. For example, toggling between TRUE and FALSE:</p>  <p><span style="color: #c0c0c0"><em>$trueOrFalse = </em></span>$trueOrFalse ? FALSE : TRUE;</p>  <p>Here's a practical example of the use of if/then/else one liners. There's two in this chunk of PHP. The scroll box list below the code is the kind of thing this PHP produces.</p>  <p>&lt;div style=&quot;overflow:auto; height:100px; width:300px; border:3px groove #DDD; padding:0&quot;&gt;    <br />&lt;?php     <br />&#160;&#160;&#160; $alternateLine = FALSE;     <br />&#160;&#160;&#160; while($presidentsArray) {     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &quot;&lt;div style=\&quot;background-color:&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print $alternateLine ? &quot;#F5F8F9&quot; : &quot;white&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &quot;; padding-bottom: 1px\&quot;&gt; &amp;nbsp; &amp;nbsp; &lt;a href=\&quot;someURL\&quot; title=\&quot;This link goes nowhere\&quot;&gt;&quot; .     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $presidentsArray['name'] . &quot;&lt;/a&gt;&lt;/div&gt;&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $alternateLine = $alternateLine ? FALSE : TRUE;     <br />&#160;&#160;&#160; }     <br />?&gt;     <br />&lt;/div&gt;</p>  <div style="border-bottom: #dddddd 3px groove; border-left: #dddddd 3px groove; padding-bottom: 0pt; padding-left: 0pt; width: 300px; padding-right: 0pt; height: 100px; overflow: auto; border-top: #dddddd 3px groove; border-right: #dddddd 3px groove; padding-top: 0pt">   <div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">George Washington</a></div>    <div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">John Adams</a></div>    <div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">Thomas Jefferson</a></div>    <div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">James Madison</a></div>    <div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">James Monroe</a></div>    <div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">John Quincy Adams</a></div>    <div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">Andrew Jackson</a></div>    <div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">Martin Van Buren</a></div>    <div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">William Henry Harrison</a></div>    <div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">John Tyler</a></div> </div>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A handy PHP date() checker</title>
		<link>http://www.itauthor.com/2009/07/30/a-handy-php-date-checker/</link>
		<comments>http://www.itauthor.com/2009/07/30/a-handy-php-date-checker/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 15:54:14 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2009/07/30/a-handy-php-date-checker/</guid>
		<description><![CDATA[A handy site to remember if you’re writing PHP is http://php-date.com/. It provides everything you need to know about the date() function in PHP and has an interactive form for testing your formatting until you get your dates/times just the way you want them.]]></description>
			<content:encoded><![CDATA[<p>A handy site to remember if you’re writing PHP is <a title="http://php-date.com/" href="http://php-date.com/">http://php-date.com/</a>. It provides everything you need to know about the date() function in PHP and has an interactive form for testing your formatting until you get your dates/times just the way you want them.</p>  <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="php-date-function" border="0" alt="php-date-function" src="http://www.itauthor.com/wp-content/uploads/2009/07/phpdatefunction.png" width="530" height="216" /></p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2009/07/30/a-handy-php-date-checker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“Programmers love hierarchy … normal people hate that”</title>
		<link>http://www.itauthor.com/2009/03/15/programmers-love-hierarchy-normal-people-hate-that/</link>
		<comments>http://www.itauthor.com/2009/03/15/programmers-love-hierarchy-normal-people-hate-that/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 20:11:19 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[User interface]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2009/03/15/programmers-love-hierarchy-normal-people-hate-that/</guid>
		<description><![CDATA[Something I&#8217;ve been preaching for years, to any software developer who&#8217;ll listen, is: don&#8217;t use a tree view control in the user interface if your users are not highly technical and there&#8217;s another way of allowing the user to do the thing they actually want to do (which there usually is if you put some [...]]]></description>
			<content:encoded><![CDATA[<p><img height="318" width="318" border="0" title="treeview" style="border: 0px none ; margin-top: 5px; float: left; margin-right: 10px;" alt="treeview" src="http://www.itauthor.com/wp-content/uploads/2009/03/treeview.gif" />Something I&rsquo;ve been preaching for years, to any software developer who&rsquo;ll listen, is: don&rsquo;t use a tree view control in the user interface if your users are not highly technical and there&rsquo;s another way of allowing the user to do the thing they <em>actually</em> want to do (which there usually is if you put some thought into it).</p>
<p>So I was delighted to hear Jeff Atwood and Joel Spolsky&rsquo;s views on the <a href="http://blog.stackoverflow.com/2009/03/podcast-45/">Stack Overflow Podcast #45</a>:</p>
<p>&nbsp;</p>
<hr />
<blockquote>
<p><b>Atwood:&nbsp;&nbsp; </b>&hellip; programmers <i>love</i> hierarchy, to a degree that they don't even understand how different they are than the public in this regard. Like they love putting everything in this little bucket, that goes in this little bucket, which is this sub-bucket of this and this, and normal people <i>hate</i> that. And threading is <i>totally</i> a manifestation of that and it drives me crazy that a lot of programmers can't see that they're like immediately like: &quot;Oh, threading is good. I <i>love</i> threading. What are you <i>talking</i> about?&quot; You know? They can't see it at all.      <br />
<br />
<b>Spolsky</b>:&nbsp;&nbsp; Right, right.       <br />
<br />
<b>Atwood:&nbsp;&nbsp; </b>It's like myopia.      <br />
<br />
<b>Spolsky</b>:&nbsp;&nbsp; Yeh. I mean it's really a function of the size of the group, and one thing I've learned through years and years of usability testing is that anything that smacks of a hierarchy or a tree is <i>not</i> going to be understandable to the average, non-technical user.      <br />
<br />
<b>Atwood:&nbsp;&nbsp; </b>Yeh.      <br />
<br />
<b>Spolsky</b>:&nbsp;&nbsp; You just have to learn that: if it's a tree, or a hierarchy, like eighty per cent of the regular people are going to get confused and not quite get it.</p>
</blockquote>

<hr />
<p>Hierarchies are great at showing nested relationships, and they make sense to programmers, who are used to them &ndash; but most of the time the relationships don&rsquo;t matter to the user. Usually the user just wants to find something and yet the tree view forces them to &ldquo;drill down&rdquo;, clicking down into a hierarchy that becomes increasingly complex as they click.</p>
<p>My request to all programmers placed in the position of having to design a user interface: avoid hierarchies unless you <em>truly</em> believe the end users really <em>need</em> the hierarchical information.</p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2009/03/15/programmers-love-hierarchy-normal-people-hate-that/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Stack Overflow virgin</title>
		<link>http://www.itauthor.com/2009/02/26/stack-overflow-virgin/</link>
		<comments>http://www.itauthor.com/2009/02/26/stack-overflow-virgin/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 21:13:15 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2009/02/26/stack-overflow-virgin/</guid>
		<description><![CDATA[I posted my first question on Stack Overflow today and already it’s had a couple of replies. I can see how Stack Overflow could become a little addictive because it has elements of a game built into it. For starters, you build up reputation points, which you get from other people by providing answers, but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stackoverflow.com/"><img style="float: right; margin: 0px 0px 10px 10px" height="61" alt="stackoverflow-logo-250" src="http://www.itauthor.com/wp-content/uploads/2008/12/stackoverflow-logo-250-thumb.png" width="218" border="0" /></a> I posted <a href="http://stackoverflow.com/questions/591507/is-there-any-way-of-delivering-server-based-help-without-a-web-server">my first question on Stack Overflow</a> today and already it’s had a couple of replies. I can see how Stack Overflow could become a little addictive because it has elements of a game built into it. For starters, you build up reputation points, which you get from other people by providing answers, but you need some reputation points before you can start giving points to others, and you can’t comment on other people’s answers until you’re above a certain rep level. </p>  <p>Have a listen to <a href="http://www.hanselminutes.com/default.aspx?showID=152">Hanselminutes Show 134</a> to hear Jeff Atwood, CEO of Stack Overflow, talking about the concept of the site and what they’ve done to make it an appealing place for software developers to hang out. The bit that really struck a chord with me was when he described Stack Overflow as sort of an antidote to Experts’ Exchange, the latter being a site that really rubs me up the wrong way because of its underhand tactics. There are so many times I’ve searched for something technical on Google and found a hit that looks like it might provide the answer I was looking for but I don’t notice it’s at Experts’ Exchange until I get there and discover the details are obscured because the site is run as a private club, which I refuse to join.</p>  <p>I like Stack Overflow. The only thing I don’t like about it is that I think its search facility is very weak right now. If you want to find stuff it’s best to use Google, like this: </p>  <p><strong>http://www.google.com/search?q=site:stackoverflow.com/questions YOUR QUERY</strong></p>  <p>For example:</p>  <p><a href="http://www.google.com/search?q=site:stackoverflow.com/questions online help">http://www.google.com/search?q=site:stackoverflow.com/questions online help</a></p>  <p>The other aspect of it is that, if you’re not a programmer – or even if you are – it can be an intimidating place for the newcomer. You have to brace yourself and be prepared to be told you’re an idiot and should go away and never darken the doors of Stack Overflow again. But, in some ways, that’s not altogether a bad thing. It’s intended to be a games room for professional programmers – it’s not designed for just anybody to go and find an answer to any old thing. But, unlike Experts’ Exchange, everyone’s allowed to come in and wander around and listen in on the conversations. However, if you try answering a question you’re not qualified to answer, or you start asking questions that should have been asked elsewhere, then you can expect the regulars to give you a hard time.</p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2009/02/26/stack-overflow-virgin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>God damned exception</title>
		<link>http://www.itauthor.com/2009/02/16/god-damned-exception/</link>
		<comments>http://www.itauthor.com/2009/02/16/god-damned-exception/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 21:02:00 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2009/02/16/god-damned-exception/</guid>
		<description><![CDATA[I was late leaving work this evening and I was rushing to close down my applications so that I could shut down my laptop. I closed a Word document and immediately pulled the cable to my second monitor. The following error message popped up: This isn&#8217;t a Photoshop job, it&#8217;s a real error message, presumably [...]]]></description>
			<content:encoded><![CDATA[<p>I was late leaving work this evening and I was rushing to close down my applications so that I could shut down my laptop. I closed a Word document and immediately pulled the cable to my second monitor. The following error message popped up:</p>
<p><img height="180" width="256" border="0" title="god-damned-exception-Word" style="border: 0px none ; display: inline;" alt="god-damned-exception-Word" src="http://www.itauthor.com/wp-content/uploads/2009/02/goddamnedexceptionword.jpg" /></p>
<p>This isn&rsquo;t a Photoshop job, it&rsquo;s a real error message, presumably tucked away in some remote corner of Microsoft Word.</p>
<hr />
<p><strong>Update</strong>:</p>
<p>Turns out it's nothing to do with Word (more's the pity). It's a &quot;feature&quot; of <a href="http://sourceforge.net/projects/notepad-plus/">Notepad++</a>, which is my text editor of choice right now. I must have been closing down Notepad++ at the same time as Word.</p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2009/02/16/god-damned-exception/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Switching on the Agile lightbulb</title>
		<link>http://www.itauthor.com/2008/03/21/switching-on-the-agile-lightbulb/</link>
		<comments>http://www.itauthor.com/2008/03/21/switching-on-the-agile-lightbulb/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 22:18:27 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.itauthor.eu/2008/03/21/switching-on-the-agile-lightbulb/</guid>
		<description><![CDATA[I've got to admit I'd always had a jaded opinion of the Agile software development methodology. From what I knew of it - no detailed requirements document, no functional specification, no prototyping, no design thoroughly first then build it - from all of this it seemed to me that Agile was something dreamed up by [...]]]></description>
			<content:encoded><![CDATA[I've got to admit I'd always had a jaded opinion of the Agile software development methodology. From what I knew of it - no detailed requirements document, no functional specification, no prototyping, no design thoroughly first then build it - from all of this it seemed to me that Agile was something dreamed up by a software developer, for software developers, but a potential nightmare for testers, technical authors, marketing, sales and support. To me it seemed like Agile was a kind of a "let's just bash on and make it up as we go along" approach that left developers free to do whatever seemed best (or maybe just easiest), without being tied to anyone else's plan, or maybe any plan at all. And, as a technical author, how do you document something that's evolving from day to day according to the whim of developer?

So that was where I was with Agile until the week before last. Not hostile to Agile, but definitely skeptical.

Then, as part of the restructuring exercise that's underway at my work, I spent a week with <a href="http://www.marketacuity.com/about.html">MarketAcuity</a> CEO and Agile guru Sam Bayer. I'm not entirely sure what Sam's mission was: whether he'd been tasked with introducing Agile product development to the company, or just talking us through the Agile methodology. He has a very laid-back, discursive approach, so it's hard to tell. It never felt like he was trying to teach us particularly, more like he was just talking with us about one way of doing things.

We started with some basics of Agile product development. What's the point? Answer: it's about accelerating value to the customer. The 4 pillars of Agile:
<ul>
	<li><strong>Customer</strong>
The process is centred around the customer. It's not about producing some new, cool product because it's something we think would be interesting to work on, or because it's this year's big thing. It's about finding out what our customers and potential customers need and value and doing that for them.</li>
	<li><strong>Demonstrations</strong>
Show your customers the real production software (not a prototype or a smoke and mirrors job) on a regular basis and get their feedback.</li>
	<li><strong>Iterative</strong>
Build something, demo it, get feedback, build some more, and so on. Demonstrations could be a week or a month apart, but probably not more than a month apart, and always on a regular schedule. Don't go away and work on something for six months or a year only to find at the end of that time that it's not really what the customer wants, because they found it hard to explain, or you weren't listening, or they changed their minds/personnel, or the market or operational environment changed.</li>
	<li><strong>Collaborative</strong>
This isn't the waterfall approach. There's no leader passing down commands that must be obeyed. Within the company everyone's got a role and a job to do, but these aren't set in stone with high walls. The team have to work together according to their knowledge and abilities to get the job done. And, looking externally, you've got to collaborate with the customer and bring them into the process.</li>
</ul>
Another concept that, first off, I found puzzling was that, as well as accelerating value to the customer, Agile helps you to accelerate <em>failure</em>. Sounds bizarre, but what it means is that if you're producing the wrong thing, or you've made bad decisions, or misunderstood the market, you get to realise this much earlier. You don't work on a project for a year, then have a launch and suddenly get hit with the truth that potential customers don't really rate what you've done, and the stuff they really want is missing from what you produced. If you're really going nowhere with a project then it's much better to find out soon, cut your losses and get on with doing something profitable.

All of this, and more, makes perfect sense to me. But it really wasn't until day 3 of the week that things really clicked with me. A lightbulb went on and suddenly I saw a way of doing this product management thing successfully.

So now I sort of feel like a convert to Agile. It fits with my way of thinking. Don't overcomplicate things. Don't weigh yourself down with a ton of process and procedure rules. Do one thing at a time, bit by bit. Tell the truth. Don't pretend you always have all the answers. Talk to people. Get their opinions. Keep talking. Keep listening. Be prepared to change your mind.]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2008/03/21/switching-on-the-agile-lightbulb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fiddler &#8211; the HTTP debugging proxy</title>
		<link>http://www.itauthor.com/2007/11/09/fiddler-the-http-debugging-proxy/</link>
		<comments>http://www.itauthor.com/2007/11/09/fiddler-the-http-debugging-proxy/#comments</comments>
		<pubDate>Fri, 09 Nov 2007 07:40:14 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/2007/11/09/fiddler-the-http-debugging-proxy/</guid>
		<description><![CDATA[If you develop Web pages and you need to see what's actually in the traffic to and from the browser, you'll want to check out Fiddler. Fiddler is a really useful free add-on for Internet Explorer. It's particularly useful if you're developing Web applications that use AJAX, or if you want to investigate what actually [...]]]></description>
			<content:encoded><![CDATA[<p>If you develop Web pages and you need to see what's actually in the traffic to and from the browser, you'll want to check out Fiddler. Fiddler is a really useful free add-on for Internet Explorer. It's particularly useful if you're developing Web applications that use AJAX, or if you want to investigate what actually gets sent to the server when you fill out an online form, or if your PC starts running slowly and you want to check whether there's lots of HTTP traffic going on that you weren't aware of. I found it interesting, and not a little alarming, to see how often passwords I type into a browser are sent up to the server as plain text that anyone along the way could read using a packet sniffer.</p> <p>Take a look at the Quick Start screencast from <strong>fiddlertool.com</strong>: <br /><a href="http://www.fiddlertool.com/Fiddler/help/video/FiddlerQuickStart.wmv" target=""><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="149" alt="Fiddler-QuickStartVid" src="http://www.itauthor.com/wp-content/uploads/2007/11/fiddler-quickstartvid1.png" width="204" border="0"></a>&nbsp;<br />This video is hosted at: <a title="http://www.fiddlertool.com/Fiddler/firstrun.asp" href="http://www.fiddlertool.com/Fiddler/firstrun.asp">http://www.fiddlertool.com/Fiddler/firstrun.asp</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2007/11/09/fiddler-the-http-debugging-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://media.blubrry.com/itauthor/www.fiddlertool.com/Fiddler/help/video/FiddlerQuickStart.wmv" length="9529358" type="video/x-ms-wmv" />
			<itunes:subtitle>If you develop Web pages and you need to see what&#039;s actually in the traffic to and from the browser, you&#039;ll want to check out Fiddler. Fiddler is a really useful free add-on for Internet Explorer. It&#039;s particularly useful if you&#039;re developing Web appli...</itunes:subtitle>
		<itunes:summary>If you develop Web pages and you need to see what&#039;s actually in the traffic to and from the browser, you&#039;ll want to check out Fiddler. Fiddler is a really useful free add-on for Internet Explorer. It&#039;s particularly useful if you&#039;re developing Web applications that use AJAX, or if you want to investigate what actually gets sent to the server when you fill out an online form, or if your PC starts running slowly and you want to check whether there&#039;s lots of HTTP traffic going on that you weren&#039;t aware of. I found it interesting, and not a little alarming, to see how often passwords I type into a browser are sent up to the server as plain text that anyone along the way could read using a packet sniffer. Take a look at the Quick Start screencast from fiddlertool.com:  This video is hosted at: http://www.fiddlertool.com/Fiddler/firstrun.asp</itunes:summary>
		<itunes:author>Alistair Christie - ITauthor.com</itunes:author>
		<itunes:explicit>no</itunes:explicit>
	</item>
		<item>
		<title>SQL find and replace</title>
		<link>http://www.itauthor.com/2007/11/08/sql-find-and-replace/</link>
		<comments>http://www.itauthor.com/2007/11/08/sql-find-and-replace/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 09:42:37 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/2007/11/08/sql-find-and-replace/</guid>
		<description><![CDATA[It's remarkable easy, and quick, to do a search/replace on a MySQL database. PHPmyAdmin makes it even easier. For example, say you have a table containing Web links to a server on your network and the server name gets changed or, more likely, the Web pages get moved. You might have links such as http://oldwebserver/importantstuff/index.html [...]]]></description>
			<content:encoded><![CDATA[<p>It's remarkable easy, and quick, to do a search/replace on a MySQL database. PHPmyAdmin makes it even easier.</p> <p>For example, say you have a table containing Web links to a server on your network and the server name gets changed or, more likely, the Web pages get moved. You might have links such as <strong>http://oldwebserver/importantstuff/index.html</strong> that should now be <strong>http://newwebserver/importantstuff/index.html</strong>.&nbsp; To correct these with an SQL statement, use:</p><pre>UPDATE <em>table_name</em> SET <em>field_name</em> = REPLACE (
<em>field_name</em>,
"<em>old text</em>",
"<em>new text</em>");</pre>
<p>For example:</p><pre>UPDATE mytable SET url = REPLACE (
url,
"<strong>http://oldwebserver/importantstuff/</strong>",
"<strong>http://newwebserver/importantstuff/</strong>");<strong></pre><p><strong><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="281" alt="PHPmyAdmin-searchreplace" src="http://www.itauthor.com/wp-content/uploads/2007/11/phpmyadmin-searchreplace.png" width="540" border="0"></strong></p><p>Note</strong>: The reason I didn't just replace "oldwebserver" with "newwebserver" is as a safeguard against changing things I didn't want changed. You've got to be pretty careful about what you do, and I would strongly advise that you <strong><font color="#ff0000">always back up the database before making any changes like this</font></strong>.</p>
<p>WordPress expert Lorelle has some good advice about doing this kind of thing on your WordPress tables at:</p>
<p><a title="http://lorelle.wordpress.com/2005/12/01/search-and-replace-in-wordpress-mysql-database/" href="http://lorelle.wordpress.com/2005/12/01/search-and-replace-in-wordpress-mysql-database/">http://lorelle.wordpress.com/2005/12/01/search-and-replace-in-wordpress-mysql-database/</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2007/11/08/sql-find-and-replace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP files return a blank page</title>
		<link>http://www.itauthor.com/2007/11/07/php-files-return-a-blank-page/</link>
		<comments>http://www.itauthor.com/2007/11/07/php-files-return-a-blank-page/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 14:27:56 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/2007/11/07/php-files-return-a-blank-page/</guid>
		<description><![CDATA[If, when you browse to a PHP page, you just see the text of the PHP script, it means the server knows nothing about PHP. To it the PHP script is just a text file, so it sends you that, like it would a .txt file. If, however, you get a blank page, it suggests [...]]]></description>
			<content:encoded><![CDATA[<p>If, when you browse to a PHP page, you just see the text of the PHP script, it means the server knows nothing about PHP. To it the PHP script is just a text file, so it sends you that, like it would a <strong>.txt</strong> file.</p> <p>If, however, you get a blank page, it suggests the Web server knows that <strong>.php</strong> files should be served up like Web pages, but the PHP isn't being handled properly.</p> <p>On Apache, the most likely cause - or at least the first thing you should check out - is that the <strong>httpd.conf</strong> file hasn't been updated properly to point to the PHP module. Make sure this file contains <font face="Courier New">LoadModule</font>, <font face="Courier New">AddType</font> and <font face="Courier New">PHPIniDir</font> statements such as the following (these are for an XAMPP installation of Apache/PHP on Windows):</p> <p><font face="Courier New">LoadModule php5_module "c:/xampp/php/php5apache2_2.dll"<br />AddType application/x-httpd-php .php<br />PHPIniDir "c:/xampp/php"</font></p> <p>If these lines are in the <strong>httpd.conf</strong> file, the problem may just be that the file hasn't been read since the change was made. Restart Apache and the changes in the file will be applied.</p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2007/11/07/php-files-return-a-blank-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Memory Builder version 1.0 released</title>
		<link>http://www.itauthor.com/2007/10/07/memory-builder-version-10-released/</link>
		<comments>http://www.itauthor.com/2007/10/07/memory-builder-version-10-released/#comments</comments>
		<pubDate>Sun, 07 Oct 2007 22:43:25 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[View all]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/2007/10/07/memory-builder-version-10-released/</guid>
		<description><![CDATA[I've just released onto the world my first publicly available desktop application. I call it Memory Builder. It was designed to help my kids build up their French vocabulary, but you could use it to test yourself on almost any subject where small questions and answers work. The idea is that you add in a [...]]]></description>
			<content:encoded><![CDATA[<p>I've just released onto the world my first publicly available desktop application. I call it Memory Builder. It was designed to help my kids build up their French vocabulary, but you could use it to test yourself on almost any subject where small questions and answers work.</p>
<p>The idea is that you add in a selection of questions/answers (e.g. words/phrases in German and their English meanings, or questions about car engine parts and the answers to those questions), then you just test yourself by going through a few questions every now and again and checking the answers if you need to. I have the program set as a scheduled task so that it pops up every couple of hours and I can do a few questions, or just click <strong>Quit</strong>. The questions are randomly selected, so you get different ones coming up each time.</p>
<p>The installer I've put up for download comes with a default French/English data file. This presents French words/phrases. You've got to remember the English meanings. Click <strong>Next </strong>to page through from one French word/phrase to the next: <br style="" />
<a href="http://www.itauthor.com/wp-content/uploads/2007/10/memorybuilder1-0-french.png" atomicselection="true"> <img height="210" width="350" border="0" style="border: 0px none ;" alt="MemoryBuilder1-0-French" src="http://www.itauthor.com/wp-content/uploads/2007/10/memorybuilder1-0-french-thumb.png" /></a><br style="" />
You can click <strong>English</strong> if you can't remember the word/phrase. <br style="" />
<a href="http://www.itauthor.com/wp-content/uploads/2007/10/memorybuilder1-0-english.png" atomicselection="true"><img height="214" width="350" border="0" style="border: 0px none ;" alt="MemoryBuilder1-0-English" src="http://www.itauthor.com/wp-content/uploads/2007/10/memorybuilder1-0-english-thumb.png" /></a>  <br style="" />
To add or remove&nbsp;&nbsp;entries to/from the data file, click <strong>Feed</strong>. <br style="" />
<a href="http://www.itauthor.com/wp-content/uploads/2007/10/memorybuilder1-0-questionanswer.png" atomicselection="true"><img height="552" width="350" border="0" style="border: 0px none ;" alt="MemoryBuilder1-0-QuestionAnswer" src="http://www.itauthor.com/wp-content/uploads/2007/10/memorybuilder1-0-questionanswer-thumb.png" /></a>&nbsp; <br style="" />
Scroll to the bottom and add more French words and their English meanings, or click in the left, grey column to highlight a row and press Delete on the keyboard to remove it. To get rid of everything and add your own data, highlight the lot and press Delete.  The Properties tab allows you to change the button text from French/English to something that suits your questions/answers.  </p>
<p><a href="http://www.itauthor.com/downloads">See the Downloads page for a link to the Memory Builder installer.</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2007/10/07/memory-builder-version-10-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Number ranges for common data types</title>
		<link>http://www.itauthor.com/2005/06/23/number-ranges-for-common-data-types/</link>
		<comments>http://www.itauthor.com/2005/06/23/number-ranges-for-common-data-types/#comments</comments>
		<pubDate>Thu, 23 Jun 2005 14:48:58 +0000</pubDate>
		<dc:creator>alistair at work</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/?p=152</guid>
		<description><![CDATA[I spent a while today rooting around trying to find out what range of numbers could be stored in a particular data type. Here&#8217;s a list for future reference: C data type Description Number range Storage required char character (or string) &#8211;128 to 127 1 byte int integer &#8211;32768 to 32,767 2 bytes short (or [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a while today rooting around trying to find out what range of numbers 
  could be stored in a particular data type. Here&#8217;s a list for future reference:<br />
</p>
<table cellpadding="7"><tr><td valign="top"><p><b><i>C 
        data type </i></b></p>

</td><td valign="top"><p><b><i>Description</i></b></p>

</td><td valign="top"><p><b><i>Number range</i></b></p>

</td><td valign="top"><p><b><i>Storage required</i></b></p>

</td></tr>
<tr><td valign="top"><p>char</p>

</td><td valign="top"><p>character (or string)</p>

</td><td valign="top"><p>&#8211;128 to 127</p>

</td><td valign="top"><p>1 byte</p>

</td></tr>
<tr><td valign="top"><p>int</p>

</td><td valign="top"><p>integer</p>

</td><td valign="top"><p>&#8211;32768 to 32,767</p>

</td><td valign="top"><p>2 bytes</p>

</td></tr>
<tr><td valign="top"><p>short (<i>or</i> short int)</p>

</td><td valign="top"><p>short integer</p>

</td><td valign="top"><p>&#8211;32768 to 32,767</p>

</td><td valign="top"><p>2 bytes</p>

</td></tr>

<tr><td valign="top"><p>long</p>

</td><td valign="top"><p>long integer</p>

</td><td valign="top"><p>&#8211;2,147,483,648 to 2,147,483,647</p>

</td><td valign="top"><p>4 bytes</p>

</td></tr>
<tr><td valign="top"><p>unsigned char</p>

</td><td valign="top"><p>unsigned character</p>

</td><td valign="top"><p>0 to 255</p>

</td><td valign="top"><p>1 byte</p>

</td></tr>
<tr><td valign="top"><p>unsigned int</p>

</td><td valign="top"><p>unsigned integer</p>

</td><td valign="top"><p>0 to 65,535</p>

</td><td valign="top"><p>2 bytes</p>

</td></tr>
<tr><td valign="top"><p>unsigned short </p>

</td><td valign="top"><p>unsigned short integer</p>

</td><td valign="top"><p>0 to 65,535</p>

</td><td valign="top"><p>2 bytes</p>

</td></tr>

<tr><td valign="top"><p>unsigned long</p>

</td><td valign="top"><p>unsigned long integer</p>

</td><td valign="top"><p>0 to 4,294,967,295</p>

</td><td valign="top"><p>4 bytes</p>

</td></tr>
<tr><td valign="top"><p>float</p>

</td><td valign="top"><p>single-precision floating point (accurate to 7 digits)</p>

</td><td valign="top"><p>+ or -3.4 x 10<SUP>38</SUP> to + or -3.4 x10<SUP>-38</SUP></p>

</td><td valign="top"><p>4 bytes</p>

</td></tr>
<tr><td valign="top"><p>double</p>

</td><td valign="top"><p>double-precision floating point (accurate to 15 digits)</p>

</td><td valign="top"><p>+ or -1.7 x 10<SUP>-308</SUP> to + or -1.7 x10<SUP>308</SUP></p>

</td><td valign="top"><p>8 bytes</p>

</td></tr>
</table>

<p>Adapted from a Dummies article: <a href="http://www.dummies.com/WileyCDA/DummiesArticle/id-1064.html">Determining 
  Types of Numbers in C</a> </p>
<p>&nbsp;</p>]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2005/06/23/number-ranges-for-common-data-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
