<?xml version="1.0" encoding="utf-8" ?>
<feed version="1.0"
  xmlns="http://purl.org/atom/ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="en"
  ><title>A Socialist Pear</title>
	<link rel="alternate" type="text/html" href="http://socialistpear.com/" />
	<tagline>juicy, revolutionary design</tagline>
	<modified>2008-05-05T22:33:52-07:00</modified>
	<copyright>Copyright 2010</copyright>
	<generator url="http://dreamscapecms.com/">dreamscape</generator>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Tutorial: Make Aristo&#8217;s Buttons in&nbsp;<span class="caps">CSS3</span>]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/aristo-buttons-in-css3" />
		<id>http://socialistpear.com/journal/aristo-buttons-in-css3</id>
		<modified>2010-06-26T13:56:21-07:00</modified>
		<issued>2010-06-26T13:56:21-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=18"><![CDATA[	<p><strong>Warning: this blog post is about web design technique, intended for web designers and developers only. It could be fatally boring for anyone&nbsp;else.</strong></p>
<div id="button-showcase">
	<p><button class="default" id="aristo-button">Aristo</button></p>
	<p><button class="standard">More</button><button disabled="disabled">More</button></p>
	<p><button class="default">More</button><button class="default" disabled="disabled">More</button></p>
</div>
<p>I&#8217;ve been needing an excuse to blog, some ongoing project or motivation, because I&#8217;m clearly shit at blogging. While working on an interface for a client site, I stumbled across something interesting: conceptually, the <a href="http://github.com/280north/aristo">Aristo interface theme</a> <strong>can be implemented entirely in <abbr title="Cascading Stylesheets"><span class="caps">CSS</span></abbr></strong>. Oddly, as far as I can tell, no one has fully attempted a pure <span class="caps">CSS</span> (no images) implementation of the gorgeous theme (designed by <a href="http://madebysofa.com">Sofa</a> for the <a href="http://cappuccino.org">Cappuccino framework</a>).</p>
<p>So, here&#8217;s my project: I&#8217;m implementing <a href="http://aristocss.com" title="See the Aristo in CSS project">the Aristo theme, entirely in pure, juicy <span class="caps">CSS3</span></a>. I&#8217;ll be doing it piece by piece, widget by widget, and updating the project&#8217;s <a href="http://aristocss.com">main site</a> as I&nbsp;go.</p>
<p>Someone will probably sit down and jam out all the rest of the Aristo widgets before I even get to the next, but I&#8217;m doing this mainly as my own exercise, so go for&nbsp;it.</p>
<p>Today I&#8217;ll publish how to create Aristo&#8217;s buttons using only the tidiest of semantic <span class="caps">HTML</span> and some pretty intense <span class="caps">CSS</span> (including <span class="caps">CSS3</span>, you design-lusting nerd, you). I&#8217;ll explain step-by-step how to create these sexy buttons, and I&#8217;ll conclude with a quandary for you, my colleague in&nbsp;design.</p>
<h3>Aristo Buttons in&nbsp;<span class="caps">CSS3</span></h3>
<div class="excerpt">
	<a href="http://github.com/280north/aristo" title="Click to go to the Github page for Aristo">
		<img alt="[image: buttons in the Aristo theme]" class="wide" src="http://socialistpear.com/dreamscape/uploads/aristo-screenshot.png" />
	</a>
</div>
<p>First, make sure you have the layered <a href="http://github.com/280north/aristo">Aristo <abbr title="Photoshop Document"><span class="caps">PSD</span></abbr></a>. Today we&#8217;ll just work on recreating those sexy buttons. Essentially, our approach will be to duplicate Aristo&#8217;s Photoshop layer styles in <span class="caps">CSS</span>.</a>
<h4>The&nbsp;<span class="caps">HTML</span></h4>
<p>Let&#8217;s start with our <span class="caps">HTML</span>. We&#8217;ll accept no compromises in the form of extra <code>&lt;span&gt;</code>s, <code>&lt;div&gt;</code>s,&nbsp;whatever:</p>
<pre><code class="html"><span class="element">&lt;p&gt;</span><span class="element">&lt;button&gt;</span>More<span class="element">&lt;/button&gt;</span><span class="element">&lt;button <span class="attribute">disabled=&quot;<span class="value">disabled</span>&quot;</span>&gt;</span>More<span class="element">&lt;/button&gt;</span><span class="element">&lt;/p&gt;</span>
<span class="element">&lt;p&gt;</span><span class="element">&lt;button <span class="attribute">class=&quot;<span class="value">default</span>&quot;</span>&gt;</span>More<span class="element">&lt;/button&gt;</span><span class="element">&lt;button <span class="attribute">class=&quot;<span class="value">default</span>&quot;</span> <span class="attribute">disabled=&quot;<span class="value">disabled</span>&quot;</span>&gt;</span>More<span class="element">&lt;/button&gt;</span><span class="element">&lt;/p&gt;</span>
</code></pre>
<p><strong><span class="caps">UPDATE</span>:</strong> To clarify, this <span class="caps">HTML</span> defines four buttons. The <code>&lt;p&gt;</code> tags are just for grouping. All you really need is <code>&lt;button&gt;Love&lt;/button&gt;</code>. Pretty sure this code is as clean as it could possibly&nbsp;be.</p>
<h4>The&nbsp;Fonts</h4>
<p>We want our buttons to be super-flexible, so we&#8217;ll size them around whatever text we put in them. That means our first step has to be getting the font and font-size&nbsp;right.</p>
<p>Oddly (sadly, comically, tragically), the Aristo <span class="caps">PSD</span> uses Arial as its font. Sad. Comic. Tragic. I say let&#8217;s give those people with the super-legible <strong style="font-family: 'Lucida Grande'; line-height: 1;">Lucida Grande</strong> font a slightly enhanced experience. One of the most awesomest things about <span class="caps">CSS</span> is that you can specify a font stack; users with the best font get to use the best font, but others can still get a usable, thought-out reading experience. So here&#8217;s my font stack for&nbsp;Aristo:</p>
<pre><code class="css"><span class="element">body</span> {
	<span class="property">font-family</span>: <span class="value">&quot;Lucida Grande&quot;, Helvetica, Arial, sans-serif</span>;
	}
<span class="element">button</span> {
	<span class="property">font-size</span>: <span class="value">14px</span>;
	<span class="property">font-weight</span>: <span class="value">bold</span>;
	}</code></pre>
<p>Users who have Lucida Grande (Mac users, basically) will see things in that font, and users without will see <span style="font-family: Helvetica;">Helvetica</span>, <span style="font-family: Arial;">Arial</span>, or a fall-back sans-serif font, in that order of preference. <strong>Always remember to test your design with each font in your stack, throughout development</strong>.</p>
<p>In your design, you might want to put the <code>font-family</code> declaration on your <code>button</code> rather than <code>body</code>, if you have a different main&nbsp;font.</p>
<h4>The Button&#8217;s&nbsp;Shape</h4>
<p>The next thing we notice is the size and roundedness of Aristo&#8217;s buttons. The corners appear to have a <code>3px</code> radius. I&#8217;m particularly fond of allowing users to resize their interface (also makes it more flexible if <em>we</em> want to resize the interface later in development), so we&#8217;ll make the rounded corner relative to the <code>button</code>&#8217;s font-size. The corners should have a <code>3px</code> radius when the font-size is <code>14px</code>, so: <code>3 ÷ 14 ≅ .214</code>. Our radius will be <code>.214em</code>.</p>
<p>In order to get the right proportions inside the button, we need a bit of padding. I&#8217;ve also added some margin, to give the buttons a bit of space. Our button so&nbsp;far:</p>
<pre><code class="css"><span class="element">button</span> {
	<span class="property">margin</span>: <span class="value">0 .5em .5em .5em</span>;
	<span class="property">padding</span>: <span class="value">.15em 1em</span>;
	<span class="property">font-size</span>: <span class="value">14px</span>;
	<span class="property">font-weight</span>: <span class="value">bold</span>;
	<span class="property">border-radius</span>: <span class="value">.214em</span>;
	<span class="property">-webkit-border-radius</span>: <span class="value">.214em</span>;
	<span class="property">-moz-border-radius</span>: <span class="value">.214em</span>;
	<span class="property">cursor</span>: <span class="value">pointer</span>;
	}</code></pre>
<p>That gives us something that&#8217;s starting to look like a button (though an ugly&nbsp;one):</p>
	<p><button id="example-1">More</button></p>
<h4>The Label&nbsp;Text</h4>
<p>The button label text has a single pixel of white underneath its letters, giving it that embossed look. We&#8217;ll use a single-pixel&nbsp;text-shadow.</p>
<pre><code class="css"><span class="element">button</span> {
	&hellip;
	<span class="property">color</span>: <span class="value">#4f4f4f</span>;
	<span class="property">text-shadow</span>: <span class="value">0 1px 1px #fff</span>;
	&hellip;
	}</code></pre>
<p>That says that we have a text-shadow that&#8217;s offset <code>0px</code> horizontally, <code>1px</code> vertically (down), and has a <code>1px</code> spread. And it&#8217;s white. The reason I chose pixel sizing here instead of ems is because this little detail is only meant for a single crisp line underneath text; it shouldn&#8217;t&nbsp;resize.</p>
<p>That gives us something that&#8217;s starting to look like a button (though an ugly&nbsp;one):</p>
	<p><button id="example-2">More</button></p>
<h4>The&nbsp;Borders</h4>
<p>The text is nice, but those borders look like crap. In the Aristo <span class="caps">PSD</span>, the borders are made up of a gradient. I decided it would be faster and easier to just use three separate border colors, one for top, one for bottom, and one for the sides. I leave it to the reader (and me, I&#8217;ll probably come back to it) to use border gradients in the&nbsp;<span class="caps">CSS</span>.</p>
<pre><code class="css"><span class="element">button</span>{
	&hellip;
	<span class="property">border</span>: <span class="value">1px solid #acacac</span>;
	<span class="property">border-top-color</span>: <span class="value">#bdbdbd</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#949494</span>;
	&hellip;
	}</code></pre>
	<p><button id="example-3">More</button></p>
<h4>The Background&nbsp;Gradient</h4>
<p>The big thing still missing is the inside coloring, the button&#8217;s main gradient. We&#8217;ll use the dissimilar <code>-webkit-gradient</code> and <code>-moz-linear-gradient</code> functions (values? properties?) to fill the background with that smooth button&nbsp;look.</p>
<pre><code class="css"><span class="element">button</span> {
	&hellip;
	<span class="property">background</span>: <span class="value">#ddd</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#ededed), to(#c4c4c4))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #ededed, #c4c4c4)</span>;
	&hellip;
	}</code></pre>
<p>We specify the background multiple times, to accommodate different browser capabilities. First we give a solid gray background, for those browsers that have no implementation of <span class="caps">CSS</span> gradients. Then, we give WebKit browsers their special <code>-webkit-gradient</code> with its funky syntax. And finally Mozilla-based browsers get their special <code>-moz-linear-gradient</code> with <em>its</em> funky syntax. Internet Explorer has a filter that can do this kind of gradient (funkiest syntax of them all), but I leave that as a tortuous exercise for the reader as&nbsp;well.</p>
	<p><button id="example-4">More</button></p>
<p>Sweeeet. Check out that sexy, sexy button. Ooh,&nbsp;yeah.</p>
<h4>The Focus/Hover&nbsp;State</h4>
<p>The Aristo <span class="caps">PSD</span> has a focus state for the button, with a nice little glow/shadow thing around it. In Cappuccino apps, I think the focus state is only for showing what element the keyboard will interact with (please correct me in the comments if I&#8217;m wrong). I think it would be fun if it also showed this state on <code>:hover</code>. Feel free to disagree, but don&#8217;t even try to tell me it doesn&#8217;t look cool when you mouse over&nbsp;it.</p>
<p>We&#8217;ll make the glow with a <span class="caps">CSS</span> <code>box-shadow</code>:</p>
<pre><code class="css"><span class="element">button:hover</span>,
<span class="element">button:focus</span> {
	<span class="property">box-shadow</span>: <span class="value">0 0 7px rgba(0,0,0,0.4)</span>;
	<span class="property">-webkit-box-shadow</span>: <span class="value">0 0 7px rgba(0,0,0,0.4)</span>;
	<span class="property">-moz-box-shadow</span>: <span class="value">0 0 7px rgba(0,0,0,0.4)</span>;
	}</code></pre>
<p>Our shadow is offset by <code>0px</code> horizontally, <code>0px</code> vertically, and has a spread of <code>7px</code>, with a transparent gray for color. This gives us a gray glow on all sides of the&nbsp;button.</p>
<p>You can see the <code>box-shadow</code> property is consistent across the browsers that support it. In cases like this, be sure to include the generic, non-prefixed property in addition to the vendor-prefixed versions (<code>-webkit-whatever</code>, <code>-moz-thingy</code>, etc.). This will hopefully make your code work great in (most|all) future browsers. You&#8217;ll also be granted 1,000&nbsp;virgin ponies in the&nbsp;afterlife.</p>
<p>Why pixels instead of ems? In previous projects with lots of box-shadows, I found that resizing shadows can severely increase the computation a browser must endure to display your page. Even if you&#8217;ve tested your page and it scrolls and performs just fine at default text size, increasing the size of all shadows on the page can make even normal scrolling laggy. Setting the shadows in <code>px</code> will keep them at their original size, keeping shadow computation at a manageable&nbsp;level.</p>
<p>Here&#8217;s what our button looks like so&nbsp;far:</p>
	<p><button id="example-5">More</button></p>
<h4>The&nbsp;Transition</h4>
<p>Let&#8217;s enhance the experience a little more, by making that glow fade in and out, more like a real <em>glow</em>. We&#8217;ll use the super-awesome <span class="caps">CSS</span> transitions. Man I love me some <span class="caps">CSS</span> transitions. So easy to <a href="http://www.alistapart.com/articles/understandingprogressiveenhancement/" title="Read about the 'Progressive Enhancement' approach to web design">progressively enhance</a> a page/site/app; much easier than using Javascript for every little animated change, plus it can be accelerated in hardware, making <span class="caps">CSS</span> transitions as smooth as&nbsp;possible.</p>
<pre><code class="css"><span class="element">button</span> {
	&hellip;
	<span class="property">transition</span>: <span class="value">all .2s ease-in-out</span>;
	<span class="property">-webkit-transition</span>: <span class="value">all .2s ease-in-out</span>;
	<span class="property">-moz-transition</span>: <span class="value">all .2s ease-in-out</span>;
	<span class="property">-o-transition</span>: <span class="value">all .2s ease-in-out</span>;
	&hellip;
	}</code></pre>
<p>This code says that we&#8217;ll smoothly transition <code>all</code> properties over <code>.2s</code> (2/10ths of a second), easing the animation both at the start and finish. We could have animated just the box-shadow, but I decided to use the keyword <code>all</code> to avoid cramming in all those vendor-prefixed box-shadow properties. We would go that route if we needed to change a different element without a transition. But I like&nbsp;transitions.</p>
	<p><button id="example-6">More</button></p>
<p>Looks pretty sweet, huh? Fun to hover over the buttons and see that&nbsp;effect.</p>
<h4>The Active&nbsp;State</h4>
<p>We&#8217;re making a button, and buttons are meant to be pressed. Now we need to make the pressed state (&#8220;active&#8221; state, in <span class="caps">CSS</span>/<span class="caps">HTML</span> form parlance). Basically, we just define a different background gradient, change the border colors, and ditch the&nbsp;box-shadow:</p>
<pre><code class="css"><span class="element">button:active</span> {
	<span class="property">background</span>: <span class="value">#ccc</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#c3c3c3), to(#ebebeb))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #c3c3c3, #ebebeb)</span>;
	<span class="property">border-color</span>: <span class="value">#a6a6a6</span>;
	<span class="property">border-top-color</span>: <span class="value">#939393</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#bcbcbc</span>;
	<span class="property">box-shadow</span>: <span class="value">none</span>;
	<span class="property">-webkit-box-shadow</span>: <span class="value">none</span>;
	<span class="property">-moz-box-shadow</span>: <span class="value">none</span>;
	<span class="property">-o-box-shadow</span>: <span class="value">none</span>;
	}</code></pre>
<p>Nothing new or thrilling there. But try the button&nbsp;out:</p>
	<p><button id="example-7">More</button></p>
<h4>A Default&nbsp;Button</h4>
<p>Aristo also has a &#8220;default&#8221; button style, blue instead of gray. We&#8217;ve marked this in our <span class="caps">HTML</span> with <code>class=&quot;default&quot;</code>. To get the default button to be blue instead of gray, we just have to redefine the colors and gradients. Pretty&nbsp;straightforward:</p>
<pre><code class="css"><span class="element">button.default</span> {
	<span class="property">color</span>: <span class="value">#1c4257</span>;
	<span class="property">background</span>: <span class="value">#a3cde3</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#b9e0f5), to(#85b2cb))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #b9e0f5, #85b2cb)</span>;
	<span class="property">border</span>: <span class="value">1px solid #759bb1</span>;
	<span class="property">border-top-color</span>: <span class="value">#8ab0c6</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#587e93</span>;
	}</code></pre>
<p>And its hover and active&nbsp;states:</p>
<pre><code class="css"><span class="element">button.default:hover</span>,
<span class="element">button.default:focus</span> {
	<span class="property">box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
	<span class="property">-webkit-box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
	<span class="property">-moz-box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
	<span class="property">-o-box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
	}
<span class="element">button.default:active</span> {
	<span class="property">background</span>: <span class="value">#8abcd7</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#81afc8), to(#b7def4))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #81afc8, #b7def4)</span>;
	<span class="property">border-color</span>: <span class="value">#6e94a9</span>;
	<span class="property">border-top-color</span>: <span class="value">#567c91</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#88aec4</span>;
	<span class="property">box-shadow</span>: <span class="value">none</span>;
	<span class="property">-webkit-box-shadow</span>: <span class="value">none</span>;
	<span class="property">-moz-box-shadow</span>: <span class="value">none</span>;
	<span class="property">-o-box-shadow</span>: <span class="value">none</span>;
	}</code></pre>
	<p><button class="default">More</button></p>
<h4>A Disabled&nbsp;Button</h4>
<p>Some buttons need to be disabled. Fortunately, <span class="caps">HTML5</span>&nbsp;buttons can have a <code>disabled</code> attribute. We&#8217;ll style these based on that&nbsp;attribute.</p>
<pre><code class="css"><span class="element">button[disabled]</span>,
<span class="element">button[disabled]:active</span> {
	<span class="property">color</span>: <span class="value">#a7a7a7</span>;
	<span class="property">background</span>: <span class="value">#efefef</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e1e1e1))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #f6f6f6, #e1e1e1)</span>;
	<span class="property">border-color</span>: <span class="value">#d4d4d4</span>;
	<span class="property">border-top-color</span>: <span class="value">#dedede</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#c9c9c9</span>;
	<span class="property">cursor</span>: <span class="value">default</span>;
	}
<span class="element">button[disabled]:hover</span>,
<span class="element">button[disabled]:focus</span> {
	<span class="property">box-shadow</span>: <span class="value">none</span>;
	<span class="property">-webkit-box-shadow</span>: <span class="value">none</span>;
	<span class="property">-moz-box-shadow</span>: <span class="value">none</span>;
	<span class="property">-o-box-shadow</span>: <span class="value">none</span>;
	}</code></pre>
	<p><button disabled="disabled">More</button></p>
<h4>The Whole&nbsp;Set</h4>
<p>Here&#8217;s the whole set of Aristo buttons we&#8217;ve just styled, together for your button-pushing&nbsp;pleasure.</p>
	<p><button class="standard">More</button><button disabled="disabled">More</button></p>
	<p><button class="default">More</button><button class="default" disabled="disabled">More</button></p>
<p>Notice that you can resize your browser&#8217;s font-size, and these buttons will resize right along with it. This also means you can resize all appropriate aspects of buttons on your site just by resizing the button&#8217;s&nbsp;font.</p>
<h4>The Advanced Single-pixel&nbsp;Detail</h4>
<h4>&hellip; of&nbsp;Doom</h4>
<p>There&#8217;s one detail our buttons are missing from the original Aristo graphics: each button should have a single-pixel highlight just inside its border along the top or bottom, depending on whether it&#8217;s currently pressed. This is a tricky prospect to handle just with <span class="caps">CSS</span>. The folks from Sofa used an Inner Shadow layer style in Photoshop to do the trick. Unfortunately, <span class="caps">CSS</span> has no <code>inner-shadow</code> property, so we delve into a stranger&nbsp;realm.</p>
<p>We could add an extra <code>&lt;span&gt;</code> to our button and style that, but since I&#8217;m not on a deadline for this I figured I&#8217;d think it through until I could do it with my previous pristine&nbsp;markup.</p>
<p>I came up with an approach that is funky, clever, and only sort of works. Basically, I use the <code>:after</code> pseudo-element of the button, make it a block, position it absolutely, then give it a 1&nbsp;pixel border. Kind of crazy, kind of&nbsp;cool.</p>
<pre><code class="css"><span class="element">button</span> {
	<span class="property">position</span>: <span class="value">relative</span>;
	<span class="property">overflow</span>: <span class="value">hidden</span>;
	&hellip;
	}
<span class="element">button:after</span> {
	<span class="property">position</span>: <span class="value">absolute</span>;
	<span class="property">top</span>: <span class="value">0</span>;
	<span class="property">left</span>: <span class="value">0</span>;
	<span class="property">width</span>: <span class="value">100%</span>;
	<span class="property">height</span>: <span class="value">0</span>;
	<span class="property">content</span>: <span class="value">" "</span>;
	<span class="property">border-bottom</span>: <span class="value">1px solid rgba(255,255,255,0.5)</span>;
	}</code></pre>
	<p><button id="example-10">More</button><button id="example-11" class="default">More</button></p>
<p>Kind of crazy, no? Kind of doesn&#8217;t work, too. Almost, but there are two issues. The first  is that in Mozilla-based browsers the pseudo-element refuses to be positioned relative to the entire button, choosing instead to position relative to the text inside the button. The second downside is that even in WebKit-based browsers the pseudo-element doesn&#8217;t respect the border-radius and <code>overflow: hidden</code>. Our single-pixel line happily extends right over the round border and into the empty corner. You can barely notice it at small sizes, but if you bump up your font-size (or the size of your button, or the button&#8217;s border-radius) then it becomes painfully apparent. For this reason I&#8217;m leaving the <code>:after</code> pseudo-elements as <code>display: none</code> for now, until I or someone else can figure out a way to do this&nbsp;better.</p>
<p>I&#8217;d love to hear a better method, so please chime in in the comments if you have&nbsp;ideas!</p>
<h4>In the&nbsp;Browsers</h4>
<p>Even before hitting &#8220;publish&#8221;, I can hear a minor storm of &#8220;If it doesn&#8217;t work in <span class="caps">IE6</span>&nbsp;it&#8217;s not practical&#8221; comments. If you&#8217;re the kind of designer who thinks <a href="http://dowebsitesneedtolookexactlythesameineverybrowser.com/">websites need to look the same in every browser</a>, please feel free to comment, but I&#8217;m afraid I fall into the camp that doesn&#8217;t want to design for the worst browsers first. Mostly, this is an experiment, but I do intend to use these widgets in production client sites, after more testing to make sure they <em>function</em> properly in all major&nbsp;browsers.</p>
<p>If you have tips on how to make these buttons look great in <span class="caps">IE</span>, please chime&nbsp;in!</p>
<h4>A Note on Other Aristo&nbsp;Implementations</h4>
<p>When I first saw <a href="http://github.com/maccman/aristo">this implementation of Aristo</a> by <a href="http://www.eribium.org/">Alex MacCaw</a>, I hoped it would be a pure <span class="caps">CSS</span> version. MacCaw did some excellent (and comprehensive) work, but used images for all the controls. So I set out to do it my way (no images), mostly because I needed an excuse to learn more about <span class="caps">CSS</span>&nbsp;gradients.</p>
<h4>The Rest of&nbsp;Aristo</h4>
<p>I plan to create most or all of the Aristo widgets in <span class="caps">CSS</span>, one-by-one, blogging along the way. Feel free to use these in your own projects, as I&#8217;ll be releasing the code in an open-source license compatible with the original Aristo license (more details soon). Post a comment here if you&#8217;d like to share how you&#8217;ve used&nbsp;it.</p>
<p>Hopefully (for both you and me) my future posts about this process will be considerably more&nbsp;brief.</p>
<h3>The Full&nbsp;Code</h3>
<pre><code class="css" id="full-code"><span class="element">body</span> {
	<span class="property">font-family</span>: <span class="value">&quot;Lucida Grande&quot;, Helvetica, Arial, sans-serif</span>;
	}
<span class="element">button</span> {
	<span class="property">position</span>: <span class="value">relative</span>;
	<span class="property">margin</span>: <span class="value">0 .5em .5em .5em</span>;
	<span class="property">padding</span>: <span class="value">.15em 1em</span>;
	<span class="property">font-size</span>: <span class="value">14px</span>;
	<span class="property">font-weight</span>: <span class="value">bold</span>;
	<span class="property">color</span>: <span class="value">#4f4f4f</span>;
	<span class="property">text-shadow</span>: <span class="value">0 1px 1px #fff</span>;
	<span class="property">background</span>: <span class="value">#ddd</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#ededed), to(#c4c4c4))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #ededed, #c4c4c4)</span>;
	<span class="property">border</span>: <span class="value">1px solid #acacac</span>;
	<span class="property">border-top-color</span>: <span class="value">#bdbdbd</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#949494</span>;
	<span class="property">border-radius</span>: <span class="value">.214em</span>;
	<span class="property">-webkit-border-radius</span>: <span class="value">.214em</span>;
	<span class="property">-moz-border-radius</span>: <span class="value">.214em</span>;
	<span class="property">transition</span>: <span class="value">all .2s ease-in-out</span>;
	<span class="property">-webkit-transition</span>: <span class="value">all .2s ease-in-out</span>;
	<span class="property">-moz-transition</span>: <span class="value">all .2s ease-in-out</span>;
	<span class="property">-o-transition</span>: <span class="value">all .2s ease-in-out</span>;
	<span class="property">cursor</span>: <span class="value">pointer</span>;
	}
	<span class="element">button:hover</span>,
	<span class="element">button:focus</span> {
		<span class="property">box-shadow</span>: <span class="value">0 0 7px rgba(0,0,0,0.4)</span>;
		<span class="property">-webkit-box-shadow</span>: <span class="value">0 0 7px rgba(0,0,0,0.4)</span>;
		<span class="property">-moz-box-shadow</span>: <span class="value">0 0 7px rgba(0,0,0,0.4)</span>;
		}
	<span class="element">button:active</span> {
		<span class="property">background</span>: <span class="value">#ccc</span>;
		<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#c3c3c3), to(#ebebeb))</span>;
		<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #c3c3c3, #ebebeb)</span>;
		<span class="property">border-color</span>: <span class="value">#a6a6a6</span>;
		<span class="property">border-top-color</span>: <span class="value">#939393</span>;
		<span class="property">border-bottom-color</span>: <span class="value">#bcbcbc</span>;
		<span class="property">box-shadow</span>: <span class="value">none</span>;
		<span class="property">-webkit-box-shadow</span>: <span class="value">none</span>;
		<span class="property">-moz-box-shadow</span>: <span class="value">none</span>;
		<span class="property">-o-box-shadow</span>: <span class="value">none</span>;
		}
<span class="element">button.default</span> {
	<span class="property">color</span>: <span class="value">#1c4257</span>;
	<span class="property">background</span>: <span class="value">#a3cde3</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#b9e0f5), to(#85b2cb))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #b9e0f5, #85b2cb)</span>;
	<span class="property">border</span>: <span class="value">1px solid #759bb1</span>;
	<span class="property">border-top-color</span>: <span class="value">#8ab0c6</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#587e93</span>;
	}
	<span class="element">button.default:hover</span>,
	<span class="element">button.default:focus</span> {
		<span class="property">box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
		<span class="property">-webkit-box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
		<span class="property">-moz-box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
		<span class="property">-o-box-shadow</span>: <span class="value">0 0 7px #53a6d5</span>;
		}
	<span class="element">button.default:active</span> {
		<span class="property">background</span>: <span class="value">#8abcd7</span>;
		<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#81afc8), to(#b7def4))</span>;
		<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #81afc8, #b7def4)</span>;
		<span class="property">border-color</span>: <span class="value">#6e94a9</span>;
		<span class="property">border-top-color</span>: <span class="value">#567c91</span>;
		<span class="property">border-bottom-color</span>: <span class="value">#88aec4</span>;
		<span class="property">box-shadow</span>: <span class="value">none</span>;
		<span class="property">-webkit-box-shadow</span>: <span class="value">none</span>;
		<span class="property">-moz-box-shadow</span>: <span class="value">none</span>;
		<span class="property">-o-box-shadow</span>: <span class="value">none</span>;
		}
<span class="element">button[disabled]</span>,
<span class="element">button[disabled]:active</span> {
	<span class="property">color</span>: <span class="value">#a7a7a7</span>;
	<span class="property">background</span>: <span class="value">#efefef</span>;
	<span class="property">background</span>: <span class="value">-webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e1e1e1))</span>;
	<span class="property">background</span>: <span class="value">-moz-linear-gradient(top, #f6f6f6, #e1e1e1)</span>;
	<span class="property">border-color</span>: <span class="value">#d4d4d4</span>;
	<span class="property">border-top-color</span>: <span class="value">#dedede</span>;
	<span class="property">border-bottom-color</span>: <span class="value">#c9c9c9</span>;
	<span class="property">cursor</span>: <span class="value">default</span>;
	}
	<span class="element">button[disabled]:hover</span>,
	<span class="element">button[disabled]:focus</span> {
		<span class="property">box-shadow</span>: <span class="value">none</span>;
		<span class="property">-webkit-box-shadow</span>: <span class="value">none</span>;
		<span class="property">-moz-box-shadow</span>: <span class="value">none</span>;
		<span class="property">-o-box-shadow</span>: <span class="value">none</span>;
		}
</code></pre>
<p>You should follow me on Twitter <a href="http://twitter.com/ryanmiglavs">here</a> (<a href="http://twitter.com/ryanmiglavs">@ryanmiglavs</a>).</p>
<script type="text/javascript">
	// Adds the custom stylesheet to head
	var link = document.createElement("link");
	link.setAttribute("rel","stylesheet");
	link.setAttribute("href","/dreamscape/uploads/buttons.css");
	var head = document.getElementsByTagName("head")[0];
	head.appendChild(link);
</script> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[A Socialist Pear Launches a New&nbsp;MudPuddlesToys.com]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/a-socialist-pear-launches-a-new-mudpuddlestoyscom" />
		<id>http://socialistpear.com/journal/a-socialist-pear-launches-a-new-mudpuddlestoyscom</id>
		<modified>2010-01-09T15:13:12-07:00</modified>
		<issued>2010-01-09T15:13:12-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=17"><![CDATA[	<p>We&#8217;ll have more to write about this soon, but right now I just want to point you to a fun new site we&#8217;ve just launched for one of our favorite clients: <a href="http://mudpuddlestoys.com">MudPuddles Toys <span class="amp">&amp;</span> Books</a>.</p>
<p>This was one of our most ambitious projects to date, and we handled every last detail. We created some new techniques and made some innovative choices along the way, giving a small independent business a cutting-edge and easy-to-use online&nbsp;tool.</p>
<p>More to&nbsp;come.</p> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Fake Steve Jobs on&nbsp;China]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/fake-steve-jobs-on-china" />
		<id>http://socialistpear.com/journal/fake-steve-jobs-on-china</id>
		<modified>2009-07-22T10:08:53-07:00</modified>
		<issued>2009-07-22T10:08:53-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=16"><![CDATA[	<p><a href="http://fakesteve.blogspot.com">Fake Steve Jobs</a> (a satirical parody blogger) often has incisive points, and he&rsquo;s one of the few who&rsquo;s willing to state them as baldly as they deserve. Recently, a 25-year-old employee at Foxconn, the Chinese company that manufactures Apple&rsquo;s iPhone, jumped off a building after being mistreated for losing an iPhone prototype. Fake Steve, on our way of&nbsp;life:</p>

<blockquote cite="http://fakesteve.blogspot.com/2009/07/im-really-thinking-maybe-i-shouldnt.html"><p><span class="ldquo"><span class="dquo">&ldquo;</span></span>We all know that there&#8217;s no fucking way in the world we should have microwave ovens and refrigerators and <span class="caps">TV</span> sets and everything else at the prices we&#8217;re paying for them. There&#8217;s no way we get all this stuff and everything is done fair and square and everyone gets treated right. No way. And don&#8217;t be confused &#8212; what we&#8217;re talking about here is our way of life. Our standard of living. You want to &#8220;fix things in China,&#8221; well, it&#8217;s gonna cost you. Because everything you own, it&#8217;s all done on the backs of millions of poor people whose lives are so awful you can&#8217;t even begin to imagine them, people who will do anything to get a life that is a tiny bit better than the shitty one they were born into, people who get exploited and treated like shit and, in the worst of all cases, pay with their lives.<span class="rdquo">&rdquo;</span></p><cite><a href="http://fakesteve.blogspot.com/2009/07/im-really-thinking-maybe-i-shouldnt.html">Fake Steve Jobs</a></cite></blockquote> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Mac <span class="caps">OS</span> X Printing: Not in the lpadmin&nbsp;Group]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/mac-os-x-printing-not-in-the-lpadmin-group" />
		<id>http://socialistpear.com/journal/mac-os-x-printing-not-in-the-lpadmin-group</id>
		<modified>2009-06-24T16:04:29-07:00</modified>
		<issued>2009-06-24T16:04:29-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=15"><![CDATA[	<p>I just ran into a baffling problem with one of my Mac minis. It&rsquo;s unclear when this error began, but probably after a recent upgrade to Mac <span class="caps">OS</span> 10.5.7. I found myself unable to update, add, or remove printers, even with my admin user account, because I mysteriously did not belong to the group &ldquo;<strong>lpadmin</strong>&rdquo;.</p>

<p>If you&rsquo;re experiencing this problem, then read on. I&rsquo;ll give the solution first, for you time-constrained, impatient people just trying to fix the problem, then I&rsquo;ll describe the&nbsp;background.</p>

<p>The problem is that your user account is no longer in the <strong>lpadmin</strong> group, which is the group of users who can administer printers. When trying to add or change a printer, you get the standard <span class="caps">OS</span> X administrator password dialog, but can&rsquo;t authorize, and get a &ldquo;client-error-not-authorized&rdquo; error. To add yourself back to the lpadmin group, open up Terminal (Utilities &rsaquo; Terminal), and type this&nbsp;command:</p>

<pre><code>sudo dscl . -append /Groups/lpadmin GroupMembership yourusername</code></pre>

<p>You&rsquo;ll need to type your administrator password and hit return, then you should be back in the lpadmin&nbsp;group.</p>

<p>I sincerely hope that solves your problem if you&rsquo;ve been experiencing this&nbsp;one.</p>

<h4>Background</h4>

<p>In Mac <span class="caps">OS</span> 10.5&nbsp;Leopard, Apple eliminated <a href="http://en.wikipedia.org/wiki/NetInfo_Manager">Netinfo Manager</a> and its Netinfo database, replacing it with the <strong>dslocal</strong> database. This is huge for administrators, as that used to be the fundamental tool for managing users and groups at a nitty-gritty, manual-editing level. As far as I know, no single <abbr title="Graphical User Interface"><span class="caps">GUI</span></abbr> tool exists to directly replace Netinfo Manager (I only use regular Mac <span class="caps">OS</span> X, so I have no idea if <span class="caps">OS</span> X Server has such a&nbsp;tool).</p>

<p>Instead of a <span class="caps">GUI</span> tool, we have <code>dscl</code>, <code>dseditgroup</code>, and a handful of other command line tools I don&rsquo;t understand and am (probably rightly) afraid to touch. These handle the dslocal database, which is a bunch of <abbr title="eXtensible Markup Language"><span class="caps">XML</span></abbr> located in <code>/var/db/dslocal/</code>.</p>

<p>Of course the primary point of interaction with the dslocal database is System Preferences, in the Accounts pane. Adding, changing, and removing users is one aspect of dealing with dslocal. By right-clicking on a user in Accounts, you can choose &ldquo;Advanced Options&hellip;&rdquo;, where you can change nitty-gritty properties like a short username and <abbr title="Universally Unique ID"><span class="caps">UUID</span></abbr>.</p>

<p>However, as far as I can find there is no <span class="caps">GUI</span> to manage the system&rsquo;s built-in groups and their memberships. This is important if, for example, you have somehow lost your membership in the &ldquo;lpadmin&rdquo; group, the users who can manage&nbsp;printers.</p>

<p>Let&rsquo;s get into the terminal command I pasted earlier. First is <code>sudo</code>, which lets you run the command as an administrator (it stands for &ldquo;super-user do&rdquo;, get it?). <code>dscl</code> is the general dslocal management tool, used for reading and editing any (I think) part of the dslocal database. <code>.</code> represents the domain, in this case local which is equal to <code>.</code> for some reason. <code>-append</code> means we&rsquo;re appending the value to the XML database row in question, not replacing it. <code>/Groups/lpadmin</code> is the database table, the lpadmin group table. <code>GroupMembership</code> is the row we&rsquo;re editing (appending, in this case), and <code>yourusername</code> (please insert your own username) is the value we&rsquo;re appending. Thus we have added &ldquo;yourusername&rdquo; to the lpadmin group, and you can manage printers&nbsp;again.</p>

<hr />

<h4>Notes</h4>
<p>Although I used to work in <abbr title="Information Technology (tech support)"><span class="caps">IT</span></abbr>, I no longer am in charge of large quantities of Macs, and so I&rsquo;m not the most up-to-date, well-informed, or knowledgeable person on this subject. I experienced this problem and had a difficult time finding a solution&nbsp;online.</p>

<p>If you&rsquo;ve read this far, you must be at least a little interested in Mac <span class="caps">OS</span> X internals, so I recommend you read John C. Welch&rsquo;s write-up, <a href="http://www.macworld.com/article/61097/2007/11/netinfo.html">&ldquo;Analysis: the end of Netinfo&rdquo;</a>. Also, for a fun and brief read, have a look at the <a href="http://en.wikipedia.org/wiki/NetInfo_Manager">Wikipedia entry for Netinfo Manager</a>. Please don&rsquo;t make fun of me for calling that reading&nbsp;fun.</p> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Vincent Connare on Comic&nbsp;Sans]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/vincent-connare-on-comic-sans" />
		<id>http://socialistpear.com/journal/vincent-connare-on-comic-sans</id>
		<modified>2009-06-22T09:03:02-07:00</modified>
		<issued>2009-06-22T09:03:02-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=14"><![CDATA[	<p>On the ubiquitous font <a href="http://en.wikipedia.org/wiki/Comic_Sans">Comic Sans</a>, and the widespread <a href="http://bancomicsans.com/">hatred of it</a>:</p>
<blockquote cite="http://online.wsj.com/article/SB123992364819927171.html"><p><span class="ldquo"><span class="dquo">&ldquo;</span></span>If you love it, you don&#8217;t know much about typography. If you hate it, you really don&#8217;t know much about typography, either, and you should get another hobby.<span class="rdquo">&rdquo;</span></p>
<cite><a href="http://online.wsj.com/article/SB123992364819927171.html">Vincent Connare, creator of Comic Sans</a></cite></blockquote> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Letter to the&nbsp;President]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/letter-to-the-president" />
		<id>http://socialistpear.com/journal/letter-to-the-president</id>
		<modified>2009-06-16T17:19:54-07:00</modified>
		<issued>2009-06-16T17:19:54-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=13"><![CDATA[	<blockquote cite="http://www.hrcbackstory.org/2009/06/a-letter-to-the-president-from-joe-solmonese/"><p><span class="ldquo"><span class="dquo">&ldquo;</span></span>I cannot overstate the pain that we feel as human beings and as families when we read an argument, presented in federal court, implying that our own marriages have no more constitutional standing than incestuous ones.<span class="rdquo">&rdquo;</span></p>
<cite><a href="http://www.hrcbackstory.org/2009/06/a-letter-to-the-president-from-joe-solmonese/">Joe Solmonese, for the Human Rights Campaign</a></cite></blockquote>

<p>I don&rsquo;t think much more needs to be&nbsp;said.</p> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[oh no&nbsp;pigeons]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/oh-no-pigeons" />
		<id>http://socialistpear.com/journal/oh-no-pigeons</id>
		<modified>2008-08-20T20:06:45-07:00</modified>
		<issued>2008-08-20T20:06:45-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=10"><![CDATA[	<a href="http://www.picturesforsadchildren.com/index.php?comicID=173" title="See this comic at pictures for sad children"><img class="wide" alt="[cartoon: pigeons]" src="http://www.picturesforsadchildren.com/comics/00000173.gif" /></a> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Meetings&nbsp;Suck]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/meetings-suck" />
		<id>http://socialistpear.com/journal/meetings-suck</id>
		<modified>2008-08-04T18:21:20-07:00</modified>
		<issued>2008-08-04T18:21:20-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=9"><![CDATA[	<a href="http://www.wetherobots.com/2008/06/16/meeting-time/" title="See this comic at We the Robots"><img class="wide" src="http://www.wetherobots.com/comics/2008-06-16-MeetingTime.jpg" alt="[comic: 'Meeting Time' from We the Robots]" /></a> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Dear Skype&nbsp;[<span class="caps">UPDATED</span>]]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/dear-skype" />
		<id>http://socialistpear.com/journal/dear-skype</id>
		<modified>2008-05-10T18:33:29-07:00</modified>
		<issued>2008-05-10T18:33:29-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=8"><![CDATA[	<p>Dear <a href="http://skype.com">Skype</a>,</p>

<p>I do love you. I really do. But I&#8217;ll be honest: we&#8217;re on rocky grounds right&nbsp;now.</p>

<p>When I broke up with <a href="http://www.gizmoproject.com/">Gizmo</a>, you seemed like a big step up, Skype. You had better software, a <a href="http://tools.netgear.com/skype/">sweet wifi phone</a>, better voicemail management, and you actually worked most of the time. I quickly realized you didn&#8217;t properly send a caller <span class="caps">ID</span>, so people had no idea who was calling them (it&#8217;s typically either +000000&nbsp;or +0123456&nbsp;or something). Also no receiving text messages, and no text messages or chat at all on my Netgear handset. But those were the days of optimism and hope, and simple joy over a $6/month phone bill, so everything was excused with the assumption that you were working on these&nbsp;issues.</p>

<p>It turns out I misunderstood your priorities. You weren&#8217;t working on caller <span class="caps">ID</span> for <span class="caps">US</span> callers; you weren&#8217;t working on simplifying your bloody confusing array of payment and subscription options; you weren&#8217;t working on breaking the stranglehold of oppressive, expensive, technologically-backward telcos; no, you were working on <a href="http://skype.com/mobile/">shitty cell phone compromise add-ons</a> that just admit people should carry expensive, crappy mobile phones and use you as a third-party. You may not want to admit it, Skype, but you&#8217;re becoming the telcos&#8217;&nbsp;bitch.</p>

<p>What happened to the revolutionary Skype? Skype the game-changer? Skype, the little Estonian <span class="caps">P2P</span> communication company that made calling free and set the telcos&#8217; knees trembling? Do you still care about shaking things&nbsp;up?</p>

<p><em>I</em> still&nbsp;care.</p>

<p>You&#8217;ve changed my unlimited calling plan again. I bought &#8220;<a href="http://share.skype.com/sites/en/2006/12/skype_unlimited_for_north_amer.html" title="CANCELLED!">Skype Unlimited</a>&#8221; a year-and-a-half ago or so. Then that got cancelled, and replaced with <a href="http://www.skype.com/allfeatures/skypepro/" title="CANCELLED!">Skype Pro</a> (never mind that, if I recall, the name &#8220;Skype Pro&#8221; used to refer to something totally different, and at the very least it&#8217;s somewhat confusingly-similar to &#8220;Skype for Business&#8221; and various other boring names). Now it&#8217;s just <a href="http://skype.com/allfeatures/subscriptions/" title="SOON TO BE CANCELLED!">Skype Subscriptions</a>. All of these have been almost identical, but with minor little differences that left me wondering if I was still going to be able to do what I had been doing. Also, each change has required me to cancel my then-current plan and sign-up for the new one. A time-wasting hassle, with literally no gain, other than the fact that this unlimited calling thing should probably have been called a subscription from the&nbsp;beginning.</p>

<p>I say all this because really, I do love you, Skype. You&#8217;re cheap, you&#8217;re easy to use, and you&#8217;re a hell of a lot better than those cell phone companies. And you have potential, lots of potential. When popular mindset comes around and embraces the internet as the single necessary network of communication, with all its advantages of price and innovation, you&#8217;ll be in the best place to take advantage of&nbsp;it.</p>

<p>I just hope for both our sakes&#8217;, Skype, that you don&#8217;t muck this up. I want us to have a long and happy future filled with many happy hours of free&nbsp;calling.</p>

<p><em>And give me freaking caller <span class="caps">ID</span>,&nbsp;dammit!</em></p>

<p><strong><span class="caps">UPDATE</span>:</strong> They <a href="http://share.skype.com/sites/en/2008/06/show_whos_calling.html">gave me freaking caller <span class="caps">ID</span></a>!</p> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Ryan Miglavs</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[BarCamp&nbsp;Awesomeness]]></title>
		<link rel="alternate" type="text/html" href="http://socialistpear.com/journal/barcamp-awesomeness" />
		<id>http://socialistpear.com/journal/barcamp-awesomeness</id>
		<modified>2008-05-05T22:33:52-07:00</modified>
		<issued>2008-05-05T22:33:52-07:00</issued>
		<dc:subject>6</dc:subject>
		<content type="text/html" mode="escaped" xml:base="http://socialistpear.com//?pcat=6&amp;item=7"><![CDATA[	<p>I attended my first <a href="http://barcamp.org">BarCamp</a> this past weekend, and I have to say I had a blast. Being around so many intelligent, erudite, open-minded people is always a&nbsp;high.</p>

<p>For those not in the know, BarCamp is an &#8220;unconference&#8221;, an open gathering of people who themselves decide the topics of panels and discussions. The attendees are largely from the various nerd communities, but the format is very open and appropriate for anyone with ideas. I think that&#8217;s most&nbsp;people.</p>

<p>I think my favorite discussion was an open-ended gathering with the topic &#8220;The Social Sciences of Technology&#8221;. We discussed differences and similarities between online interactions and &#8220;analog&#8221; interactions; wiki ideas applied to government, decision-making, and societal structuring (with enthusiastic and enlightening thoughts from <a href="http://aboutus.org/MarkDilley">Mark Dilley</a>); the troubles with binary mindsets; and hope for community self-determination through intelligent use of technology and self-activism. And much much&nbsp;more!</p>

<p>I also loved meeting and chatting with other clever minds and fun folks, some sharing my field of web work. <a href="http://www.eleven3.com">George Huff</a> and <a href="http://www.candyhugs.com/">Todd Quackenbush</a> of <a href="http://www.wtmworldwide.com">We the Media</a> were great to talk with after a delightfully confusingingly-named session on design and nerdery. I look forward to bumping into these two again. <a href="http://brampitoyo.com">Bram Pitoyo</a> and I enjoyed an intense conversation about design, freelancing, web browsers <span class="amp">&amp;</span> word processors, and all manner of fun typophile crap. I also just noticed somewhere on his website that he is a &#8220;elevator music enthusiast&#8221;, a topic we did not discuss but I&#8217;d love to bring up with him sometime. Finally, I met someone I consider a big shot, <a href="http://www.oreillynet.com/pub/au/35">Rael Dornfest</a>, former <abbr title="Chief Technology Officer"><span class="caps">CTO</span></abbr> of <a href="http://oreilly.com">O&#8217;Reilly Media</a> and current wizard at <a href="http://valuesofn.com">Values of n</a> (which I asininely called &#8220;<em>Powers</em> of n&#8221; when I first approached&nbsp;him).</p>

<p>I could talk about the ideas and the people I experienced at BarCamp for a bit longer, but I&#8217;m tired and blog entries are supposed to be short and sexy I&#8217;m told, so I&#8217;ll just let the rest&nbsp;be.</p>

<p>Join the community: go to a <a href="http://barcamp.org">BarCamp near&nbsp;you!</a></p> ]]></content>
	</entry>

</feed>