<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.9.2 (http://www.squarespace.com/) on Fri, 12 Mar 2010 20:22:37 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Soyrex Web Design</title><subtitle>Web Design &amp; Development Blog</subtitle><id>http://soyrex.com/articles/</id><link rel="alternate" type="application/xhtml+xml" href="http://soyrex.com/articles/"/><link rel="self" type="application/atom+xml" href="http://soyrex.com/articles/atom.xml"/><updated>2010-03-11T23:01:29Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.9.2 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Tutorial: using @font-face to embed fonts</title><category term="Markup &amp; CSS"/><category term="css"/><category term="fonts"/><category term="web"/><id>http://soyrex.com/articles/tutorial-using-font-face-to-embed-fonts.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/tutorial-using-font-face-to-embed-fonts.html"/><author><name>rex</name></author><published>2010-01-22T09:00:26Z</published><updated>2010-01-22T09:00:26Z</updated><summary type="html" xml:lang="en-GB"><![CDATA[So @font-face has been around for a while now, and everyone has been ranting and raving about how it will change the web. 

Services like typekit have arrived to try and tackle the issue of licensing and distribution.

However the technology is here. It's cross browser, and it works today. So, this is a quick tutorial in how to easily and quickly ACTUALLY use font-face to embed a font on your site.]]></summary></entry><entry><title>Quick Tip: Grounding web designs in Google Chrome</title><category term="Markup &amp; CSS"/><category term="development"/><id>http://soyrex.com/articles/quick-tip-grounding-web-designs-in-google-chrome.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/quick-tip-grounding-web-designs-in-google-chrome.html"/><author><name>rex</name></author><published>2010-01-21T08:00:00Z</published><updated>2010-01-21T08:00:00Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>As Google Chrome's market share grows it has become necessary (in my pedant's eyes) to&nbsp;acknowledge&nbsp;that some people will be viewing your site without a status bar and subsequently with no grounding or footer space. In order to combat the unsightly finish this gives to a site, I have decided to include a border-bottom: 3px solid #ccc; in the body style for the new Outside In Media site - <a href="http://outsideinmedia.co.uk">http://outsideinmedia.co.uk</a></p>
<p>A minor issue, but also easily fixed.. so check it out.. and maybe you might want to use it in the future.</p>]]></content></entry><entry><title>A New Year for Monitter</title><category term="Social Media"/><category term="monitter"/><id>http://soyrex.com/articles/a-new-year-for-monitter.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/a-new-year-for-monitter.html"/><author><name>rex</name></author><published>2010-01-20T23:39:05Z</published><updated>2010-01-20T23:39:05Z</updated><summary type="html" xml:lang="en-GB"><![CDATA[The new year is well and truly underway. I've been back in London now for a few weeks, plugging away. A few exciting things are on the horizon. This is a quick post to let everyone know what's going on this year.. starting with some exciting developments on the Monitter.com front.]]></summary></entry><entry><title>What's missing from Desktop Twitter Clients?</title><category term="Social Media"/><id>http://soyrex.com/articles/whats-missing-from-desktop-twitter-clients.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/whats-missing-from-desktop-twitter-clients.html"/><author><name>rex</name></author><published>2009-10-06T16:00:29Z</published><updated>2009-10-06T16:00:29Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>Well, this week atebits announced that they were releasing tweetie2.&nbsp;Now, being a sad geek, i use twitter quite a lot. Admittedly, until recently this was more to do with monitter.com than with anything else, but twitter is slowly becoming a social destination for me as well.</p>
<p>However, in the same vein as why i originally built monitter.com - I see twitter search as a still under utilised potential for networking. What i'd like to see is a twitter application that allows me to merge my saved searches and my follows into one timeline. I use my desktop tweetie like a news radar, it's how i know what's going on.. but what i'd like is to be able to queue up a bunch of saved searches as well, and have them injected into my main timeline - simple really.<span style="white-space: pre;"> </span></p>]]></content></entry><entry><title>Auto Scaffold Django Admin Registration</title><category term="Django"/><id>http://soyrex.com/articles/auto-scaffold-django-admin-registration.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/auto-scaffold-django-admin-registration.html"/><author><name>rex</name></author><published>2009-09-16T19:50:25Z</published><updated>2009-09-16T19:50:25Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>Since the admin structure in Django changed (1.0?) I've found myself constantly feeling cheated that i have to actually create classes to get my admin system working - granted you usually want to create custom admin features for a model, but when you're just starting out with a project, the last thing you want to be doing is building generic admin classes and registering them with the admin app.</p>
<p>So, to combat this annoyance, i wrote a simple python script that i keep on my path on my mac, it just generates a scaffold of the admin classes i need for a project. Pretty simple.</p>
<blockquote>
<p>#!/usr/bin/python</p>
<p>import sys<br />import re<br />if len(sys.argv) != 2:<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;print "Usage: adminscaffold &lt;input-file&gt;"<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sys.exit()<br /><br />arg = sys.argv[1]<br />inf = "%s/models.py" % arg<br /><br />f = open(inf)<br />classes = []<br />registers = []<br />for line in f.readlines():<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if re.match('class .*?\(models.Model\):',line):<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(c,j) = line.split('(',2)<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(j,cname) = c.split(' ',2)<br /><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;classes.append("""<br />class %sAdmin(admin.ModelAdmin):<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pass<br />""" % (cname))<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;registers.append("""admin.site.register(%s, %sAdmin)<br />""" % (cname,cname))<br /><br />print """from django.contrib import admin<br />from %s.models import *<br />""" % (arg)<br />print "".join(classes)<br />print "".join(registers)</p>
</blockquote>
<p>It's ugly and hacky, but it does do the job. Try it out.. basic usage is just:</p>
<blockquote>
<p>$ django-admin-scaffold.py &lt;app-name&gt;</p>
</blockquote>
<p>You run this in the same directory as your manage.py script.. and just provide the name of the app. It spits the code out on STDOUT, so you'll need to pipe it into a file to use it.</p>]]></content></entry><entry><title>How to demo your web designs to your clients..</title><category term="Web Design Tips"/><id>http://soyrex.com/articles/how-to-demo-your-web-designs-to-your-clients.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/how-to-demo-your-web-designs-to-your-clients.html"/><author><name>rex</name></author><published>2009-09-02T11:00:00Z</published><updated>2009-09-02T11:00:00Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>So, as web designers, most of us still mockup up our layouts / designs in Photoshop (or similar) before building them in HTML. This is all well and good. So, when we want to demo a design to our clients, how do we send it? Traditionally people would send their client a JPEG of the design (sometimes with the browser chrome included to give an idea) - I used to do that too.</p>
<p>But a couple of years ago, I realised that this format often confused my clients - you have no idea how many times I've heard "the back button in this demo isn't working" or "why can't i type in the address bar?" from clients. So, how do we deal with this? Well my solution is pretty straightforward (but when i explain it to other developers, they often go "oh.. that's a good idea" - so now I'm sharing.)</p>
<p>When i start a mockup in Photoshop, i create a really big canvas... my normal starting point is about 2000x1500 pixels. I then build my web site design in the center of that 2000 pixel canvas, with textures / backgrounds etc extending right to the edges. Then, when ready to demo the page, I simply export the entire canvas as PNG and embed it on a really simple HTML page, like this:</p>
<blockquote>
<pre>&lt;html&gt;
&lt;head&gt;  
	&lt;meta charset="utf-8"&gt;
	&lt;title&gt;Make Believe Client&lt;/title&gt;
	&lt;style&gt;
	body{margin:0;padding:0;background: url(1.png) top center repeat-x;}
	a#space{height: 1500px;display: block;}
	&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;a href="2.html" id="space"&gt;&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</blockquote>
<p>This assumes that the exported design image is called 1.png - it's 1500pixels high, so we make the A tag 1500pixels high too... to make sure the scrollbar appears correctly. I use an A tag, because if i have multiple composites, i link them together.. in the above example, i would create a second HTML page called 2.html that would have 2.png as it's background... then you would be able to click anywhere in the window to step through my demos.</p>
<p>This may seem simple, but it really saves heaps of time, plus the client gets to see the design in the chrome of their website</p>]]></content></entry><entry><title>Target="_blank" kills usability.</title><category term="Development Concepts &amp; Theory"/><id>http://soyrex.com/articles/target_blank-kills-usability.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/target_blank-kills-usability.html"/><author><name>rex</name></author><published>2009-08-28T09:00:13Z</published><updated>2009-08-28T09:00:13Z</updated><summary type="html" xml:lang="en-GB"><![CDATA[Adding a target="_blank" attribute to an A tag has long been seen as a way to keep users on your site. This logic is fatally flawed (i was under the impression that this was commonly agreed upon, however i've had to argue the point with a few people recently).]]></summary></entry><entry><title>Concept: What is Progressive Enhancement?</title><category term="Development Concepts &amp; Theory"/><id>http://soyrex.com/articles/concept-what-is-progressive-enhancement.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/concept-what-is-progressive-enhancement.html"/><author><name>rex</name></author><published>2009-08-26T17:12:44Z</published><updated>2009-08-26T17:12:44Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>The term progressive enhancement gets bandied around a fair bit these days.. but what does it really mean? Lots of people seem confused, misled or misguided as to its significance... so I'm going to attempt to clarify the idea.</p>
<p>The idea behind progressive enhancement is that we add extra functionality to our page progressively.</p>
<h3>But what's it really mean?</h3>
<p>Practically, in web development, we try to use Javascript to apply progressive enhancements to a page. However the secret to successfully using these techniques is to make sure that you are not adding *necessary or required functionality* to the page using a technology or technique that is not accessible to everyone.</p>
<h3>Right.. so gimme an example..</h3>
<p>To provide a concrete example of how we might progressively enhance a page, suppose we want to create an accordian menu. We mark up the content using a Definition List (DL) and then we could use CSS to hide the DD blocks. Following this, we use JavaScript to show the DD on mouseover. The issue with this is that the DD is already hidden and then if Javascript is not available the DD content is never displayed.</p>
<p>Instead, we can choose to USE the same JavaScript to hide the DD content as the page loads, thus if the user does not have javascript they will see the fully expanded content.</p>
<p>Hopefully that helps people to actually understand what progressive enhancement really is... instead of just using it like another buzz-word.</p>]]></content></entry><entry><title>Pragmatics vs Validation</title><category term="Development Concepts &amp; Theory"/><id>http://soyrex.com/articles/pragmatics-vs-validation.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/pragmatics-vs-validation.html"/><author><name>rex</name></author><published>2009-08-25T00:05:56Z</published><updated>2009-08-25T00:05:56Z</updated><summary type="html" xml:lang="en-GB"><![CDATA[<p>Something I've noticed recently which makes me wonder about people's understanding of how web design works is the designer/developer obsession with validation. I'm definitely not the first to realise this (i'm pretty sure i read an article not so long ago at jeffcroft.com - where Jeff made the same point), but i've been surfing the web a bit this weekend, and noticed how rampant this issue really is.</p>
]]></summary></entry><entry><title>I hate spam bots. But i hate captcha more.</title><category term="Development Concepts &amp; Theory"/><id>http://soyrex.com/articles/i-hate-spam-bots-but-i-hate-captcha-more.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/i-hate-spam-bots-but-i-hate-captcha-more.html"/><author><name>rex</name></author><published>2009-08-25T00:04:11Z</published><updated>2009-08-25T00:04:11Z</updated><summary type="html" xml:lang="en-GB"><![CDATA[<p>The responsibility for spam provention should be the developer's, not the user. In short, I hate and completely disagree with "captcha" style spam protection on forms. As a user I find sometimes, in attempt to make the image in unreadable by a computer that the text is so obscure I find it difficult to read myself. This isn't good enough.</p>
]]></summary></entry><entry><title>Expanding your reach with Twitter..</title><category term="Social Media"/><id>http://soyrex.com/articles/expanding-your-reach-with-twitter.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/expanding-your-reach-with-twitter.html"/><author><name>rex</name></author><published>2009-08-24T23:53:32Z</published><updated>2009-08-24T23:53:32Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>There are two camps in the web world regarding microblogging tools like Twitter. Half of us think they're great the other half are still scratching their heads wondering what possible purpose these tools can serve.</p>

<p>Plenty of arguments have been presented to show how Twitter can serve as a viral marketing platform and networking tool. Recently, as most people will know, Twitter acquired Summize, a search engine that accessed Twitter posts by keyword searches. While Summize had been around for a while, its purchase by Twitter has served to bring it (and it's concept) into the mainstream.</p>

<h3>What has this done for Twitter?</h3>

<p>It has brought Twitter out of the social networking domain and made it into an extremely efficient research tool.</p>

<p>However, even with search.twitter.com live, it isn't quite efficient enough a tool for us to monitor the Twitter world effectively. So how do we solve this problem? Luckily, like Twitter itself, the search.twitter.com service provides a very simplistic API - and we are starting to see a few mashup technologies emerging to utilise the APIs to monitor and track particular topics in real-time.</p>

<h3>So where are these tools and how should I use them?</h3>

<p>This is by no means an exhaustive list of tools for helping you maximise your results from Twitter (in fact it's deliberately a <em>very</em> short list).</p>

<h3>Third Party Tools</h3>

<h4><a href="http://monitter.com">monitter.com</a> - Real-Time, Live Twitter Monitoring</h4>

<p>Monitter is a new player in the Twitter mashup world and it basically allows you to "monitter" tweets off the public timeline. You input 3 search terms into the monitter site, and it will monitor Twitter and match those particular terms and display them to you in a nice clean, live streaming interface online - the interface is offered in dark and light mode - nice touch!</p>

<p>The beauty of this is: you don't NEED a Twitter account, you can just hit the <a href="http://monitter.com">monitter.com site</a> and passively monitor what is going on on Twitter. If you are a Twitter user, monitter can help you find more people to follow - people who are tweeting about topics you are interested in..</p>

<h4><a href="http://tweetdeck.com">tweetdeck.com</a> - Revolutionising Twitter Desktop Clients</h4>

<p>Tweetdeck is an Adobe AIR client for Twitter that also includes search integration. You'll need a Twitter account, but if you have one, Tweetdeck is a great client because it will follow your normal Twitter friends, but also allow you to monitor for relevant keywords. </p>

<p>Currently in BETA, Tweetdeck is as stable as any AIR application I have used, and has recently replaced Twhirl as my desktop Twitter client.</p>

<h3>Twitter Tools</h3>

<h4><a href="http://blog.twitter.com/2007/09/tracking-twitter.html">Twitter Track</a> - Allows you to track Twitter concepts</h4>

<p>Twitter track works from you IM or phone and allows you to track keyword searches from Twitter and have them sent to your mobile device. Personally I don't use Twitter passively while I'm on the move, so this one is of less interest to me.. but check it out nonetheless.</p>

<h4><a href="http://search.twitter.com">search.twitter.com</a> - The Twitter Search API Itself</h4>

<p>Formerly known as Summize (until Twitter acquired them), the Twitter search API also offers a web interface that allows you to search the Twitter timeline for keywords (this is the driving force behind the tools above). This is a little less sophisticated than Tweetdeck or Monitter, however it does allow you to find relevant tweets. </p>

<h3>So what does it all mean?</h3>

<p>If you market a product, fire up a Twitter monitor and enter your product name into the search box.. is anyone tweeting about it? No? Start marketing socially.</p>

<p>Imagine that you're writing an article about a particular topic.. type in relevant keywords and see if anyone is talking about it. I use monitter.com as a tool for my research on a fairly regular basis - in fact, this week it has been sitting perpetually in it's own Space on my desktop.</p>
]]></content></entry><entry><title>Concept: Semantic Markup</title><category term="Development Concepts &amp; Theory"/><id>http://soyrex.com/articles/concept-semantic-markup.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/concept-semantic-markup.html"/><author><name>rex</name></author><published>2009-08-24T23:49:05Z</published><updated>2009-08-24T23:49:05Z</updated><summary type="html" xml:lang="en-GB"><![CDATA[The term semantic markup has become another of today's buzzwords. People always talk about it, but few of them really understand the concept. The problem is unless you're a philosopher, the idea of semantics is about as meaningful as metaphysics.]]></summary></entry><entry><title>Create a simple Ajax RSS Widget with Jquery + HTML</title><category term="Jquery Development"/><id>http://soyrex.com/articles/create-a-simple-ajax-rss-widget-with-jquery-html.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/create-a-simple-ajax-rss-widget-with-jquery-html.html"/><author><name>rex</name></author><published>2009-08-24T23:42:59Z</published><updated>2009-08-24T23:42:59Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>A medium to advanced user's tutorial for using Jquery to display a set of RSS headlines as links in a widget on your page. There are code samples on this page, however if you want to follow along easier, here is the <a href="http://outsideinmedia.co.uk/tumblr/downloads/rss_widget.html">complete final file</a> (it's all in one HTML file for ease of use - obviously you'll want to separate your JS and CSS out into external files..)<br /><br />So, suppose you want to embed the headlines from an RSS feed into your site. Assuming you're not so fussed about SEO, but rather are looking for a useful piece of content for your users, you can use Jquery and Yahoo Pipes to easily embed the headlines (and summaries if you like) into your page.<br /><br /><strong>Step 1: Create a Yahoo Pipe for the RSS feed (or feeds) that you want to include.</strong><br />You need a Yahoo account to use pipes, so if you don't have one, you'll need to get one. Once you have it, just log into the pipes site here: http://pipes.yahoo.com<br /><br />You want to choose, Sources &gt; Fetch Feed - this will add a Fetch Feed box into your pipe editor, now link this with the Pipe Output. That's it (Pipes are extremely powerful, however this i all we need for this particular example). Here's how the final pipe looks:</p>
<p><img src="http://outsideinmedia.co.uk/tumblr/img/rss_widget_pipe.png" alt="Final Pipe layout." width="393" height="164" /><br /><br />Save the Pipe. Go "Back to My Pipes" and get the URL for the new pipe as JSON.<br /><br />Mine pipe URL is: http://pipes.yahoo.com/pipes/pipe.run?_id=b5c348713f1c84193acf3723d4d148a9&amp;_render=json<br /><br />Now that you have the JSON url, we can use jquery to render these results into a useful widget on our page.<br /><br />Firstly, we need to make sure that Jquery is being included on our page. I do this using the google hosted solution, so basically it is loaded from google's servers (and cached). So, in the head of your page (if jquery isn't already there) we add this:</p>
<blockquote>
<p><code>&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"&gt;&lt;/script&gt;<br /></code></p>
</blockquote>
<p><strong>Step 2: Set up our markup and CSS</strong><br />Now we create the necessary markup to hold our results. Where you want the widget to appear, we append this:</p>
<blockquote>
<pre>&lt;div id="rssdata"&gt;<br /> &lt;ul class="rss-items"&gt;&lt;/ul&gt;<br /> &lt;div class="loading"&gt;Loading RSS items...&lt;/div&gt;<br />&lt;/div&gt;</pre>
</blockquote>
<p>Obviously you can use whatever ids and classes you like, just remember to change the javascript and CSS that follows so Jquery can find the right elements.</p>
<p>Basic CSS styles:</p>
<blockquote>
<pre>#rssdata ul.rss-items<br />{<br /> display: none;<br /> margin: 0;<br /> padding: 0;<br />}<br />#rssdata ul.rss-items li<br />{<br /> display: block;<br /> margin: 0;<br /> padding: 0;<br />}<br />#rssdata ul.rss-items a<br />{<br /> margin: 0;<br /> padding: 0;<br /> display: block;<br /> padding: 2px 6px;<br /> background: #ccc;<br /> color: #333;<br /> text-decoration: none;<br /> border-bottom: 1px solid #eee;<br />}<br />#rssdata ul.rss-items a:hover<br />{<br /> background: #666;<br /> color: #fff;<br /> text-decoration: none;<br />} </pre>
</blockquote>
<p><strong>Step 3: Building the Widget using Jquery..</strong><br />Now, we need to make our progressively enhanced Jquery:</p>
<blockquote>
<pre>$('#rssdata').ready(function()<br />{<br /> var pipe_url = 'http://pipes.yahoo.com/pipes/pipe.run?_id=b5c348713f1c84193acf3723d4d148a9&amp;_render=json&amp;_callback=?';<br /> $.getJSON(pipe_url,function(data)<br /> {<br /> $(data.value.items).each(function(index,item)<br /> {<br /> var item_html = '&lt;li&gt;&lt;a href="'+item.link+'"&gt;'+item.title+'&lt;/a&gt;&lt;/li&gt;';<br /> $('#rssdata ul.rss-items').append(item_html);<br /> });<br /> $('#rssdata div.loading').fadeOut();<br /> $('#rssdata ul.rss-items').slideDown();<br /> });<br />});</pre>
</blockquote>
<p><br />So, in english, we add a ready function to the #rssdata div, it holds the JSON url from our pipe above, with &amp;_callback=? added on the end (this allows cross domain JSONP requests).<br /><br />And then the ready function simply using jquery's getJSON method to load the results of our pipe and turn them into HTML elements that we then append into our UL.<br /><br />Once the loaded data has all been appended, we use fadeOut to hide our Loading message and then slideDown to make our UL slide into view nicely.</p>
<p>If you need more help, here's a <a href="http://outsideinmedia.co.uk/tumblr/downloads/rss_widget.html">single HTML page that has all the code</a> in the tutorial in it, for easy use (you can also use this to preview the effect).</p>
<p>That's it. If you need help, leave a comment :)</p>]]></content></entry><entry><title>Creating an accessible navigation menu from a UL</title><category term="Markup &amp; CSS"/><id>http://soyrex.com/articles/creating-an-accessible-navigation-menu-from-a-ul.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/creating-an-accessible-navigation-menu-from-a-ul.html"/><author><name>rex</name></author><published>2009-08-24T23:15:48Z</published><updated>2009-08-24T23:15:48Z</updated><summary type="html" xml:lang="en-GB"><![CDATA[Styling the nav of a site is something we do.. well, everytime we build a site. The nav of a site is one if the most important (and often most neglected) elements. So what can we do to make sure our nav is as accessible as possible?]]></summary></entry><entry><title>Making the switch to GMail</title><category term="Mac Tips &amp; Tricks"/><id>http://soyrex.com/articles/making-the-switch-to-gmail.html</id><link rel="alternate" type="text/html" href="http://soyrex.com/articles/making-the-switch-to-gmail.html"/><author><name>rex</name></author><published>2009-04-30T00:41:00Z</published><updated>2009-04-30T00:41:00Z</updated><content type="html" xml:lang="en-GB"><![CDATA[<p>For ages i've been wishing i could use my Google Apps account as my primary email without having to step outside their interface at all. Well, i've made the switch.</p>

<h3>Why did I wait so long?</h3>

<p>GMail is a far better way to organise email and helps me keep my inbox zeroed :) So why have a had a Google Apps account for like 2 years and not switched to JUST the web interface?</p>

<h4>Dependancy on my Browser</h4>

<p>I work as a web developer alot. I often break my web browser.. it hangs because of bad JS code, or I forget and have like 7 million tabs open - whatever. The problem is, if i have my mail in ONE of those tabs and the browser crashes.. my mail goes away.. annoying (not a deal breaker.. but irritating).</p>

<h4>Notifications</h4>

<p>I like the Apple Mail dock badges that tell me how much unread mail i have - mostly so I can happily tell myself I've got everything under control (since the count badge is almost never there :) ).</p>

<p>Also, i like having growl notifications for my mail, and again this isn't possible with a web browser instance.</p>

<h4>The Interface</h4>

<p>The UI for GMail has always been impressively functional, however not really that pretty (in fact - until recently it was ugly as sin). However a few months back Google rolled out themes for Gmail, and a few months later than that the update finally got pushed through to Google Apps accounts (including mine) - so now the Gmail interface isn't ugly anymore.</p>

<h4>Offline Mail Access</h4>

<p>Well, we all know that Google Gears has been around for a while. Well you can now activate offline mail syncing for your gmail account using Gears.. which is perfect. I'm almost never offline, but I like to think that if for some reason I am, I can still refer to my mail - since half my life revolves around it.</p>

<h3>So, the solution? Fluid and Google Notifier</h3>

<p>The latest version of <a href="http://fluidapp.com">Fluid</a> supports dock badges for GMail internally and also has a greasemonkey userscript that supports Growl notifications. If you combine that with Google Notifier you have badges on the icon, sound alerts AND growl notifications - perfect.</p>

<p>Fluid also has a nice Black HUD theme that makes my client look all pretty ;) Coupled with the new themes, it fits in with my desktop almost perfectly.</p>
]]></content></entry></feed>