<?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/"
	>

<channel>
	<title>Musings of a code slave</title>
	<atom:link href="http://foundationphp.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://foundationphp.com/blog</link>
	<description></description>
	<lastBuildDate>Sat, 28 Jan 2012 14:05:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Why I&#8217;m no longer a member of the London Dreamweaver Meetup</title>
		<link>http://foundationphp.com/blog/2012/01/28/why-im-no-longer-a-member-of-the-london-dreamweaver-meetup/</link>
		<comments>http://foundationphp.com/blog/2012/01/28/why-im-no-longer-a-member-of-the-london-dreamweaver-meetup/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 14:05:18 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[Dreamweaver]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=302</guid>
		<description><![CDATA[In November last year, I wrote about my hopes for the relaunch of the London Dreamweaver Meetup Group. I originally agreed to give a talk on 26 January about creating a simple jQuery Mobile site in Dreamweaver. The plan was &#8230; <a href="http://foundationphp.com/blog/2012/01/28/why-im-no-longer-a-member-of-the-london-dreamweaver-meetup/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In November last year, <a href="http://foundationphp.com/blog/2011/11/25/dreamweaver-user-group-for-london-and-web-standards/">I wrote about my hopes</a> for the relaunch of the <a href="http://www.meetup.com/The-London-Dreamweaver-Meetup-Group/">London Dreamweaver Meetup Group</a>. I originally agreed to give a talk on 26 January about creating a simple jQuery Mobile site in Dreamweaver. The plan was to try to find a location reasonably close to central London, and I left matters in what I thought were the capable hands of the new organizer, Reynold Chung.</p>
<p>About a week before my planned talk, I was shocked to receive an email reminder from the Meetup website advertising the meeting as being about Balsamiq, jQTouch, QUnit, advertising, and the App Store. I immediately contacted Reynold and told him this bore no relationship to what I was planning to talk about. He said it didn&#8217;t matter. As an established author and Adobe Community Professional, I felt it <em>did</em> matter. People who had signed up for the meeting would be expecting me to talk about those subjects, something which I was not prepared to do—for the simple reason that most of them are out of my sphere of expertise. So, I decided to cancel. Reynold then bombarded me with a series of direct messages on Twitter. One did include an offer to change the description on the website, but I found his attitude aggressive, so decided to leave a 24-hour cooling off period.</p>
<p>The following day, I sent a lengthy email explaining why I had been offended, but saying I was still willing to give the previously arranged talk as long as a revised title and description were published. I know that Reynold received the email, because his account sent an automatic receipt. However, the only other response was an email from Meetup informing me that I had been removed from the group.</p>
<p>The way things have turned out is a pity. As I told Reynold and his predecessor, Nigel Muris, in November, I don&#8217;t have time to organize a Dreamweaver user group myself. But I am willing to share my knowledge either through formal presentations or troubleshooting sessions. I can also make arrangements with my publishers for free or discounted copies of my books.</p>
<p>Reynold has changed the name from The London Dreamweaver Meetup Group to The Adobe &amp; Web Open Source London Meetup Group. However, the website still uses the Dreamweaver URL, and the group&#8217;s description refers frequently to Dreamweaver. At one point, it even uses the name, London Dreamweaver (Zero coding) Meetup Group. Anyone hoping to use the most recent version of Dreamweaver without a strong understanding of HTML, CSS, and JavaScript (or at least jQuery) is likely to be seriously disappointed.</p>
<p>In spite of using Adobe in the revised name, it&#8217;s not an official Adobe user group. I know that Reynold has applied for official recognition, but Adobe&#8217;s position is that the organizer must first show that it&#8217;s a viable user group. It hasn&#8217;t got off to an auspicious start.</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2012/01/28/why-im-no-longer-a-member-of-the-london-dreamweaver-meetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New video PHP course for complete beginners</title>
		<link>http://foundationphp.com/blog/2012/01/26/new-video-php-course-for-complete-beginners/</link>
		<comments>http://foundationphp.com/blog/2012/01/26/new-video-php-course-for-complete-beginners/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 13:27:48 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=298</guid>
		<description><![CDATA[I&#8217;m delighted to announce that my new video course, Introducing PHP, has just been published by video2brain. The course contains nearly 5 hours of video instruction, starting with the installation of a PHP testing environment on your local computer, with &#8230; <a href="http://foundationphp.com/blog/2012/01/26/new-video-php-course-for-complete-beginners/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m delighted to announce that my new video course, <a href="http://www.video2brain.com/en/products-263.htm"><cite>Introducing PHP</cite></a>, has just been published by <a href="http://www.video2brain.com/en/">video2brain</a>. The course contains nearly 5 hours of video instruction, starting with the installation of a PHP testing environment on your local computer, with separate instructions for Windows and Mac users. You&#8217;ll then learn all the basics of PHP syntax:</p>
<ul>
<li>Using variables</li>
<li>Working with strings (text), numbers, and arrays</li>
<li>Making decisions with conditions and comparisons</li>
<li>Using built-in functions and creating your own custom functions</li>
<li>Including external files</li>
<li>Deciphering PHP&#8217;s often cryptic error messages</li>
</ul>
<p>Finally, all that knowledge is put to practical use by building a script to gather user input from an online form and send it by email. The content of the course covers similar ground to the first five chapters of my book <a href="http://foundationphp.com/phpsolutions/"><cite>PHP Solutions, 2nd Edition</cite></a>, and is aimed at people who prefer learning by watching and doing rather than from the pages of a book.</p>
<p>The course costs $39.99 on its own, but is free to video2brain subscribers. Subscription plans start at $14.99 a month ($149 a year), but until the end of March 2012, you can <a href="http://www.video2brain.com/en/subscriptions-promo?aid=263">get a discount by following this link</a>. If you&#8217;d like to try before you buy, there are four free videos from the course:</p>
<ul>
<li><a href="http://www.video2brain.com/en/videos-11941.htm">Setting Up a PHP Site in Dreamweaver</a></li>
<li><a href="http://www.video2brain.com/en/videos-11943.htm">PHP, the big picture</a></li>
<li><a href="http://www.video2brain.com/en/videos-11965.htm">Using Loops for Repetitive Actions</a></li>
<li><a href="http://www.video2brain.com/en/videos-11987.htm">How PHP Sends Email</a></li>
</ul>
<p>Although one of the videos shows how to set up a PHP site in Dreamweaver, you do <em>not</em> need Dreamweaver to follow the course. It&#8217;s completely software-neutral and contains advice on choosing a suitable script editor, with suggestions for both free and paid-for programs.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2012/01/26/new-video-php-course-for-complete-beginners/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interesting two-for-one offer on video training</title>
		<link>http://foundationphp.com/blog/2011/12/23/interesting-two-for-one-offer-on-video-training/</link>
		<comments>http://foundationphp.com/blog/2011/12/23/interesting-two-for-one-offer-on-video-training/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 16:03:32 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=291</guid>
		<description><![CDATA[With the Christmas and year-end holiday season well and truly upon us, companies are all trying to outdo each other with special deals. My email inbox is certainly groaning with the onslaught of &#8220;buy now, never-to-be-repeated offers&#8221;. So, forgive me &#8230; <a href="http://foundationphp.com/blog/2011/12/23/interesting-two-for-one-offer-on-video-training/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>With the Christmas and year-end holiday season well and truly upon us, companies are all trying to outdo each other with special deals. My email inbox is certainly groaning with the onslaught of &#8220;buy now, never-to-be-repeated offers&#8221;. So, forgive me for bringing another to your attention—but this one has an interesting twist.</p>
<p>If you buy any <a href="http://video2brain.com/en/">video training (in English) from video2brain</a> before the end of December, you&#8217;ll get an activation code that allows you to share the same course(s) with a friend. What makes the offer so interesting is that it also applies to the new subscription service, which gives you access to more than 130 courses and 500+ hours of videos on web development and digital design.</p>
<p>As a video2brain author, I can offer you <a href="http://www.video2brain.com/en/subscriptions-promo?aid=263">a discount on the subscription price</a>. So, if you sign up for an annual standard subscription for $129 before 31 December, you&#8217;ll get an activation code (which needs to be used by 15 January 2012) for a friend. In effect, two of you can get access to the whole video library for a year for $64.50 each. With at least four new courses being added every month, it&#8217;s an incredible bargain. Splash out a bit more on a gold subscription to get access to the project files, or go the whole hog with a platinum subscription to use the videos offline.</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/12/23/interesting-two-for-one-offer-on-video-training/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New tutorial: send a link to a friend</title>
		<link>http://foundationphp.com/blog/2011/12/22/new-tutorial-send-a-link-to-a-friend/</link>
		<comments>http://foundationphp.com/blog/2011/12/22/new-tutorial-send-a-link-to-a-friend/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 19:48:51 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=288</guid>
		<description><![CDATA[I&#8217;ve just published a new tutorial for a script that sends a link to a friend. It&#8217;s a very simple script, but—as long as you have a basic knowledge of PHP—you should be able to adapt it to your own &#8230; <a href="http://foundationphp.com/blog/2011/12/22/new-tutorial-send-a-link-to-a-friend/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just published a new tutorial for a script that <a href="/tutorials/sendtofriend.php">sends a link to a friend</a>. It&#8217;s a very simple script, but—as long as you have a basic knowledge of PHP—you should be able to adapt it to your own needs. The tutorial explains how the code works, and gives instructions for those sections that you need to change. If you find the instructions difficult to follow, maybe it&#8217;s time to grab hold of <a href="/phpsolutions/"><cite>PHP Solutions, 2nd Edition</cite></a> and learn how to write PHP scripts.</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/12/22/new-tutorial-send-a-link-to-a-friend/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Great training resource for web designers and digital artists</title>
		<link>http://foundationphp.com/blog/2011/12/21/great-training-resource-for-web-designers-and-digital-artists/</link>
		<comments>http://foundationphp.com/blog/2011/12/21/great-training-resource-for-web-designers-and-digital-artists/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 16:32:51 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[AJAX/JavaScript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=282</guid>
		<description><![CDATA[I&#8217;m a great fan of learning from books—that&#8217;s why I written so many. But there are times when a book just won&#8217;t do. Seeing and hearing an expert show you how to do something often has much more impact. Several &#8230; <a href="http://foundationphp.com/blog/2011/12/21/great-training-resource-for-web-designers-and-digital-artists/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a great fan of learning from books—that&#8217;s why I written so many. But there are times when a book just won&#8217;t do. Seeing and hearing an expert show you how to do something often has much more impact. Several months ago, I took the plunge into making <a href="http://foundationphp.com/cs55lbv/index.php">a video course about HTML5, CSS3, and JavaScript</a>; and I&#8217;ve just finished recording a PHP course for beginners (it&#8217;s due out in the second half of January 2012). I recorded both courses for <a href="http://video2brain.com/en/">video2brain</a>, which has recently launched <a href="http://www.video2brain.com/en/subscriptions-promo?aid=263">a subscription service</a>.</p>
<p>Never heard of video2brain? It&#8217;s an Austrian company that has been providing video training in German, French, and Spanish for the past decade. It started creating courses in English in 2009, and now has more than 500 hours of English-language instruction on Photoshop, InDesign, Dreamweaver, and many other aspects of digital media. The videos have been created by some of the top names in their fields, including Rufus Deuchler, Tom Green, Angie Taylor, Todd Kopriva—not to mention me. The company has also created a large number of videos for Peachpit, one of the best known names in computer technology publishing. So, it&#8217;s no fly-by-night company.</p>
<p>As a video2brain author, I&#8217;m able to offer <a href="http://www.video2brain.com/en/subscriptions-promo?aid=263">a substantial discount</a> on the already competitive prices for the new subscription service. There are three levels of subscription:</p>
<ul>
<li><strong>Standard</strong>—$129 a year or $12.99 a month (normally $149/$14.99). This gives you unlimited access to all English courses streamed online.</li>
<li><strong>Gold</strong>—$179 a year or $17.99 a month (normally $199/$19.99). In addition to the courses, you also get access to all project files and PDF books.</li>
<li><strong>Platinum</strong>—$279 a year (normally $299). In addition to the the project files and PDF books, you can download the courses to view them offline.</li>
</ul>
<p>Students and teachers can purchase the academic version of the standard subscription for $99 a year.</p>
<p>If you subscribe during the introductory period, video2brain says it will lock the subscription price for three years. And as the collection of courses grows, you&#8217;ll get immediate access to all new titles. It&#8217;s planned to add at least four new courses each month. So, if you&#8217;re looking to brush up your digital skills and keep abreast of the latest developments, you can do so for as little as 35 cents a day. Many of the courses have sample videos that you can view free of charge, so you can judge the quality for yourself before committing your hard-earned cash.</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/12/21/great-training-resource-for-web-designers-and-digital-artists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Full Frontal Conference: A day out with JavaScript</title>
		<link>http://foundationphp.com/blog/2011/11/30/full-frontal-conference-a-day-out-with-javascript/</link>
		<comments>http://foundationphp.com/blog/2011/11/30/full-frontal-conference-a-day-out-with-javascript/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 15:52:39 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[AJAX/JavaScript]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=278</guid>
		<description><![CDATA[Back in May, I wrote a two-part tutorial for beginners about JavaScript and jQuery, in which I said that &#8220;along with HTML and CSS, knowledge of JavaScript is a key skill that anyone involved in building websites should acquire&#8221;. I &#8230; <a href="http://foundationphp.com/blog/2011/11/30/full-frontal-conference-a-day-out-with-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Back in May, I wrote a two-part tutorial for beginners about <a href="http://www.adobe.com/devnet/dreamweaver/articles/introduction-to-javascript.html">JavaScript</a> and <a href="http://www.adobe.com/devnet/dreamweaver/articles/introduction-to-jquery.html">jQuery</a>, in which I said that &#8220;along with HTML and CSS, knowledge of JavaScript is a key skill that anyone involved in building websites should acquire&#8221;. I haven&#8217;t always been of that opinion, but the more I learn about HTML5, the more convinced I am that without JavaScript skills, you can no longer really call yourself a web professional. That goes for designers as well as developers.</p>
<p>I have to admit that I&#8217;m far from being an expert in JavaScript. I&#8217;ve used it for about eight years, but it&#8217;s never come as easy to me as PHP. So, earlier this month, I headed down to Brighton for the third <a href="http://2011.full-frontal.org/">Full Frontal JavaScript Conference</a> organized by JavaScript whiz kid, <a href="http://twitter.com/#!/rem">Remy Sharp</a>. I had attended <a href="http://leftlogic.com/training">Remy&#8217;s Node.js workshop</a> in London in May, and realized he was not only knowledgeable, but also well organized. That gave me high hopes for the conference, although I was a little concerned about immersing myself for a full day in a series of talks about different aspects of JavaScript. Unlike a dedicated workshop, you can&#8217;t raise your hand and get the speaker to go over a point you didn&#8217;t quite understand. Well, you could, if you wanted to make a fool of yourself in front of 300 people, most of whom were likely to be pretty hot on JavaScript.</p>
<p>I needn&#8217;t have worried. Remy had invited an excellent mix of speakers, and each talk was limited to 40 minutes. As a result, even the technical presentations by Jeremy Ashkenas (about <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>) and Marijn Haverbeke (about code editing in the browser with <a href="http://codemirror.net/">Code Mirror</a>) served more to inspire than to fill me with dread. In fact, that&#8217;s the main thing I took away from the conference—inspiration at the incredible ways you can use JavaScript. Glenn Jones demonstrated some really cool uses of the new drag and drop API in HTML5. Nicholas Zakas&#8217;s talk was more theoretical, emphasizing the value of building applications in loose coupled modules—something that applies to most programming languages.</p>
<p>Two of the most inspiring talks came from Brendan Dawes and Marcin Wichary. Brendan presented a witty tour-de-force that somehow got from his obsession with pencils to a fascinating series of demonstrations of visual navigation systems that encourage exploration. With a background in Flash development, Brendan&#8217;s showing that—with skill and imagination—you can do visually amazing things with JavaScript. Equally amazing things are done by Marcin Wichary, who unveiled some of the secrets of Google doodles. What really impressed me was the length he goes to in order to ensure that even users of older browsers get a similar, if not equal experience.</p>
<p>JavaScript is becoming easier thanks to libraries such as jQuery and Microsoft&#8217;s decision to follow the World Wide Web Consortium&#8217;s Document Object Model (W3C DOM) since Internet Explorer 8. The HTML5-related APIs are also adding lots of new functionality to browsers, but there&#8217;s a danger of slipping back to the days of animated GIFs if designers/developers add new bells and whistles to their sites &#8220;just because they can&#8221;. So, Phil Hawksworth&#8217;s witty presentation was timely, warning against shizzle for the sake of shizzle.</p>
<p>All in all, a good day out. Any regrets? Yes, Brighton is only an hour&#8217;s train ride from London, so I decided to make it a day trip. But I had to get up so early to make it to the venue in time that I was dog tired and began nodding off in the afternoon. I was also too tired to go to the after-conference party—and missed all the free beer! Next time, I&#8217;ll book myself into a local hotel.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/11/30/full-frontal-conference-a-day-out-with-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dreamweaver user group for London and web standards</title>
		<link>http://foundationphp.com/blog/2011/11/25/dreamweaver-user-group-for-london-and-web-standards/</link>
		<comments>http://foundationphp.com/blog/2011/11/25/dreamweaver-user-group-for-london-and-web-standards/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 18:46:28 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[Dreamweaver]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=268</guid>
		<description><![CDATA[Last night, I attended a meeting of The London Dreamweaver Meetup Group. It was a quiet affair. Although six people had said they would attend, only three of us turned up—Nigel, the previous organizer, Reynold Chung, the new organizer, and &#8230; <a href="http://foundationphp.com/blog/2011/11/25/dreamweaver-user-group-for-london-and-web-standards/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last night, I attended a meeting of <a href="http://www.meetup.com/The-London-Dreamweaver-Meetup-Group/">The London Dreamweaver Meetup Group</a>. It was a quiet affair. Although six people had said they would attend, only three of us turned up—Nigel, the previous organizer, Reynold Chung, the new organizer, and myself. The group was launched in 2009, but has met only a few times, and attendance has rarely broken into double figures. So, the challenge is to breathe new life into the group and attract members who share an interest in using Dreamweaver, regardless of whether it&#8217;s part of their job or they&#8217;re just creating websites in their spare time.</p>
<p><del>To get the group going, I have agreed to give a talk on Thursday 26 January demonstrating how to create a simple mobile website using <a href="http://jquerymobile.com/">jQuery Mobile</a>, which is integrated in Dreamweaver CS5.5. The time and location have yet to be decided, but we&#8217;re trying to fix somewhere in easy reach of central London.</del></p>
<p>Reynold has put a lot of effort into planning the relaunch of the Dreamweaver group, so I&#8217;ll leave it up to him to announce the details of what he&#8217;s got in mind. In the meantime, I&#8217;d like to share some thoughts of my own about Dreamweaver&#8217;s reputation and how it can be improved.</p>
<h2>Does Dreamweaver produce bad code?</h2>
<p>I&#8217;ve been using Dreamweaver on an almost daily basis for about ten years, so I know the program pretty much inside out. Even before I started writing books about Dreamweaver in 2003, I always updated to the latest version as soon as it was released. As a result, I also know how the program has developed over the years. Yet whenever I meet professional web developers in Britain, they&#8217;re almost unanimous in their hostility towards Dreamweaver. Time and again I&#8217;ve been told that no serious professional would consider using Dreamweaver because it produces such terrible code. However, when I ask how long ago it was since they last used Dreamweaver, the answer is usually &#8220;ten years ago&#8221;.</p>
<p>How is it possible to judge the quality of any product—let alone a piece of software—based on impressions of it ten years ago? I freely admit that the quality of the code created by Dreamweaver all those years ago was far from perfect. Back in 2001, the <a href="http://www.webstandards.org/">Web Standards Project (WaSP)</a> set up the <a href="http://www.webstandards.org/action/dwtf/">Dreamweaver Task Force</a> (later renamed the Adobe Task Force) under the leadership of <a href="http://www.webstandards.org/about/members/randrew/">Rachel Andrew</a> and <a href="http://www.webstandards.org/about/members/drewm/">Drew McLellan</a>, working together with <a href="http://zeldman.com/">Jeffrey &#8220;Mr Web Standards&#8221; Zeldman</a>. The task force had two basic aims:</p>
<ol>
<li>Improve the standards compliance and accessibility of web pages produced with Dreamweaver.</li>
<li>Raise awareness of web standards among the Dreamweaver community.</li>
</ol>
<p>When Dreamweaver MX was released in 2002, <a href="http://www.webstandards.org/action/dwtf/mxassessed/">the WaSP task force released its findings</a>, which concluded—among other things—that &#8220;Dreamweaver produces valid markup &#8216;out of the box&#8217;&#8221;, and that &#8220;the most important thing about this release is that it recognizes the importance of web standards and tries to promote them within the constraints placed on it.&#8221; So, even as far back as 2002, WaSP acknowledged Dreamweaver&#8217;s support for web standards and the quality of the code it produces. But what were the constraints the task force referred to? The main problem was that Dreamweaver MX still used <code>&lt;font&gt;</code> tags as the default for styling text—although the user could switch to CSS. That changed with the following release, MX 2004, when CSS became the default. And since Dreamweaver CS4 (released in 2008), the only way to use <code>&lt;font&gt;</code> tags has been to insert them manually.</p>
<p>Even so, some horrors remained inside Dreamweaver, the worst of which was Layout Mode. This was aimed at visual designers with an aversion for code, but it created a tangled mass of nested tables that collapsed like a house of cards if you tried to alter the design. As a result of behind-the-scenes lobbying, Layout Mode was deliberately hidden in Dreamweaver CS3, before being removed completely from Dreamweaver CS4. At the same time, all the sample pages that used nested tables and deprecated markup were replaced by standards-compliant CSS layouts designed by WaSP evangelist, <a href="http://www.w3conversions.com/about.html">Stephanie Sullivan (now Rewis)</a>. Another monstrosity that bit the dust in Dreamweaver CS5 was the Web Photo Album. Many of the outdated JavaScript &#8220;behaviors&#8221; have also been quietly swept away.</p>
<p>As well as removing the bad aspects of the program, the Dreamweaver engineers have added new features—some of them highly successful, others not quite so good. One that I would put in the latter category is Spry, Adobe&#8217;s attempt at creating an Ajax library. The idea behind Spry was good, but lack of investment, combined with the runaway success of <a href="http://jquery.com/">jQuery</a>, meant that it never fulfilled its potential. Although Spry widgets still live on in Dreamweaver, Adobe has focused its efforts on jQuery—not only incorporating code hinting for it, but also becoming a major corporate sponsor and donating the full-time efforts of several engineers. Among the really positive improvements in Dreamweaver, I would cite syntax checking and code introspection for both JavaScript and PHP, plus the dynamic incorporation of full documentation for PHP 5.3. Dreamweaver&#8217;s handling of CSS3 media queries is also a great timesaver, keeping its features in tune with web standards as they evolve.</p>
<p>At the recent HTML5 Live conference in London, <a href="http://www.brucelawson.co.uk/">Opera evangelist Bruce Lawson</a> jokingly asked me when Dreamweaver was going to stop writing crap code. I&#8217;ve known Bruce for some time, and realize that it was meant as a gentle leg-pull, but such thoughts are a decade out of date. Many web professionals use <a href="http://macromates.com/">TextMate</a> or <a href="http://panic.com/coda/">Coda</a> to build their websites, but it isn&#8217;t the software they use that makes them professionals. It&#8217;s their knowledge of HTML, CSS, and other web technologies. In the hands of an unskilled person, TextMate and Coda will produce rubbish. If you know what you&#8217;re doing with Dreamweaver, you can produce just as clean code—and possibly a lot quicker.</p>
<h2>Raising awareness of web standards in the Dreamweaver community</h2>
<p>I&#8217;m not a member of WaSP, but I&#8217;m passionate about web standards. Getting a Dreamweaver group off the ground is going to take a lot of effort, but I hope that it attracts a wide range of people who use Dreamweaver or are simply interested in web development. Although it will be important to show people the mechanics of using the program, I would like the topics discussed to cover web development and standards in general. When I teach Dreamweaver, I tell students to forget about the mechanics and to concentrate on understanding the markup that is being generated. Once you know HTML and CSS, using Dreamweaver falls easily into place.</p>
<p>Of course, some people might ask why London needs another group devoted to web development and web standards. After all, <a href="http://www.meetup.com/londonweb/">London Web</a> and <a href="http://www.londonwebstandards.org/">London Web Standards (LWS)</a> are both well established and thriving. My hope is that the Dreamweaver Meetup Group can play a complementary rather than a rival role. Both London Web and LWS tend to gather large crowds, which could be intimidating for someone who is just starting out in web development or who has responsibility for maintaining a website as part of wider duties. I also hope that by showing people how to create standards-compliant sites in Dreamweaver, we can remove some of the unjustified prejudice against the program. Dreamweaver isn&#8217;t perfect, but nor is it the horror that some people portray.</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/11/25/dreamweaver-user-group-for-london-and-web-standards/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>An odd turn-up for the book</title>
		<link>http://foundationphp.com/blog/2011/10/18/an-odd-turn-up-for-the-book/</link>
		<comments>http://foundationphp.com/blog/2011/10/18/an-odd-turn-up-for-the-book/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 17:57:01 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[AJAX/JavaScript]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dreamweaver]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=262</guid>
		<description><![CDATA[Yesterday, I received an invitation to review a new book about Dreamweaver. Nothing terribly remarkable about that. After all, I&#8217;m well known in the Dreamweaver community and I recently published a review of Peter Gasston&#8217;s excellent The Book of CSS3. &#8230; <a href="http://foundationphp.com/blog/2011/10/18/an-odd-turn-up-for-the-book/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I received an invitation to review a new book about <a href="http://www.adobe.com/products/dreamweaver/">Dreamweaver</a>. Nothing terribly remarkable about that. After all, I&#8217;m well known in the Dreamweaver community and I recently published a <a href="http://foundationphp.com/blog/2011/08/23/book-review-the-book-of-css3-by-peter-gasston/">review of Peter Gasston&#8217;s excellent <cite>The Book of CSS3</cite></a>. What took me back was the title of the book I was being asked to review: <cite>Dreamweaver CS5.5 Mobile and Web Development with HTML5, CSS3, and jQuery</cite>. It&#8217;s almost word-for-word the same as the title of the book I published in June: <a href="/dwmobile/"><cite>Adobe Dreamweaver CS5.5 Studio Techniques: Designing and Developing for Mobile with jQuery, HTML5, and CSS3</cite></a>.</p>
<p>The invitation to review the rival book came from the marketing department of <a href="http://www.packtpub.com/">Packt</a>, the company that published it. I sent a polite reply saying that I didn&#8217;t think it would be appropriate for me to review a book that had an almost identical title to mine. I thought that would be the end of it. However, I received an email from Packt saying they knew I had written a book with an identical title, and that&#8217;s why I would be the perfect person to write an honest review.</p>
<p>At first I wasn&#8217;t sure whether to be flattered or horrified. It&#8217;s nice to think that I have such a great reputation for fairness that I would write a glowing review of a book that&#8217;s in direct competition with mine. Of course, there&#8217;s always the temptation to savage the book in public, but I would never want to do that to a fellow author. I know how much a bad review hurts. Since my book was published three months earlier (and was available even before that as Rough Cuts in the <a href="http://my.safaribooksonline.com/">Safari Online Library</a>), Packt can have no excuse for not knowing the title of its rival book was almost identical. I&#8217;ve no idea if the title was chosen as a deliberate spoiler, but asking me to review Packt&#8217;s book is rather like asking Coca Cola to endorse Pepsi&#8217;s latest offering.</p>
<p>I haven&#8217;t read the Packt book, which is written by David Karlins, an established and respected author. What I have read is David&#8217;s <a href="http://www.amazon.com/Thoughts-from-the-author/forum/Fx3IZO2UFJY7FCI/Tx28LXNLE6NW2B1/1/ref=cm_cd_et_md_pl?_encoding=UTF8&amp;cdMsgNo=1&amp;asin=1849691584&amp;cdSort=oldest&amp;cdMsgID=Mx24YLZWJI6796Q#Mx24YLZWJI6796Q">&#8220;Thoughts from the author&#8221;</a> on Amazon.com. In it, he says you don&#8217;t need to know HTML, CSS, or JavaScript. In fact, you don&#8217;t even need to know what they are. That immediately tells me that our books take completely different approaches to the same subject. I think it&#8217;s a pity his new publisher has decided to muddy the waters with the confusing titles.</p>
<p>I firmly believe that to build a website, you need to have at least a basic understanding of the underlying technologies. Website development is becoming increasingly complex. Dreamweaver helps speed up development through dialog boxes, prepackaged widgets, and code hints; but if you rely solely on point-and-click or copy-and-paste techniques, you&#8217;ll remain severely limited in what you can achieve. My book is aimed at readers who aren&#8217;t afraid to dig into a bit of code. In fact, you&#8217;ll need to do so if you want to access features such as geolocation and web storage on mobile devices. I guide you through the code, explaining what it does so that you can adapt it to your own needs.</p>
<p>So, if you&#8217;re looking for a book on developing for mobile with Dreawmeaver CS5.5 with jQuery, HTML5, and CSS, make sure you choose the one that&#8217;s right for you. Don&#8217;t be confused by the titles. Oh, and as small bonus, my book is in full colour, even though it&#8217;s the same length and the same cover price ($39.99) as the one published by Packt.</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/10/18/an-odd-turn-up-for-the-book/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Using num_rows with a MySQLi prepared statement</title>
		<link>http://foundationphp.com/blog/2011/09/24/using-num_rows-with-a-mysqli-prepared-statement/</link>
		<comments>http://foundationphp.com/blog/2011/09/24/using-num_rows-with-a-mysqli-prepared-statement/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 12:48:02 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=259</guid>
		<description><![CDATA[While refactoring some code that I had written about six years ago, I was puzzled by the MySQLi num_rows property constantly returning 0, even though I knew there were matching records in the database. It turns out that the problem &#8230; <a href="http://foundationphp.com/blog/2011/09/24/using-num_rows-with-a-mysqli-prepared-statement/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While refactoring some code that I had written about six years ago, I was puzzled by the MySQLi <code>num_rows</code> property constantly returning 0, even though I knew there were matching records in the database. It turns out that the problem was caused by using a prepared statement, but not storing the result before attempting to access <code>num_rows</code>. I hadn&#8217;t bothered to store the result because all I wanted to know was if there were any matching records. This is the code I was using:</p>
<p><code>$stmt = $db->stmt_init();<br />
$sql = 'SELECT username FROM users WHERE username = ?';<br />
$stmt->prepare($sql);<br />
$stmt->bind_param('s', $_POST['username']);<br />
$stmt->execute();<br />
$numrows = $stmt->num_rows;</code></p>
<p>The code worked without error, so it wasn&#8217;t immediately obvious why <code>$numrows</code> was always 0. So, I checked the <a href="http://docs.php.net/manual/en/mysqli-stmt.num-rows.php">PHP documentation for <code>mysqli_stmt::num_rows</code></a>. The description is rather ambiguous in that it refers only to the need to store the result when using the procedural style, but the object-oriented example makes it clear that you need to call the <code>store_result()</code> method before accessing the <code>num_rows</code> property. When I changed my code like this, I got the expected result:</p>
<p><code>$stmt = $db->stmt_init();<br />
$sql = 'SELECT username FROM users WHERE username = ?';<br />
$stmt->prepare($sql);<br />
$stmt->bind_param('s', $_POST['username']);<br />
$stmt->execute();<br />
// store result of prepared statement<br />
$stmt->store_result();<br />
$numrows = $stmt->num_rows;</code></p>
<p>At first, it seemed counterintuitive to store a result that I was going to throw away, but that&#8217;s how <code>num_rows</code> works with a MySQLi prepared statement. Thinking about it a bit more, it makes sense because if you use the MySQLi <code>query()</code> method instead of a prepared statement, you store the result in a <code>MySQLi_Result</code> object and get the number of rows from the result like this:</p>
<p><code>$sql = 'SELECT user_id, name, username FROM users';<br />
$result = $db->query($sql);<br />
$numrows = $result->num_rows;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/09/24/using-num_rows-with-a-mysqli-prepared-statement/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What&#8217;s the difference between parameters and arguments?</title>
		<link>http://foundationphp.com/blog/2011/09/24/whats-the-difference-between-parameters-and-arguments/</link>
		<comments>http://foundationphp.com/blog/2011/09/24/whats-the-difference-between-parameters-and-arguments/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 11:20:20 +0000</pubDate>
		<dc:creator>David Powers</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://foundationphp.com/blog/?p=254</guid>
		<description><![CDATA[When writing books aimed at beginners, there&#8217;s a difficult line to tread between giving too much and too little information. Too much information overloads the mind, running the risk of losing the reader&#8217;s enthusiasm for the subject. Too little information &#8230; <a href="http://foundationphp.com/blog/2011/09/24/whats-the-difference-between-parameters-and-arguments/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When writing books aimed at beginners, there&#8217;s a difficult line to tread between giving too much and too little information. Too much information overloads the mind, running the risk of losing the reader&#8217;s enthusiasm for the subject. Too little information leaves questions unanswered.</p>
<p>Chapter 3 of my <a href="/phpsolutions/"><cite>PHP Solutions, 2nd Edition</cite></a> makes for pretty heavy reading. So much so that I recommend stopping halfway through on the first pass. That&#8217;s why I skirted around the difference between parameters and arguments on page 43. But I&#8217;ve piqued the interest of <a href="http://www.meetup.com/bostonphp/members/24224922/">Tom Flis</a>, one of the participants in <a href="http://www.meetup.com/bostonphp/">Boston PHP</a>&#8216;s self-study group <a href="http://www.meetup.com/bostonphp/events/28906641/">PHP Percolate</a>. He&#8217;s asked what&#8217;s the technical difference between the two words, so here goes. It&#8217;s actually quite simple.</p>
<p>When you define a function, the variables that represent the values that will be passed to it for processing are called <em>parameters</em>. For example, the following function definition has one parameter called <code>$number</code>:</p>
<p><code>function doubleIt($number) {<br />
    return $number *= 2;<br />
}</code></p>
<p>However, when you use a function, the value you pass to it is called an <em>argument</em>. So, in the following case, <code>$price</code> is passed as the argument to <code>doubleIt()</code>:</p>
<p><code>$price = 50;<br />
$inflated_price = doubleIt($price);  // 100</code></p>
<p>It&#8217;s a pretty subtle difference. A parameter contains no value; it&#8217;s simply a placeholder for the value that will be passed to the function. An argument contains a value (even if it&#8217;s <code>null</code> or an empty string) that the function processes to produce a result. Because the meanings are so similar, many developers use the words interchangeably or always refer to arguments.</p>
<p>So, now you know.</p>
]]></content:encoded>
			<wfw:commentRss>http://foundationphp.com/blog/2011/09/24/whats-the-difference-between-parameters-and-arguments/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

