<?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; Tutorials</title>
    <atom:link href="http://www.webmonkey.com/tag/tutorials/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>&#8216;Tis the Season &#8230; To Write Better Code</title>
        <link>http://www.webmonkey.com/2012/12/tis-the-season-to-write-better-code/</link>
        <comments>http://www.webmonkey.com/2012/12/tis-the-season-to-write-better-code/#comments</comments>
        <pubDate>Tue, 04 Dec 2012 18:37:29 +0000</pubDate>

                <dc:creator>Scott Gilbertson</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/?p=60172</guid>
        		<category><![CDATA[APIs]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tutorials]]></category>
            <enclosure url="http://www.webmonkey.com/wp-content/uploads/2012/12/advent-200x100.jpg" type="image/jpeg" length="48000" />
                    <description><![CDATA[<div class="rss_thumbnail"><img src="http://www.webmonkey.com/wp-content/uploads/2012/12/advent.jpg" alt="&#8216;Tis the Season &#8230; To Write Better Code" /></div>Get into the holiday spirit with advent calendars for web nerds -- 24 tutorials to tide you through the holiday season.]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled --><div id="attachment_60173" class="wp-caption alignleft" style="width: 235px"><img src="http://www.webmonkey.com/wp-content/uploads/2012/12/advent.jpg" alt="" title="advent" width="225" height="300" class="size-full wp-image-60173" /><p class="wp-caption-text"><em>Image: <a href="http://www.instructables.com/image/FO0Y4APFOHTTVO7">Instructables, Altoids Advent Calendar/CC</a></em>.</p></div>
<p>The holidays are here and for web nerds that means only one thing &#8212; another wave of advent tutorials is hitting the web.</p>
<p>It doesn&#8217;t feel much like winter right now at the Webmonkey lair, but that&#8217;s okay because we mark the start of the holiday season by the launch of <a href="http://24ways.org/2012/" target="_blank">24Ways</a>, the grand poobah of advent calendars for web nerds. 24Ways has been an annual tradition since 2005, offering 24 articles packed with new tips and tricks showcasing some of the year&#8217;s best new ideas in web development.</p>
<p>This year&#8217;s 24Ways kicked off with a tutorial on <a href="http://24ways.org/2012/html5-video-bumpers/" target="_blank">HTML5 Video &#8220;Bumpers&#8221;</a> by 24Ways founder Drew McLellan. Other articles thus far include how to <a href="http://24ways.org/2012/starting-your-project-on-the-right-foot/" target="_blank">start a project on the right foot</a>, how to <a href="http://24ways.org/2012/being-prepared-to-contribute/" target="_blank">contribute code to the community</a> and Geri Coady&#8217;s excellent article on <a href="http://24ways.org/2012/colour-accessibility/" target="_blank">Color Accessibility</a>.</p>
<p>While 24Ways may be the biggest name in advent tutorials, it&#8217;s not lacking for competition these days. We also recommend the <a href="http://calendar.perfplanet.com/2012/" target="_blank">Performance Calendar</a>, which tackles the often confusing world of website optimization. There&#8217;s also <a href="http://advent2012.digitpaint.nl/" target="_blank">Digitpaint&#8217;s advent calendar</a> which we enjoyed last year and has already published some nice articles this year, including this <a href="http://advent2012.digitpaint.nl/4/" target="_blank">look at CSS filters</a>.</p>
<p>If you&#8217;re missing another favorite, the PHP Advent Calendar, fear not, it has returned, but with a new name and domain: PHP Advent is now <a href="http://webadvent.org/2012/">Web Advent</a>. The name may have changed, but Web Advent offers similarly great content, like this article on <a href="http://webadvent.org/2012/the-gift-of-sharing-what-you-know-by-heather-payne" target="_blank">Sharing What You Know</a> by Heather Payne, the founder of <a href="http://ladieslearningcode.com/" target="_blank">Ladies Learning Code</a>.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2012/12/tis-the-season-to-write-better-code/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <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>Personalize Your Map With a Custom Map Marker</title>
        <link>http://www.webmonkey.com/2010/10/personalize-your-map-with-a-custom-map-marker/</link>
        <comments>http://www.webmonkey.com/2010/10/personalize-your-map-with-a-custom-map-marker/#comments</comments>
        <pubDate>Thu, 07 Oct 2010 17:35:51 +0000</pubDate>

                <dc:creator>Michael Calore</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/?p=48912</guid>
        		<category><![CDATA[Location]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[mapstraction]]></category>
		<category><![CDATA[Tutorials]]></category>
            <enclosure url="http://www.webmonkey.com/wp-content/uploads/2010/10/AdamD3.jpg" type="image/jpeg" length="48000" />
                    <description><![CDATA[<div class="rss_thumbnail"><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/AdamD3.jpg" alt="Personalize Your Map With a Custom Map Marker" /></div>If you&#8217;re adding a map to your website, why settle for the vanilla design when you can customize it and leave your own personal mark? This tutorial will show you how to create a custom map from scratch, then add a little unique flavor to it by replacing the standard &#8220;map pin&#8221; icon with a [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled -->
<p><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/AdamD1.jpg" alt="" title="AdamD1" />If you&#8217;re adding a map to your website, why settle for the vanilla design when you can customize it and leave your own personal mark?</p>
<p>This tutorial will show you how to create a custom map from scratch, then add a little unique flavor to it by replacing the standard &#8220;map pin&#8221; icon with a custom icon of your own design.</p>
<p>To do this, we&#8217;ll be using Mapstraction, a library that creates map code that can be reused across all the big mapping providers (Yahoo, Google, et al). Mapstraction also allows for multiple types of customization such as custom info bubbles and graphics like the one we&#8217;ll be dropping onto the map.</p>
<p><strong>Note:</strong> This tutorial is adapted from the book <a href="http://nostarch.com/mapscripting.htm">Map Scripting 101</a> by Adam DuVander. Adam is a former Webmonkey contributor and executive editor of <a href="http://www.programmableweb.com/">Programmable Web</a>. In his book, he shows how to use all of the features of the most popular mapping APIs, and how to mash them up with data from other sources like events calendars, weather services and restaurant review sites to make a variety of custom maps.</p>
<p>This exercise comes from chapters 1 and 2 of Adam&#8217;s book, and it is reprinted here with his permission and that of the book&#8217;s publisher, No Starch Press. It isn&#8217;t a word-for-word excerpt. It has been slightly adapted to work as a web tutorial. You&#8217;ll find dozens of in-depth exercises &#8212; including the full version of this one &#8212; in the book itself.</p>
<h3>Create a Mapstraction map</h3>
<p>Mapstraction is a little different from Google Maps and Yahoo Maps. Mapstraction is an open source JavaScript library that ties into other mapping APIs. If you use Mapstraction, you can switch from one type of map to another with very little work, as opposed to rewriting your code completely.</p>
<p>Using Mapstraction limits your risk to changes being made to an API. For example, if your site&#8217;s traffic takes you beyond the limit for your chosen provider, or the provider begins placing ads on the map, Mapstraction lets you switch providers quickly and inexpensively.</p>
<p>To use Mapstraction, you must first choose a provider. In this example, I&#8217;m using Mapstraction to create a Google Map.<br />
<span id="more-48912"></span></p>
<p>Open a new HTML file and type the following:</p>
<pre class="brush: js">
&lt;html> 
  &lt;head> 
    &lt;title>Basic Mapstraction Map&lt;/title> 
    &lt;script 
    src="http://maps.google.com/maps/api/js?sensor=false"   
      type="text/javascript">&lt;/script> 
    &lt;script type="text/javascript" src="mxn.js?(googlev3)">&lt;/script> 
    &lt;style type="text/css"> 
      div#mymap { 
        width: 400px; 
        height: 350px; 
      } 
    &lt;/style> 
    &lt;script type="text/javascript"> 
      function create_map() { 
           var mapstraction = new mxn.Mapstraction('mymap', 'googlev3'); 
        mapstraction.setCenterAndZoom( 
          new mxn.LatLonPoint(37.7740486,-122.4101883), 15); 
      } 
    &lt;/script> 
  &lt;/head> 
  &lt;body onload="create_map()"> 
    &lt;div id="mymap">&lt;/div> 
  &lt;/body> 
&lt;/html> 
</pre>
<p>Just like you would for a normal Google Map, we include Google&#8217;s JavaScript (line 4).</p>
<p>For this code to work, you also need to download the Mapstraction files. Go to <a href="http://mapstraction.com/">mapstraction.com</a> or the project&#8217;s <a href="http://github.com/mapstraction/mxn">github page</a>, and follow the instructions to save the files in the same directory as your HTML file. Best practices would dictate that you keep JavaScript files in their own directory, separate from your HTML, but I&#8217;m simplifying things for this example.</p>
<p>The Mapstraction files you should have, at minimum, are <code>mxn.js</code>, <code>mxn.core.js</code> and <code>googlev3.core.js</code>. You may also have files for other providers, such as <code>yahoo.core.js</code>. The only one we need to reference in our HTML code is <code>mxn.js</code>, which loads the other files that it needs, including those we pass it in the file name. Then, in the <code>create_map</code> function, we let it know which type of map we are creating.</p>
<p>Once you have your Mapstraction map, save your HTML file and load it in a browser. The result should look exactly like this.</p>
<p><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/AdamD2.jpg" alt="" title="Google Map" /><br clear="all" /></p>
<p>This Google map, created via Mapstraction, should be centered on No Starch Press&#8217;s neighborhood in San Francisco.</p>
<p>As you can see, the HTML hooks are minimal. Some styling to determine the size of the map and an empty <code>div</code> tag with an <code>id</code> attribute are all that&#8217;s required. The JavaScript function <code>create_map()</code> takes over and makes calls to the API. This function can have any name you want.</p>
<p>The minimum amount of information needed within the <code>create_map()</code> function is a map type (googlev3), a center point (using a latitude/longitude pair) and a zoom level (Mapstraction&#8217;s tightest zoom level is 16, so I backed off one notch to 15, about six blocks across). Then, we pass those options and reference the <code>div</code> tag&#8217;s <code>id</code> to create a map.</p>
<h3>Add a marker to your map</h3>
<p>To add a simple marker to your map, you just need to use two Mapstraction functions. First, create the marker. Next, add it to the map. The reason for these two distinct steps will become clear in further projects when we start to use advanced options, such as custom marker icons.</p>
<p>Let&#8217;s see what creating the marker looks like in code. Start with the basic Mapstraction map you created and add these lines to the <code>create_map()</code> function:</p>
<pre class="brush: js">
marker = new mxn.Marker(new mxn.LatLonPoint(37.7740486,-122.4101883)); 
// marker options will go here 
mapstraction.addMarker(marker); 
</pre>
<p>The first line creates a marker object, passing latitude/longitude coordinates for the No Starch Press offices in San Francisco. By drawing attention to the graphical marker, we are essentially marking that spot as important.</p>
<p>The second line is a placeholder for any marker options we want to add later. (Any JavaScript line that begins with two slashes is a comment, and the browser ignores them.) The marker options are where we tell Mapstraction which icon to use or add a message to be displayed when the marker is clicked.</p>
<p>Finally, the third line adds the marker to the map. Once this happens, no additional options can be added. The reason is that the marker object is used only by Mapstraction. Once the marker is added to the map, however, Mapstraction makes the appropriate calls to the mapping provider. Mapstraction plots the marker based on all options set beforehand. In this case, we don&#8217;t have options to add, but we&#8217;ll add to this map in future projects.</p>
<p>If you&#8217;re using Google as your mapping provider, your new map will look like the picture below. The default Google icon sits in the center of the map. Although the marker is clickable, this marker is very simple and nothing actually happens if you click it.</p>
<h3>Create a custom icon marker</h3>
<p>The quickest way to make a map feel like your own is to change the default icon used for markers. Mapstraction has simple marker options that make the technical process of using custom icons a cinch. The more laborious part may be creating the icon file itself. To avoid this, you can find icons others have made online for free. I list several resources <a href="http://mapscripting.com/download-custom-markers">on my website</a>.</p>
<p>Still want to create your own? Read on.</p>
<p>To create your own marker icon, you just need to have a graphics program that can save a transparent .png file. The icon can be whatever size you want, but keeping each dimension between 20 and 50 pixels is probably best. If the icon is too small, clicking it becomes difficult; too big, and the icon obscures the location you&#8217;re attempting to call out. If you&#8217;re using Google as your mapping provider, you also want to create an image to use as your marker&#8217;s shadow. This step isn&#8217;t necessary if your marker is a similar shape to the Google default or if you&#8217;re using another provider.</p>
<p>Not much of an image magician? Use the free online <a href="http://www.cycloloco.com/shadowmaker/">Shadowmaker</a> service to create a shadow.</p>
<h3>Add your icon to the map</h3>
<p>Now that you have an icon, the easy part is adding it to the marker options. All it takes is setting a few values to tell Mapstraction where the icon image files resides. Your best bet is to keep custom marker icons in a special directory on your server. If you&#8217;re testing locally, you can use local copies, accessed by their location relative to the page containing the map. For simplicity, I have the HTML file and the icon files in the same directory in this example. In reality, you might prefer to be more organized.</p>
<p>I decided to use a teensy No Starch Press logo for my custom icon. It&#8217;s 27 pixels wide by 31 pixels high. Like I said, the icon is teensy. Then, I used the Shadowmaker service to create a file that is 43×31 including the marker&#8217;s shadow.</p>
<p>Finally, it&#8217;s time to code. Add these lines as marker options. These lines are inserted after a marker has been created but before the marker has been added to the map:</p>
<pre class="brush: js">
marker.setIcon('nostarch-logo.png', [27,31]); 
marker.setShadowIcon('nostarch-shadow.png', [43,31]); 
</pre>
<p>The only parameter you need to include is the path to the image for both the icon and the shadow. Notice that the dimensions of each graphic get passed as an inline array. This parameter is optional but recommended. If you leave it out, some providers will assume the dimensions of the default marker, which could mean a poorly scaled graphic.</p>
<p>The results of the custom marker code are shown below.</p>
<p><img src="http://www.webmonkey.com/wp-content/uploads/2010/10/AdamD3.jpg" alt="" title="Map with a custom logo" /><br clear="all" /></p>
<p>The No Starch Press office is marked by the company&#8217;s logo, a little iron icon. Notice the shadow, as well, which makes the graphic pop out from the map.</p>
<p>Omit the shadow icon at your own risk. Some mapping providers will assume the default shadow, which might look silly with your icon. Not every mapping provider uses shadows, but planning for one is good. If you really don&#8217;t want a shadow, consider using a completely transparent graphic. I show an example of shadowless icons in the weather map example in chapter 10 of my book.</p>
<p><strong>See also:</strong><br/></p>
<ul>
<li><a href="http://www.webmonkey.com/2010/02/multi-map-with-mapstraction/">Multi-map with Mapstraction</a></li>
<li><a href="http://www.webmonkey.com/2010/08/microsoft-adds-openstreetmap-layer-to-bing-maps/">Microsoft Adds OpenStreetMap Layer to Bing Maps</a></li>
<li><a href="http://www.webmonkey.com/2010/03/google-gets-a-new-geocoder/">Google Gets a New Geocoder</a></li>
</ul>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/10/personalize-your-map-with-a-custom-map-marker/feed/</wfw:commentRss>
        <slash:comments>8</slash:comments>

        
    </item>
    
    <item>
        <title>Make a Big Splash on Tiny Screens With Media Queries</title>
        <link>http://www.webmonkey.com/2010/09/make-a-big-splash-on-small-screens-with-media-queries/</link>
        <comments>http://www.webmonkey.com/2010/09/make-a-big-splash-on-small-screens-with-media-queries/#comments</comments>
        <pubDate>Tue, 28 Sep 2010 23:10:00 +0000</pubDate>

                <dc:creator>Scott Gilbertson</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/?p=48821</guid>
        		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[CSS 3]]></category>
		<category><![CDATA[Media Queries]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Tutorials]]></category>
        <description><![CDATA[Go out for a chai latte with your local technology soothsayer (or just study your Google Analytics reports) and it&#8217;s pretty clear that the mobile web is the future. But let&#8217;s not call it the mobile web, let&#8217;s call it the smaller web. And by smaller, I mean a web with less available screen real [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled -->
<p><img src="http://www.wired.com/images_blogs/gadgetlab/2010/08/droid_2f.jpg" alt="MorotolaDroid2" /></p>
<p>Go out for a chai latte with your local technology soothsayer (or just study your Google Analytics reports) and it&#8217;s pretty clear that the mobile web is the future.</p>
<p>But let&#8217;s not call it the mobile web, let&#8217;s call it the smaller web. And by smaller, I mean a web with less available screen real estate than the desktop.</p>
<p>While the iPhone may have a fully-capable web browser, it still has a relatively small screen. Serving the desktop version of the your website is hardly the best way to deliver your content to iPhone owners.</p>
<p>And don&#8217;t forget that the iPhone people are the lucky ones. The latest devices &#8212; iPhones, iPads, Android phones &#8212; have relatively large screens by mobile standards, but these devices are in the hands of a very slim percentage of worldwide mobile users. There are some 3 billion users out there with older phones, or devices with crappy browsers and very small screens.</p>
<p>The point here is that you need something far better than the desktop-optimized version of your website to offer to mobile visitors.</p>
<h3>Mobile Solutions</h3>
<p>There are three popular ways to approach mobile sites: </p>
<ul>
<li><b>Write good code, but do nothing special for mobile.</b> This works fine if your audience is made up of iPhone, iPad and Android users with nice, high-speed 3G connections. That&#8217;s about 1 percent of the mobile market, but some sites with an abnormally large number of iPhone users (like an iPhone news site) can get away with it.</li>
<li><b>Detect the device in use and serve a separate mobile site.</b> Something like m.flickr.com. While this approach works, it means maintaining a second website, plus constantly updating your device detection scripts as new gadgets come on the scene.</li>
<li><b>Build an adaptive site using CSS 3 media queries</b>. Thanks to CSS 3 and the new media query syntax, you can build a site that automatically adapts its layout to fit the screen size of your visitors.</li>
</ul>
<p>The later approach has received the most attention lately, with many designers moving to fluid grids that reflow content, resize images and nicely smoosh themselves down to fit any screen. Check out <a href="http://colly.com/">Simon Collison&#8217;s personal site</a>, or designer <a href="http://hicksdesign.co.uk/">Jon Hick&#8217;s website</a> for examples of media queries in action.</p>
<p>Be sure to resize your browser window so you can see the content reflow as the browser width shrinks. That&#8217;s the gift of media queries &#8212; by precisely labeling your CSS, the presentation can be altered dynamically depending on the device&#8217;s screen width and height. Your content never changes, and neither does your CSS. The page simply adapts.</p>
<p>However, as nice as media queries are, before we dive into the syntax and how it can help, it&#8217;s important to realize that this approach is not going to magically solve all your mobile design problems.</p>
<p><span id="more-48821"></span></p>
<h3>Problems with CSS 3 media queries</h3>
<p>The media query approach will work fine for many sites, but won&#8217;t help when it come to bandwidth concerns. Just reflowing the visual design of your content to fit smaller screens doesn&#8217;t make your images download any faster, nor does it compress or simplify your HTML. </p>
<p>There are also a host of older mobile browsers that doesn&#8217;t understand media queries and will simply fail to load your mobile site styles.</p>
<p>While media queries are not, in the words of <a href="http://www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/<br />
">web developer Jason Grigsby</a>, &#8220;a silver bullet,&#8221; they can still be quite helpful provided you use them properly. </p>
<p>Ethan Marcotte&#8217;s <a href="http://www.alistapart.com/articles/responsive-web-design/">tutorial on A List Apart</a> helped generate interest in media queries as a solution for mobile devices, and it&#8217;s well worth a read. Marcotte shows how to bolt media queries onto a desktop design so that it gracefully degrades on smaller screens, reflowing content to fit the available space. </p>
<p>It&#8217;s a very well done tutorial, but it essentially approaches the problem backwards.</p>
<p>I&#8217;d argue that the best way to use media queries is not to shrink your site for mobile, but to <a href="http://www.webmonkey.com/2010/09/slide-show-time-rethinking-the-mobile-web/">enhance it for the desktop</a>. That is, start with a style sheet that creates a nice, narrow, simplified, single column layout for mobile visitors and then uses media queries to expand the layout for desktop browsers.</p>
<h3>Progressively enhancing your mobile site</h3>
<p>Using media queries is actually quite simple, <a href="http://www.w3.org/TR/css3-mediaqueries/#syntax">the syntax</a> is very similar to the &#8220;media types&#8221; syntax that arrived in CSS 2.1. Media types allow you to specify a style sheet for screens and another for print. CSS 3&#8242;s media queries are similar, but target specific screen sizes (and orientation, though that syntax is less widely supported).</p>
<p>For example, let&#8217;s say we have two sections in our mobile site &#8212; a main column of content wrapped in an article tag, and a &#8220;sidebar&#8221; wrapped in an aside tag. For our mobile layout we&#8217;ve simply let the sidebar fall below the main content in a single column. But for the desktop we want to floated the sidebar to the right for a two column layout. To do that using a media query, the code would look something like this:</p>
<pre class="brush:js">
article#main, aside#sidebar {
    color: #222;
    ...more mobile styles here...
}
@media screen and (max-width > 800px) {
  #main {
    float: left;
  }
  #sidebar {
    float: right;
  }
}
</pre>
<p>This chunk of code tells any browser with a screen larger than 800px to float our content into two columns. Because all modern web browsers understand media queries, this works almost everywhere. Internet Explorer 8 and below will not do anything with this code, but chances are you&#8217;re already writing IE-specific style sheets so you can simply write the rules there &#8212; minus the @media syntax &#8212; and IE will fall in line.</p>
<p>Mobile browsers will naturally ignore this rule. But of course, they will download the entire style sheet which includes all our @media rules. Given the bandwidth constraints of mobile networks, anything we can do to decrease files size is going to help. Fortunately, there&#8217;s another way to use @media &#8212; include separate style sheets for desktop browsers. </p>
<p>The @media query syntax works in your head tags as well, which means we can simple write a separate style sheet for desktop browser and ensure that only they see it, but using a tag like this:</p>
<pre class="brush:js">
&lt;link rel="stylesheet" type="text/css"
  media="screen and (max-width > 800px)"
  href="/css/desktop.css" />
</pre>
<p>The code above also loads our desktop styles only to devices with larger screen resolutions, but this time it does it without bloating our base style sheet for mobile devices.</p>
<p>Of course nothing awesome in web design is accomplished without some sort of trade off. We&#8217;ve decreased the size of our mobile style sheet, but we&#8217;ve added an extra HTTP request to our desktop site. If you&#8217;ve ever used <a href="http://www.webmonkey.com/2010/09/how-to-speed-up-your-site-with-yslow-and-page-speed/">YSlow or PageSpeed</a> to evaluate your load times, you know that extra HTTP requests make for slower page loads.</p>
<p>Whether or not the tradeoff is worth it is your call. In most cases, one extra HTTP request probably isn&#8217;t going to dramatically slow your page, but it is something to keep in mind, particularly if you start adding another style sheet for the iPad and other tablet-size screens.</p>
<p>While extra requests on your desktop site are a small drawback, there are other, more complicated problems that @media queries won&#8217;t solve.</p>
<h3>Issues with images</h3>
<p>The wrench in the works of any mobile-first web design strategy is the use of images. Large images slow down mobile pages and, unfortunately, media queries don&#8217;t help with that. Obviously, when it comes to optimizing your images for mobile, CSS and @media queries &#8212; cool as they are &#8212; are not going to have the answer.</p>
<p>If we&#8217;re start by designing with mobiles in mind and serve smaller, more compressed images in our markup, the mobile visitors benefit and we&#8217;ve solved a large part of the problem. But then the desktop visitors have to suffer through your crappy, low-res images.</p>
<p>One solution is to use JavaScript to swap out the small images for another set of larger, higher resolution images on the desktop. Mobile platform consultant Peter-Paul Koch has a nice overview of how <a href="http://www.quirksmode.org/blog/archives/2010/08/combining_media.html#more">JavaScript can be combined with media queries</a> to swap out your mobile-size images with larger ones for larger screens. </p>
<p>But in addition to requiring JavaScript for this solution to work, it also means our CMS or other site management tools now need to store and track two (at a minimum) sets of images.</p>
<p>However, that&#8217;s probably better than loading big images and forcing mobile browsers to scale them, which is worst of both worlds &#8212; large image downloads and processor-intensive downscaling.</p>
<p>The truth is there&#8217;s no easy way to solve the image problem. If the site you&#8217;re designing relies heavily on large images, you may be better off with a separate mobile website and a CMS that can automatically resize and keep track of both sets of images.</p>
<h3>Conclusion</h3>
<p>Media queries have been touted as the one-stop solution to all your mobile needs, but in fact they aren&#8217;t going to live up to that hype. Media queries are incredibly useful and work in most browsers, but in the end they are just another tool, not a total solution to everything.</p>
<p>Media queries are not the best approach in every case. The websites from Hicks and Colly are elegant examples of media queries (though both use different approaches) but the same technique just isn&#8217;t going to work for <cite>The New York Times</cite>. The complexity and depth of the NYT website (or Flickr, or Wikipedia for that matter) make a completely separate mobile website a necessity.</p>
<p>At the same time, there are numerous mobile websites out there that could easily have been built with media queries and would probably have spared their development teams quite a bit of extra work.</p>
<p>As with most things in web development, media queries are another tool for your toolbox. When and where to use them is something you can judge on an individual, by-project basis.</p>
<p><em>Photo: Jon Snyder/Wired</em></p>
<p><b>See Also:</b></p>
<ul>
<li><a href="http://www.webmonkey.com/2010/09/slide-show-time-rethinking-the-mobile-web/">Slide Show Time: Rethinking the Mobile Web</a></li>
<li><a href="http://www.webmonkey.com/2010/09/a-guide-to-internet-explorer-9s-html5css-3-support/">A Guide to Internet Explorer 9’s HTML5/CSS 3 Support</a></li>
<li><a href="http://www.webmonkey.com/2010/09/how-to-speed-up-your-site-with-yslow-and-page-speed/">How to Speed Up Your Site With YSlow and Page Speed</a></li>
</ul>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/09/make-a-big-splash-on-small-screens-with-media-queries/feed/</wfw:commentRss>
        <slash:comments>7</slash:comments>

        
    </item>
    
    <item>
        <title>Google Raises Your Coding Skills to a Higher Degree</title>
        <link>http://www.webmonkey.com/2010/03/google-raises-your-coding-skills-to-a-higher-degree/</link>
        <comments>http://www.webmonkey.com/2010/03/google-raises-your-coding-skills-to-a-higher-degree/#comments</comments>
        <pubDate>Mon, 22 Mar 2010 18:56:49 +0000</pubDate>

                <dc:creator>Michael Calore</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/?p=46967</guid>
        		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Basics]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[google code]]></category>
		<category><![CDATA[Tutorials]]></category>
            <enclosure url="http://www.webmonkey.com/wp-content/uploads/2010/03/code_logo.png" type="image/png" length="48000" />
                    <description><![CDATA[<div class="rss_thumbnail"><img src="http://www.webmonkey.com/wp-content/uploads/2010/03/code_logo.png" alt="Google Raises Your Coding Skills to a Higher Degree" /></div>There are several places on the web you can turn if you want to learn how to program. Of course, this very site is the best place to start. Webmonkey has a massive library spanning over 13 years of web tutorials. There&#8217;s also Sitepoint and Smashing Magazine and O&#8217;Reilly Answers. Today, we&#8217;d like to give [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled --><img src="http://www.webmonkey.com/wp-content/uploads/2010/03/code_logo.png" alt="Google Code logo" title="Google Code logo" width="161" height="40" class="alignleft size-full wp-image-46968" />
<p>There are several places on the web you can turn if you want to learn how to program.</p>
<p>Of course, this very site is the best place to start. Webmonkey has a massive library spanning over 13 years of web tutorials. There&#8217;s also <a href="http://www.sitepoint.com/">Sitepoint</a> and <a href="http://www.smashingmagazine.com/">Smashing Magazine</a> and <a href="http://answers.oreilly.com/">O&#8217;Reilly Answers</a>.</p>
<p>Today, we&#8217;d like to give some massive props to <a href="http://code.google.com/edu/">Google Code University</a>, a site with a small (but growing) library of tutorials, slide shows, presentations and lectures about coding for the web. There&#8217;s also lots of just plain good advice for making everything from simple sites to full-blown apps. The site is heavy on video &#8212; most of the videos are lectures taken from Google&#8217;s internal tech talks &#8212; and on slide presentations. Everything is licensed under the Creative Commons, so you can use the code examples in your own projects providing you include attribution.</p>
<p>The <a href="http://code.google.com/edu/ajax/index.html">Ajax</a> and <a href="http://code.google.com/edu/languages/google-python-class/">Python</a> courses are pretty strong. The <a href="http://sites.google.com/site/geoapiscodelabs/">Geo APIs courses</a> are valuable resources for anyone working with geodata. For more advanced topics, check out the <a href="http://code.google.com/edu/parallel/index.html">Distributed Systems</a> and <a href="http://code.google.com/edu/security/index.html">Web Security</a> tutorials.</p>
<p><b>See also:</b></p>
<ul>
<li><a href="http://www.webmonkey.com/2010/02/get_started_with_python/">Get Started With Python</a></li>
<li><a href="http://www.webmonkey.com/2010/03/google-gets-a-new-geocoder/">Google Gets a New Geocoder</a></li>
<li><a href="http://www.webmonkey.com/2010/02/get_started_with_google_geocoding_via_http/">Get Started With Google Geocoding via HTTP</a></li>
</ul>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2010/03/google-raises-your-coding-skills-to-a-higher-degree/feed/</wfw:commentRss>
        <slash:comments>2</slash:comments>

        
    </item>
    
    <item>
        <title>How To Make Your Own Domain An OpenID</title>
        <link>http://www.webmonkey.com/2007/03/how_to_make_your_own_domain_an_openid/</link>
        <comments>http://www.webmonkey.com/2007/03/how_to_make_your_own_domain_an_openid/#comments</comments>
        <pubDate>Tue, 27 Mar 2007 19:51:37 +0000</pubDate>

                <dc:creator>Scott Gilbertson</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/blog/howtomakeyou3</guid>
        		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Basics]]></category>
		<category><![CDATA[Tutorials]]></category>
        <description><![CDATA[I recently decided it was time to explore OpenID. For those that aren&#8217;t familiar with OpenID, the sound-bite version boils down to this: OpenID is a way to identify yourself to others using a URL rather than username and password. With more and more big names, Microsoft and AOL come to mind, supporting OpenID, I [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled -->
<p>I recently decided it was time to explore <a href="http://openid.net/" title="openid">OpenID</a>. For those that aren&#8217;t familiar with OpenID, the sound-bite version boils down to this: OpenID is a way to identify yourself to others using a URL rather than username and password. </p>
<p><img alt="Openid" title="Openid" src="http://blog.wired.com/photos/uncategorized/2007/03/27/openid.jpg" border="0" style="float: right; margin: 0px 0px 5px 5px;" /><br />
With more and more big names, <a href="http://blog.wired.com/monkeybites/2007/02/microsoft_to_su.html" title="Microsoft To Support OpenID">Microsoft</a> and AOL come to mind, supporting OpenID, I figured it was about time to dive in and set up my own account.</p>
<p>If you happen to be a LiveJournal or Vox user you already have an OpenID account. For the rest of us there&#8217;s a variety of options <a href="https://www.myopenid.com/" title="MyOpenID">MyOpenID</a>, <a href="http://pip.verisignlabs.com/" title="VeriSign Personal Identity Provider">Verisign</a> and <a href="http://claimid.com/" title="ClaimID">ClaimID</a> to name a few. I went with MyOpenID because it was the first one I stumbled across. The signup process was fast, free and easy.</p>
<p><span id="more-28252"></span></p>
<p>So far so good, but what if I don&#8217;t want to remember my newly created URL? The answer is use your own domain and drop in some headtags which tell requesting sites to get the info from the other server.</p>
<p>If you&#8217;re using MyOpenID, the code looks like this: </p>
<pre style="margin: 10px 0;"><code>&lt;link rel="openid.server" href="http://www.myopenid.com/server"&gt;
&lt;link rel="openid.delegate" href="http://myname.myopenid.com/"&gt;
</code></pre>
<p>Replace the address in the second url with your OpenID address and add these lines to the head of the page that you want to use as your OpenID address. If you&#8217;re using another service I&#8217;ve mentioned here&#8217;s a handy server url reference table <a href="http://simonwillison.net/2006/Dec/19/openid/" title="How to turn your blog in to an OpenID">courtesy of blogger Simon Willison</a>:</p>
<table style="margin: 10px 0 10px 0">
<tr>
<th>OpenID Provider</th>
<th>Server URL</th>
</tr>
<tr>
<td>LiveJournal</td>
<td>http://www.livejournal.com/openid/server.bml</td>
</tr>
<tr>
<td>Vox</td>
<td>http://www.vox.com/services/openid/server</td>
</tr>
<tr>
<td>VeriSign</td>
<td>https://pip.verisignlabs.com/server</td>
</tr>
<tr>
<td>MyOpenID</td>
<td>http://www.myopenid.com/server</td>
</tr>
</table>
<p>If you&#8217;d like to see a more thorough explanation of OpenID, Simon Willison also has a great screencast that walks you through the process of initially setting up your OpenID account which I&#8217;ve embedded below (or try <a href="http://simonwillison.net/2006/openid-screencast/" title="How to use OpenID (a screencast)">the higher res version</a>). </p>
<p>I&#8217;ll admit it took me a minute to wrap my head around the why part of OpenID, but now that I have it all setup it really does make life easier. And the more people that start using OpenID the more sites that will adopt it. </p>
<p>For a list of existing site that support OpenID check out the <a href="https://www.myopenid.com/directory" title="MyOpenID site directory">list on MyOpenID</a>.</p>
<p><embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-7463164786703060643&amp;hl=en" flashvars=""> </embed></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2007/03/how_to_make_your_own_domain_an_openid/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Vista Month: Windows Vista For Beginners</title>
        <link>http://www.webmonkey.com/2007/02/vista_month_windows_vista_for_beginners/</link>
        <comments>http://www.webmonkey.com/2007/02/vista_month_windows_vista_for_beginners/#comments</comments>
        <pubDate>Wed, 07 Feb 2007 17:14:50 +0000</pubDate>

                <dc:creator>Michael Calore</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/blog/vistamonthwin</guid>
        		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software & Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
        <description><![CDATA[Continuing with our Vista Month theme, we recently came across the excellent Vista for Beginners website, which is chock full of advice, tutorials, tips and tricks for those migrating to Windows Vista. Much of the content on Vista for Beginners is aimed at XP users feel more comfortable in the new OS, but even those [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled -->
<p>
<img alt="Vistabeginners" title="Vistabeginners" src="http://blog.wired.com/photos/uncategorized/vistabeginners.jpg" border="0" style="float: right; margin: 0px 0px 5px 5px;" />Continuing with our Vista Month theme, we recently came across the excellent <a href="http://www.vista4beginners.com/" title="Windows Vista For Beginners">Vista for Beginners</a> website, which is chock full of advice, tutorials, tips and tricks for those migrating to Windows Vista. </p>
<p>Much of the content on Vista for Beginners is aimed at XP users feel more comfortable in the new OS, but even those migrating from older systems, as well as those brand new to the world of Windows, will find some time and frustration saving gems in here.</p>
<p><span id="more-25912"></span></p>
<p>Especially useful for those familiar with past versions of Windows is the &#8220;<a href="http://www.vista4beginners.com/where-to-find" title="Windows Vista For Beginners: Where to find">Where to find&#8230;</a>&#8221; section of Vista for Beginners, which so far has tutorials for restoring the Shut Down and Log Off buttons as well as the good old &#8220;Run&#8221; button.</p>
<p>If you&#8217;re having trouble adjusting to the Vista way of thinking, or if you&#8217;re thinking about upgrading, but are worried about having to learn a new workflow, Vista for Beginners can help ease the transition.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2007/02/vista_month_windows_vista_for_beginners/feed/</wfw:commentRss>
        <slash:comments>1</slash:comments>

        
    </item>
    
    <item>
        <title>Tutorial &#8216;O The Day: Be A Better Blogger</title>
        <link>http://www.webmonkey.com/2007/02/tutorial__o_the_day_be_a_better_blogger/</link>
        <comments>http://www.webmonkey.com/2007/02/tutorial__o_the_day_be_a_better_blogger/#comments</comments>
        <pubDate>Tue, 06 Feb 2007 23:36:49 +0000</pubDate>

                <dc:creator>Michael Calore</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/blog/tutorialothe33</guid>
        		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorials]]></category>
        <description><![CDATA[Structure matters. If you want your blog to be more discoverable to those searching Google, you need to tell Google what your site is about. Once upon a time there was an HTML meta tag that could do that for you, but then spammers abused the heck out of those so Google and the rest [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled -->
<p><img alt="Fullspeed" title="Fullspeed" src="http://blog.wired.com/photos/uncategorized/fullspeed.jpg" border="0" style="float: right; margin: 0px 0px 5px 5px;" />Structure matters. If you want your blog to be more discoverable to those searching Google, you need to tell Google what your site is about. Once upon a time there was an HTML meta tag that could do that for you, but then spammers abused the heck out of those so Google and the rest largely ignore them now. So how can you tell Google what your site is about?</p>
<p>In the process of digging through Google&#8217;s <a href="http://blog.wired.com/monkeybites/2007/02/google_adds_lin.html" title="Google Adds Links To Webmaster Tools">revamped Webmaster Tools</a> earlier today I learned about some more things I&#8217;ve done on my personal blog that were not a good idea. So, armed with my own stupidity as an example, here&#8217;s a case study of what not to do (you could also view source on this page for a good example of bad structural decisions &mdash; sigh).</p>
<p><span id="more-25872"></span></p>
<p>Google prioritizes items on your page using (X)HTML structural elements. For instance, wrapping something in an h1 tag will tell Google the contents of that tag are more important than the contents of what&#8217;s inside and h2 tag. And so on. Do not for instance add a span tag with an RSS feed inside your h2 tag because it allows you to work around an IE 5.5 float bug. This will cause Google to think that the link and text inside it are just as important as your headline.</p>
<p>Which brings me to today&#8217;s two pronged point. Structure your pages well using <a href="http://blog.wired.com/monkeybites/2007/01/tutorial_o_the__1.html" title="Tutorial 'O The Day: XHTML Semantics">semantically meaningful HTML</a> and learn to love the lede. </p>
<p>Until I started working for this fine journalistic institution, I thought &#8220;lede&#8221; was some sort of obscure reference to <a href="http://en.wikipedia.org/wiki/Leda_and_the_swan" title="Leda and the Swan">Leda</a>, but it turns out that is incorrect. After my training period (ordering <em>All The Presidents Men</em> from Netflix) I learned that <a href="http://en.wikipedia.org/wiki/News_style" title="Lede">lede</a> refers to the first sentence of your post, which ideally should sum up roughly everything you&#8217;re writing about &mdash; <a href="http://en.wikipedia.org/wiki/Five_Ws" title="Five Ws">the 5 W&#8217;s</a>. Your reader should be able to skim the lead and more or less know what you&#8217;re going to say.</p>
<p>If you&#8217;re like me you don&#8217;t naturally think of ledes and in fact you might even pride yourself on long winded introductions that frequently have nothing to do with what you&#8217;re writing, that&#8217;s fine but you should still write a lede. True a blog is not a newspaper, but in many ways search engine spiders read your page as if it were a newspaper &mdash; they skim it, pull out what&#8217;s marked up as important data and move on.</p>
<p>If you feel like the lede is cramping your creative style just stick it above your article like a long sub-headline or off in a sidebar, but tag it with high priority tags so the spiders take notice. Wrap your ledes in tags that are one headline level less than your headline, because, while I can&#8217;t guarantee it, I&#8217;d be willing to bet that it will end up being the two line excerpt that appears below your page headline in Google search results. </p>
<p>Armed with that brief and pithy synopsis, potential readers will theoretically be more inclined to click through to your site than if your page summary in Google&#8217;s search results reads: &#8220;click for RSS feed.&#8221;</p>
<p>Of course this is largely speculation on my part since I don&#8217;t know the inner workings of Google&#8217;s page crawling methods &mdash; YMMV. And not to undercut my own point, but there&#8217;s also something to be said for writing truly bizarre, but compelling ledes that pique a searcher&#8217;s curiosity.</p>
<p>Speaking of which, before we go I wanted to address something John Brownlee over at Table of Malcontents <a href="http://blog.wired.com/tableofmalcontents/2007/02/yesterday_in_wi_3.html" title="Better Blogging, Cheap Booze, Mind Control, Madonna Kidnapped By Neo-Nazis">brought up about yesterday&#8217;s tutorial</a> (which applies to today&#8217;s as well). Brownlee argues that titles (and ledes) aren&#8217;t as important as I&#8217;ve made them out to be. </p>
<blockquote>
<p>The thing of prime importance in running a successful blog is consistently writing enough content that people know that every time they come back, there&#8217;ll be something new. Traffic begets bigger traffic: if you&#8217;re making the posts, people will keep checking, and more and more links will come into your site.</p>
</blockquote>
<p>And that is absolutely correct. These added tips are built on the assumption that you&#8217;re already producing interesting content and producing it frequently. If you don&#8217;t start with basics none of these fine tuning tips are going to make up for your lack of quality content. If you don&#8217;t build it, they won&#8217;t come.</p>
<p><a href="http://www.flickr.com/photos/evdg/150114657/" title="Full Speed Ahead!">photo credit</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2007/02/tutorial__o_the_day_be_a_better_blogger/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

        
    </item>
    
    <item>
        <title>Tutorial O&#8217; The Day: Ajax</title>
        <link>http://www.webmonkey.com/2007/02/tutorial_o__the_day_ajax-5/</link>
        <comments>http://www.webmonkey.com/2007/02/tutorial_o__the_day_ajax-5/#comments</comments>
        <pubDate>Fri, 02 Feb 2007 21:17:00 +0000</pubDate>

                <dc:creator>Michael Calore</dc:creator>

        <guid isPermaLink="false">http://www.webmonkey.com/blog/tutorialothe13</guid>
        		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorials]]></category>
        <description><![CDATA[For our last Ajax tutorial I thought I&#8217;d list some of the more popular Ajax frameworks on the market. Dojo: Dojo is an Open Source DHTML toolkit written in JavaScript. Prototype is a JavaScript Framework that aims to ease development of dynamic web applications. Script.aculo.us: Provides you with easy-to-use, compatible and, ultimately, totally cool JavaScript [...]]]></description>

            <content:encoded><![CDATA[<p><!-- wpautop enabled -->
<p><img alt="Ajax" title="Ajax" src="http://blog.wired.com/photos/uncategorized/ajax.jpg" border="0" style="float: right; margin: 0px 0px 5px 5px;" />For our last Ajax tutorial I thought I&#8217;d list some of the more popular Ajax frameworks on the market. </p>
<ul>
<li>
<p><a href="http://dojotoolkit.org/" title="Dojo Ajax Toolkit">Dojo</a>: Dojo is an Open Source DHTML toolkit written in JavaScript. </p>
</li>
<li>
<p><a href="http://www.prototypejs.org/" title="Prototype">Prototype</a> is a JavaScript Framework that aims to ease development of dynamic web applications.</p>
</li>
<li>
<p><a href="http://script.aculo.us/" title="Script.aculo.us">Script.aculo.us</a>: Provides you with easy-to-use, compatible and, ultimately, totally cool JavaScript libraries to make your web sites and web applications fly, Web 2.0 style.</p>
</li>
<li>
<p><a href="http://mochikit.com/" title="Mochikit">Mochikit</a>: MochiKit is a free lightweight JavaScript library.</p>
</li>
<li>
<p><a href="http://developer.yahoo.com/yui/" title="Yahoo User Interface Library">Yahoo User Interface Library</a>: The Yahoo! User Interface (YUI) Library is a set of utilities and controls, written in JavaScript.</p>
</li>
</ul>
<p>I should point out that Script.aculo.us is not a framework exactly, rather it includes Prototype and adds some additional hooks on top of it.</p>
<p>If you&#8217;re looking for frameworks for specific languages, ajaxpatterns.org <a href="http://ajaxpatterns.org/wiki/index.php?title=AJAXFrameworks" title="Ajax Framworks">maintains a nice list</a>.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
            <wfw:commentRss>http://www.webmonkey.com/2007/02/tutorial_o__the_day_ajax-5/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>

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