<?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>SoftLayer Blog &#187; compatibility</title>
	<atom:link href="http://blog.softlayer.com/tag/compatibility/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.softlayer.com</link>
	<description>A Behind the Scenes Look at the Best Hosting Provider in the World</description>
	<lastBuildDate>Wed, 15 May 2013 15:33:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Tips and Tricks &#8211; Pure CSS Sticky Footers</title>
		<link>http://blog.softlayer.com/2012/tips-and-tricks-pure-css-sticky-footers/</link>
		<comments>http://blog.softlayer.com/2012/tips-and-tricks-pure-css-sticky-footers/#comments</comments>
		<pubDate>Tue, 06 Nov 2012 20:00:17 +0000</pubDate>
		<dc:creator>Cassandra Wolff</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[height]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[sticky footer]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=9491</guid>
		<description><![CDATA[By now, if you&#8217;ve seen my other blog posts, you know that I&#8217;m fascinated with how much JavaScript has evolved and how much you can do with jQuery these days. I&#8217;m an advocate of working smarter, not harder, and that maxim knows no coding language limits. In this post, I want to share a pure [...]]]></description>
			<content:encoded><![CDATA[<p>By now, if you&#8217;ve seen my other blog posts, you know that I&#8217;m fascinated with how much <a href="http://blog.softlayer.com/?s=javascript">JavaScript</a> has evolved and how much you can do with <a href="http://blog.softlayer.com/?s=jquery">jQuery</a> these days. I&#8217;m an advocate of working smarter, not harder, and that maxim knows no coding language limits. In this post, I want to share a pure CSS solution that allows for &#8220;sticky&#8221; footers on a web page. In comparing several different techniques to present this functionality, I found that all of the other routes were overkill when it came to processing time and resource usage.</p>
<p>Our objective is simple: Make the footer of our web page stay at the bottom even if the page&#8217;s content area is shorter than the user&#8217;s browser window.</p>
<p>This, by far, is one of my *favorite* things to do. It makes the web layout so much more appealing and creates a very professional feel. I ended up kicking myself the very first time I tried to add this functionality to a project early in my career (ten years ago &#8230; already!?) when I found out just how easy it was. I take solace in knowing that I&#8217;m not alone, though &#8230; A quick search for &#8220;footer stick bottom&#8221; still yields quite a few results from fellow developers who are wrestling with the same frustrating experience I did. If you&#8217;re in that boat, fear no more! We&#8217;re going to your footers in shape in a snap.</p>
<p>Here&#8217;s a diagram of the problem:</p>
<p><img class="centered" src="http://cdn.softlayer.com/innerlayer/headerfootercss.jpg" alt="CSS Footer"/></p>
<p>Unfortunately, a lot of people try to handle it with setting a fixed height to the content which would push the footer down. This may work when YOU view it, but there are several different browser window heights, resolutions and variables that make this an *extremely* unreliable solution (notice the emphasis on the word &#8220;extremely&#8221; &#8230; this basically means &#8220;don&#8217;t do it&#8221;).</p>
<p>We need a dynamic solution that is able to adapt on the fly to the height of a user&#8217;s browser window regardless if the resize it, have Firebug open, use a unique resolution or just have a really, really weird browser!</p>
<p>Let&#8217;s take a look at what the end results should look like:</p>
<p><img class="centered" src="http://cdn.softlayer.com/innerlayer/headerfootercss2.jpg" alt="CSS Footer"/></p>
<p>To make this happen, let&#8217;s get our HTML structure in place first:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;page&quot;</span>&gt;</span>
&nbsp;
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;header&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;main&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;footer&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>It&#8217;s pretty simple so far &#8230; Just a skeleton of a web page. The <code>page</code> div contains ALL elements and is immediately below the <body> tags in the page code hierarchy. The <code>header</code> div is going to be our top content, the <code>main</code> div will include all of our content, and the <code>footer</code> div is all of our copyrights and footer links.</p>
<p>Let&#8217;s start by coding the CSS for the full page:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">Html<span style="color: #00AA00;">,</span> body <span style="color: #00AA00;">&#123;</span>
      Padding<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
      Margin<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
      Height<span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Adding a 100% height allows us to set the height of the <code>main</code> div later. The height of a div can only be as tall as the parent element encasing it. Now let&#8217;s see how the rest of our ids are styled:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#page</span> <span style="color: #00AA00;">&#123;</span>
      Min-<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
      <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#main</span> <span style="color: #00AA00;">&#123;</span>
      Padding-<span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">75px</span><span style="color: #00AA00;">;</span>   <span style="color: #808080; font-style: italic;">/* This value is the height of your footer */</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#footer</span> <span style="color: #00AA00;">&#123;</span>
      Position<span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
      Width<span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
      Bottom<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
      Height<span style="color: #00AA00;">:</span> <span style="color: #933;">75px</span><span style="color: #00AA00;">;</span>  <span style="color: #808080; font-style: italic;">/* This value is the height of your footer */</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>These rules position the footer &#8220;absolutely&#8221; at the bottom of the page, and because we set <code>#page</code> to <code>min-height: 100%</code>, it ensures that <code>#main</code> is exactly the height of the browser&#8217;s viewing space. One of the best things about this little trick is that it&#8217;s compliant with all major current browsers &mdash; including Firefox, Chrome, Safari *AND* Internet Explorer (after a little tweak). For Internet Explorer to not throw a fit, we need concede that IE doesn&#8217;t recognize <code>min-height</code> as a valid property, so we have to add <code>Height: 100%;</code> to <code>#page</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#page</span> <span style="color: #00AA00;">&#123;</span>
      Min-<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>  <span style="color: #808080; font-style: italic;">/* for all other browsers */</span>
      <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>  <span style="color: #808080; font-style: italic;">/* for IE */</span>
      <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>If the user does not have a modern, popular browser, it&#8217;s still okay! Though their old browser won&#8217;t detect the magic we&#8217;ve done here, it&#8217;ll fail gracefully, and the footer will be positioned directly under the content, as it would have been without our little CSS trick.</p>
<p>I can&#8217;t finish this blog without mentioning my FAVORITE perk of this trick: Should you not have a specially designed mobile version of your site, this trick even works on smart phones!</p>
<p>-Cassandra</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/tips-and-tricks-pure-css-sticky-footers/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>IPv6 &#8211; Blocks, Slashes and Big Numbers</title>
		<link>http://blog.softlayer.com/2011/ipv6-blocks-slashes-and-big-numbers/</link>
		<comments>http://blog.softlayer.com/2011/ipv6-blocks-slashes-and-big-numbers/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 20:00:35 +0000</pubDate>
		<dc:creator>Kevin Hazard</dc:creator>
				<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[address space]]></category>
		<category><![CDATA[bits]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[CIDR]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[IP addresses]]></category>
		<category><![CDATA[IPv4]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[slash notation]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[transition]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/2011/</guid>
		<description><![CDATA[IPv4 addresses are 32-bit while IPv6 addresses are 128-bit. Customers can get a /64 allocation of IPv6 addresses provisioned to every one of their SoftLayer servers. A /64 block of IPv6 addresses contains 18,446,744,073,709,551,616 distinct addresses. The entire IPv4 address space is 4,294,967,296 distinct addresses. It&#8217;s easy to get lost in a sea of numbers [...]]]></description>
			<content:encoded><![CDATA[<p>IPv4 addresses are 32-bit while IPv6 addresses are 128-bit. Customers can get a /64 allocation of IPv6 addresses provisioned to every one of their SoftLayer servers. A /64 block of IPv6 addresses contains 18,446,744,073,709,551,616 distinct addresses. The entire IPv4 address space is 4,294,967,296 distinct addresses.</p>
<p>It&#8217;s easy to get lost in a sea of numbers when you start talking about IPv4 and IPv6 address space. With the <a href="http://blog.softlayer.com/2011/what-does-ipv4-exhaustion-mean-for-you/">exhaustion of IPv4 address space</a> and the big push toward IPv6, everyone&#8217;s talking about address blocks, usage justification and dual stack compatibility, but all of those conversations presuppose a certain understanding of why IP addresses are the way they are. Someone can say, &#8220;The IPv6 pool is exponentially larger than the IPv4 pool,&#8221; but that statement needs a little context when you hear that providers like SoftLayer are provisioning a free /64 IPv6 allocation of 18,446,744,073,709,551,616 addresses to a single server. If the entire IPv4 pool on the Internet is 4,294,967,296 addresses and we&#8217;re giving away that many IPv6 addresses to a single server, a simple question logically follows:</p>
<p><a href="http://twitter.com/mattcodes"><img class="centered" src="http://cdn.softlayer.com/innerlayer/mattcodes.png" alt="MattCodes"/></a></p>
<p>Are the Internet authorities being irresponsible when they&#8217;re allowing such huge numbers of IPv6 addresses to be assigned to individual servers without a demonstrated need for that many addresses? Will this &#8220;wastefulness&#8221; lead to another IP address pool depletion in our lifetime? These questions are completely legitimate, and they&#8217;re much easier to explain in a visualized format than they are if we answered them line-by-line in text:</p>
<div class="yt560"><iframe width="560" height="349" src="http://www.youtube.com/embed/yHfeHYrZ0oY" frameborder="0" allowfullscreen></iframe></div>
<p>The video duration might seem intimidating, especially if you consider that all 15 minutes are spent talking about IP addresses (Woohoo!), but there&#8217;s a lot of information, and we did our best to break it down to simple pieces that logically follow each other to help you get the full picture of the world of IP addresses. We explain what <a href="http://www.youtube.com/watch?v=vmTplxTHLus#t=6m17s">CIDR Slash (/) Notation</a> (where you see IP address blocks written as &#8220;192.0.2.0/24&#8243;), and we offer a simple trick to <a href="http://www.youtube.com/watch?v=vmTplxTHLus#t=8m30s">calculate the number of distinct addresses available in a given IPv4 block</a>. There&#8217;s a fair amount of witty (and not-witty) banter and at least one use of the word &#8220;ridonkulous,&#8221; so if you enjoyed the <a href="http://www.youtube.com/watch?v=o_mucgaZsb4">DC Construction video</a> commentary, you&#8217;ll get a kick out of this one too.</p>
<p>Toward the end of the video, we speak directly to <a href="http://www.youtube.com/watch?v=vmTplxTHLus#t=12m43s">why SoftLayer is able to give a /64 of IPv6 addresses</a> to every server and what that means for the future of the IPv6 space.</p>
<p style="margin-bottom: 0;">Fun Fact: SoftLayer IP Address Space* </p>
<ul style="margin-top: 0; margin-bottom:0;">
<li><strong>IPv4</strong>: 872,448 Addresses</li>
<li><strong>IPv6 (/32)</strong>: 79,228,162,514,264,337,593,543,950,336 Addresses</li>
</ul>
<p style="margin-top:0;"><em>*Does not include IP space assigned to The Planet</em></p>
<p>Did the video help you wrap your mind around the differences between IPv4 and IPv6? Do you have any more questions about the differences between the two or how SoftLayer is approaching them?</p>
<p>-<a href="http://twitter.com/khazard">@khazard</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2011/ipv6-blocks-slashes-and-big-numbers/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
