<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Pixelmatrix Design</title>
    <subtitle type="text">Weblog:</subtitle>
    <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://pixelmatrixdesign.com/site/atom/" />
    <updated>2008-06-23T21:45:28Z</updated>
    <rights>Copyright (c) 2008, Josh Pyles</rights>
    <generator uri="http://expressionengine.com/" version="1.6.3">ExpressionEngine</generator>
    <id>tag:pixelmatrixdesign.com,2008:06:23</id>


    <entry>
      <title>Progressive enhancement and why you should care</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/progressive_enhancement_and_why_you_should_care/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.115</id>
      <published>2008-06-23T17:55:00Z</published>
      <updated>2008-06-23T21:45:28Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="my opinions"
        scheme="http://pixelmatrixdesign.com/site/C21/"
        label="my opinions" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><p>We&#8217;re in a bit of a transitional period now, with <abbr>CSS1</abbr> being supported by all browsers, <abbr>CSS2</abbr> being supported by many browsers, and some <abbr>CSS3</abbr> being supported by modern browsers. The simple fact that we have so many browsers to support can make things very difficult. We want to support new technology, but our ability is hindered by needing to support the older browsers as well.</p>

<p><em>Progressive enhancement</em> offers an elegant solution. Keep in mind, <em>this isn&#8217;t anything new</em>. It&#8217;s been around <em>at least</em> since 2003. With <em>progressive enhancement</em> we&#8217;ll design a site that makes use of <abbr>CSS</abbr> supported in all major browsers, currently limited to <abbr>CSS1</abbr> and portions of <abbr>CSS2</abbr>. Then, rather than go through all the work to code things the hard way (using hacks), we&#8217;ll make use of the advanced features of <abbr>CSS2</abbr> &amp; <abbr>3</abbr> to add to the design. Older browsers still see a <em>nice</em> design, but newer browsers&#8212;especially with Firefox 3 being recently released&#8212;will see a <em>nicer</em> design.</p>

<p>Of course, this isn&#8217;t <em>always</em> the best solution, but I think it&#8217;s a good way to think, design, and code.</p>

<p><em>I offer this example as a practical application of this philosophy:</em></p>

<p>I recently designed a <a href="http://emailtoid.com" title="Email To ID">site</a> (<em>note:</em> I didn't code most of it, but these flags were one of the things I did code) that needed some error &#8220;flags&#8221;. I thought it would be nice to have a gradient on them, use rounded corners and give them a drop-shadow, but I knew it would be pretty difficult to put rounded corners, and a drop shadow on these while still making it easily resizable and bullet-proof. I used progressive enhancement to make the flag look nice in all major browsers, but look <em>especially nice</em> in modern browsers.</p>

<p><em>Here is my example <abbr>HTML</abbr>:</em></p>
<code>&lt;div class=&quot;error required&quot;&gt;&lt;span&gt;Required Field&lt;/span&gt;&lt;/div&gt;</code>

<p><em>&#8230;and the <abbr>CSS</abbr>:</em></p>
<code>
<strong>div.error.required {</strong><br/>
	height: 1.7em;<br/>
	background: transparent url(pointer.png) no-repeat left 51%;<br/>
	font: bold 90%/1.7em "Helvetica Neue", Helvetica, Arial, sans-serif;<br/>
	color: #fff;<br/>
	float: left;<br/>
	padding-left: 1.3em;<br/>
	<em>/* CSS3 */</em><br/>
	text-shadow: #b52700 0 -1px 0;<br/>
<strong>}</strong><br/><br/>

<strong>.error.required span {</strong><br/>
	height: 1.7em;<br/>
	background: #e44205 url(gradient.png) repeat-x 0 center;<br/>
	display: block;<br/>
	float: left;<br/>
	padding: 0 1em 0 .5em;<br/>
	<em>/* CSS3 */</em><br/>
	-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.3);<br/>
	-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.3);<br/>
	box-shadow: 1px 1px 1px rgba(0,0,0,0.3);<br/>
	-webkit-border-top-right-radius: 7px;<br/>
	-webkit-border-bottom-right-radius: 7px;<br/>
	-moz-border-radius-topright: 7px;<br/>
	-moz-border-radius-bottomright: 7px;<br/>
	border-top-right-radius: 7px;<br/>
	border-bottom-right-radius: 7px;<br/>
<strong>}</strong></code>

<p>Notice how I use <abbr>CSS3</abbr> to apply some nice extras such as text-shadow (for an embossed look on the text), box-shadow (for a nice drop shadow), and border-radius (for rounded corners). I used a gradient image for the background of the span that was intentionally taller than expected, in order to leave room for expansion. I also used a pointer triangle image with the same gradient on it that was the same height as the gradient image.</p>

<p><em>The final result looks like this:</em></p>

<style type="text/css">
div.error.required {
	height: 1.7em;
	background: transparent url(/images/weblog/pointer.png) no-repeat left 51%;
	font: bold 90%/1.7em "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #fff;
	float: left;
	padding-left: 1.3em;
	text-shadow: #b52700 0 -1px 0;
}

.error.required span {
	height: 1.7em;
	background: #e44205 url(/images/weblog/gradient.png) repeat-x 0 center;
	display: block;
	float: left;
	padding-left: .5em;
	padding-right: 1em;
	-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.3);
	-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.3);
	box-shadow: 1px 1px 1px rgba(0,0,0,0.3);
	-webkit-border-top-right-radius: 7px;
	-webkit-border-bottom-right-radius: 7px;
	-moz-border-radius-topright: 7px;
	-moz-border-radius-bottomright: 7px;
	border-top-right-radius: 7px;
	border-bottom-right-radius: 7px;
}
</style>

<div class="error required"><span>Required Field</span></div>
<div class="clear"></div>

<p>I hope if you weren&#8217;t already familiar with this philosophy that you&#8217;ll give it a try sometime. It's a different way to think, for sure. You have to give up some control over the design, but the reward is a solution that works well for everyone.</p>

<p>For more information on this check out <a href="http://www.hesketh.com/publications/inclusive_web_design_for_the_future/" title="the original SXSW presentation outlining this philosophy">the original SXSW presentation outlining this philosophy</a>, and the <a href="http://en.wikipedia.org/wiki/Progressive_Enhancement" title="Wikipedia entry">Wikipedia entry</a>.</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Making resolution&#45;independent resources</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/making_resolution_independent_resources/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.113</id>
      <published>2008-06-12T19:55:00Z</published>
      <updated>2008-06-12T21:44:17Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="mac stuff"
        scheme="http://pixelmatrixdesign.com/site/C17/"
        label="mac stuff" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><strong>You will need:</strong>
<ul>
<li>Adobe Illustrator</li>
<li>Icon design skills</li>
<li>Lots of patience</li>
</ul>

<h5>BASICS</h5>

<p>Let&#8217;s go over some basics. &#8216;Resolution Independence&#8217; is essentially the vectorization of interface components so that they can be scaled to a number of <abbr>PPI</abbr>&#8217;s (pixels per inch). Standard screens use 72 <abbr>PPI</abbr> (also referred to as <abbr>DPI</abbr>, but <abbr>PPI</abbr> is more correct). Devices like the iPhone have next-generation screens with a <em>much higher</em> <abbr>PPI</abbr> (160 <abbr>PPI</abbr> on the iPhone). As technology changes, we&#8217;re going to have screens that have higher and higher <abbr>PPI</abbr>, meaning that our interface elements will need to stretch to a number of different pixel values and still look nice (using vector). The format that we currently use is the <abbr>PDF</abbr> format.</p>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/doc_settings.png" width="500" height="298" /></p>
<p class="caption">Document settings for an icon that displays at 16px by 16px on a typical display</p>&#65532;

<h5>GETTING STARTED</h5>

<p>To get started, you need to open Illustrator and create a new document. You&#8217;ll want to enter the dimensions in pixels to <em>exactly</em> the size this image would normally be used at. Make sure you click the &#8216;Advanced&#8217; button and set the color mode to be <abbr>RGB</abbr>, &#8216;Raster effects&#8217; at 'Screen' (72 <abbr>ppi</abbr>), and the &#8216;Preview mode&#8217; set to &#8216;Pixel&#8217;.</p>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/grid_settings.png" width="500" height="329" /></p>
<p class="caption">Grid settings to use when designing for resolution independent UI's</p>

<h5>SETTING UP THE PIXEL GRID</h5>

<p>In order to get <em>any</em> sort of idea where your pixels are in this document, you&#8217;ll need to set up a grid to snap to. Hit &#8984;-K to open the settings, and go to the &#8216;Guides & Grid&#8217; tab.</p>
	
<p>Set your grid measure and subdivisions both to &#8216;32px&#8217;, and make sure it&#8217;s a color that you can work with (such as the default gray). &#8220;Grids In Back&#8221; can be useful sometimes, and a hindrance other times. With this checked, any shape you make on the canvas will hide the grid. Press <abbr>OK</abbr> to save the changes and go back to your document. To turn on and off the grid you can use &#8984;-' or use the View menu.</p>

<h5>WORKING IN ILLUSTRATOR</h5>

<p>This can be tough if you&#8217;re not used to working in Illustrator, but you&#8217;ll want to create your component how you normally would. Sometimes it helps to copy and paste a raster version in first, and to trace it using Shapes or the Pen tool. Zoom in really far to work. Make sure you&#8217;re working with &#8216;Pixel Preview&#8217; on (View &rarr; Pixel Preview), and zoom out to 100% every once and a while.</p>
<p class="note"><strong>Note:</strong> Illustrator&#8217;s pixel rendering at 100% is very strange. Sometimes it can get quite off. The best way to see how it looks is to save your document as a <abbr>PDF</abbr> and drag the file into Text Edit. This will render it with Apple&#8217;s engine, showing you exactly how it will look in your app.</p>

<p>Sometimes if you work with the Pathfinder to merge shapes, you&#8217;ll find that the shape is lined up exactly to the grid and it will look as if it&#8217;s off. This is just Illustrator's faulty rendering.</p>

<p class="note"><strong>Note:</strong> You can paste in vector shapes from Photoshop if you've already designed your glyph or component using Photoshop's shape layers.</p>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/pdf_settings.png" width="500" height="406" /></p>
&#65532;<p class="caption">Settings to use when exporting to <abbr>PDF</abbr></p>

<h5>EXPORTING YOUR FILE</h5>

<p>So you&#8217;ve got your image all ready to be saved as a resource? We need to save this as a <abbr>PDF</abbr>. Go to the &#8216;File &rarr; Save As&#8230;&#8217; window and choose Illustrator <abbr>PDF</abbr> as the format. When prompted for what <abbr>PDF</abbr> settings you want to use, just choose the &#8216;Illustrator Default&#8217; setting from the menu.</p>

<h5>NOTES ON USAGE</h5>

<p>Your file will appear to have a white background since it&#8217;s a <abbr>PDF</abbr>, but when you use it as a resource, the white background will be cut out. This is an important distinction to make because, if you do want a white background, you&#8217;ll need to draw it into the file itself.</p>

<p>You should be able to use the <abbr>PDF</abbr> file just like any other image resource file in your applications.</p>

<p>It may be a bit more work to create resolution-independent resources, but it&#8217;s probably a pretty good investment for the future, when your app will likely be used on higher resolution displays.</p>

<h5>ADDITIONAL READING</h5>

<p>Want to learn more? Here's a couple links to get you started:</p>
<ul class="links">
<li><a href="http://www.cabel.name/2007/01/apples-next-generation-themes.html">cabel.name: Apple's Next Generation Themes</a></li>
<li><a href="http://www.red-sweater.com/blog/223/resolution-independent-fever">Red Sweater Blog - Resolution Independent Fever</a></li>
</ul>
<p>If you've got any thoughts to add, please let me know in the comments.</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Making a better reCAPTCHA</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/making_a_better_recaptcha/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.110</id>
      <published>2008-06-02T19:38:00Z</published>
      <updated>2008-06-02T20:39:08Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="usability"
        scheme="http://pixelmatrixdesign.com/site/C25/"
        label="usability" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><h5>PROBLEMS</h5>
<p>
So let&#8217;s talk about what&#8217;s making this widget <em>suck</em>. The <em>biggest</em> issue I see is that it&#8217;s not clear how you are supposed to type the two words. They are spaced out in the graphic, but for some reason, you&#8217;re not supposed to put a space in the input box. Even worse, it does not explain how it wants you to enter the words.
</p>
<p>
	There&#8217;s also an issue with spacing. The words are scattered above in the top area, and they don&#8217;t really relate to the field below. Optimally the text input would be directly under the words.
</p>
<p>
	For some reason, they&#8217;ve also decided to take up a lot of space with their branding and slogan (which doesn&#8217;t make a lot of sense to me). The logo could be a lot smaller, and we could easily remove the slogan: &#8220;stop spam. read books.&#8221; Let&#8217;s be honest. You&#8217;re not <em>actually</em> going to read any books like this, and it just serves to add to the confusion currently.
</p>
<p>
	Lastly, there&#8217;s no clear way to see if you&#8217;ve entered the information correctly. It seems like some feedback given to the user would be <em>very</em> helpful. If you misread a character you would know you&#8217;ve made an error right away, and if you entered everything correctly, you would be able to see that and know that when you click the &#8220;Submit&#8221; button that it will work.
</p>
<h5>SOLUTIONS</h5>
<p>
To solve the formatting issues I decided to split the text input into two separate fields. This makes it very clear that you need to enter <em>both</em> words, and that there should be <em>one word</em> per field.
</p>
<p>
	In order to solve the spacing issues, i&#8217;ve aligned the inputs with their corresponding text. This helps users <em>instantly</em> understand where they need to type and what goes in each box.
</p>
<p>
	I&#8217;ve reduced the size of the branding to better utilize the space, and also moved the function buttons to the top right corner to fit with the new layout.
</p>
<p>
	I added a new function to the widget which would <em>really</em> help the interaction a lot. It&#8217;s a submit button built right into the widget. Since this widget is really the gatekeeper of the submit button, it makes a lot of sense for that to be contained in the widget itself. Before the user is validated the button is disabled, and when they type in the correct values it enables the button. This wouldn&#8217;t be difficult for them to implement with javascript.
</p>
<p>
	Last but not least, I added some inline validation to better communicate with the user whether or not they are ready to submit the form, and where any errors are.
</p>
<h5>THE END RESULT</h5>
<p>
And here&#8217;s how my improved version of reCAPTCHA looks:
</p>
<p>
<img src="http://www.pixelmatrixdesign.com/images/weblog/recaptcha.png" alt="redesigned recaptcha" />
</p>
<p>
Got a better idea? Let me know in the comments.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Thoughts on Distributed Twitter</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/thoughts_on_distributed_twitter/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.109</id>
      <published>2008-05-31T00:30:00Z</published>
      <updated>2008-05-31T03:29:53Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="my opinions"
        scheme="http://pixelmatrixdesign.com/site/C21/"
        label="my opinions" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><h5>Big Fat Issue: No Community</h5>
<p>
Twitter has grown as large as it is because of the community behind it. The public profiles provide a way to see who people are, and who else they follow. This is a fundamental way that many people discover similar users on Twitter. You can see at a glance everything you need to know about people, without having to go anywhere. Another issue is with communicating with people across the service. With Twitter it&#8217;s beautiful and simple: Just use the &#8220;@&#8221; symbol and the user&#8217;s username, and everyone knows who you&#8217;re talking about. With <em>no</em> central service, there is no great way to do that unless you specify the user&#8217;s full name, which is much less convenient. There&#8217;s also no way to automatically show who you&#8217;re following because all that info is in the client application or website.
</p>
<h5>No history</h5>
<p>
The <em>&#8220;distributed&#8221;</em> form of Twitter would take away any sort of in depth history of a users posts. Right now pagination is gone on Twitter, and many people are really bummed about it. The method of using a feed reader removes any possibility of seeing what people were up to while you were gone on vacation, or without internet for a while. Only if you had your client going <em>constantly</em> to cache the data as it comes in would you have any sort of way to see history.
</p>
<h5>Barrier to entry</h5>
<p>
There is an enormous barrier to entry for something like this. A user would have to (at least for now) create a blog (or use their  current blog) configure it as needed, install a plugin and <em>then</em> search out all their friends&#8217; blogs to see if they are using the distributed service. Another service could provide some of the functionality that you need, but it can&#8217;t completely replace all of the missing features without becoming proprietary.
</p>
<h5>Duplicating functionality</h5>
<p>
The idea of creating a standard <abbr>XML</abbr> format for microblogging seems redundant to me because we already have services like <abbr>XMPP</abbr> that have all of the same components in place.
</p>
<p>
The other aspect of this is that it&#8217;s rewriting Twitter, Pownce, Jaiku, and Facebook status updates, to create the Twitter-killer.
</p>
<h5>Communicating with the blog platforms</h5>
<p>
One of the other issues is that there isn&#8217;t a great way to post microblogs from the desktop that works on all the blogging platforms. I know that some platforms (like Wordpress) have great Metaweblog API support, but not all do. I have had a hard time getting that to work on ExpressionEngine, and it even has a built in plug-in for that. To really take off there would have to be a plugin for every major blogging platform, and they would all need to be compatible.
</p>
<p>
No one wants to have to manually update from their blogging admin tool.
</p>
<h5>What&#8217;s the solution?</h5>
<p>
In my opinion, instead of looking to create <em>our own</em> Twitter/Pownce/Jaiku-like service that&#8217;s open, we should find ways to get Twitter, Pownce, and Jaiku to all talk to each other. The idea of a protocol for this sort of communication is great, but it&#8217;s not going to take off with all the users who area already using these services unless we can get everyone involved on the same page. We need to get the companies themselves on board somehow.
</p>
<p>
In our lives today, we have a seemingly infinite amount of freedom and choice. The real killer feature would be to bring everything back together so my friends on Pownce and Jaiku can talk to me on Twitter, and those who want to set up a system with their blog could also get involved.
</p>
<p>
I am definitely proud of the guys who are behind this movement, and I think it&#8217;s great that they are exploring it, but let&#8217;s see if we can get around these problems! I am sure there are even more issues that I&#8217;m not thinking of as well. Feel free to discuss in the comments below.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>The Future of the Web</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/the_future_of_the_web/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.106</id>
      <published>2008-05-29T20:30:01Z</published>
      <updated>2008-05-29T23:31:10Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="conferences and travel"
        scheme="http://pixelmatrixdesign.com/site/C23/"
        label="conferences and travel" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><h5>FUTURE OF INTERACTION</h5><p>
There was <em>a lot</em> of talk about interaction design at WebVisions, but one of the most notable presentations was about multi-touch and gestural interfaces. After seeing this presentation, it really helped me realize how close we are to <em>fully</em> gesture-based interfaces.
</p>
<p>
Right now the way we interact with devices is really strange. It doesn&#8217;t reflect our interactions with physical objects very well. A mouse and keyboard are not going to be around forever.
</p>
<p>
We are starting to see gesture-based devices in the marketplace, and while they are still brand new, the technology is getting better and better and someday these devices will be common-place.
</p>
<h5>FUTURE OF IDENTITY</h5><p>
Identity is a <em>big</em> issue on the web. We&#8217;ve been trained into this <em>strange</em> system of signing up with every single site and replicating the same information over and over. Think of how many accounts for websites you have. While it may not seem like a big deal to remember usernames and passwords for every site, why should we have to settle for such a hacked-up solution?
</p>
<p>
	Enter <a href="http://openid.net" title="OpenID">OpenID</a>. Actually, not <em>just</em> OpenID, but a whole host of technologies that are going to revolutionize the web (<a href="http://oauth.net/" title="OAuth">OAuth</a>, and <a href="http://diso-project.org/blog/" title="DiSo">DiSo</a> for example). In the real world we don&#8217;t have <em>&#8220;accounts&#8221;</em> that we create at every store before purchasing things. If someone needs to check our identity, they look at our drivers license <em>or</em> passport (trusted sources of identity). If we need to pay, we simply hand them a card from our wallet (trusted sources of financial data). On the web, we need a central protocol for identification, and that&#8217;s what OpenID is. It&#8217;s also important to distinguish that <em>no one &#8220;owns&#8221; OpenID</em>, which is what makes it work. If everyone stored their information with one specific entity (a la Passport), that entity would have too much power.
</p>
<p>
	There&#8217;s lots that will likely happen in the next few years to revolutionize this technology. It&#8217;s still <em>brand-new</em>, and has not matured <em>fully</em> yet (which spurs most of the complaints) but there will come a day when this technology is sorted out, and <em>it just works</em>. Feel free to comment with (or without) OpenID on this blog.
</p>
<h5>FUTURE OF MEDIA</h5><p>
<a href="http://www.lynnedjohnson.com/" title="Lynne Johnson">Lynne Johnson</a> from <a href="http://www.fastcompany.com/" title="FastCompany">FastCompany</a> spoke about the future of print media, something that I&#8217;ve been thinking a lot about lately. While her views on it are <em>a little different</em> than mine, I think we both agree that the places we go to get our media are changing <em>dramatically</em>.
</p>
<p>
	I first became aware of this concept as I worked in different coffee shops and observed the older generation reading newspapers. It made me think about how <em>rarely</em> I see people in my generation (or even my parents&#8217; generations) reading a newspaper. Then, I realized the only time I ever read any news is from the internet. It really seems wasteful now to print newspaper. Printing <em>millions</em> of copies of the news for one day, when it&#8217;s only going to be discarded (hopefully recycled) at the end of the day. It can be argued that the <em>design quality</em> of the daily news is usually not very high either, because the amount of time spent on the design and layout is very limited.
</p>
<p>
	Where Lynne and I disagree is in the medium of books. She believes that this shift from print to digital <em>includes</em> books as well, and I think that books are <em>likely to be preserved</em> in some way or another. Books are <em>prized</em> by loyal readers, and the amount of time that has gone into the design, typesetting and printing of books is a fine quality that <em>cannot be appreciated</em> in a digital format.
</p>
<p>
	There is also a <em>huge</em> issue with the technology. There is no device that I currently feel comfortable reading for long periods of time with. The soothing qualities of books are <em>not at all</em> realized with devices. I have a few ebooks stored on my computer, and I just cannot bring myself to read them. Even with devices like the Kindle, books just don&#8217;t feel the same, and I still find it hard to read them.
</p>
<p>
	I can see &#8220;pulp fiction&#8221;, and other smaller, cheaper books moving to a digital format, where the format is shorter and the quality would not have been as high anyway, but I think we&#8217;ll always have some sort of printed books around.
</p>
<h5>WHERE IT&#8217;S ALL GOING</h5><p>
I can&#8217;t pretend to know everything about where we&#8217;re heading, but there are a lot of signs that we&#8217;re moving into a fundamental shift from learned computing behaviors to a <em>more natural</em> model that mimics how we interact in the physical world.
</p>
<p>
Only time will tell.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Quick Tip: Opacity</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/quick_tip_opacity/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.104</id>
      <published>2008-05-27T23:00:00Z</published>
      <updated>2008-05-27T23:05:01Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="tips and tricks"
        scheme="http://pixelmatrixdesign.com/site/C18/"
        label="tips and tricks" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><p>Did you know that while using the Move Tool (V) in Photoshop, you can press 1-0 on your keyboard to control the opacity of the current layer?
</p>
<p>
1 = 10%, 2 = 20%, 0 = 100%, etc&#8230;. 
</p>
<p>
If you&#8217;re fast enough you can even type a specific number (like 23) and it will assign that opacity to the layer.
</p>
<p>
Thought i&#8217;d share this tip for anyone who doesn&#8217;t know.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Making beautiful, Apple&#45;style screenshot layouts</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/making_beautiful_apple_style_screenshot_layouts/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.102</id>
      <published>2008-05-16T22:53:00Z</published>
      <updated>2008-05-21T00:17:44Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="tips and tricks"
        scheme="http://pixelmatrixdesign.com/site/C18/"
        label="tips and tricks" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><h5>Getting Started</h5>
<p><strong>You will need:</strong></p>

<ul>
<li>Photoshop <abbr>CS2</abbr> or higher</li>
<li>Illustrator <abbr>CS2</abbr> or higher</li>
<li>A few screenshots of your product</li>
<li>Patience</li>
<li>Basic Photoshop skills</li>
</ul>
<p><em>If you don&#8217;t have a screenshot to play with, you can use these example screenshots:</em></p>

<div class="download"><a href="http://www.pixelmatrixdesign.com/images/weblog/example_screenshots.zip" class="filetype zip" title="Download example_screenshots.zip">Download example_screenshots.zip</a><p>ZIP Format, 360 kb</p></div>

<p>Now that we&#8217;ve got all our tools, make sure you&#8217;ve got <em>both</em> Illustrator and Photoshop open, and let&#8217;s dig in.</p>

<h5>Prepping the screenshots in Photoshop</h5>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step1.png" alt="Masking out the the shadow and stroke from the original screenshot." /></p>
<p class="caption">Masking out the the shadow and stroke from the original screenshot.</p>

<p>Open up both of your screenshots in Photoshop. We&#8217;re assuming you want your screenshots to be smaller in your design than what they are currently. I recommend taking a screenshot on a Mac with <em>Command-Shift-4</em>, hitting spacebar, and capturing the full window. Either way you do it, you&#8217;ll want to mask out the shadow, and background from your screenshot so you just have your window on a transparent background.</p>

<p class="note"><strong>Important:</strong> There is usually a 1px stroke around the window that will really cause problems unless you mask it out of your screenshot image. You can add this back in the final step as a layer style.</p>

<h5>Creating the layout in Illustrator</h5>

<p>Here&#8217;s where we mix things up. Illustrator has some pretty powerful <abbr>3D</abbr> effects that let you rotate objects in perspective, and change the values later on without destroying your work.</p>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step2.png" alt="Placing the screenshots into Illustrator" /></p>
<p class="caption">Placing the screenshots into Illustrator</p>

<p>First, create a canvas that&#8217;s roughly twice the size of the desired end result. Place your screenshots into Illustrator at full size (File &rarr; Place&#8230;) and make sure that you check the &#8220;Link&#8221; box.</p>

<p><a href="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step3.png" class="thickbox" title="Example canvas with both screenshots at twice the size I want them."><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step3_thumb.png" alt="Example canvas with both screenshots at twice the size I want them" /></a></p>
<p class="caption">Example canvas with both screenshots at twice the size I want them. Click to view full sized.</p>

<p>Then, shrink down your screenshot to roughly twice the size you want it at (Zoom out to 50% to get an idea of what size it will be).</p>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step4.png" alt="Setting up the 3D rotate effect" /></p>
<p class="caption">Setting up the 3D rotate effect</p>

<p>Next, lets apply some <abbr>3D</abbr> effects. Go to Effect &rarr; <abbr>3D</abbr> &rarr; Rotate&#8230;. You can use whatever settings make sense for you. You&#8217;re going to want to set the X and Z axis&#8217; to 0&#186;, and play with the Y axis, and Perspective values. It takes a lot of playing around to find the right angle for your screenshots.</p>

<p><strong>Here are the settings I used for my example:</strong></p>
<p><strong>X:</strong> 0&#186; | <strong>Y:</strong> 30&#186; | <strong>Z:</strong> 0&#186; | <strong>Perspective:</strong> 25&#186;</p>

<p>To test the settings you&#8217;re playing with, you can turn on the Preview. Once you have your settings perfect, press OK, and repeat the process for your other screenshots.</p>

<p class="note"><strong>Hint:</strong> To make screenshots face opposite directions, just change the Y value of one of them to a negative number and leave all the other settings the same.</p>

<p>Arrange your screenshots how you want them to get a good idea of how it will look.</p>

<h5>Back to Photoshop again</h5>

<p>Now, it&#8217;s time to put everything together in Photoshop and apply some nice effects. Create a new document that&#8217;s the size you&#8217;ll be using these screenshots at, or use an existing document you&#8217;ve got open (like a website design).</p>

<p style="float:right; margin-left: 1.5em;" ><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step5.png" alt="Paste options" /></p>

<p>Copy your screenshots <em>one at a time</em> from Illustrator by selecting the screenshot, pressing <em>Command-C</em>, and pasting (<em>Command-V</em> ) it into your Photoshop document.</p> 

<p>You should be asked how you want to paste it in. Select &#8220;Pixels&#8221; for best results.</p>

<p>Once you&#8217;ve got your screenshots in (remember, they should be about twice the size you want to use them at), apply the filter &#8220;Unsharp Mask&#8221; (Filter &rarr; Sharpen &rarr; Unsharp Mask) to each of your screenshot layers. This helps the screenshots to be more readable.</p>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step6.png" alt="The settings I used to sharpen the screenshots with Unsharp Mask" /></p>
<p class="caption">The settings I used to sharpen the screenshots with Unsharp Mask</p>

<p>Then, select both of your screenshot layers and shrink them down to size. Pay attention to the toolbar where it says what size you&#8217;re shrinking it to in case you want to paste these in again in the future.</p>

<p><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_step7.png" alt="My screenshots shrunk down and aligned" /></p>
<p class="caption">My screenshots shrunk down and aligned</p>

<p class="note"><strong>Important:</strong> You&#8217;ll only want to resize these once because each resize you make blurs the layer more.</p>

<p>Finally, style these however you like. I suggest adding a 1px, black, ~10% transparent stroke to give it some definition, adding a very faint gradient in screen mode to give it some shading, adding surface and cast shadows, and reflections.</p>

<p><a href="http://www.pixelmatrixdesign.com/images/weblog/screenshots_final.png" class="thickbox" title="The final screenshot layout"><img src="http://www.pixelmatrixdesign.com/images/weblog/screenshots_final_thumb.png" alt="The final screenshot layout" /></a></p>
<p class="caption">The final screenshot layout. Click to view larger.</p>

<p>You can download my sample <abbr>PSD</abbr> to see how I applied these effects into a complete screenshot layout.</p>

<div class="download"><a href="http://www.pixelmatrixdesign.com/images/weblog/example_layout.zip" class="filetype zip" title="Download example_layout.zip">Download example_layout.zip</a><p>ZIP Format, 1020 kb</p></div>

<p>If there is enough interest I may post a second part on how to style these screenshots. Let me know if that is something you&#8217;d like to see in the comments.</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Filling layers with mask</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/filling_layers_with_mask/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.98</id>
      <published>2008-05-12T18:56:00Z</published>
      <updated>2008-05-12T19:05:29Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="tips and tricks"
        scheme="http://pixelmatrixdesign.com/site/C18/"
        label="tips and tricks" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><p>Lets say you want to simply change the fill color of a layer in Photoshop from white to black. The typical process is not very effective:
<br />
<ol><li>Load the selection for the layer you want to change (option click on the layer)</li>
<li>Make sure you have the correct color in the foreground</li>
<li>Hit Option-Delete to fill it with the foreground</li></ol>
<br />
Not only is this a slow process, but it also <em>does not</em> respect the transparency mask, leaving pixels that used to be 25% transparent to be 50% transparent now.
</p>
<p>
Fortunately there is a <em>quick</em> and <em>easy</em> method that <em>does</em> respect the transparency of your layer, and it&#8217;s also <em>a lot</em> quicker:
</p>
<p>
Simply select the layer you want to change colors for, make sure you&#8217;ve got the new color in the foreground and hit: Option-<strong>Shift</strong>-Delete. This tip also works for shape layers and text layers as well!
</p>
<p>
Thanks to <a href="http://www.pixelnetdesign.com/">Brian Zeitler</a> for teaching me this trick a while back!
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Pixelmatrix Book Review</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/pixelmatrix_book_review/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.94</id>
      <published>2008-05-05T17:24:01Z</published>
      <updated>2008-05-07T06:46:20Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="what i&apos;m reading"
        scheme="http://pixelmatrixdesign.com/site/C24/"
        label="what i&apos;m reading" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><h3>Designing the Obvious <span class="smaller">by Robert Hoekman Jr.</span></h3>
<img src="http://www.pixelmatrixdesign.com/images/weblog/book_designingobvious.jpg" alt="Designing the Obvious" style="float: right; margin-top: 1em; margin-bottom: 2em; margin-left: 2em;" />
<p>Designing the Obvious walks you through several techniques and principals to designing <em>obvious</em> interactions in your applications. As a UI geek myself, I really enjoy thinking about these sorts of challenges. Robert walks us through several different areas of UI / interaction design, including tips on how to plan out complicated interfaces. I really enjoyed his points on how to get users from being beginners to intermediates very quickly. If you are designing web applications, this book is a <strong>must read!</strong></p>

<p><a href="http://www.amazon.com/Designing-Obvious-Common-Approach-Application/dp/032145345X/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1210009741&sr=8-1">Check it out on Amazon &rarr;</a><br/>
<a href="http://rhjr.net">Robert Hoekman Jr&#8217;s website &rarr;</a></p>

<h3>Bulletproof Web Design <span class="smaller">by Dan Cederholm</span></h3>
<img src="http://www.pixelmatrixdesign.com/images/weblog/book_bulletproof.jpg" alt="Bulletproof Web Design" style="float: right; margin-top: 1em; margin-bottom: 2em; margin-left: 2em;" />
<p>While I&#8217;m sure many of my readers have already read this book, I have to recommend it to anyone who hasn&#8217;t. Never before have I cared <em>so passionately</em> about semantic code than after I read Dan Cederholm&#8217;s Bulletproof Web Design. Dan walks us through several examples of common website elements that are typically <em>not</em> bulletproof (meaning, indestructible). This book took me from a semantic code enthusiast to a semantic code <em>evangelist!</em> If you&#8217;re learning web design, or web development, this book is an absolute must read. The book is easy to read, and very nicely designed as well. It includes several examples and walks you through every step of the way. You <em>won&#8217;t</em> regret reading this book.</p>

<p><a href="http://www.amazon.com/Bulletproof-Web-Design-flexibility-protecting/dp/0321509021/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1210009839&sr=1-1">Check it out on Amazon &rarr;</a><br/>
<a href="http://simplebits.com">Dan Cederholm&#8217;s website &rarr;</a></p> 
      ]]></content>
    </entry>

    <entry>
      <title>Inline Editing Controls in Expression Engine</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/inline_editing_controls_in_expression_engine/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.92</id>
      <published>2008-04-30T02:59:00Z</published>
      <updated>2008-04-30T05:01:37Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="expression engine"
        scheme="http://pixelmatrixdesign.com/site/C19/"
        label="expression engine" />
      <category term="tips and tricks"
        scheme="http://pixelmatrixdesign.com/site/C18/"
        label="tips and tricks" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><p><a href="#syntax">Skip to syntax &rarr;</a>
</p>
<h3>First things first</h3><p>
In order to just show this to our Super Admin&#8217;s we need to get the <var>logged_in_group_id</var> variable that tells us what group the currently logged in user is in. You may remember we used a similar variable (<var>group_id</var>) in the previous example for the admin bar. Since we&#8217;re going to use this variable within other tags (the <var>weblog:entries</var>, and <var>comment:entries</var> tags) we need to specify that we want to learn about the <em>logged in</em> user.
</p>
<h3>Linking to the CP</h3><p>
Next, we need to figure out our link syntax. The control panel uses a pretty simple syntax that isn&#8217;t really documented anywhere, but easy to learn.
</p>
<p>
<strong>To edit a specific post, we need this <abbr>URL</abbr>:</strong>
</p>
<p>
<var>/(name of your system folder)/index.php?C=edit&amp;M=edit_entry&amp;weblog_id=(weblog_id of the entry)&amp;entry_id=(entry_id for the post)</var>
</p>
<p>
<strong>To close a specific comment, we need this <abbr>URL</abbr>:</strong>
</p>
<p>
<var>/(name of your system folder)/index.php?C=edit&amp;M=change_status&amp;weblog_id=(weblog_id of the entry)&amp;entry_id=(entry_id for the post)&amp;comment_id=(id of the comment you&#8217;re closing)&amp;status=close</var>
</p>
<h3>Generating the URL</h3><p>
Lastly, we need to find the variables to give us these URLs. Here&#8217;s what you&#8217;ll actually be using for your links.
</p>
<p>
<strong>For &#8220;Edit this post&#8221;:</strong>
<br />
<ul>
<li><var>&#123;weblog_id&#125;</var> - get the id of the weblog for the current post</li>
<li><var>&#123;entry_id&#125;</var> - get the entry id of the current post</li>
</ul>
<p>
<strong>For &#8220;Close this comment&#8221;:</strong>
<br />
<ul>
<li><var>&#123;weblog_id&#125;</var> - get the id of the weblog for the current post</li>
<li><var>&#123;entry_id&#125;</var> - get the entry id of the current post</li>
<li><var>&#123;comment_id&#125;</var> - get the id of the current comment</li>
</ul>
<p>
</p><h3 id="syntax">Final Syntax</h3><p>
Now let&#8217;s put it all together!
</p>
<p>
<strong>Edit this entry example:</strong>
</p>
<code><p>
&#123;exp:weblog:entries&#125;
</p>
<p>
&hellip;
</p>
<p>
&#123;if logged_in_group_id == 1&#125;
</p>
<p>
&lt;a href="/system/index.php?C=edit&amp;M=edit_entry&amp;weblog_id=&#123;weblog_id&#125;&amp;entry_id=&#123;entry_id&#125;"&gt;Edit this entry&lt;/a&gt;
</p>
<p>
&#123;/if&#125;
</p>
<p>
&hellip;
</p>
<p>
&#123;/exp:weblog:entries&#125;
<br />
</p></code>
<p>
<strong>Close this comment example:</strong>
</p>
<code><p>
&#123;exp:comment:entries&#125;
</p>
<p>
&hellip;
</p>
<p>
&#123;if logged_in_group_id == 1&#125;
</p>
<p>
&lt;a href="/system/index.php?C=edit&amp;M=change_status&amp;weblog_id=&#123;weblog_id&#125;&amp;entry_id=&#123;entry_id&#125;&amp;
<br />
comment_id=&#123;comment_id&#125;&amp;status=close"&gt;Close comment&lt;/a&gt;
</p>
<p>
&#123;/if&#125;
</p>
<p>
&hellip;
</p>
<p>
&#123;/exp:comment:entries&#125;
<br />
</p></code>
<p>
</p><h3>Make your own</h3><p>
The possibilities of inline editing are nearly infinite. To create your own custom solutions, here&#8217;s what I recommend.
<br />
<ol>
<li>Visit the area that you want to link to in the control panel</li>
<li>Analyze the <abbr>URL</abbr> of where you are in the CP</li>
<li>Determine which variables in the <abbr>URL</abbr> need to be filled in dynamically</li>
<li>Search the documentation for the variable you need. <em>Hint: the CP&#8217;s variables are typically the same variable names you&#8217;ll use to generate the content (weblog_id = <var>&#123;weblog_id&#125;</var>).</em></li>
<li>Add conditionals that you need to limit access to these links. Generally, <var>logged_in_group_id</var> is what you&#8217;ll use, but there may be other functionality you need.</li>
<li>Assemble your <abbr>URL</abbr> and test it on an obscure page or a test template. If it works how you need it to, then push it live.</li>
</ol>
<br />
I hope this helps anyone who is looking to interface inline with the Expression Engine&#8217;s control panel. Leave your thoughts, comments, suggestions, and conspiracy theories in the comments below.
<br />

</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Creating an Admin Bar for Expression Engine</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/creating_an_admin_bar_for_expression_engine/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.90</id>
      <published>2008-04-21T03:39:01Z</published>
      <updated>2008-04-22T03:35:12Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="expression engine"
        scheme="http://pixelmatrixdesign.com/site/C19/"
        label="expression engine" />
      <category term="tips and tricks"
        scheme="http://pixelmatrixdesign.com/site/C18/"
        label="tips and tricks" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><p>ExpressionEngine uses a variable called <var>group_id</var> to determine what group the currently logged-in user is in. In most cases, a <var>group_id</var> of 1 means you&#8217;re a Super Admin, meaning you have access to the control panel.
</p>
<p>
The other piece of the puzzle is finding out how to link to certain areas of the control panel. I was not able to find any information about this in the <a href="http://www.expressionengine.com/documentation">EE Documentation</a>, so i&#8217;ll present my findings here.
</p>
<p>
When you&#8217;re logged in, look at the end of the URL and you should see something like <var>&#8220;&#8230;&amp;C=publish&#8221;</var>.&nbsp; Each area of the admin has a C value that corresponds to it (as well as some other variables in more complicated areas). The only variable that should be disregarded is &#8220;S&#8221; which stands for your <var>session_id</var> and is irrelevant to our goals.
</p>
<p>
<strong>Here are a couple of common ones:</strong>
<br />
<ul>
<li><strong>Publish tab</strong> - <var>C=publish</var></li>
<li><strong>Edit tab</strong> - <var>C=edit</var></li>
<li><strong>Templates tab</strong> - <var>C=templates</var></li>
<li><strong>Admin tab</strong> - <var>C=admin</var></li>
<li><strong>Log-out</strong> - <var>C=logout</var></li>
</ul>
<p>
<strong>And a couple more complicated (but very useful) ones:</strong>
<br />
<ul>
<li><strong>New Post in Weblog 1</strong> - <var>C=publish&amp;M=entry_form&amp;weblog_id=1</var></li>
<li><strong>Edit Post 88</strong> - <var>C=edit&amp;M=edit_entry&amp;weblog_id=1&amp;entry_id=88</var></li>
</ul>
<p>
Now that we know how to only show this bar to our Super Admin users, as well as the urls we need to link to, we can add in our code to the template.
</p>
<p>
Here&#8217;s the code i&#8217;m using. You&#8217;re very welcome to use this code in your own sites, as it should work perfectly without any customization.
</p>
<pre><code class="html">
&#123;if group_id == 1&#125;
&lt;!-- if user is in Super Admin (group #1) --&gt;
&lt;div class=&quot;admin_bar&quot;&gt;
&lt;!-- the container for our admin bar --&gt;
	&lt;ul&gt;
	&lt;li&gt;Welcome &#123;screen_name&#125;!&lt;/li&gt;
	&lt;!-- welcome our current logged in user by their screen name --&gt;
	&lt;li&gt;&lt;a href=&quot;&#123;site_url&#125;system&quot; title=&quot;Access the CP&quot;&gt;
	Control Panel&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;&#123;site_url&#125;system/index.php?C=publish
	&amp;M=entry_form&amp;weblog_id=1&quot; title=&quot;Write a New Post&quot;&gt;
	New Post&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;&#123;site_url&#125;system/index.php?C=edit&quot;&gt;
	Edit Posts&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://expressionengine.com/docs/&quot;&gt;
	Documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;&#123;site_url&#125;system/index.php?C=logout&quot;&gt;
	Log Out&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;
&#123;/if&#125;
</code></pre>
</p>
<p>
And that&#8217;s it! You&#8217;ve just added your very own Admin bar. I would make sure this is working for your specific set up, and double check things like the <var>group_id</var>  just to be safe.
</p>
<p>
One thing that has always annoyed me was that you don&#8217;t stay logged in for very long, therefore the bar disappears pretty often. If you&#8217;d like to remain logged in much longer than the default configuration allows, there is an easy way to enable that.
</p>
<p>
Simply go to Admin &rarr; System Preferences &rarr; Security &amp; Session Preferences and set the Control Panel Session Type to &#8220;Cookies only.&#8221;
</p>
<p>
This will keep you logged in longer, but you will lose some security if you log in on a public computer and forget to log out. The implications are minor, but still there.
</p>
<p>
I hope you&#8217;ve enjoyed this code sample and I hope it inspires even more cool ideas, and be sure to blog them so we can all enjoy. Let me know in the comments if you&#8217;ve got questions or other feedback.
</p>
<p>
<strong>Update:</strong>
<br />
There are some variables you&#8217;ll want to double-check before using this on your site:
<br />
<ul>
<li><var>group_id</var> - Double check that this ID is your super admin group</li>
<li><var>system/</var> - Make sure that you change &#8220;system&#8221; to whatever folder you&#8217;re using. &#8220;system&#8221; is the default configuration, but many people change it.</li>
<li><var>weblog_id</var> - You&#8217;ll want to make sure that this is the ID of the weblog you&#8217;d like to post/edit from. Again, under default configuration, this should be 1, but this could likely change if you have multiple &#8220;weblogs&#8221; on your install.</li>
</ul>
<p>
Also if you&#8217;re trying to use something like this in the weblog entries tag, comments tag, or within other member-related tags you&#8217;ll need to add the prefix <var>&#8220;logged_in_&#8221;</var> to your <var>group_id</var>, <var>screen_name</var> and other member-related variables. This specifies that you only want the info about the logged in user and not the user who posted the current content.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>5 Reasons Why Jabber is the Best IM Service</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/5_reasons_why_jabber_is_the_best_im_service/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.89</id>
      <published>2008-04-16T04:29:00Z</published>
      <updated>2008-04-17T02:50:00Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="the web in general"
        scheme="http://pixelmatrixdesign.com/site/C16/"
        label="the web in general" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><h3>1.) Open Source</h3><p>
Jabber is not locked down like other services like AIM, MSN, ICQ and etc. Any company out there can integrate with the service without having to worry about royalties.
</p>
<h3>2.) Decentralized</h3><p>
There is no central server for Jabber/XMPP-based IM. Anyone can run there own XMPP server. This means your company could easily make their own chat service around Jabber, and not only that, but be able to communicate with a host of other Jabber-compliant servers.
</p>
<h3>3.) You Probably Already Have It</h3><p>
If you have a <a href="http://gmail.com">Gmail</a> or Google account, then you already have an account. <a href="http://talk.google.com">Google Talk</a> is a Jabber-based service, and is included by default in Gmail. This means you probably don&#8217;t even have to sign up for an account.
</p>
<p>
Additionally, if you have a Gmail account, that doesn&#8217;t mean you can ONLY talk to your friends on Gmail, but you could talk to anyone that&#8217;s on a Jabber-based service. For instance, I have a Gmail jabber account that I use, but I have some friends at Jive Software who use Jive Software accounts, and the integration is seamless.
</p>
<h3>4.) Lots of clients to choose from</h3><p>
Given the open nature of Jabber/XMPP, there are a lot of different clients you can use to chat with people. There&#8217;s native support in iChat on OSX, but if that&#8217;s not your cup of tea, then there are plenty of other choices. You could use <a href="http://adiumx.com/">Adium</a>, <a href="http://psi-im.org/">Psi</a>, <a href="http://www.igniterealtime.org/projects/spark/index.jsp">Spark</a>, <a href="http://www.jabber.org/clients">and a number of others</a>.
</p>
<h3>5.) Flexibility</h3><p>
Additional functionality can be built on top of Jabber/XMPP. There are a number of potential applications for this. Web apps, gaming, file-sharing, and other types of apps are all possible over XMPP. Jive wrote a great article recently that inspired me to have a closer look at Jabber/XMPP, and I think you should check it out too!
</p>
<p>
I would highly encourage all of you to at least try to start using a Jabber account and consider switching over 100%. I am using Jabber more and more each day and hoping to one day get rid of my AIM account completely. If only you would join me.
</p>
<p>
<strong>Resources:</strong>
<br />
<ul>
<li><a href="http://www.google.com/support/talk/bin/topic.py?topic=1415">How to use your Gmail account for Jabber</a></li>
<li><a href="http://www.jabber.org/clients">List of apps for Jabber</a></li>
<li><a href="http://www.jivesoftware.com/products/openfire">Jive&#8217;s OpenFire Jabber server</a></li>
</ul></p> 
      ]]></content>
    </entry>

    <entry>
      <title>The New Jive Site</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/the_new_jive_site/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.86</id>
      <published>2008-04-11T04:20:00Z</published>
      <updated>2008-04-17T02:33:55Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="recent work"
        scheme="http://pixelmatrixdesign.com/site/C15/"
        label="recent work" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><div class="center"><img src="http://www.pixelmatrixdesign.com/images/weblog/jive-products.png" alt="" /></div>
<br />
<p class="caption">A screenshot layout I worked on for Jive&#8217;s products page</p>

<p>
Don&#8217;t get me wrong here, I cannot take credit for even half of the work on the Jive site. It&#8217;s been a great collaboration between in-house designers <a href="http://siglerdesign.com">Mike Sigler</a>, and <a href="http://chriskalani.com">Chris Kalani</a>, contract designer <a href="http://davidxc.com">David Carroll</a>, and I.
</p>
<p>
We went through about 6 different global/header styles while I was working on the project, and with each iteration we made it even better.
</p>
<p>
<div class="center"><img src="http://www.pixelmatrixdesign.com/images/weblog/clearspace-overview.png" alt="" /></div>
<br />
<p class="caption">Clearspace really shines with the help of these screenshot graphics</p>

<p>
<div class="center"><img src="http://www.pixelmatrixdesign.com/images/weblog/clearspacec-overview.png" alt="" /></div>
<br />
<p class="caption">External communities powered by Clearspace Community displayed in a screenshot layout</p>

<p>
The areas I worked on the most were things like icons, promotional graphics (such as the examples above), icon-ified screenshots of the product, inline screenshots, and all sorts of other things.
</p>
<p>
<div class="center"><img src="http://www.pixelmatrixdesign.com/images/weblog/cs-people.png" alt="" /></div>
<br />
<p class="caption">Iconified screenshots of Clearspace interface help present the features</p>

<p>
<div class="center"><img src="http://www.pixelmatrixdesign.com/images/weblog/cs-people-inline.png" alt="" /></div>
<br />
<p class="caption">Inline screenshots help point out specific features mentioned in the paragraphs above.</p>

<p>
<strong>Some of the challenges we faced were:</strong>
<br />
<ul>
<li><strong>Navigation:</strong> Finding the best way to organize a website with a lot of content</li>
<li>Creating an interesting style so the pages <em>without</em> fancy content (About, Support, etc) would look almost as good as those <em>with</em> fancy content (products pages, etc&#8230;).</li>
<li>Making screenshots readable (i&#8217;ll be writing a separate post for this soon) and not jaggy-edged</li>
<li>Getting the whole website done in a little <strong>over a month</strong></li>
<li>Balancing the feel of corporate <em>vs.</em> human/fun</li>
<li>Dealing with moving workspaces several times during the process of creating the site</li>
<li>Merging each designer&#8217;s style into one unified style</li>
</ul>
<p>
<div class="center"><img src="http://www.pixelmatrixdesign.com/images/weblog/jive-icons.png" alt="" /></div>
<br />
<p class="caption">Several icons I designed for the new Jive site</p>

<p>
It&#8217;s been a unique chance to dive into the heart of a quickly expanding company and i&#8217;ve enjoyed my time contracting with them so far. I will be continuing to contract with them on a much smaller scale for a little while longer.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Expression Engine Presentation</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/expression_engine_presentation/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.84</id>
      <published>2008-04-10T05:15:00Z</published>
      <updated>2008-04-17T02:04:26Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="presentations"
        scheme="http://pixelmatrixdesign.com/site/C20/"
        label="presentations" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><p>The other day I had the opportunity to present <a href="http://expressionengine.com">Expression Engine</a> to a group of <a href="http://pdxwi.com">local web enthusiasts</a> I&#8217;m involved with called <a href="http://pdxwi.com">Portland Web Innovators</a>. The topic for discussion was a shootout between 3 of the popular CMS systems (Wordpress, Drupal &amp; Expression Engine). I wanted to post my presentation here in PDF format for anyone who is interested in Expression Engine, and some of the benefits it provides.
</p>
<p>
<strong>Download the presentation here:</strong>
</p>
<p>
<div class="download"><a href="http://www.pixelmatrixdesign.com/images/weblog/EE_Presentation.pdf" class="filetype pdf" title="Download EE_Presentation.pdf">Download EE_Presentation.pdf</a><p>PDF Format, 816 kb</p></div> 
      ]]></content>
    </entry>

    <entry>
      <title>Some Late Announcements</title>
      <link rel="alternate" type="text/html" href="http://pixelmatrixdesign.com/weblog/comments/some_late_announcements/" />
      <id>tag:pixelmatrixdesign.com,2008:blog/1.82</id>
      <published>2008-04-06T02:17:00Z</published>
      <updated>2008-04-17T02:06:26Z</updated>
      <author>
            <name>Josh Pyles</name>
            <email>joshpyles@gmail.com</email>
                  </author>

      <category term="my projects"
        scheme="http://pixelmatrixdesign.com/site/C22/"
        label="my projects" />
      <content type="html"><![CDATA[
        <img src="" align="left" /><h3>TweetPeek</h3>
<p>
<a href="http://tweetpeek.com" title="Check out Tweetpeek"><img src="http://www.pixelmatrixdesign.com/images/weblog/tweetpeek_lg.png" width="500" /></a>
</p>
<p>
First things first. In early March, Michael Richardson of <a href="http://geekfire.com/">GeekFire</a> and I launched <a href="http://tweetpeek.com">TweetPeek</a>, a service for creating a group twitter feed for whatever purpose. 
</p>
<p>
The idea is that you can easily create a page that contains updates from a select group of people (most common uses would be for small companies, communities/groups, and friends). 
</p>
<p>
This all got started from the <a href="http://pulseofpdx.com">Pulse of PDX</a> website. <a href="http://pulseofpdx.com">Pulse of PDX</a> is a website that shows you tweets from people in Portland. Soon after, <a href="http://pulseofopensource.com">Pulse of Open Source</a> was created for people to see what&#8217;s going on in the realm of Open Source. We noticed that these groups were getting sort of popular, so Michael (who was responsible for the code being used on these sites) wrote some more code to make it extensible to everyone. Shortly thereafter, I came around and worked on the design for it. We&#8217;ve still got a long way to go with it, but it&#8217;s definitely a great start.
</p>
<h3>UI Candy</h3>
<p>
<a href="http://uicandy.net" title="Check out UI Candy"><img src="http://www.pixelmatrixdesign.com/images/weblog/uicandy_lg.png" width="500" /></a>
</p>
<p>
<a href="http://uicandy.net">UI Candy</a> is my attempt to create an icon store. For a very long time i&#8217;ve wanted to create a store, but I didn&#8217;t want to just do something that&#8217;s already been done before. Icon stores are very common, and while each one has a unique style, in most cases they are all very similar, and for the same purposes.
</p>
<p>
After talking with several mac developers, including Wade Cosgrove of <a href="http://everydaysoftware.net">Everyday Software</a>, I determined that there was a definite need for common glyphs, and ui components that everyone needed, yet no one seemed to have. I set out to solve that problem.
</p>
<p>
UI Candy has been pretty successful so far, and I hope it will continue to be in the future. I am definitely going to work on more items for the store because I don&#8217;t think the problem can be solved with just one set of icons.
</p>
<h3>Bacon-omatic</h3>
<p>
<a href="http://bacon.pixelmatrixdesign.com" title="Check out Bacon-omatic"><img src="http://www.pixelmatrixdesign.com/images/weblog/baconomatic_lg.png" width="500" /></a>
</p>
<p>
<a href="http://bacon.pixelmatrixdesign.com">Bacon-omatic</a> is definitely the silliest site i&#8217;ve ever made, and arguably one of the most pointless sites on the internet. It started out as a joke between a <a href="http://twitter.com/verso">few</a> <a href="http://twitter.com/kveton">people</a> here in Portland (over <a href="http://twitter.com">twitter</a>), and has recently spread to become a symbol.
</p>
<p>
Bacon-omatic was created to automatically make your text &#8220;Wrapped in bacon good&#8221; by wrapping it in <bacon> tags. Funny right?
</p>
<p>
So that&#8217;s what i&#8217;ve been up to in my free time lately.
<br />

</p> 
      ]]></content>
    </entry>


</feed>