<?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>Webmonkey &#187; Webmonkey Staff</title>
    <atom:link href="http://www.webmonkey.com/author/pstatz/feed/" rel="self" type="application/rss+xml" />
    <link>http://www.webmonkey.com</link>
    <description>The Web Developer&#039;s Resource</description>
    <lastBuildDate>Fri, 05 Apr 2013 20:20:46 +0000</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>http://wordpress.org/?v=3.4.2</generator>
    
    <item>
        <title>Using the New Features in Adobe BrowserLab</title>
        <link>http://www.webmonkey.com/2010/10/using-the-new-features-in-adobe-browserlab/</link>
        <comments>http://www.webmonkey.com/2010/10/using-the-new-features-in-adobe-browserlab/#comments</comments>
        <pubDate>Tue, 12 Oct 2010 00:09:26 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/?p=48930</guid>
        		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[BrowserLab]]></category>
		<category><![CDATA[Tutorials]]></category>
            <enclosure url="http://www.webmonkey.com/wp-content/uploads/2010/10/LocalBrowserLab.jpg" type="image/jpeg" length="48000" />
                    <description><![CDATA[<div class="rss_thumbnail"><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/LocalBrowserLab.jpg" alt="Using the New Features in Adobe BrowserLab" /></div>The following tutorial comes to us courtesy of Adobe. The company introduced some new enhancements to its BrowserLab service last week to improve its cross-browser testing abilities, and this is an overview of how to use some of these enhancements. We told you about BrowserLab here on Webmonkey when it first showed up as part [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled -->
<p><a href="http://www.webmonkey.com/wp-content/uploads/2010/10/Picture-8.png"><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/Picture-8.png" alt="BrowserLab" title="Picture 8" width="152" height="159" class="alignnone size-full wp-image-48931" /></a>The following tutorial comes to us courtesy of Adobe. The company introduced some new enhancements to its BrowserLab service last week to improve its cross-browser testing abilities, and this is an overview of how to use some of these enhancements.</p>
<p>We told you about <a href="https://browserlab.adobe.com/">BrowserLab</a> here on Webmonkey when it first showed up as <a href="http://www.webmonkey.com/2010/04/dreamweaver-cs5-first-look-more-wordpressy-more-firebuggy/">part of Dreamweaver CS5</a> in April. It&#8217;s a hosted service that lets web developers preview their work across multiple browsers and operating systems in a single environment. Since it&#8217;s a hosted service, Adobe can update the backend with the latest code from all the popular browser engines as they&#8217;re updated in the real world.</p>
<p>It integrates fully with Creative Suite 5, so if you&#8217;re using Dreamweaver, you can launch BrowserLab previews at any point in your workflow and test your live code against all the major browsers.</p>
<p>Adobe may eventually turn BrowserLab into a paid service (the cost <a href="http://www.adobe.com/products/creativesuite/cslive/faq/?tree1=0#cslive_access">will likely be</a> between $200-300 per year), but if you sign up for access before April 30, 2011, you can secure an account for a full year at no charge. All you need is an Adobe ID login, which is free.</p>
<p>The new features of the include a BrowserLab add-on for Firebug and the ability to smart-align screenshots. There are also some further integrations with Creative Suite 5. To walk us through using these new features, Webmonkey has collaborated with Scott Fegette, a technical product manager for Dreamweaver and BrowserLab.</p>
<p>So, take it away, Scott.<br />
<span id="more-48930"></span></p>
<h3>Testing Pages With the BrowserLab Add-On for Firebug</h3>
<p>The ability to use BrowserLab in any Flash-enabled browser has always been one of BrowserLab&#8217;s benefits, but the only way you could get to a screenshot of anything aside from the initial page as it loaded (like interactive menus/states/content/etc.) was to use Dreamweaver&#8217;s BrowserLab integration to send the current state of your page –- with edits and interactive elements -– directly to BrowserLab.</p>
<p>Using the new <a href="http://www.adobe.com/go/browserlabforfirebug">BrowserLab for Firebug</a> (alongside the magnificent <a href="http://getfirebug.com/">Firebug</a> plug-in itself) within Firefox allows you to send the current state of your local page in Firebug – including design and CSS tweaks you may have made directly in Firebug – right up to BrowserLab and see how that handy hack you just added works across all the browsers.</p>
<p>This new Firefox plug-in will help you be effective with BrowserLab whether you&#8217;re in Dreamweaver or Firefox, and make the smooth BrowserLab experience more attainable within any workflow you may have established for yourself.</p>
<p>Once it&#8217;s installed, right-click the BrowserLab icon on the lower right corner of your browser, or right-click the page you&#8217;re viewing. You can also use the &#8220;Tools&#8221; menu.</p>
<p><a href="http://www.webmonkey.com/wp-content/uploads/2010/10/FirebugBrowserLab.jpg"><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/FirebugBrowserLab.jpg" alt="" title="FirebugBrowserLab" width="580" height="538" class="alignnone size-full wp-image-48932" /></a></p>
<p>Here&#8217;s a video that provides a more in-depth look at the Firebug integration:</p>
<p><object width="425" height="256"><param name="movie" value="http://images.tv.adobe.com/swf/player.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="FlashVars" value="fileID=7935&#038;context=64&#038;embeded=true&#038;environment=production"></param><embed src="http://images.tv.adobe.com/swf/player.swf" flashvars="fileID=7935&#038;context=64&#038;embeded=true&#038;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="256"></embed></object><br />
<br clear="all" /></p>
<h3>&#8220;Smart Align&#8221; your screenshots</h3>
<p>The new Smart Align feature lets you specify an alignment point on one screen shot, and then align all of your other screen shots to that point.</p>
<p>You&#8217;ve had the ability to custom-register your screenshots in BrowserLab for a while now. You just drag out from the upper left corner of your rulers in 2-up view and adjust for page-level offsets directly.</p>
<p>The idea was to let you be able to adjust for page-level misalignments and focus on a particular area of your page or application accurately, particularly within Onion-Skin View, where a page-level offset will ruin any changes of a &#8220;clean&#8221; view of your pages together. But in practice, the workflow was clunky, hard to master and ultimately inefficient. This feature has been redesigned, here&#8217;s the new workflow.</p>
<p>Click the Alignment icon. You&#8217;ll immediately get a &#8220;virtual loupe&#8221; you can drag across the current screenshot and find the area you&#8217;d like to align everything to. Finding a good, clear area like a corner or recognizable markup element is best -– particularly one you know will be reasonably consistent across browsers. </p>
<p><a href="http://www.webmonkey.com/wp-content/uploads/2010/10/SmartAlignBrowserLab.jpg"><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/SmartAlignBrowserLab.jpg" alt="" title="SmartAlignBrowserLab" width="580" height="268" class="alignnone size-full wp-image-48933" /></a></p>
<p>Then, either choose to align everything to that point, or reset your alignment (i.e. your zero point) to that point. By choosing to align all, you&#8217;ll get a quick status window that lets you know the progress (this does take some horsepower), and the accuracy of the matches BrowserLab finds.</p>
<p>And once it&#8217;s completed, you should be able to flip into Onion-Skin View and see that particular area of your page perfectly (or very close to perfectly) aligned with the other screenshots. This truly allows you to adjust for global inefficiencies and really use BrowserLab for some minute, fine-grained detail work.</p>
<h3>BrowserLab goes local</h3>
<p>I&#8217;d also like to talk about a feature Adobe launched in May that enhances BrowserLab&#8217;s integration with Dreamweaver. When testing content in Dreamweaver&#8217;s Live View using BrowserLab&#8217;s Local setting, BrowserLab &#8220;sees&#8221; what Live View sees. This lets you test content that you&#8217;re working on privately without publishing it to the internet, such as sites on your local web server. You can also test local content served by intranet web servers and content management systems like WordPress, Drupal or Joomla.</p>
<p>This works by securely pushing content to the BrowserLab service and ultimately delivering that content into the list of available browsers. BrowserLab leaves you in full control of what content is allowed to leave your system via permission settings, which lets you maintain an allow/deny list of URLs.</p>
<p>Also, when content is requested by a page you&#8217;re testing, BrowserLab references that list before pushing that content to the BrowserLab servers. If a URL isn&#8217;t in the allow/deny list, you&#8217;ll be prompted before uploading the content. The allow/deny list works with partial URLs too, meaning that the first portion of a URL must match the entire URL stored in the list.</p>
<p>You can set your file location preference and adjust permission settings in Dreamweaver.</p>
<p><a href="http://www.webmonkey.com/wp-content/uploads/2010/10/LocalBrowserLab.jpg"><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/LocalBrowserLab.jpg" alt="" title="LocalBrowserLab" width="580" height="470" class="alignnone size-full wp-image-48934" /></a></p>
<p>If you&#8217;re new to to BrowserLab, <a href="http://www.adobe.com/go/browserlab">try it out for free</a>. As a part of the <a href="http://www.adobe.com/go/cslive">Adobe CS Live</a> family of online services, you&#8217;ll receive 12 months of complimentary access.</p>
<p><em>This tutorial was authored by Scott Fegette, a technical product manager in Adobe’s Creative Suite Web business. He manages Adobe Dreamweaver and BrowserLab.</em></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/10/using-the-new-features-in-adobe-browserlab/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Ajax for Beginners</title>
        <link>http://www.webmonkey.com/2010/02/ajax_for_beginners/</link>
        <comments>http://www.webmonkey.com/2010/02/ajax_for_beginners/#comments</comments>
        <pubDate>Wed, 17 Feb 2010 01:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=775</guid>
        		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[JavaScript has had the XMLHttpRequest object for almost a decade now, but it really only started getting wide attention in 2004. All this attention was mostly due to some showoff web applications that made every developer who saw them think, &#8220;I want my site to do that!&#8221; But it also has to do with the [...]]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --></p><p>JavaScript has had the XMLHttpRequest object for almost a decade now, but it really only started getting wide attention in 2004. All this attention was mostly due to some showoff web applications that made every developer who saw them think, &#8220;I want my site to do that!&#8221; But it also has to do with the spiffy, spiffy name given to it by the folks at AdaptivePath, who named this asynchronized application <a href="http://www.adaptivepath.com/publications/essays/archives/000385.php" class="external text" title="http://www.adaptivepath.com/publications/essays/archives/000385.php" rel="nofollow">Ajax</a>. Maybe you&#8217;ve heard of it?

</p><p>A few high-profile Google applications in particular made a splash with Ajax: <a href="http://maps.google.com/" class="external text" title="http://maps.google.com/" rel="nofollow">Maps</a> and <a href="http://gmail.google.com/gmail" class="external text" title="http://gmail.google.com/gmail" rel="nofollow">Gmail</a> were first. It also powers some of the core functionality in the user interface of the ever-so-popular photo sharing site <a href="http://www.flickr.com" class="external text" title="http://www.flickr.com" rel="nofollow">Flickr</a>. By now, Ajax has become integral to the fabric of the web, especially in the era of real-time applications like <a href="http://www.twitter.com">Twitter</a>, <a href="http://www.google.com/buzz">Buzz</a> and <a href="http://www.google.com/wave">Wave</a> (all of which use Ajax extensively in their webapp front ends, for the record). Ajax may also lay claim to being the first JavaScript object with its own <a href="http://www.ajaxian.com/" class="external text" title="http://www.ajaxian.com/" rel="nofollow">fan website</a>. Date.com doesn&#8217;t count, although I did have a scintillating chat with a lady there once about the getTimeZoneoffset method.



</p><span id="more-775"></span><p><br />

</p>

<a name="What_is_Ajax.3F"></a><h3> <span class="mw-headline">What is Ajax?</span></h3>

<p>So what is this fancy object that everybody wants a piece of? In brief, it&#8217;s a solution to one of the big annoyances of web interfaces. Generally, the user inputs some data or makes a choice, and clicks a button that sends the data to the server. The server takes a look at the data and sends back a whole new web page, which is loaded into the browser. Reloading a page every time you want to do something is annoying, disjunctive and time-consuming for the user. XMLHttpRequest moves that browser-server interaction to behind the scenes, so the user can just keep on playing with the same page, even while elements on the page are talking to the server! Go take a look at <a href="http://www.google.com/webhp?complete=1" class="external text" title="http://www.google.com/webhp?complete=1" rel="nofollow">Google Suggest</a> if I&#8217;ve lost you &#8212; it&#8217;s a nice, eloquent example of this.

</p><p>JavaScript has always been able to sneakily trigger a server-side script without anything happening in the browser by using a few classic tricks. This one, for example:<tt>onSubmit='runascript = new Image(); runascript.src="<a href="http://www.wired.com/images/archiveyscript.php" class="external free" title="http://www.wired.com/images/archiveyscript.php" rel="nofollow">http://www.wired.com/images/archiveyscript.php</a>?" + this.value'</tt>. That sort of chicanery is good, maybe, for caching form data to a file on the server, but it doesn&#8217;t return any information to the JavaScript that calls it, so its usefulness is limited. Ajax, on the other hand, can get a full parcel of data back from the script it calls. Hence the &#8220;XML&#8221; part of the name  &#8211;  which really is just there for looks, kind of like the &#8220;Java&#8221; part of JavaScript, because the returned data can be plain text or whatever you like, if XML is overkill or just not your cup of tea.

</p><p>This opens up millions of exciting possibilities. Every form submission, every JavaScript event, and heaven knows what else, can now interact with server-side databases and processing power. Data retrieval, password authentication, image generation &#8211;  you name it, Ajax can trigger it.

</p>

<a name="Making_Your_Own"></a><h3> <span class="mw-headline">Making Your Own</span></h3>



<p>The potential of Ajax-enhanced web apps is limited only by your imagination &#8211;  and by browser support. Mozilla-based browsers can do it, and Safari, and newer versions of Explorer, and Opera 8 but not Opera 7. It&#8217;s best to incorporate a fallback way of doing things for users who aren&#8217;t as cutting edge as you&#8217;d like them to be. Also, Explorer does things somewhat differently (of course) from all the other browsers, so it&#8217;s necessary to fork the code to account for the irritating little 80-odd percent of the population who use IE.

</p><p>Let&#8217;s build a simple application that accepts input from the user, passes it to some PHP on the server that checks it against a database, and returns the result to the browser. It comes in three parts. First, we need an HTML form. This you&#8217;ve seen before:

</p><p><br />

</p>

 <pre class="brush: js">&lt;html&gt;

 &lt;head&gt;

 &lt;title&gt;Report&lt;/title&gt;

 &lt;script type='text/javascript' src='xhr.js'&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;form action="fallbackpage.php" method="post"&gt;



 &lt;p&gt;Welcome, student. Please enter your essay here:&lt;textarea name="essay" id="essay"&gt;

 &lt;/textarea&gt; &lt;input type="submit" name="submit" value="Submit" onClick="return

 grade(this.form.essay.value);"&gt;

 &lt;/p&gt;

 &lt;/form&gt;

 &lt;/body&gt;



 &lt;/html&gt;

</pre>

<p><br />

Note that, for users without support for our script (named xhr.js), the form will just submit to the fallback page at fallbackpage.php.

</p><p>Next comes the JavaScript. This is the exciting part, so we&#8217;ll take it slow.

</p>

 <pre class="brush: js"> function grade(essay) {

 </pre>

<p>First, we initialize the object. We have to do it two ways, for different browsers.

</p><p><br />

</p>

 <pre class="brush: js">    // Mozilla version

    if (window.XMLHttpRequest) {

        xhr = new XMLHttpRequest();

    }

    // IE version

    else if (window.ActiveXObject) {

        xhr = new ActiveXObject("Microsoft.XMLHTTP");

    }

 </pre>



<p>Then, we escape the user input to make it URL-safe:

</p>

 <pre class="brush: js">    essay=encodeURIComponent(essay);

 </pre>

<p>and use the <tt>open</tt> method of the object to open a connection to the PHP script:

</p>

 <pre class="brush: js">    xhr.open("POST","grade.php");

 </pre>

<p>The method requires two arguments:first, the HTTP method (GET or POST); second, the URL of the script.

</p><p>A quick HTTP header prepares the script for what it&#8217;s getting, and then the <tt>send</tt> method transmits the actual request:



</p>

 <pre class="brush: js"> xhr.setRequestHeader(

      'Content-Type',

      'application/x-www-form-urlencoded; charset=UTF-8'); xhr.send(essay); </pre>

<p>This last step isn&#8217;t necessary for GET requests, wherein all the data can be contained in the query string of the URL.

</p><p><br />

</p>

<a name="Getting_Results"></a><h3> <span class="mw-headline">Getting Results</span></h3>

<p>Now we&#8217;re ready to see if the HTTP request worked. The <tt>readyState</tt> property counts up from zero during the request, and shows 4 when the server page has loaded successfully.

</p>

 <pre class="brush: js"> xhr.onreadystatechange=function() {

      if (xhr.readyState==4) {

 </pre>



<p>If the request worked, then we can get the output of the server-side script by querying the <tt>responseText</tt> property, which contains a string. For more complex server script output, a <tt>responseXML</tt> property, which can hold a full document object of XML data, is also available.

</p>

 <pre class="brush: js">      grade = xhr.responseText;

      alert ("Nice essay. Your grade is " + grade);

    }

    return false;

 }

 </pre>

<p>Want to see all that in a pastable block? Here it is in a <a href="http://www.wired.com/wired/webmonkey/stuff/Ajax_for_Beginners_code1.html" class="external text" title="http://www.wired.com/wired/webmonkey/stuff/Ajax_for_Beginners_code1.html" rel="nofollow">separate file</a>.

</p><p>Finally, the third component is the PHP script, which lives on the server and waits patiently for the JavaScript to pass it some juicy data. This example uses PHP, but any language you like &#8212; Ruby, Perl, C, ASP &#8212; can do as well. The core of this example script is a natural-language function called <tt>grade_essay()</tt> that grades student essays from 1 to 100, but I will redact that part to conserve space.



</p>

 <pre class="brush: js"> &lt;?php

 function grade_essay($essay) {

      return strlen($essay);

 }

 $essay = urldecode(implode(file('php://input')));

 $grade = grade_essay($essay);

 echo $grade;

 ?&gt;



 </pre>

<p>The <tt>php://input</tt> grabs the POST data, which gets put into a string, decoded and passed to the ingenious grading algorithm. The algorithm returns a numeric grade. Lastly, we just output the grade with <tt>echo</tt>  &#8211;  ordinarily, this would display in the browser, but since the PHP script is running &#8220;behind the scenes,&#8221; the string output is simply returned to the JavaScript that called it. If you need structured data, an XML document would be output with an <tt>echo</tt> statement in just the same way, but the content-type of the output page must be set to <tt>text/xml</tt>.



</p><p>What the user sees is this:She types her essay into the text area in the browser, clicks Submit, and within instants an alert box pops up giving her a final grade on the essay. Invisibly, the essay has been sent to the server, read and evaluated by a team of PHP gnomes, and returned with a grade, without ever reloading the page. The user can modify her essay and resubmit it endlessly.

</p><p>And that&#8217;s the gist of the almost magical XMLHttpRequest object! The example is simple, but the uses of the object can be elaborately, multifariously clever. If you need further inspiration and edification, a burgeoning number of examples are dotted around the Web:

</p>

<ul><li> Ajax-powered start pages like <a href="http://www.google.com/ig" class="external text" title="http://www.google.com/ig" rel="nofollow">iGoogle</a>, <a href="http://www.pageflakes.com/" class="external text" title="http://www.pageflakes.com/" rel="nofollow">Pageflakes</a> and <a href="http://www.netvibes.com/" class="external text" title="http://www.netvibes.com/" rel="nofollow">Netvibes</a>

</li></ul>

<ul><li> Social news site <a href="http://digg.com" class="external text" title="http://digg.com" rel="nofollow">Digg</a>



</li></ul>

<ul><li> Movie rentals site <a href="http://www.netflix.com" class="external text" title="http://www.netflix.com" rel="nofollow">Netflix</a>

</li></ul>

<p><br />

But what data you send and receive with Ajax is up to you.

</p><p><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/ajax_for_beginners/feed/</wfw:commentRss>
        <slash:comments>8</slash:comments>

        
    </item>
    
    <item>
        <title>Make an HTML Document</title>
        <link>http://www.webmonkey.com/2010/02/make_an_html_document/</link>
        <comments>http://www.webmonkey.com/2010/02/make_an_html_document/#comments</comments>
        <pubDate>Tue, 16 Feb 2010 01:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=16</guid>
        		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[HTML is the lingua franca of the web. It&#8217;s a simple, universal mark-up language that allows web publishers to create complex pages of text and images that can be viewed by anyone else on the web, regardless of what kind of computer or browser is being used. Despite what you might have heard, you don&#8217;t [...]]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>HTML is the <em>lingua franca</em> of the web. It&#8217;s a simple, universal mark-up language that allows web publishers to create complex pages of text and images that can be viewed by anyone else on the web, regardless of what kind of computer or browser is being used.

</p><p>Despite what you might have heard, you don&#8217;t need any special software to create an HTML page; all you need is a word processor (such as SimpleText, BBEdit, or Microsoft Word) and a working knowledge of HTML. And lucky for all of us, basic HTML is dead easy.

</p>



<h3>It&#8217;s All About the Tags</h3>



<p>HTML is just a series of tags that are integrated into a text document. They&#8217;re a lot like stage directions &#8212; silently telling the browser what to do, and what props to use.

<span id="more-16"></span>

</p><p>HTML tags are usually English words (such as blockquote) or abbreviations (such as &#8220;p&#8221; for paragraph), but they are distinguished from the regular text because they are placed in small angle brackets. So the paragraph tag is <tt>&lt;p&gt;</tt>, and the blockquote tag is <tt>&lt;blockquote&gt;</tt>.



</p><p>Some tags dictate how the page will be formatted (for instance, <tt>&lt;p&gt;</tt> begins a new paragraph), and others dictate how the words appear (<tt>&lt;b&gt;</tt> makes text bold). Still others provide information &#8212; such as the title &#8212; that doesn&#8217;t appear on the page itself.

</p><p>The first thing to remember about tags is that they travel in pairs. Every time you use a tag &#8211; say <tt>&lt;blockquote&gt;</tt> &#8211; you must also close it off with another tag &#8211; in this case, <tt>&lt;/blockquote&gt;</tt>. Note the slash &#8211; / &#8211; before the word &#8220;blockquote&#8221;; that&#8217;s what distinguishes a closing tag from an opening tag.

</p><p>The basic HTML page begins with the tag <tt>&lt;html&gt;</tt> and ends with <tt>&lt;/html&gt;</tt>. In between, the file has two sections &#8211; the header and the body.



</p><p>The header &#8211; enclosed by the <tt>&lt;head&gt;</tt> and <tt>&lt;/head&gt;</tt> tags &#8211; contains information about a page that won&#8217;t appear on the page itself, such as the title. The body &#8211; enclosed by <tt>&lt;body&gt;</tt> and <tt>&lt;/body&gt;</tt> &#8211; is where the action is. Every thing that appears on the page is contained within these tags.

</p>



<h3>A Basic HTML Document</h3>



<p>So let&#8217;s create a simple sample page, shall we? The first step, of course, is to create a new text document (remember, it should be saved as &#8220;Text Only&#8221; or &#8220;Plain Text&#8221; if you&#8217;re using a word processor that&#8217;s fancier than, say, SimpleText) and name it &#8220;anything.html&#8221; where &#8220;anything&#8221; is, uh, anything.

</p><p>Your basic document will look something like this:

</p>

<pre class="brush: js">

&lt;html&gt;

 &lt;head&gt;

 &lt;title&gt;Summer&lt;/title&gt;

 &lt;/head&gt;



 &lt;body&gt;

 &lt;h1&gt;Summer Vacation&lt;/h1&gt;



 &lt;p&gt;My summer vacation was sunny, silly, and far too short.&lt;/p&gt;



 &lt;p&gt;How many days till Christmas?&lt;/p&gt;



 &lt;/body&gt;

 &lt;/html&gt;



</pre>

<p>So within the <tt>&lt;head&gt;</tt> tags, we have the title &#8220;Summer,&#8221; which will appear in the bar across the top of your browser.

</p><p>Within the body tags, we have everything that will appear on the page. In this case it would look something like this:

</p>



<blockquote>

<b>Summer Vacation</b><br /><br />



My summer vacation was sunny, silly, and far too short.<br /><br />



How many days till Christmas?

</blockquote>



<p>As you might have guessed, <tt>&lt;h1&gt;</tt> is the tag for a headline (the largest headline, in fact) and <tt>&lt;p&gt;</tt>, of course, marks the beginning of a new paragraph. Each paragraph is closed off by a corresponding <tt>&lt;/p&gt;</tt> tag.



</p><p>Seems simple, huh? Well, it is.



</p><p>Especially since you can see what HTML people have used to build any web page you find by simply viewing source. Oh, and don&#8217;t go thinking you need your own homepage to practice, either. You can save HTML documents on your local drive and then open them up using the Open option under the File menu on your browser.</p><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/make_an_html_document/feed/</wfw:commentRss>
        <slash:comments>12</slash:comments>

        
    </item>
    
    <item>
        <title>Action</title>
        <link>http://www.webmonkey.com/2010/02/action/</link>
        <comments>http://www.webmonkey.com/2010/02/action/#comments</comments>
        <pubDate>Tue, 16 Feb 2010 01:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=21</guid>
        		<category><![CDATA[Glossary]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[Action is a Form attribute that communicates with the common gateway interface (CGI) program to process. For example, if you entered &#8220;bananas&#8221; to the following form: &#60;form action="../processor.cgi"&#62; Please process this: &#60;input name=food&#62;&#60;br&#62; &#60;input type=submit&#62; &#60;/form&#62; The HTML form would send the input &#8220;bananas&#8221; to the cgi script. To the cgi script, the action would [...]]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>Action is a Form attribute that communicates with the <a href="/2010/02/Common_Gateway_Interface" title="Reference:Common Gateway Interface">common gateway interface</a> (CGI) program to process.

</p><p>For example, if you entered &#8220;bananas&#8221; to the following form:

</p>

<pre class="brush: js">&lt;form action="../processor.cgi"&gt;

Please process this:

    &lt;input name=food&gt;&lt;br&gt;



    &lt;input type=submit&gt;

&lt;/form&gt;

</pre>

<p>The HTML form would send the input &#8220;bananas&#8221; to the cgi script. To the cgi script, the action would look like: <tt>../processor.cgi?food=bananas</tt><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/action/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Apache</title>
        <link>http://www.webmonkey.com/2010/02/apache/</link>
        <comments>http://www.webmonkey.com/2010/02/apache/#comments</comments>
        <pubDate>Mon, 15 Feb 2010 20:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=31</guid>
        		<category><![CDATA[Glossary]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[servers]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[Apache is a freely available, and highly popular, open-source web server. Originally, Apache was designed for Unix. Now versions are available for most operating systems including Windows, OSX and Linux. There are also numerous add-ons and tailored versions of the server using the Apache module API. The name Apache comes from its origins as a [...]]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>Apache is a freely available, and highly popular, open-source web server.

</p><p>Originally, Apache was designed for Unix. Now versions are available for most operating systems including Windows, OSX and Linux. There are also numerous add-ons and tailored versions of the server using the Apache module <a href="/2010/02/API" title="Reference:API">API</a>. The name Apache comes from its origins as a series of &#8220;patch files.&#8221;

</p><p>Read Webmonkey&#8217;s <a href="/2010/02/Apache_for_Beginners" title="Tutorial:Apache for Beginners"> Apache for Beginners</a> article for more details about Apache.

</p><p>Information and downloads can be found at <a href="http://www.apache.org/" class="external text" title="http://www.apache.org/" rel="nofollow">the Apache Software Foundation website</a>.



</p><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/apache/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Applet</title>
        <link>http://www.webmonkey.com/2010/02/applet/</link>
        <comments>http://www.webmonkey.com/2010/02/applet/#comments</comments>
        <pubDate>Mon, 15 Feb 2010 20:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=33</guid>
        		<category><![CDATA[Glossary]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[Apache is a freely available, and highly popular, open-source web server. Originally, Apache was designed for Unix. Now versions are available for most operating systems including Windows, OSX and Linux. There are also numerous add-ons and tailored versions of the server using the Apache module API. The name Apache comes from its origins as a [...]]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>Apache is a freely available, and highly popular, open-source web server.

</p><p>Originally, Apache was designed for Unix. Now versions are available for most operating systems including Windows, OSX and Linux. There are also numerous add-ons and tailored versions of the server using the Apache module <a href="/2010/02/API" title="Reference:API">API</a>. The name Apache comes from its origins as a series of &#8220;patch files.&#8221;

</p><p>Read Webmonkey&#8217;s <a href="/2010/02/Apache_for_Beginners" title="Tutorial:Apache for Beginners"> Apache for Beginners</a> article for more details about Apache.

</p><p>Information and downloads can be found at <a href="http://www.apache.org/" class="external text" title="http://www.apache.org/" rel="nofollow">the Apache Software Foundation website</a>.



</p><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/applet/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>API</title>
        <link>http://www.webmonkey.com/2010/02/api/</link>
        <comments>http://www.webmonkey.com/2010/02/api/#comments</comments>
        <pubDate>Mon, 15 Feb 2010 20:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=35</guid>
        		<category><![CDATA[Glossary]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[The application program interface (API) is a set of building blocks for programmers. APIs are made up of routines, protocols, and tools. Most operating environments provide an API so that programmers can write applications consistent with that environment. For example, developing software using the Windows API ensures that your user interface will be consistent with [...]]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>The application program interface (API) is a set of building blocks for programmers.

</p><p>APIs are made up of <a href="/2010/02/Routines" title="Reference:Routines">routines</a>, <a href="/2010/02/Protocols" class="new" title="Reference:Protocols">protocols</a>, and tools. Most operating environments provide an API so that programmers can write applications consistent with that environment. For example, developing software using the Windows API ensures that your user interface will be consistent with other Windows applications, making it easier for users to learn your new programs.

</p>

<a name="Use_on_the_Web"></a><h2> <span class="mw-headline">Use on the Web</span></h2>

<p>Web APIs provide simple ways to interact with websites. Using an API, you can extract public data from sites like del.icio.us, Flickr and Digg to create mashups, reuse data or just about anything else you can imagine.



</p><p>APIs are also useful for extracting your own private data from a web service so that you can back it up elsewhere or display it on another site.

</p><p>When talking about APIs you&#8217;ll here the following terms quite a bit.

</p>

<a name="Common_Web_API_Related_Terms"></a><h3> <span class="mw-headline">Common Web API Related Terms</span></h3>

<ul><li> <b>Web service/API</b> &#8212; These terms are largely interchangeable and simple refer to the ways you can interact with the data on your favorite websites.

</li></ul>

<ul><li> <b>Method</b> &#8212; A method is just one aspect of an API; you might also see methods refered to a functions. For instance, if you&#8217;re interacting with Flickr, you might want to get your public photos. To do so you would use the get_user_photos method.

</li></ul>

<ul><li> <b>Response</b> &#8212; The information returned by the API method that you&#8217;ve called.



</li></ul>

<ul><li> <b>REST</b> &#8212; Short for Representational State Transfer. REST treats data as a web document that lives at a specific URL. REST APIs use standard HTTP requests such as GET, PUT, HEAD, DELETE and POST to interact with data.

</li></ul>

<ul><li> <b>XML-RPC</b> &#8212; This older API scheme formats method calls and responses as XML documents which are sent over HTTP.

</li></ul>

<ul><li> <b>SOAP</b> &#8212; Simple Object Access Protocol. A W3C standard for passing messages across the network. SOAP is the successor to XML-RPC. It&#8217;s complexity has led many to disparage SOAP and with more APIs leaning toward REST, SOAP&#8217;s future is uncertain.

</li></ul>

<ul><li> <b>Ajax</b> &#8212; Asynchronous JavaScript and XML. Technically it has nothing to do with APIs, however many sites using APIs send their queries out using Ajax which is partially responsible for the popularity of JSON.



</li></ul>

<ul><li> <b>JSON</b> &#8212; JavaScript Object Notation. JSON&#8217;s main advantage is that it is easy to convert from JSON to nearly any other programming language. JSON uses key-value pairs and arrays, something common to PHP, Python, Perl, Ruby and most other languages. The portability of JSON has made it an increasingly popular choice for sites developing APIs.

</li></ul>

<p><br />

</p>

<a name="Popular_Web_APIs"></a><h2> <span class="mw-headline">Popular Web APIs</span></h2>

<ul><li> <a href="http://www.google.com/apis/maps/" class="external text" title="http://www.google.com/apis/maps/" rel="nofollow">Google Maps</a>

</li><li> <a href="http://developer.yahoo.com/maps/" class="external text" title="http://developer.yahoo.com/maps/" rel="nofollow">Yahoo Maps</a>



</li><li> <a href="http://www.flickr.com/services/api/" class="external text" title="http://www.flickr.com/services/api/" rel="nofollow">Flickr</a>

</li><li> <a href="http://code.google.com/apis/youtube/overview.html" class="external text" title="http://code.google.com/apis/youtube/overview.html" rel="nofollow">YouTube</a>

</li><li> <a href="http://del.icio.us/help/api/" class="external text" title="http://del.icio.us/help/api/" rel="nofollow">del.icio.us</a>

</li><li> <a href="http://wiki.ma.gnolia.com/Ma.gnolia_API" class="external text" title="http://wiki.ma.gnolia.com/Ma.gnolia_API" rel="nofollow">Ma.gnolia</a>

</li><li> <a href="http://twitter.com/help/api" class="external text" title="http://twitter.com/help/api" rel="nofollow">Twitter</a>

</li><li> <a href="http://www.yelp.com/developers/documentation/search_api" class="external text" title="http://www.yelp.com/developers/documentation/search_api" rel="nofollow">Yelp</a>



</li><li> <a href="http://openid.net/" class="external text" title="http://openid.net/" rel="nofollow">OpenID</a>

</li><li> <a href="http://www.amazonws.com/" class="external text" title="http://www.amazonws.com/" rel="nofollow">Amazon S3</a>

</li><li> <a href="http://atomenabled.org/" class="external text" title="http://atomenabled.org/" rel="nofollow">AtomAPI</a>

</li><li> <a href="http://meta.wikimedia.org/wiki/API" class="external text" title="http://meta.wikimedia.org/wiki/API" rel="nofollow">MediaWiki API</a>

</li><li> <a href="http://api.vzaar.com/" class="external text" title="http://api.vzaar.com/" rel="nofollow">vzaar API</a><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/api/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Architecture</title>
        <link>http://www.webmonkey.com/2010/02/architecture/</link>
        <comments>http://www.webmonkey.com/2010/02/architecture/#comments</comments>
        <pubDate>Mon, 15 Feb 2010 20:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=37</guid>
        		<category><![CDATA[Glossary]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[In computer science, architecture means the conceptual arrangement of a system&#8217;s components. Taking the analogy of a physical building, if a website&#8217;s individual pages are rooms, its architecture is the hypertextual relationship between the rooms within the structure.]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>In computer science, architecture means the conceptual arrangement of a system&#8217;s components.

</p><p>Taking the analogy of a physical building, if a website&#8217;s individual pages are rooms, its architecture is the hypertextual relationship between the rooms within the structure.

</p><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/architecture/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Banners</title>
        <link>http://www.webmonkey.com/2010/02/banners/</link>
        <comments>http://www.webmonkey.com/2010/02/banners/#comments</comments>
        <pubDate>Mon, 15 Feb 2010 20:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=42</guid>
        		<category><![CDATA[Glossary]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[Banners are a basic unit of advertising on the web. They were pioneered by GNN and HotWired back in the frontier days of 1994 and are now nearly ubiquitous, appearing in all sorts of shapes, sizes, and locations. You can probably see one right now at the top of the page.]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>Banners are a basic unit of advertising on the web.

</p><p>They were pioneered by GNN and HotWired back in the frontier days of 1994 and are now nearly ubiquitous, appearing in all sorts of shapes, sizes, and locations. You can probably see one right now at the top of the page.

</p><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/banners/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Behavior</title>
        <link>http://www.webmonkey.com/2010/02/behavior/</link>
        <comments>http://www.webmonkey.com/2010/02/behavior/#comments</comments>
        <pubDate>Mon, 15 Feb 2010 20:45:47 +0000</pubDate>

                <dc:creator>Webmonkey Staff</dc:creator>

        <guid isPermaLink="false">http://stag.wired.com/primate/?p=44</guid>
        		<category><![CDATA[Glossary]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[wiki]]></category>
        <description><![CDATA[Setting a dHTML element&#8217;s behavior attribute allows you to customize the element. Microsoft implemented the behavior attribute of Cascading Style Sheets in a way that enabled object-oriented programming to enter the world of web authoring. By encapsulating dHTML in an external object, the properties and methods of that object can be used. A web page [...]]]></description>

            <content:encoded><![CDATA[<!-- wpautop disabled --><p>Setting a <a href="/2010/02/DHTML" title="Reference:DHTML">dHTML</a> element&#8217;s behavior attribute allows you to customize the element.

</p><p>Microsoft implemented the behavior attribute of <a href="/2010/02/CSS" title="Reference:CSS"> Cascading Style Sheets</a> in a way that enabled object-oriented programming to enter the world of web authoring. By encapsulating dHTML in an external object, the properties and methods of that object can be used. A web page can then use these objects with the behavior attribute. This means, for example, that a web author no longer had to perform an explicit browser detection.

</p><div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/02/behavior/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    </channel>
</rss>