<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

	<channel>
		<title>Jack Brewer</title>
		<atom:link href="http://jackbrewer.co.uk/feed/index.xml" rel="self" type="application/rss+xml" />
		<link>http://jackbrewer.co.uk</link>
		<description>Perfect pixels and awesome code</description>
		<lastBuildDate>Thu, 04 Mar 2021 18:02:32 +0000</lastBuildDate>
		<language>en</language>
		<copyright>Copyright Jack Brewer</copyright>

		
		<item>
			<title>CSS+ TextMate and Sublime Text Bundle</title>
			<link>http://jackbrewer.co.uk/css-plus-bundle/</link>
			<pubDate>Tue, 10 Apr 2012 00:00:00 +0000</pubDate>
			<guid>/css-plus-bundle</guid>
			<description>
			
			
				&lt;p&gt;The &lt;a href=&quot;https://github.com/jackbrewer/css-plus.tmbundle&quot;&gt;CSS+ bundle&lt;/a&gt; is a project I've been working on for a while. It is a vast collection of CSS snippets and commands which has completely changed the way I write CSS.&lt;/p&gt;

&lt;p&gt;When I started using TextMate for development I was amazed by the simplicity and flexibility of its Bundle Editor. This, coupled with existing bundles such as Minimal Design's &lt;a href=&quot;http://minimaldesign.net/downloads/tools/textmate-css-bundle&quot;&gt;mCSS bundle&lt;/a&gt; inspired me to find ways to use it to speed up my general development. While the mCSS bundle is an amazing piece of work, I felt it could do so much more. With this in mind, I started my own bundle, with the view that I would never need to write a line of CSS by hand again.&lt;/p&gt;

&lt;h2&gt;Using the bundle&lt;/h2&gt;

&lt;p&gt;The CSS+ bundle contains (nearly) every line of CSS you will ever need to write, all mapped to Tab Triggers. All the shortcuts have been set up so you can write the first letter of each word in the line you want, then hit tab to expand the full line.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nocode&quot;&gt;c  -&gt; &lt;/span&gt;colour: &lt;span class=&quot;hex&quot;&gt;#fff&lt;/span&gt;&lt;span class=&quot;nocode&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;b  -&gt; &lt;/span&gt;border: 1px solid &lt;span class=&quot;hex&quot;&gt;#777&lt;/span&gt;&lt;span class=&quot;nocode&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;mt -&gt; &lt;/span&gt;margin-top: 10px;
&lt;span class=&quot;nocode&quot;&gt;ts -&gt; &lt;/span&gt;text-shadow: 1px 1px 2px &lt;span class=&quot;hex&quot;&gt;#000&lt;/span&gt;&lt;span class=&quot;nocode&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;more&quot;&gt;Multiple Choice&lt;/h3&gt;

&lt;p&gt;You can also add the first letter of each word within values for extra control.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nocode&quot;&gt;db  -&gt; &lt;/span&gt;display: block;
&lt;span class=&quot;nocode&quot;&gt;di  -&gt; &lt;/span&gt;display: inline;
&lt;span class=&quot;nocode&quot;&gt;dib -&gt; &lt;/span&gt;display: inline-block;
&lt;span class=&quot;nocode&quot;&gt;dn  -&gt; &lt;/span&gt;display: none;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The value is optional for some properties and if omitted, a multiple choice drop-down appears to assist you in finishing the line.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nocode&quot;&gt;oa -&gt;&lt;/span&gt; overflow: auto;
&lt;span class=&quot;nocode&quot;&gt;o  -&gt;&lt;/span&gt; &lt;span class=&quot;dropdown first selected&quot;&gt;overflow: auto;  &lt;/span&gt;
      &lt;span class=&quot;dropdown&quot;&gt;overflow: hidden;&lt;/span&gt;
      &lt;span class=&quot;dropdown last&quot;&gt;overflow: scroll;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Exceptions&lt;/h3&gt;

&lt;p&gt;As there are so many CSS properties available, there are some inevitable clashes. To avoid these, some properties use the first two letters of their initial word as their triggers. While this seems confusing, after a few uses it becomes second nature. It also avoids confusing multiple choice drop-downs with too many mixed values.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nocode&quot;&gt;fl  -&gt; &lt;/span&gt;float: ; /* f is reserved for font */
&lt;span class=&quot;nocode&quot;&gt;flr -&gt; &lt;/span&gt;float: right;
&lt;span class=&quot;nocode&quot;&gt;cl  -&gt; &lt;/span&gt;clear: ; /* c is reserved for color */
&lt;span class=&quot;nocode&quot;&gt;cll -&gt; &lt;/span&gt;clear: left;
&lt;span class=&quot;nocode&quot;&gt;bg  -&gt; &lt;/span&gt;background: ; /* b is reserved for border */
&lt;span class=&quot;nocode&quot;&gt;bga -&gt; &lt;/span&gt;background-image: url(&quot;&lt;span class=&quot;code-highlight caret&quot;&gt;image.png&lt;/span&gt;&quot;);&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Tab Stops&lt;/h2&gt;

&lt;p&gt;If you write a line where the value is customisable, for example a colour or pixel value, the editable value will be automatically highlighted for you to edit.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nocode&quot;&gt;w -&gt; &lt;/span&gt;width: &lt;span class=&quot;code-highlight caret&quot;&gt;10px&lt;/span&gt;;
&lt;span class=&quot;nocode&quot;&gt;c -&gt; &lt;/span&gt;color: &lt;span class=&quot;code-highlight caret hex&quot;&gt;#fff&lt;/span&gt;&lt;span class=&quot;nocode&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Multiple Tab Stops&lt;/h3&gt;

&lt;p&gt;Some snippets have multiple tab stops to allow complete control. At each step, the value can be changed - or removed, with another tab press highlighting the next value. Pressing tab a final time will always leave you at the end of the line, ready to continue coding.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;/* Continue tabbing to move through all values*/
&lt;span class=&quot;nocode&quot;&gt;b -&gt; &lt;/span&gt;border: &lt;span class=&quot;code-highlight caret&quot;&gt;1px&lt;/span&gt; solid &lt;span class=&quot;hex&quot;&gt;#777&lt;/span&gt;&lt;span class=&quot;nocode&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;  -&gt; &lt;/span&gt;border: 2px &lt;span class=&quot;code-highlight caret&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;hex&quot;&gt;#777&lt;/span&gt;&lt;span class=&quot;nocode&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;  -&gt; &lt;/span&gt;border: 2px dashed &lt;span class=&quot;code-highlight caret hex&quot;&gt;#000&lt;/span&gt;&lt;span class=&quot;nocode&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;  -&gt; &lt;/span&gt;border: 2px dashed &lt;span class=&quot;hex&quot;&gt;#000&lt;/span&gt;&lt;span class=&quot;nocode caret&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Nested Tab Stops&lt;/h3&gt;

&lt;p&gt;Another cool feature of the bundle is that some snippets contain nested tab stops. This means that, for example with background position, the default value of &lt;code&gt;0px&lt;/code&gt; is automatically selected. This means you can write a percentage or keyword in its place. If instead, you press tab again, the selection changes to just the unit part, allowing you to change the pixel value without the need to type &lt;code&gt;px&lt;/code&gt; each time.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;/* Continue tabbing to move through all values*/
&lt;span class=&quot;nocode&quot;&gt;bgp -&gt; &lt;/span&gt;background-position: &lt;span class=&quot;code-highlight caret&quot;&gt;0px&lt;/span&gt; 0px;
&lt;span class=&quot;nocode&quot;&gt;    -&gt; &lt;/span&gt;background-position: &lt;span class=&quot;code-highlight caret&quot;&gt;0&lt;/span&gt;px 0px;
&lt;span class=&quot;nocode&quot;&gt;    -&gt; &lt;/span&gt;background-position: 5&lt;span class=&quot;code-highlight caret&quot;&gt;px&lt;/span&gt; 0px;
&lt;span class=&quot;nocode&quot;&gt;    -&gt; &lt;/span&gt;background-position: 5px &lt;span class=&quot;code-highlight caret&quot;&gt;0px&lt;/span&gt;;
&lt;span class=&quot;nocode&quot;&gt;    -&gt; &lt;/span&gt;background-position: 5px top&lt;span class=&quot;caret&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Pseudo Classes, Pseudo Elements and Attribute selectors&lt;/h2&gt;

&lt;p&gt;As well as speeding up writing properties and values, the CSS+ bundle helps with selectors.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nocode&quot;&gt;a:h     -&gt; &lt;/span&gt;a:hover
&lt;span class=&quot;nocode&quot;&gt;li:fc   -&gt; &lt;/span&gt;li:first-child
&lt;span class=&quot;nocode&quot;&gt;span:b  -&gt; &lt;/span&gt;span:before
&lt;span class=&quot;nocode&quot;&gt;span::b -&gt; &lt;/span&gt;span::before
&lt;span class=&quot;nocode&quot;&gt;[       -&gt; &lt;/span&gt;[&lt;span class=&quot;code-highlight caret&quot;&gt;attr&lt;/span&gt;=&quot;value&quot;]&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;Special Values&lt;/h2&gt;

&lt;p&gt;Some properties can be triggered in multiple ways, to quickly reset values to empty or default values. As with the mCSS bundle, these can be triggered by repeating the final letter of the trigger.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nocode&quot;&gt;m  -&gt; &lt;/span&gt;margin: &lt;span class=&quot;code-highlight caret&quot;&gt;10px&lt;/span&gt;;
&lt;span class=&quot;nocode&quot;&gt;mm -&gt; &lt;/span&gt;margin: 0&lt;span class=&quot;caret&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;l  -&gt; &lt;/span&gt;left: &lt;span class=&quot;code-highlight caret&quot;&gt;10px&lt;/span&gt;;
&lt;span class=&quot;nocode&quot;&gt;ll -&gt; &lt;/span&gt;left: 0&lt;span class=&quot;caret&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;CSS3&lt;/h2&gt;

&lt;p&gt;I've tried to include as many CSS3 properties and selectors as possible, but with more frequently surfacing there are probably a couple missing. If you find any that don't appear in the CSS+ bundle, you can either &lt;a href=&quot;https://github.com/jackbrewer/css-plus.tmbundle/issues&quot;&gt;add an issue on GitHub&lt;/a&gt; which I will fix, or fork the bundle and submit your own pull request.&lt;/p&gt;

&lt;p&gt;All the CSS3 properties in this bundle are prefix free. This is a conscious choice, as many people already have their own ways of dealing with these, either by hand or through a service such as &lt;a href=&quot;http://prefixr.com/&quot;&gt;Prefixr&lt;/a&gt;. I've created a separate &lt;a href=&quot;https://github.com/jackbrewer/css-plus-vendor-prefixes.tmbundle&quot;&gt;TextMate bundle&lt;/a&gt; and &lt;a href=&quot;https://github.com/jackbrewer/Sublime-Settings/blob/master/Snippets/CSS/Vendor%20Prefix.sublime-snippet&quot;&gt;Sublime Text snippet&lt;/a&gt; as my way of adding relevant prefixes.&lt;/p&gt;

&lt;h2&gt;Use with TextMate&lt;/h2&gt;

&lt;p&gt;This bundle has a well organised menu structure, so for an overview of all the commands and snippets available, go to &lt;em&gt;Bundles -&gt; CSS+&lt;/em&gt; in the menu bar. The snippets are organised into groups, with each snippet listing its keyboard trigger for reference. At the bottom of the menu is an &lt;em&gt;'Update Bundle via Git'&lt;/em&gt; option which will ensure your version of CSS+ is up to date.&lt;p&gt;

&lt;p&gt;I have also included a handy colour conversion command to speed up switching between colour formats. With your caret (text cursor) on the correct line, press &lt;kbd&gt;cmd&lt;/kbd&gt; + &lt;kbd&gt;ctrl&lt;/kbd&gt; + &lt;kbd&gt;c&lt;/kbd&gt; to switch between Hex, RGB and RGBa formats. This command currently only works on lines which contain one colour.

&lt;h2&gt;Use With Sublime Text&lt;/h2&gt;

&lt;p&gt;I switched from TextMate to Sublime Text a while ago, as it is a much more feature rich editor. One of the deciding factors for the switch was that Sublime supports TextMate bundles. That said, the support isn't flawless. The colour format command doesn't yet work and it sometimes has trouble if you delete a set of nested tab stops, with it still requiring that you tab through all of the removed tab stops before allowing you on to the next snippet.&lt;/p&gt;

&lt;p&gt;Even with these drawbacks, the CSS+ bundle if definitely a must for anyone who writes CSS. Sublime also adds the advantage that users on Windows and Linux can make use of this normally OSX bundle.&lt;/p&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;p&gt;The best way to get your hands on this bundle is to clone it using Git. This means you can easily update it when changes are made. Installation instructions, as well as a regular download version of the CSS+ bundle can be found on GitHub.&lt;/p&gt;

&lt;p class=&quot;actions&quot;&gt;
	&lt;a href=&quot;https://github.com/jackbrewer/css-plus.tmbundle&quot; class=&quot;button icon-download&quot;&gt;Download / Source&lt;/a&gt;
&lt;/p&gt;

			
			</description>
		</item>
		
		<item>
			<title>CSS iPhone Icon</title>
			<link>http://jackbrewer.co.uk/css-iphone-icon/</link>
			<pubDate>Mon, 12 Mar 2012 00:00:00 +0000</pubDate>
			<guid>/css-iphone-icon</guid>
			<description>
			
				&lt;p&gt;&lt;strong&gt;RSS Readers: This article contains a live demo which probably isn't going to work in your RSS reader. View the full post to see it in action.&lt;/strong&gt;&lt;/p&gt;
			
			
				&lt;p&gt;This is the result of a long evening playing with box shadows and gradients &amp;mdash; an iPhone icon made with CSS.&lt;/p&gt;
&lt;div class=&quot;example&quot;&gt;
	&lt;span class=&quot;iphone&quot;&gt;iPhone&lt;/span&gt;
&lt;/div&gt;
&lt;p class=&quot;note&quot;&gt;Make sure you hover for yet more outrageously complicated styling.&lt;/p&gt;
&lt;p&gt;You've probably seen similar experiments where people have used hundreds of empty &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; elements to recreate similar details to a pixel perfect level. I decided to take a different approach and write my optimal HTML first.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;span class=&quot;iphone&quot;&amp;gt;iPhone&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That's all there is! Although limiting, I still managed to achieve a fairly impressive result using this one element and its &lt;code&gt;:before&lt;/code&gt; and &lt;code&gt;:after&lt;/code&gt; pseudo elements. The &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element itself forms the iPhone body, the &lt;code&gt;:after&lt;/code&gt; pseudo element handles the lock / home screen whilst the &lt;code&gt;:before&lt;/code&gt; pseudo element forms the home button.&lt;/p&gt;
&lt;p&gt;The bulk of the styling makes use of multiple background gradients, sizes and positions. Combine that with the fact that every CSS3 property is duplicated 5 times with various vendor prefixes and the overall CSS file length of 200 lines doesn't seem too crazy.&lt;/p&gt;
&lt;div class=&quot;example float-right col-4&quot;&gt;
	&lt;span class=&quot;iphone zoom&quot;&gt;iPhone&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Here is the exact same icon, this time scaled up three times to allow you to see the finer details (or lack of).&lt;/p&gt;
&lt;p&gt;There is a tiny amount of JavaScript in use on this demo &amp;mdash; it updates the &lt;code&gt;:after&lt;/code&gt; pseudo element's &lt;code&gt;content&lt;/code&gt; property to ensure the icon is always displaying the correct time.&lt;/p&gt;
&lt;p&gt;You may also notice at this zoom level that the icon is modelled on an iPhone 3GS &amp;mdash; this demo has been living on my hard drive for a while!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This is an experiment and was a great learning experience. I would never recommend using something this complicated or pointless on an actual site.&lt;/p&gt;
&lt;p class=&quot;actions&quot;&gt;
	&lt;a href=&quot;http://demos.jackbrewer.co.uk/css-iphone-icon&quot; class=&quot;button icon-demo&quot;&gt;Demo&lt;/a&gt;
	&lt;a href=&quot;https://github.com/jackbrewer/demos/tree/gh-pages/css-iphone-icon&quot; class=&quot;button icon-source&quot;&gt;Source&lt;/a&gt;
&lt;/p&gt;
			
			</description>
		</item>
		
		<item>
			<title>Multiple Document Windows In Photoshop</title>
			<link>http://jackbrewer.co.uk/multiple-document-windows-in-photoshop/</link>
			<pubDate>Wed, 07 Mar 2012 00:00:00 +0000</pubDate>
			<guid>/multiple-document-windows-in-photoshop</guid>
			<description>
			
			
				&lt;p&gt;Multiple document windows are a little known Photoshop feature that saves a lot of zoom effort! To open a second window for an open document, go to &lt;em&gt;Window &gt; Arrange &gt; New Window for [filename]&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This comes in very useful when you need to zoom in to a high level but would still be able to see realtime changes to your document at 100%. I mainly use this when designing icons, with two or three copies of a document open simultaneously, each at a different zoom level.&lt;/p&gt;
			
			</description>
		</item>
		
		<item>
			<title>Animated CSS Progress Bar</title>
			<link>http://jackbrewer.co.uk/animated-css-progress-bar/</link>
			<pubDate>Thu, 01 Mar 2012 00:00:00 +0000</pubDate>
			<guid>/animated-css-progress-bar</guid>
			<description>
			
				&lt;p&gt;&lt;strong&gt;RSS Readers: This article contains a live demo which probably isn't going to work in your RSS reader. View the full post to see it in action.&lt;/strong&gt;&lt;/p&gt;
			
			
				&lt;p&gt;There are countless examples of people making progress bars using nothing but CSS &amp;mdash; this one is different.&lt;/p&gt;
&lt;p&gt;There are no images, the HTML is extremely minimal and the animation is handled by a pseudo element. Unfortunately this means it's &lt;strong&gt;only animated in Firefox&lt;/strong&gt; for now.&lt;/p&gt;
&lt;div class=&quot;example&quot;&gt;
	&lt;div role=&quot;progressbar&quot;&gt;85% Complete&lt;/div&gt;
	&lt;style contenteditable&gt;[role=&quot;progressbar&quot;]:after {
  width: 85%;
}&lt;/style&gt;
&lt;/div&gt;
&lt;p class=&quot;note&quot;&gt;The CSS above is interactive &amp;mdash; change the width value in Firefox to see the animation in action.&lt;/p&gt;
&lt;p&gt;This is the only example I have seen so far that makes use of a negative background-position to animate the colour of the bar from red, through orange and yellow, to green &amp;mdash; depending on the amount of progress made.&lt;/p&gt;
&lt;p&gt;For those of you who don't want to wake the slumbering beast that is Firefox, here are a few more examples of the colour changing goodness that you are missing.&lt;/p&gt;
&lt;div class=&quot;example&quot;&gt;
	&lt;div role=&quot;progressbar&quot; data-value=&quot;0&quot; &gt;0% Complete&lt;/div&gt;
	&lt;div role=&quot;progressbar&quot; data-value=&quot;25&quot;&gt;25% Complete&lt;/div&gt;
	&lt;div role=&quot;progressbar&quot; data-value=&quot;50&quot;&gt;50% Complete&lt;/div&gt;
	&lt;div role=&quot;progressbar&quot; data-value=&quot;75&quot;&gt;75% Complete&lt;/div&gt;
	&lt;div role=&quot;progressbar&quot; data-value=&quot;100&quot;&gt;100% Complete&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I've hard-coded &lt;em&gt;non-animated&lt;/em&gt; widths on these to illustrate how the progress bar looks at vartious stages of its transition, at 0%, 25%, 50%, 75% and 100% progress.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;
&lt;p&gt;The markup is beautiful! No wrapping or empty elements.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;div role=&quot;progressbar&quot;&amp;gt;85% Complete&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Switching the &lt;code&gt;&amp;lt;div role=&quot;progressbar&quot;&amp;gt;&lt;/code&gt; for a &lt;code&gt;&amp;lt;progress value=&quot;85%&quot; max=&quot;100%&quot;&amp;gt;&lt;/code&gt; would make this semantically better but browser support for styling progress elements is extremely poor at the moment.&lt;/p&gt;
&lt;p&gt;An actual implementation of this would also need some method of updating the value(s) within the markup.&lt;/p&gt;
&lt;h2&gt;Cons&lt;/h2&gt;
&lt;p&gt;This is a prototype that is not yet ready to be unleashed on the world. I have set up this demo to animate using CSS transitions whereas a real implementation would probably need some JavaScript interaction to dynamically calculate the user's actual progress. Using JS to handle the animation would also negate some of the browser compatibility issues which the &lt;code&gt;:after&lt;/code&gt; pseudo element causes.&lt;/p&gt;
&lt;p&gt;I could also have increased browser support for this demo by using extra markup instead of pseudo elements but this goes against what I was trying to achieve.&lt;/p&gt;
&lt;p class=&quot;actions&quot;&gt;
	&lt;a href=&quot;http://demos.jackbrewer.co.uk/animated-css-progress-bar&quot; class=&quot;button icon-demo&quot;&gt;Demo&lt;/a&gt;
	&lt;a href=&quot;https://github.com/jackbrewer/demos/tree/gh-pages/animated-css-progress-bar&quot; class=&quot;button icon-source&quot;&gt;Source&lt;/a&gt;
&lt;/p&gt;
			
			</description>
		</item>
		
		<item>
			<title>Google Maps Template</title>
			<link>http://jackbrewer.co.uk/google-maps-template/</link>
			<pubDate>Wed, 29 Feb 2012 00:00:00 +0000</pubDate>
			<guid>/google-maps-template</guid>
			<description>
			
			
				&lt;p&gt;I often find clients want good Google Maps integration on their sites &amp;mdash; &lt;a href=&quot;http://www.jarredchristmas.com&quot;&gt;Some more than others&lt;/a&gt;! After the first few, I decided to put together a handy Photoshop document containing all the common assets needed when coming up with concept designs involving maps.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/google-maps-template/images/google-maps-template.jpg&quot; alt=&quot;Google Maps Template&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some components in the template have been converted to vector for easy resizing, while others (such as the zoom control) have been split into parts. I've tried to keep all components as pixel perfect as possible.&lt;/p&gt;
&lt;p class=&quot;actions&quot;&gt;
	&lt;a href=&quot;http://downloads.jackbrewer.co.uk/google-maps-template/google-maps-template.zip&quot; class=&quot;button icon-download&quot;&gt;Download&lt;/a&gt;
&lt;/p&gt;
			
			</description>
		</item>
		
		<item>
			<title>Mapping A Hash Keyboard Button In OSX</title>
			<link>http://jackbrewer.co.uk/mapping-a-hash-keyboard-button-in-osx/</link>
			<pubDate>Fri, 24 Feb 2012 00:00:00 +0000</pubDate>
			<guid>/mapping-a-hash-keyboard-button-in-osx</guid>
			<description>
			
			
				&lt;p&gt;When I switched to using a Mac, one of the very few problems I had was the lack of a hash key on my (UK) keyboard. For the average user, this probably isn't too much of an issue but for someone who codes, I can't live without it! &lt;kbd&gt;Alt&lt;/kbd&gt; + &lt;kbd&gt;3&lt;/kbd&gt; is slightly too awkward a shape to pull off frequently with one hand.&lt;/p&gt;
&lt;p&gt;To remedy my problem, i needed to find a donor key on my keyboard. The &lt;kbd&gt;§&lt;/kbd&gt; key looked like the perfect candidate (I even had to google it to find out what it was!).&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The section sign (§, Unicode U+00A7, HTML entity &amp;amp;sect;), also called the &quot;double S&quot;, &quot;sectional symbol&quot; or signum sectionis, is a typographical character used mainly to refer to a particular section of a document, such as a legal code.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Well now you know too.&lt;/p&gt;
&lt;p&gt;Now for the magic. If you don't already have it, you will need to create a &lt;code&gt;DefaultKeyBinding.dict&lt;/code&gt; file here:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;plain&quot;&gt;~/Library/KeyBindings/DefaultKeyBinding.dict&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once you have this file, open it and add:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;plain&quot;&gt;{
  /* Map # to § key*/
  &quot;§&quot; = (&quot;insertText:&quot;, &quot;#&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Save that, restart your Mac and you will be the proud owner of a new hash key!&lt;/p&gt;
			
			</description>
		</item>
		
		<item>
			<title>OSX Cursors PSD</title>
			<link>http://jackbrewer.co.uk/osx-cursors-psd/</link>
			<pubDate>Wed, 22 Feb 2012 00:00:00 +0000</pubDate>
			<guid>/osx-cursors-psd</guid>
			<description>
			
			
				&lt;p&gt;One of the hardest things about delivering flat Photoshop mockups to clients is the lack of interaction that you would get with a live demo. Showing off your well considered hover state, tooltips or other interactive elements can be quite confusing.&lt;/p&gt;
&lt;p&gt;A good way to help this confusion is by including cursors in you designs to help illustrate the intended action.&lt;/p&gt;
&lt;img src=&quot;/assets/osx-cursors-psd/images/cursor-interactions.png&quot; alt=&quot;Cursor Interactions&quot; /&gt;
&lt;img src=&quot;/assets/osx-cursors-psd/images/cursors.png&quot; alt=&quot;Cursors&quot; /&gt;
&lt;p class=&quot;actions&quot;&gt;
	&lt;a href=&quot;http://downloads.jackbrewer.co.uk/osx-cursors-psd/osx-cursors.zip&quot; class=&quot;button icon-download&quot;&gt;Download&lt;/a&gt;
&lt;/p&gt;
			
			</description>
		</item>
		
		<item>
			<title>Disabling Caps Lock on OSX</title>
			<link>http://jackbrewer.co.uk/disabling-caps-lock-on-osx/</link>
			<pubDate>Thu, 16 Feb 2012 00:00:00 +0000</pubDate>
			<guid>/disabling-caps-lock-on-osx</guid>
			<description>
			
			
				&lt;p&gt;The majority of the code I write is CSS or HTML and I have spent a long time setting up hundreds of &lt;del datetime=&quot;2012-01-02T22:22:10+00:00&quot;&gt;TextMate&lt;/del&gt; &lt;ins datetime=&quot;2012-01-02T22:22:10+00:00&quot;&gt;Sublime Text 2&lt;/ins&gt; tab triggers&lt;sup&gt;&lt;a href=&quot;#disabling-caps-lock-on-osx-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; to speed up the process. The thing that slows me down again is my clumsy, non-touch typing finger frequently mashing the caps lock key instead of the tab key.&lt;/p&gt;
&lt;p&gt;Turns out it is easy to disable caps lock in OSX. Go to &lt;em&gt;System Preferences &gt; Keyboard &gt; Modifier Keys&lt;/em&gt; and choose 'No Action' in the Caps Lock dropdown.&lt;/p&gt;
&lt;p&gt;In the few months that I've had it disabled, I can count the number of times I've needed caps lock on one finger. Compared to the frequency of my accidental activations beforehand, I'm definitely happy with the choice!&lt;/p&gt;
&lt;ol class=&quot;references&quot;&gt;
	&lt;li id=&quot;disabling-caps-lock-on-osx-1&quot;&gt;TextMate / Sublime Bundles: &lt;a href=&quot;https://github.com/jackbrewer/html-plus.tmbundle&quot;&gt;HTML&lt;/a&gt;, &lt;a href=&quot;https://github.com/jackbrewer/css-plus.tmbundle&quot;&gt;CSS&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
			
			</description>
		</item>
		
	</channel>

</rss>