<?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>ipHouse Blog</title>
	<atom:link href="http://blogs.iphouse.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.iphouse.net</link>
	<description>A friendly, local ISP with a view.</description>
	<lastBuildDate>Tue, 31 Aug 2010 19:54:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Privacy in Net Neutrality?</title>
		<link>http://blogs.iphouse.net/2010/08/31/privacy-in-net-neutrality/</link>
		<comments>http://blogs.iphouse.net/2010/08/31/privacy-in-net-neutrality/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 19:54:43 +0000</pubDate>
		<dc:creator>Marc Makarem</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[net neutrality]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=480</guid>
		<description><![CDATA[Net neutrality seems to be one of the most widely discussed topics going on right now; with the main issues and arguments surrounding it changing daily.]]></description>
			<content:encoded><![CDATA[<p>Net neutrality seems to be one of the most widely discussed topics right now; with the main issues and arguments surrounding it changing daily.  The reasoning – how do you start to put restrictions on something that has never had restrictions?  Who do you delegate power to? Who do you hold responsible to enforce these?  Who do you put in power to create/make these rules?</p>
<p>Two points surrounding this discussion, ACTA and ISPs monitoring customers, concern me greatly.</p>
<p>Currently the government wants to pass an international agreement that goes by the name of <a href="http://www.ustr.gov/acta" target="_blank">Anti-Counterfeit Trade Agreement</a>, or the ACTA.  What does this name mean?  In short, anything and everything you want it to.  It is kind of like one of those pop drinks “swamp water” that you used to (or still do) make from fountain soda… the one where all the pop from every spout gets mixed together to make a super pop.  No, seriously… the main goal of the ACTA is to combat international counterfeiting and piracy.  As anyone who has visited street markets around the world knows, international piracy and counterfeiting is a huge problem.  It hurts legitimate businesses and can contribute to organized crime and unsafe products.  The problem is that the ACTA is vague which leaves a lot of opportunities to work in special components.   For instance &#8211; the ACTA is trying to make ISPs responsible for what their home and business users are downloading.  This is where problems start to form.  The way things have worked in the past is that if illegal activity is suspected, then an official court-ordered subpoena, limited to the specific user and activity at issue, is provided to the user’s ISP.  The ISP can then help the enforcement agency &#8220;get the bad guys&#8221; without compromising the integrity of their network or the security and privacy of the accounts for their other users.  The legal subpoena process protects everyone’s privacy while allowing the enforcement agency access to the possible illegal files.</p>
<p>If ISPs become responsible for what their users are transmitting we can say goodbye to any and all user privacy including the very legitimate privacy needs of companies who now depend on the Internet for their day-to-day business activities.</p>
<p>The amount of information transmitted over the Internet daily is mind boggling.   To do the types of things suggested as part of the ACTA will require substantial amounts of new gear, space, power, bandwidth and engineering time to monitor users.</p>
<p>Having ISPs monitor their users would be like cell phone companies actively monitoring all their customers calls for any hint of illegal activity. The moment the phone company detected anything remotely illegal, it would have to take action against the user just to avoid any possibility of being held legally responsible for what their customer said or did or planned.</p>
<p>It seems like as we try and make forward progress towards regulations like ACTA we are actually moving away from the potential the Internet has to connect us and be the invisible catalyst for bringing people together.  We are also handicapping its use as an effective tool for businesses. Unless we stand up for our own freedoms online, we can rest assured that they will slowly become more restricted.  We all in some way, shape or form interact with the Internet.  We all in some way, shape or form should care about our privacy…</p>
<p><strong>For further information on this topic check out these links:</strong></p>
<ul>
<li><a href="http://boingboing.net/2009/11/03/secret-copyright-tre.html">http://boingboing.net/2009/11/03/secret-copyright-tre.html</a></li>
<li><a href="http://www.isoc.org/internet/history/brief.shtml">http://www.isoc.org/internet/history/brief.shtml</a></li>
<li><a href="http://www.publicknowledge.org/issues">http://www.publicknowledge.org/issues</a></li>
<li><a href="http://www.eff.org/issues/acta">http://www.eff.org/issues/acta</a></li>
<li><a href="http://en.wikipedia.org/wiki/Anti-Counterfeiting_Trade_Agreement" target="_self">http://en.wikipedia.org/wiki/Anti-Counterfeiting_Trade_Agreement </a></li>
<li><a href="http://www.reuters.com/article/idUSTRE67J5A220100821" target="_self">http://www.reuters.com/article/idUSTRE67J5A220100821</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/08/31/privacy-in-net-neutrality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>News from ipMom</title>
		<link>http://blogs.iphouse.net/2010/08/26/news-from-ipmom/</link>
		<comments>http://blogs.iphouse.net/2010/08/26/news-from-ipmom/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 18:45:02 +0000</pubDate>
		<dc:creator>Genevieve Ruebel</dc:creator>
				<category><![CDATA[email]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=460</guid>
		<description><![CDATA[The mother of all mothers &#8220;ipMom&#8221; has gained yet another new feature. If you have a Dialup, DSL or similar account at ipHouse with a &#8216;primary account&#8217; within an iphouse.com, bitstream.net, pro-ns.net or goldengate.net domain you can now self-order additional POP mailboxes, and access an overview of mailboxes related to your primary account. Check it <a href="http://blogs.iphouse.net/2010/08/26/news-from-ipmom/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>The mother of all mothers &#8220;ipMom&#8221; has gained yet another new feature.</p>
<p><span id="more-460"></span></p>
<p>If you have a Dialup, DSL or similar account at ipHouse with a &#8216;primary account&#8217; within an iphouse.com, bitstream.net, pro-ns.net or goldengate.net domain you can now self-order additional POP mailboxes, and access an overview of mailboxes related to your primary account.</p>
<p>Check it out by logging into <a title="ipMom Login" href="https://ipmom.iphouse.com/" target="_blank">ipMom</a> using your primary account.  You will see a new link titled &#8216;Add Mailbox&#8217; under the &#8216;Add Services&#8217; section of the menu.  You will also see &#8216;Account Overview&#8217; under the Billing section.  You will be able to see your existing mailboxes and will be able to add new ones.  If you are already using all mailboxes that come with your account and you want to add a new one, you can check off an agreement to be billed for the new mailbox and a new POP mailbox will be added.  The new mailbox will be on to the next bill that is sent out (all billing information will stay the same).</p>
<p>You will not be able to delete mailboxes through ipMom.  If you do need to delete a mailbox, please email support@iphouse.net or billing@iphouse.net and we will be glad to help you out.</p>
<p>Customers with their own domain names who purchase mailboxes in blocks of ten will continue to enjoy the same admin control they currently have over their mailbox blocks.</p>
<p>We hope our customers enjoy this feature and we are excited for new things to come&#8230;:)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/08/26/news-from-ipmom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Net Neutrality &#8211; An immediate response is needed.</title>
		<link>http://blogs.iphouse.net/2010/08/20/net-neutrality-an-immediate-response-is-needed/</link>
		<comments>http://blogs.iphouse.net/2010/08/20/net-neutrality-an-immediate-response-is-needed/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 20:51:21 +0000</pubDate>
		<dc:creator>Bil MacLeslie</dc:creator>
				<category><![CDATA[net neutrality]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=453</guid>
		<description><![CDATA[This morning, around the foosball table, we had a discussion about net neutrality and what it could mean to have corporations both owning the content and distribution mechanism.  This is something I commented on, tangentially, in January of 2000...]]></description>
			<content:encoded><![CDATA[<p>Thursday Evening I attended the public hearing held by Free Press at Minneapolis South High School.</p>
<p>Full of dignitaries and speeches, I was impressed by both Secretary of State Mark Ritchie and Senator Al Franken breadth of knowledge on what this highly charged but reasonably simple issue could mean to me, Minnesota and the nation.</p>
<p><span id="more-453"></span>I listened to FCC commissioner <a href="http://www.fcc.gov/commissioners/copps/">Michael J. Copps</a> and commissioner<a href="http://www.fcc.gov/commissioners/clyburn/"> Mignon Clyburn</a>.  They are both on board to turn the FCC in the direction of a true consumer advocacy position.</p>
<p>I listened to many impassioned pleas for the FCC to stand up for consumer protection.  Most of the public comments came from community groups and individuals.</p>
<p>Lastly, I was fortunate enough to speak myself and wanted the FCC commissioners to know that not all corporations are opposed to enforced network neutrality.  In fact, this corporation is strongly in favor of it.</p>
<p>This morning, around the foosball table, we had a discussion about net neutrality and what it could mean to have corporations both owning the content and distribution mechanism.  This is something I commented on, tangentially, in January of 2000:</p>
<blockquote>
<pre>It's scary to think that one company can own the character I love, (Bugs Bunny) owns the studio he's drawn in (Warner Brothers), the cable network he shown one (The Cartoon Network), the cable company I use to view him (Paragon now called Time Warner) and now the Internet access (which I don't use) used to email my niece about his "cwazy antics".  

Is this the final step in the complete homongenization of our media?  I think it's a large step towards that goal.  The final step will be when all the bookstores, radio stations, television stations and even printing presses are owned by one company.

It's also appears to be a dark day for the proponents of openNET.  They're looking at an ever increasingly difficult battle to demand open access to the cable networks.  When Time/Warner had a subsidiary that provided Internet access to their subscribers, it was feasable that a third party such as AOL or Mindspring could gain access to those subscribers via a mutually beneficial arrangement.  All bets are off now that the
parent copany IS a Internet Access provider.

Maybe the question isn't what are the impacts of AOL / Time Warner.
Maybe the question is who will buy AT&amp;T/MediaOne?</pre>
</blockquote>
<p>That was sent to the Pioneer Press when AOL was about to merge with Time Warner.   The battle OpenNet fought was lost.  The FCC actually went the opposite way and allowed telephone companies to shut out small independent ISPs (like us).  We cannot sell Internet access on the Cable networks and we&#8217;re not allowed to sell the new technologies on the Telephone networks.</p>
<p>I think the issues of the content being owned by the distribution network is still a problem.  The issue of consumers getting access to content is the biggest issue the Internet faces.  Technology to deliver that content continues to evolve very rapidly.  As we look back, the major stumbling blocks for consumers to get access to content has been legal or commercial restrictions.  The delivery mechanisms have been in place LONG before the legal battles are resolved.  This is the nature of capitalism.</p>
<p>Still net neutrality is more than just allowing equal access to content for consumers. Its equal access for business and entrepreneurs  who come up with new ideas of how to use networks.  It&#8217;s equal access for both sides of the equation, consumer and business.  If I search and find your product online, but when I try to get to your site, it&#8217;s slow, I&#8217;m moving on.  Without net neutrality, that problem will be exacerbated.</p>
<p>Adjunct to the content access issue are two issues that haven&#8217;t been mentioned because they further complicate the issue.  I think they&#8217;re rather important.</p>
<ul>
<li>Data Privacy.  All 6 of you who read this blog have heard me talk about this before.  Data privacy goes hand in hand with net neutrality.  If I&#8217;m net neutral, I DON&#8217;T NEED to know what you&#8217;re doing with the delivery network.  But if I&#8217;m not net neutral, I kinda gotta know what you&#8217;re doing so I can make sure you use my network the way I intend.  And if I know what your doing, then I can generate&#8230;</li>
<li>Revenue.  Governments across the nations are struggling to balance their budgets and I fear that cable operators and telephone companies will bond together and promise huge rewards in added tax receipts if net neutrality is written out.  Network operators today can easily tell what packets are destined for where without breaking into the data.  Would it be hard for them to &#8220;tax&#8221; you for your traffic going overseas and promise that revenue to Uncle Sam?</li>
</ul>
<p>This issue IS the largest issue facing the country right now.  Net neutrality underlies everything.  I URGE the FCC to take Internet service and place it back where it belongs, as a telecommunications service.  Protect consumers and businesses alike by creating a playing field where traffic is safe and secure and equal.</p>
<p>Peace.</p>
<p>Bil</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/08/20/net-neutrality-an-immediate-response-is-needed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>She&#8217;s Geeky unConference</title>
		<link>http://blogs.iphouse.net/2010/08/09/shes-geeky-unconference/</link>
		<comments>http://blogs.iphouse.net/2010/08/09/shes-geeky-unconference/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 19:47:32 +0000</pubDate>
		<dc:creator>Genevieve Ruebel</dc:creator>
				<category><![CDATA[Business Planning]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[geeky]]></category>
		<category><![CDATA[Getting Things Done]]></category>
		<category><![CDATA[organizing]]></category>
		<category><![CDATA[She's Geeky]]></category>
		<category><![CDATA[start ups]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[time management]]></category>
		<category><![CDATA[unConference]]></category>
		<category><![CDATA[women]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=433</guid>
		<description><![CDATA[Last weekend, I was fortunate enough to attend She&#8217;s Geeky, an unConference targeting women in the fields of Science, Math and Technology. ipHouse was one of the corporate sponsors for She&#8217;s Geeky and I was very curious about what these tech women would have to say. I had been to Minnebar a couple months ago and <a href="http://blogs.iphouse.net/2010/08/09/shes-geeky-unconference/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Last weekend, I was fortunate enough to attend <a href="http://www.shesgeeky.org/">She&#8217;s Geeky</a>, an unConference targeting women in the fields of Science, Math and Technology. ipHouse was one of the corporate sponsors for She&#8217;s Geeky and I was very curious about what these tech women would have to say. I had been to <a href="http://minnebar.org/minnebar/">Minnebar</a> a couple months ago and found it very interesting. At Minnebar, a lot of the sessions were set up online before the unConference started and people were able to choose if they would want to present or just be an observer (observers do participate heavily though). We were then able to see what our options for sessions were, before even attending.</p>
<p>She&#8217;s Geeky was set up similar to Minnebar&#8217;s unConference except that sessions and presentations were created at the conference instead of in advance.  I was very impressed by the subject matter and thought that there were some very intriguing topics to be discussed. The way Heidi Nobantu Saul organized the unConference made the day very relaxed and open to learning in an intimate format.</p>
<p>The first session that I attended was about the book and way of life called, &#8220;<a href="http://www.davidco.com/what_is_gtd.php" target="_blank">Getting things Done</a>&#8221; by David Allen. I had never heard of this process and I was quite intrigued. Basically, what I learned from the discussion (which <a href="http://www.geekgirlsguide.com/about_us/meghan_wilker/" target="_blank">Meghan </a><a href="http://www.geekgirlsguide.com/about_us/meghan_wilker/" target="_blank">Wilker</a> hosted) was that in our daily lives there are tons of missed opportunities to get things done because of procrastination and poor time management. I have always felt like the lists are swirling around in my brain and they do not ever get to where they are supposed to go, completely. This is why, as I was listening to Meghan explain the system of getting things done and what she has learned from David Allen, my eyes widened and I was saying to myself (maybe out loud) &#8220;there is a way to get things done?&#8221;. I actually went out and purchased the audio book today because I was just so taken with the method of time management. Meghan went through and showed us how <a href="http://www.geekgirlsguide.com/blog/2009/06/24/103/hacking_mail_and_ical_for_gtd" target="_blank">she goes about organizing</a> and using custom lists/folders to prioritize. I can not help but think this is a little intense, never the less, I want to try it for myself.</p>
<p>Another interesting session that I chose to attend was that of entrepreneurial women. The session leader was <a href="http://twitter.com/moarinternets" target="_blank">Jacque Urick</a>. Jacque has just started a <a href="http://www.sieent.com/" target="_blank">gaming company</a>, designed for women. She herself is a gamer and thinks that companies are not targeting women like they should be. Jacque had some very useful stories, both horrific and encouraging. A lot of women in the session were freelancers, start ups or had an amazing idea and did not know where to start. Through out this session, I heard a lot of wisdom from women who have been trailblazers in fields that overall, are still male dominated. These women have hard shells and are ready to take on the world. (I did not realize coming in, just how many lawyers are involved in taking on the job of owning an idea, system or product, as well as funding it!) I felt extremely inspired and the recommendations that the different women gave will always be immensely appreciated. I think that those that shared their stories helped others seek an inner strength to do something they believe in.</p>
<p>The unConference was a true success and I met so many amazingly smart and talented women. I was pleased that ipHouse sponsored this event and that I was able to attend!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/08/09/shes-geeky-unconference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Evening with Brian Solis</title>
		<link>http://blogs.iphouse.net/2010/08/09/an-evening-with-brian-solis/</link>
		<comments>http://blogs.iphouse.net/2010/08/09/an-evening-with-brian-solis/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 15:29:12 +0000</pubDate>
		<dc:creator>Genevieve Ruebel</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=420</guid>
		<description><![CDATA[Last week I went to listen to Brian Solis speak about Social Media. I would like to call this event &#8220;An Evening with Brian Solis&#8221;. Brian Solis entered from the left side of the stage and began setting up his Mac Book Pro for slide show mode. He began by entertaining the idea that relations <a href="http://blogs.iphouse.net/2010/08/09/an-evening-with-brian-solis/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Last week I went to listen to Brian Solis speak about Social Media. I would like to call this event &#8220;An Evening with Brian Solis&#8221;.</p>
<p><a href="http://www.briansolis.com/" target="_blank">Brian Solis</a> entered from the left side of the stage and began setting up his <a href="http://www.apple.com/macbookpro/" target="_blank">Mac Book Pro</a> for slide show mode. He began by entertaining the idea that relations instead of relationships are the way of the future. When one forms a thin bond with someone else on the web because of a common interest or <a href="http://developers.facebook.com/docs/reference/plugins/like" target="_blank">&#8220;like&#8221;</a> that they share, any sort of relationship has turned to a relation. The thing that is so interesting about this thin, almost stretched out bond is that we would never have associated with this other person if it was not for social media. We have crossed thresholds and passed over prejudices that we once held to share an interest (there for a bond)  with someone across the globe.</p>
<p>For over a decade Brian has been finding these bonds and then helping companies benefit from them. He takes what people are interested in, what they are searching for and compiles that information to help them find you (or your business). In turn, the business or person has created more bonds and it has given the people that are interested in that subject, product or whatever a bit of a surge because it is something new.</p>
<p><span id="more-420"></span>Something interesting that Brian brought up was, the feeling that you get from posting something on either Facebook, Twitter or a Blog is similar to the way a mother feels for her child. This is apparent when we repeatedly check on our media, to see what has happened since we last check on it.  When someone posts something they also want a reaction and from what ever type of reaction they get, they start to build a sort of confidence. This confidence is brought on by people paying attention to what they are posting, no matter if this attention is negative or positive (it is attention!). This is interesting because the <a href="http://en.wikipedia.org/wiki/Extraversion_and_introversion">introverts</a> of the world that use social media seem to build a confidence online and when encountering people outside of the web browser they use that same confidence, pulling off the likes of an <a href="http://en.wikipedia.org/wiki/Extraversion_and_introversion">extrovert</a> quite seamlessly (or so Brian says).</p>
<p>I am unsure if I understand this feeling of online confidence. It could be possible to go from feeling like an introvert to becoming an extrovert through your online discovery of friends but, I still think that I enjoy my bonds with people that have nothing to do with my online Social Media skills. I guess I could conclude that Social Media is the way in which the world is and the world will keep moving that in that direction. In fact, we will probably be going the way of not much human contact at all. I will say, that I am all for Social Media and Networking but, I will probably try building my confidence with people in other ways as well.</p>
<p>In the end, it was a splendid evening with Brian Solis, learning about social media.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/08/09/an-evening-with-brian-solis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>alternate stylesheets, part 5</title>
		<link>http://blogs.iphouse.net/2010/05/21/alternate-stylesheets-part-5/</link>
		<comments>http://blogs.iphouse.net/2010/05/21/alternate-stylesheets-part-5/#comments</comments>
		<pubDate>Fri, 21 May 2010 17:25:07 +0000</pubDate>
		<dc:creator>Doug Rau</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=407</guid>
		<description><![CDATA[finally, putting our website skin library to use. stylesheets are linked in the &#60;head&#62; section of an HTML page. first, we link any unnamed stylesheets. these stylesheets are always active, and provide any style instructions for your page, regardless of which skin may be chosen. for example, you might always use the same body fonts, <a href="http://blogs.iphouse.net/2010/05/21/alternate-stylesheets-part-5/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>finally, putting our website skin library to use.</p>
<p>stylesheets are linked in the &lt;head&gt; section of an HTML page.  first, we link any unnamed stylesheets.  these stylesheets are always active, and provide any style instructions for your page, regardless of which skin may be chosen.  for example, you might always use the same body fonts, or a stylesheet intended for print media might hide all the decorative and navigational elements of the page.</p>
<p><span id="more-407"></span></p>
<pre>
  &lt;link rel="stylesheet" type="text/css" media="screen"
    href="skin-common.css" /&gt;
</pre>
<p>next, the named alternate stylesheets.  note that the &#8216;red&#8217; stylesheet is the default stylesheet, and the &#8216;green&#8217; and &#8216;blue&#8217; stylesheets are its alternates.  only one of these stylesheets will be active at a time.</p>
<pre>
  &lt;link rel="stylesheet" type="text/css" media="screen"
    title="red" href="skin-red.css" /&gt;
  &lt;link rel="alternate stylesheet" type="text/css" media="screen"
    title="green" href="skin-green.css" /&gt;
  &lt;link rel="alternate stylesheet" type="text/css" media="screen"
    title="blue" href="skin-blue.css" /&gt;
</pre>
<p>finally, we include the prototype javascript library (which our library uses) and our skin.js library.  the skin.js library includes all of the functions we&#8217;ve developed, and also invokes init_skin().</p>
<pre>
  &lt;script type="text/javascript" src="scriptaculous/prototype.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript" src="skin.js"&gt;&lt;/script&gt;
</pre>
<p>we can also provide a menu of available skins somewhere in the body of the page.  each item is a link which invokes set_skin() with the appropriate skin title.  for example&#8230;</p>
<pre>
  &lt;a href="javascript:set_skin('red');"&gt;red&lt;/a&gt;
</pre>
<p>you can <a href="http://www.iphouse.com/q-branch/skin.html">see this example in action</a>, or <a href="http://www.iphouse.com/q-branch/skin.zip">download an archive of the example files</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/05/21/alternate-stylesheets-part-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>alternate stylesheets, part 4</title>
		<link>http://blogs.iphouse.net/2010/05/19/alternate-stylesheets-part-4/</link>
		<comments>http://blogs.iphouse.net/2010/05/19/alternate-stylesheets-part-4/#comments</comments>
		<pubDate>Wed, 19 May 2010 18:57:18 +0000</pubDate>
		<dc:creator>Doug Rau</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=404</guid>
		<description><![CDATA[we now have the pieces necessary to provide several alternate skins for a website, and provide a visitor with the means to choose one and have it apply across your entire website. finally, a few functions to tie all these pieces together into a library. the init_skin() function must be invoked sometime after the named <a href="http://blogs.iphouse.net/2010/05/19/alternate-stylesheets-part-4/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>we now have the pieces necessary to provide several alternate skins for a website, and provide a visitor with the means to choose one and have it apply across your entire website.  finally, a few functions to tie all these pieces together into a library.</p>
<p>the init_skin() function must be invoked sometime after the named stylesheets are defined, but preferably before the page content is loaded, so that the appropriate stylesheets are already enabled when the web browser begins drawing the web page.  this is most easily accomplished by including our javascript library in the HTML head section after the stylesheets, and calling init_skin() therein.</p>
<p><span id="more-404"></span></p>
<p>the function checks for a cookie named &#8216;skin&#8217;, then tries to make that named stylesheet active.  if set_actcss() does not return a value, then it failed (the requested stylesheet does not exist, etc.) and all the skins are left disabled.  in that case, we should delete the invalid cookie and make the default skin active instead.</p>
<pre>
  function init_skin () {
    if (title = get_cookie('skin')) {
      if (! set_actcss(title)) {
        delete_cookie('skin');
        default_skin();
      }
    }
  }
</pre>
<p>the default_skin() function looks for the preferred named stylesheet, and makes it active.  if there is not a preferred named stylesheet, then it simply gets a list of all named stylesheets and makes the first one active.</p>
<pre>
  function default_skin () {
    if (title = get_prefcss()) {
      set_actcss(title);
    } else if (list = list_stylesheets()) {
      set_actcss(list[0].title);
    }
  }
</pre>
<p>finally, the function to choose a new skin.  set_skin() attempts to make the requested skin active.  if this succeeds, then it also sets a cookie named &#8216;skin&#8217; containing the title of the new skin.  otherwise, it makes the default skin active instead.</p>
<pre>
  function set_skin (title) {
    if (set_actcss(title)) {
      set_cookie('skin',title);
    } else {
      default_skin();
    }
  }
</pre>
<p><a href="/2010/05/21/alternate-stylesheets-part-5/">on to part 5, putting it to use&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/05/19/alternate-stylesheets-part-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>alternate stylesheets, part 3</title>
		<link>http://blogs.iphouse.net/2010/05/17/alternate-stylesheets-part-3/</link>
		<comments>http://blogs.iphouse.net/2010/05/17/alternate-stylesheets-part-3/#comments</comments>
		<pubDate>Mon, 17 May 2010 17:18:47 +0000</pubDate>
		<dc:creator>Doug Rau</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=401</guid>
		<description><![CDATA[just a brief update, today. looking ahead a little bit, we&#8217;re going to need some means of keeping track of which alternate stylesheet the visitor has chosen. and so, some basic cookie functions. there are, of course, more sophisticated libraries available for managing browser cookies, which could be used instead. function get_cookie (name) { var <a href="http://blogs.iphouse.net/2010/05/17/alternate-stylesheets-part-3/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>just a brief update, today.  looking ahead a little bit, we&#8217;re going to need some means of keeping track of which alternate stylesheet the visitor has chosen.  and so, some basic cookie functions.  there are, of course, more sophisticated libraries available for managing browser cookies, which could be used instead.</p>
<p><span id="more-401"></span></p>
<pre>
  function get_cookie (name) {
    var cookies = all_cookies();
    return cookies[name];
  }
  function all_cookies () {
    var cookies = { };

    document.cookie.split('; ').each(function (set) {
      var list = set.split('=');
      cookies[list[0]] = unescape(list[1]);
    });
    return cookies;
  }
  function set_cookie (name,value) {
    document.cookie = [
      name + '=' + value,
      'expires=Thu, 01 Jan 2037 00:00:01 GMT',
      'domain=' + window.location.hostname,
      'path=/'
    ].join('; ');
  }
  function delete_cookie (name) {
    document.cookie = [
      name + '=',
      'expires=Sat, 01 Jan 2000 00:00:01 GMT',
      'domain=' + window.location.hostname,
      'path=/'
    ].join('; ');
  }
</pre>
<p><a href="/2010/05/19/alternate-stylesheets-part-4/">on to part 4&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/05/17/alternate-stylesheets-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>alternate stylesheets, part 2</title>
		<link>http://blogs.iphouse.net/2010/05/13/alternate-stylesheets-part-2/</link>
		<comments>http://blogs.iphouse.net/2010/05/13/alternate-stylesheets-part-2/#comments</comments>
		<pubDate>Thu, 13 May 2010 18:37:54 +0000</pubDate>
		<dc:creator>Doug Rau</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=387</guid>
		<description><![CDATA[the previous post might raise the question, why are we interested in named stylesheets? HTML pages can have two different types of stylesheets linked to them. stylesheets with no title attribute are persistent, and are always applied to the page. stylesheets with a title are alternative, and a browser can choose which one is applied. <a href="http://blogs.iphouse.net/2010/05/13/alternate-stylesheets-part-2/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>the <a href="/2010/05/10/alternate-stylesheets-part-1/">previous post</a> might raise the question, why are we interested in named stylesheets?  HTML pages can have two different types of stylesheets linked to them.  stylesheets with no title attribute are persistent, and are always applied to the page.  stylesheets with a title are <a href="http://www.w3.org/Style/Examples/007/alternatives">alternative</a>, and a browser can choose which one is applied.  one of these should have a relation attribute of rel=&#8221;stylesheet&#8221; which indicates the default (preferred) stylesheet, while the others have rel=&#8221;alternate stylesheet&#8221;.  with some clever use of CSS, you can use this to provide several alternate &#8220;skins&#8221; for your website.  with a browser which supports it, or some clever use of javascript, you can provide a visitor with the means to choose one and have it apply across your entire website.</p>
<p>thus, javascript code to obtain a list of named stylesheets.  it works by using the prototype function $$() to get a list of all link elements in the page, then selects only those which are matched by the named_link() function, and finally maps those through the link_meta() function.  named_link() checks whether a link&#8217;s relation attribute includes the fragment &#8216;style&#8217;, and whether it has a (not empty) title attribute.  link_meta() returns an anonymous object containing a link element and its title attribute (which we&#8217;re most interested in).</p>
<p><span id="more-387"></span></p>
<p>with that foundation, we can determine which of the named stylesheets is the default (preferred) stylesheet by finding the first one whose relation attribute does not include the fragment &#8216;alt&#8217;.</p>
<pre>
  function get_prefcss () {
    if (css = list_stylesheets().find(pref_css)) return css.title;
  }
  function pref_css (meta) {
    return (meta.link.readAttribute('rel').indexOf('alt') == -1);
  }
</pre>
<p>we can also determine which of the named stylesheets is currently active, via the DOM attribute &#8216;disabled&#8217;.  this attribute is set to false for the active named stylesheet, and true for all other named stylesheets.</p>
<pre>
  function get_actcss () {
    if (css = list_stylesheets().find(active_css)) return css.title;
  }
  function active_css (meta) {
    return (! meta.link.disabled);
  }
</pre>
<p>finally, with that bit of insight, we can also set which of the named stylesheets is active.  the function simply loops through each named stylesheet, and compares the stylesheet&#8217;s title attribute to the title we&#8217;ve specified.  if it matches, then it sets that stylesheet&#8217;s disabled attribute to false, otherwise to true.  it also notes and returns which stylesheet was marked active, for verification.</p>
<pre>
  function set_actcss (title) {
    var actcss = false;

    list_stylesheets().each(function (meta) {
      if (meta.title == title) {
        meta.link.disabled = false;
        actcss = title;
      } else {
        meta.link.disabled = true;
      }
    });
    return actcss;
  }
</pre>
<p><a href="/2010/05/17/alternate-stylesheets-part-3/">on to part 3&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/05/13/alternate-stylesheets-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>alternate stylesheets, part 1</title>
		<link>http://blogs.iphouse.net/2010/05/10/alternate-stylesheets-part-1/</link>
		<comments>http://blogs.iphouse.net/2010/05/10/alternate-stylesheets-part-1/#comments</comments>
		<pubDate>Mon, 10 May 2010 20:09:54 +0000</pubDate>
		<dc:creator>Doug Rau</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=382</guid>
		<description><![CDATA[first, a bit of javascript code to obtain a list of named stylesheets linked to an html web page. it uses several prototype functions to streamline the code, and to address any browser quirks in getAttribute(). and since we&#8217;re particularly interested in the title, we actually build a list of anonymous objects, each of which <a href="http://blogs.iphouse.net/2010/05/10/alternate-stylesheets-part-1/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>first, a bit of javascript code to obtain a list of named stylesheets linked to an html web page.  it uses several <a href="http://prototypejs.org/">prototype</a> functions to streamline the code, and to address any browser quirks in getAttribute().  and since we&#8217;re particularly interested in the title, we actually build a list of anonymous objects, each of which contains both a stylesheet link element and its title attribute.</p>
<p><span id="more-382"></span></p>
<pre>
  function list_stylesheets () {
    return $$('link').select(named_link).map(link_meta);
  }
  function named_link (link) {
    return (link.readAttribute('rel').indexOf('style') != -1
      &amp;&amp; link.readAttribute('title'));
  }
  function link_meta (link) {
    return { 'link': link, 'title': link.readAttribute('title') };
  }
</pre>
<p><a href="/2010/05/13/alternate-stylesheets-part-2/">on to part 2&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/05/10/alternate-stylesheets-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
