<rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

	<channel>

    	<title>Code, Nerdyness, and Nonsense</title>
	    <link type="application/atom+xml" href="http://brandontreb.com/feed/" rel="self"/>
	    <link>http://brandontreb.com</link>
		<lastBuildDate>2012-01-25T08:00:56-08:00</lastBuildDate>
		<language>en</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	    <updated>2012-01-25T08:00:56-08:00</updated>
	    <id>http://brandontreb.com</id>
	    <author>
	        <name>brandontreb</name>
	    </author>
	    <rights>Copyright (c) 2010-2011 Brandon Trebitowski</rights>
	    
	    	<item>
		        <title>Vim For iOS Is Incredible</title>
		        <link>http://brandontreb.com/vim-for-ios-is-incredible/</link>
		        <pubDate>2012-01-25T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/vim-for-ios-is-incredible/</guid>
		        <description>&lt;p&gt;I used to be an Emacs guy and would battle to the death on the war between Vim and Emacs.  It wasn't until a coworker of mine sat down and really showed me just how cool/simple/powerful Vim can be.  Just using Vim is a new adventure every day and has really improved my productivity.  I now use it to code, blog, and even jot down quick notes.&lt;/p&gt;

&lt;p&gt;Last week, I saw on Hacker News a link announcing &lt;a href=&quot;http://applidium.com/en/applications/vim/&quot;&gt;Vim has been ported to iOS&lt;/a&gt;.  I have spent a week or so with it and can honestly say the port is almost perfect!&lt;/p&gt;

&lt;p&gt;It has &lt;em&gt;most&lt;/em&gt; of the major Vim features and commands including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic indentation&lt;/li&gt;
&lt;li&gt;Visual mode (block operations)&lt;/li&gt;
&lt;li&gt;Language-aware syntax highlighting&lt;/li&gt;
&lt;li&gt;Integrated scripting language that lets you extend functionalities&lt;/li&gt;
&lt;li&gt;Macros recording and playback&lt;/li&gt;
&lt;li&gt;Markers management (to quickly move around the edited file)&lt;/li&gt;
&lt;li&gt;Multiple clipboards&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;You even have access to the config file to remap keys and define your own custom macros.&lt;/p&gt;

&lt;p&gt;There are a few features that would make this better on mobile however:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dropbox Support - Currently you must use iTunes to work with Vim documents on mobile. There needs to be an easier way to share these.&lt;/li&gt;
&lt;li&gt;Keyboard bar - Since you have to switch modes so frequently and there are some keys you type often ( &quot;:&quot; ), it would be nice to have quick access to these.&lt;/li&gt;
&lt;li&gt;Plugin support - This is an Apple limitation :(&lt;/li&gt;
&lt;li&gt;NERDTree - The file browser that's built in doesn't work too well.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;With Vim mobile, you can now look &lt;em&gt;even more&lt;/em&gt; nerdy on your iPhone ;)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://itunes.apple.com/app/vim/id492668168&quot;&gt;Download Vim For iOS&lt;/a&gt;&lt;/p&gt;
</description>
				<category>link</category>
		    </item>
	    
	    	<item>
		        <title>Fluid For Mac</title>
		        <link>http://brandontreb.com/fluid-for-mac/</link>
		        <pubDate>2012-01-19T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/fluid-for-mac/</guid>
		        <description>&lt;p&gt;As of OSX Lion, I have started to seriously loathe some of the build-it Mac apps (such as Mail, and iCal).  While I previously had no issues with them, they now seem to be very clunky and crash quite often.  Being a developer, I thought &quot;why don't I write an app that wraps web apps for you so you basically get &quot;native web apps&quot; that have icons and are launchable?&quot;.&lt;/p&gt;

&lt;p&gt;After a quick Google search, I realized &lt;strong&gt;&lt;a href=&quot;http://fluidapp.com/&quot;&gt;this already exists!&lt;/a&gt;&lt;/strong&gt;.  The app is called Fluid and it does an incredible job of what I described above and more.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://fluidapp.com/images/dock_large.png&quot; width=&quot;400&quot;&gt;&lt;/p&gt;

&lt;p&gt;Here are the feature highlights.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a &quot;native&quot; Mac app for any web app&lt;/li&gt;
&lt;li&gt;Custom icon for each &quot;native&quot; app you create&lt;/li&gt;
&lt;li&gt;Full screen mode&lt;/li&gt;
&lt;li&gt;User scripps. These are my favorite.  They allow you to update the badge count based on information in the browser.  See below for a sample user script.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;Sample User Script For Twitter&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;    &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;fluid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;nx&quot;&gt;setInterval&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;updateBadge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;counts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\d+/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;counts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;counts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;fluid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;dockBadge&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;counts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;99&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;99+&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;counts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;fluid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;dockBadge&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href=&quot;http://userscripts.org/scripts/review/88425&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fluid is free with some minimal features, but I urge you to drop the $4.99 to gain full screen mode and user scripts. It's well worth it. I am not affiliated with them in any way, just a happy customer.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://fluidapp.com/&quot;&gt;Download Fluid&lt;/a&gt;&lt;/p&gt;
</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>Amazon - A Terrible Solution To A Huge Problem</title>
		        <link>http://brandontreb.com/amazon--a-terrible-solution-to-a-huge-problem/</link>
		        <pubDate>2012-01-16T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/amazon--a-terrible-solution-to-a-huge-problem/</guid>
		        <description>&lt;p&gt;tl;dr; Don't buy a Kindle Fire for your kid until they resolve the parental control issues. Wifi password protection is their current solution, and it sucks.&lt;/p&gt;

&lt;p&gt;Like many parents, I thought it would be a good idea to get a tablet device for my son so that he could play some &lt;em&gt;educational&lt;/em&gt; games and watch some Netflix (in moderation of course). After doing quite a bit of research, I settled on the Kindle Fire. Before the Apple fanboys give me crap, know that I am one, I have an iPad, it's too expensive for my son.&lt;/p&gt;

&lt;p&gt;Honestly, I really love the fire.  I think it has the &lt;em&gt;least terrible&lt;/em&gt; Android interface of any of the devices.  It's intuitive and my 3 year old was able to grasp navigation right away.  In addition to navigation, he quickly figured out how to acquire new content (apps, video, children's books) thanks to Amazon's &quot;One-Click Ordering&quot;. Obviously, Amazon thought the process they use on the web transfered well to a tablet device and was not willing to compromise on that.  That's neither here nor there. You can find plenty of posts about user's complaining about the &lt;strong&gt;initial&lt;/strong&gt; lack of parental controls.&lt;/p&gt;

&lt;h4&gt;The Update&lt;/h4&gt;

&lt;p&gt;Shortly after receiving some pretty rough reviews for their interface, Amazon rolled out their first update which brought us to 6.2.1.  In addition to fixing some of there terribly choppy UI, they rolled out their &quot;fix&quot; for the lack of parental controls.&lt;/p&gt;

&lt;p&gt;I noticed a new security setting that I had hoped would allow the device to require a password for content purchase, but it turns out the setting is to password protect enabling wifi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Password protect enabling wifi? Really?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is laughable at best.  What a worthless feature. I could not figure out why anyone would ever want that. And then I had a conversation with &quot;tech support&quot;.&lt;/p&gt;

&lt;h4&gt;Their &quot;Solution&quot; Confirmed&lt;/h4&gt;

&lt;p&gt;After seeing an email from Amazon the other day showing my purchase for $17.99 for Team Umizoomi Season 1 (whatever the crap that is), which obviously my son purchased, I set out to chat with customer support.  The conversation went something like this:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;...&lt;br/&gt;
&lt;strong&gt;Me:&lt;/strong&gt; Refund!? No parental controls!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outsourced Guy:&lt;/strong&gt; Enable Wifi Password = protection!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; No, watch Netflix! Browse Web! Stupid Solution&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outsourced Guy:&lt;/strong&gt; Yes Netflix Need Wifi. Did I solve your problem?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; ?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outsourced Guy:&lt;/strong&gt; Phone Number. Call Video Support&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;So there you have it.  Amazon actually pushes this as their solution to the lack of parental controls. My suspicions were confirmed by Outsourced Guy.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;It's sad that a huge company such as Amazon feels that &lt;em&gt;their process&lt;/em&gt; is more important than listening to their customers.  Although their devices have been selling like &lt;em&gt;fire&lt;/em&gt; (badum ch!), they need to address such gaping issues if they are to maintain their edge in the &quot;affordable&quot; tablet space.  Especially as the younger generations start embracing the technology.&lt;/p&gt;
</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>Why I Went Back To Jekyll - Also Rackspace Sucks</title>
		        <link>http://brandontreb.com/why-i-went-back-to-jekyll--also-rackspace-sucks/</link>
		        <pubDate>2012-01-03T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/why-i-went-back-to-jekyll--also-rackspace-sucks/</guid>
		        <description>&lt;p&gt;Recently, I was pretty humbled when a post of mine titled &lt;a href=&quot;http://brandontreb.com/wordpress-to-jekyll-and-back-again/&quot;&gt;WordPress To Jekyll And Back Again&lt;/a&gt; made it to the front page of Hacker News.  I was a little down on Jekyll for the reasons listed in that post and was feeling pretty good about my Wordpress install.&lt;/p&gt;

&lt;p&gt;At the time, I was running my own virtual instance on Rackspace cloud hosting (we'll get to this momentarily).  I also had all of the caching and optimization plugins installed and welcomed the Hacker News traffic.&lt;/p&gt;

&lt;p&gt;As you can imagine, the influx of HN traffic crashed the server multiple times and I was (with good reason) mocked in the comments (&quot;must be because he's 'back to Wordpress'&quot;). So, I asked for advice and further &quot;beefed up&quot; my setup switching from Apache to Nginx, upping the ram, and switching caching plugins.  Wordpress is a beast and hard to optimize.  That's not even the kicker as to why I switched away.&lt;/p&gt;

&lt;h4&gt;A Call From Rackspace...&lt;/h4&gt;

&lt;p&gt;About a month ago, I realized my blog was down.  I figured that it might have been that I was featured somewhere else which was crashing it (again I was rolling my eyes at Wordpress).  But then, I got a call and email from a &lt;em&gt;very&lt;/em&gt; helpful Rackspace employee. The email went like this:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Despite the very best efforts of or our Engineering and Datacenter Operations Teams, unfortunately  the host machine that your cloud server 'Websites' resides on was not able to be recovered.  At this point, we are looking at complete data loss.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;and... Rackspace, in this poorly phrased email, was basically like. &quot;Well, sucks to be you, hope you had a backup!&quot;. Well, I admit this is partially my fault for not having a backup as I am a bit of a n00b when it comes to server admin, but I had been hosting for years on (don't judge me) GoDaddy before that and a couple years on Rackspace.  I had no idea that hosting companies didn't have backups of their own.  It would seem that this might be crucial to their business.&lt;/p&gt;

&lt;p&gt;Needless to say, I lost everything including a jewelry site that I ran (not many sales), an iPhone leaderboard site (not very popular), 2 of my buddies Wordpress blogs, and my current Wordpress blog.&lt;/p&gt;

&lt;h4&gt;Jekyll To The Rescue&lt;/h4&gt;

&lt;p&gt;I was pretty angry at Rackspace and myself for never making a backup, but then it hit me that &lt;em&gt;most&lt;/em&gt; of my posts had been converted to Jekyll and were backed up in a github repository. I was able to restore my blog within a few minutes (now hosted on GitHub) and recover the Wordpress posts from the &lt;a href=&quot;http://feeds.feedburner.com/brandontreb&quot;&gt;Feedburner cache&lt;/a&gt; of my site.&lt;/p&gt;

&lt;p&gt;As for my buddies' sites... I feel for them :(&lt;/p&gt;

&lt;h4&gt;New List Of Why Jekyll Is Awesome&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatically backed up&lt;/strong&gt; - This is huge. If not for switching to Jekyll at one point, I would have lost &lt;strong&gt;years&lt;/strong&gt; worth of content. If you have every tried to back up Wordpress, it's a huge frackin pain since the database dump usually gets HUGE.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Free To Host&lt;/strong&gt; - I'm not sure why I was so stubborn about doing my own hosting.  I am now hosting on &lt;a href=&quot;https://github.com/brandontreb/brandontreb.github.com&quot;&gt;GitHub&lt;/a&gt; and it couldn't be more stable and fast.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile Blogging&lt;/strong&gt; - This was my largest gripe about Jekyll. I was jealous that I couldn't blog from my iPhone like Wordpress users. Well, I have found a pretty decent solution (tutorial to follow), which involves a combo of Prompt, Screen, and Vim.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Oriented&lt;/strong&gt; - Wordpress makes it super easy to dump tons of images into your posts.  While blogging with Jekyll (inside of Vim in my case), it's a little bit more of a pain to add your own images.  That being said you must be choosy forcing you to focus more on the content and less on using visual crutches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog Anywhere&lt;/strong&gt; - This was another limitation I was placing on Jekyll in my last post.  However, I just wasn't using Jekyll to its full potential.  I was building my site locally and rsyncing it up to my server.  This process was a little tedious and discouraged me from writing many new posts.  Now, hosting with github, posting is as simple as a quick push to the repo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ninja Fast&lt;/strong&gt; - This one should be obvious.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;I am quite happy blogging with Jekyll. As far as I'm concerned there is no reason to ever host my own blog again (as long as Github doesn't ditch pages ;) ).  Also, if you currently have stuff on Rackspace, &lt;strong&gt;go make a backup now&lt;/strong&gt; (or ditch them altogether).  Thanks for reading and &lt;a href=&quot;http://feeds.feedburner.com/brandontreb&quot;&gt;look out&lt;/a&gt; for my next post about mobile blogging with Jekyll.&lt;/p&gt;

&lt;p&gt;Happy Blogging!&lt;/p&gt;
</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>New Year - New Theme: Focus On The Content</title>
		        <link>http://brandontreb.com/new-year--new-theme%3A-focus-on-the-content/</link>
		        <pubDate>2011-12-31T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/new-year--new-theme%3A-focus-on-the-content/</guid>
		        <description>&lt;p&gt;As you may have noticed, my blog has a new (much cleaner) theme.  For 2012, my blogging goals are to focus much more on content rather than flashy visuals.&lt;/p&gt;

&lt;p&gt;I have also minimized my set up to save blogging costs (I now blog for FREE) and to simplify things greatly. Here is my new setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll&lt;/a&gt; as my &quot;blog engine&quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wptux.com/206/wp-typo&quot;&gt;The WPTypo Wordpress Theme&lt;/a&gt; I ported this to Jekyll&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/brandontreb/brandontreb.github.com&quot;&gt;GitHub&lt;/a&gt; for hosting (it's free).&lt;/li&gt;
&lt;li&gt;Vim - I'm using this as my &quot;blog editor&quot;. There are some incredible plugins that I am using to help facilitate blogging using Jekyll (post on how I do this to follow)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;That's about it.  I am now free from server costs and my blog is &lt;strong&gt;always&lt;/strong&gt; backed up and easily accessible.&lt;/p&gt;

&lt;p&gt;2011 has been a very successful year in terms of blogging for me.  In addition to writing here and on &lt;a href=&quot;http://icodeblog.com&quot;&gt;iCodeBlog&lt;/a&gt;, I have recently started blogging for Mobile Tuts + on the &lt;a href=&quot;http://envato.com&quot;&gt;Envato Network&lt;/a&gt;.  You can check out my 7 part game series on creating a caterpillar game using Cocos2D &lt;a href=&quot;http://mobile.tutsplus.com/series/build-a-caterpillar-game-with-cocos2d/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I can't wait to start posting some great content in this new year. Given my new setup, I literally have to adhere to the title of this post as blogging in VIM doesn't really lend itself to visuals ;).&lt;/p&gt;

&lt;p&gt;Happy New Year and Happy Hacking in 2012!&lt;/p&gt;
</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>SVProgressHUD Is Quickly Becoming My Favorite iOS Library</title>
		        <link>http://brandontreb.com/svprogresshud-is-quickly-becoming-my-favorite-ios-library/</link>
		        <pubDate>2011-12-07T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/svprogresshud-is-quickly-becoming-my-favorite-ios-library/</guid>
		        <description>&lt;p&gt;From the first time I saw this effect in the Tweetie (now &lt;a href=&quot;http://itunes.apple.com/us/app/twitter/id333903271?mt=8&quot;&gt;Twitter for iPhone&lt;/a&gt;), I was crazy about it.  I had written my own hacks to make something &lt;em&gt;close&lt;/em&gt;, but it was always terrible. Within the past few months, I have been using a perfect/elegant solution to this problem called &lt;a href=&quot;https://github.com/samvermette/SVProgressHUD&quot;&gt;SVProgressHUD&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://a248.e.akamai.net/assets.github.com/img/07e5ce2827299e152cd8f57ebb6eecf7ce9feedd/687474703a2f2f662e636c2e6c792f6974656d732f32333159324130743074314a30423072334e30702f737670726f6772657373687564332e706e67&quot; width=&quot;550&quot;&gt;&lt;/p&gt;


&lt;p&gt;Using this in your project is as easy as calling:&lt;/p&gt;




&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;objc&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// showing&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;SVProgressHUD showWithStatus&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;Logging in...&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// hiding&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;SVProgressHUD dismiss&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;




&lt;p&gt;&lt;a href=&quot;https://github.com/samvermette/SVProgressHUD&quot;&gt;Clone SVProgressHUD On Github&lt;/a&gt;&lt;/p&gt;

</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>Tether Your iPhone Without Jailbreaking (Or Paying For It)</title>
		        <link>http://brandontreb.com/tether-your-iphone-without-jailbreaking-%28or-paying-for-it%29/</link>
		        <pubDate>2011-11-29T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/tether-your-iphone-without-jailbreaking-%28or-paying-for-it%29/</guid>
		        <description>&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://github.com/tcurdt/iProxy/raw/master/Documentation/screenshots/screen12.png&quot; title=&quot;iProxy&quot; class=&quot;alignright&quot;  height=&quot;340&quot; /&gt;&lt;/p&gt;


&lt;p&gt;With all of the buzz around the &lt;a href=&quot;http://tether.com&quot;&gt;iTether&lt;/a&gt; App, I figured I&amp;#8217;d offer a more permanent solution since Apple will surely yank this soon&lt;/p&gt;


&lt;p&gt;Last year, a developer published his code for an http &lt;a href=&quot;http://en.wikipedia.org/wiki/SOCKS&quot;&gt;SOCKS&lt;/a&gt; proxy called iProxy.  This will give your iPhone the ability to create a SOCKS server in which your laptop can connect to via the Bonjur protocol.&lt;/p&gt;


&lt;p&gt;Once connect, all of your computer&amp;#8217;s http traffic will be routed through the server on your iPhone essentially giving you &lt;strong&gt;free tethering&lt;/strong&gt;.  Since this isn&amp;#8217;t using the iPhone&amp;#8217;s built-in tethering method, I&amp;#8217;d assume At&amp;amp;t could not detect it&amp;#42;.  After looking at the code, it becomes pretty obvious how the SOCKS proxy works and makes me kick myself that I didn&amp;#8217;t write it (or find this code sooner).&lt;/p&gt;


&lt;p&gt;The &lt;a href=&quot;https://github.com/tcurdt/iProxy/wiki/Configuring-iProxy&quot;&gt;setup&lt;/a&gt; is a little complex, but you only need to do it once.  I would love to hear in the comments if any of you has had some experience with this. I will also share my own as soon as I can get it installed later today.&lt;/p&gt;


&lt;p&gt;Download the project over at &lt;a href=&quot;https://github.com/tcurdt/iProxy&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Happy Coding!&lt;/p&gt;


&lt;p&gt;&lt;sub&gt;&amp;#42;This has not been verified by me&lt;/sub&gt;&lt;/p&gt;

</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>Caterpillar 1.1 Released</title>
		        <link>http://brandontreb.com/caterpillar-1.1-released/</link>
		        <pubDate>2011-11-22T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/caterpillar-1.1-released/</guid>
		        <description>&lt;p&gt;I have just released the update to my Centipede clone called &lt;a href=&quot;http://itunes.apple.com/us/app/caterpillar-hd/id479439790?mt=8&quot;&gt;Caterpillar&lt;/a&gt;. For those of you who don&amp;#8217;t know, I am doing a 6 part series on how to create this game over at &lt;a href=&quot;http://mobile.tutsplus.com/tutorials/iphone/building-a-caterpiller-game-with-cocos2d/&quot;&gt;MobileTuts+&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;

&lt;p&gt;This update adds some interesting functionality on which I will be blogging about in the near future.&lt;/p&gt;


&lt;p&gt;I have added iAds to my cocos2D project and when the iAds fail to serve (which is about 75% of the time), I replace them with Admob ads. This was achieved by creating a new Admob ad view inside of the &lt;code&gt;bannerView:didFailToReceiveAdWithError:&lt;/code&gt; delegate method.&lt;/p&gt;


&lt;p&gt;I will either post a full tutorial about doing this Here or on Mobile Tuts. Either way, I&amp;#8217;ll keep you posted.&lt;/p&gt;


&lt;p&gt;Also, be sure to &lt;a href=&quot;http://itunes.apple.com/us/app/caterpillar-hd/id479439790?mt=8&quot;&gt;download the game&lt;/a&gt;, test it out, and lemme know if you have suggestions. Version 1.1 addressed quite a few issues from feedback (namely poor controls).&lt;/p&gt;


&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>WordPress Plugin For iOS Developers And Bloggers</title>
		        <link>http://brandontreb.com/wordpress-plugin-for-ios-developers-and-bloggers/</link>
		        <pubDate>2011-11-21T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/wordpress-plugin-for-ios-developers-and-bloggers/</guid>
		        <description>&lt;p&gt;This plugin looks to be super useful for people wanting to blog about iOS apps. It even supports the affiliate urls.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;In any post or page, insert the following shortcode: [ios-app id=&quot;1234&quot;] (where &amp;#8220;1234&amp;#8243; is your application&amp;#8217;s App Store ID).&lt;br /&gt;
  You can also specify a download link like this: [ios-app id=&quot;1234&quot; download_url=&quot;http://www.yourlinktrackerurl.com&quot;]&lt;/p&gt;
&lt;/blockquote&gt;


&lt;p&gt;&lt;a href=&quot;https://github.com/markrickert/App-Display-Page&quot;&gt;Download The Plugin Here&lt;/a&gt;&lt;/p&gt;

</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>Voices That Matter Conference: Highlights</title>
		        <link>http://brandontreb.com/voices-that-matter-conference%3A-highlights/</link>
		        <pubDate>2011-11-16T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/voices-that-matter-conference%3A-highlights/</guid>
		        <description>&lt;p&gt;This past weekend, I attended the voices that matter conference as a sponsor for a new product my team is working called &lt;a href=&quot;http://maasive.co&quot;&gt;MaaSive&lt;/a&gt;.  We had an absolute blast at the conference and I learned quite a bit from all of the speakers.&lt;/p&gt;


&lt;p&gt;Here were a few of my favorite parts:&lt;/p&gt;


&lt;h4&gt;Keynote by Graeme Devine&lt;/h4&gt;


&lt;p&gt;For those of you who don&amp;#8217;t know Graeme is a legend in the game development industry.  He was responsible for titles such as Quake 3, 7th guest, and Halo Wars.  His presentation entitled &amp;#8220;Social Gaming is Dead&amp;#8221; was spot on. In it Graeme talked about how game developers have become less focused on the quality of games and more focused on &amp;#8220;how do I make a profit?&amp;#8221;.  A statement that has stuck out to me is:&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;
  &amp;#8220;Be generous with fun. We are mean with it!&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Basically, we are charging our users for fun or making them do real work (see Farmville) in order to obtain it.  His message was &amp;#8220;stop it, make something fun, and dont&amp;#8217;t focus on profit&amp;#8221;.  Otherwise you are &lt;strong&gt;doomed&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;https://twitter.com/#!/zaphodgjd&quot;&gt;Follow Graeme on Twitter&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;Moving To 3D by Mike Daily&lt;/h4&gt;


&lt;p&gt;Mike is a good friend of mine and I look forward to hanging out with him at the conference each year.  His talk was all about showing the developers how easy it actually is to create a 3D game without the use of a game engine.  Mike&amp;#8217;s demo (show below) was an absolutely incredible space shooter where you used the gyroscope to maneuver around.&lt;/p&gt;


&lt;p&gt;Mike will be posting a series on &lt;a href=&quot;http://www.71squared.com/&quot;&gt;his blog&lt;/a&gt; in the near future about how to make his game using GLKit in the near future.&lt;/p&gt;


&lt;p&gt;&lt;iframe src=&quot;http://player.vimeo.com/video/31690099?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; width=&quot;400&quot; height=&quot;225&quot; frameborder=&quot;0&quot; webkitAllowFullScreen allowFullScreen&gt;&lt;/iframe&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://vimeo.com/31690099&quot;&gt;VTM Game Prototype&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/michaeldaley&quot;&gt;Michael Daley&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;https://twitter.com/#!/mikedaley&quot;&gt;Follow Mike on Twitter&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;Storyboarding by Erica Sadun&lt;/h4&gt;


&lt;p&gt;Erica is an OG (original gangster) when it comes to iOS development.  She has been in the space since way before the first SDK was published (in fact she had a jailbroken dev book almost ready to go).  Her current book, &lt;a href=&quot;http://www.amazon.com/iPhone-Developers-Cookbook-Building-Applications/dp/0321659570&quot;&gt;The iPhone Developer&amp;#8217;s Cookbook&lt;/a&gt; is a beast containing almost 900 pages!!!&lt;/p&gt;


&lt;p&gt;Her talk showed how easy it is to use storyboarding and just how powerful the technique can be.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;https://twitter.com/#!/ericasadun&quot;&gt;Follow Erica on Twitter&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;Conclusion&lt;/h4&gt;


&lt;p&gt;It should be obvious from this post, that the VTM conference was incredible to say the least.  If you didn&amp;#8217;t attend, I strongly urge you to check out their next one.  Hopefully you will get to blog about &lt;em&gt;my&lt;/em&gt; talk at it (assuming I get my crap together).&lt;/p&gt;


&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>Caterpillar-HD Now In The App Store: Tutorial Series To Follow</title>
		        <link>http://brandontreb.com/caterpillar-hd-now-in-the-app-store%3A-tutorial-series-to-follow/</link>
		        <pubDate>2011-11-16T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/caterpillar-hd-now-in-the-app-store%3A-tutorial-series-to-follow/</guid>
		        <description>&lt;p&gt;I have just released the update to my Centipede clone called &lt;a href=&quot;http://itunes.apple.com/us/app/caterpillar-hd/id479439790?mt=8&quot;&gt;Caterpillar&lt;/a&gt;. For those of you who don&amp;#8217;t know, I am doing a 6 part series on how to create this game over at &lt;a href=&quot;http://mobile.tutsplus.com/tutorials/iphone/building-a-caterpiller-game-with-cocos2d/&quot;&gt;MobileTuts+&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;This update adds some interesting functionality on which I will be blogging about in the near future.&lt;/p&gt;


&lt;p&gt;I have added iAds to my cocos2D project and when the iAds fail to serve (which is about 75% of the time), I replace them with Admob ads. This was achieved by creating a new Admob ad view inside of the &lt;code&gt;bannerView:didFailToReceiveAdWithError:&lt;/code&gt; delegate method.&lt;/p&gt;


&lt;p&gt;I will either post a full tutorial about doing this Here or on Mobile Tuts. Either way, I&amp;#8217;ll keep you posted.&lt;/p&gt;


&lt;p&gt;Also, be sure to &lt;a href=&quot;http://itunes.apple.com/us/app/caterpillar-hd/id479439790?mt=8&quot;&gt;download the game&lt;/a&gt;, test it out, and lemme know if you have suggestions. Version 1.1 addressed quite a few issues from feedback (namely poor controls).&lt;/p&gt;


&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>WordPress To Jekyll And Back Again</title>
		        <link>http://brandontreb.com/wordpress-to-jekyll-and-back-again/</link>
		        <pubDate>2011-11-14T00:00:00-08:00</pubDate>
		        <guid>http://brandontreb.com/wordpress-to-jekyll-and-back-again/</guid>
		        <description>&lt;p&gt;Earlier this year, I jumped ship on WordPress and moved to Jekyll after reading &lt;a href=&quot;http://vitobotta.com/how-to-migrate-from-wordpress-to-jekyll/&quot;&gt;this post&lt;/a&gt; on Hacker News. I wanted to be 1337! I wanted to ditch the whale that was WordPress.&lt;/p&gt;


&lt;p&gt;Well, it was quite a run, but in the end I decided to revert back to WordPress.  Although Jekyll is &lt;strong&gt;much faster&lt;/strong&gt; than WordPress, here were my issues:&lt;/p&gt;


&lt;h4&gt;Build Times&lt;/h4&gt;


&lt;p&gt;As my post count grew, so did the time to compile my jekyll site.  Jekyll is a static site builder, so naturally it has to rebuild your site any time anything changes.  With my blog containing hundreds of posts, my site build times started getting into minutes.  I simply don&amp;#8217;t want to wait forever to publish a post.&lt;/p&gt;


&lt;p&gt;Since it took &lt;strong&gt;so long&lt;/strong&gt; to build my site, it discouraged me from posting.  I would only write posts on my specified &lt;a href=&quot;http://idevblogaday.com&quot;&gt;#iDevBlogADay&lt;/a&gt; days, rather than just posting quick info posts.&lt;/p&gt;


&lt;h4&gt;Too Many Dependancies&lt;/h4&gt;


&lt;p&gt;Jekyll is a beast to install, especially if you want to support some of the fancier plugins like syntax highlighting.  This limited my blogging to only &lt;em&gt;my&lt;/em&gt; machines.  I couldn&amp;#8217;t blog from anywhere anymore.  I could have installed Jekyll on my server, but that just seems like a hassle, also see my first point about build times.&lt;/p&gt;


&lt;h4&gt;No Mobile App&lt;/h4&gt;


&lt;p&gt;I like to blog on the go, and with Jekyll I just couldn&amp;#8217;t find an elegant solution to blog from my iPhone or iPad.  I found myself trying to come up with hackish solutions and write custom scripps, but in the end it just wasn&amp;#8217;t worth it.&lt;/p&gt;


&lt;h4&gt;I can now use Markdown with WordPress&lt;/h4&gt;


&lt;p&gt;I fell in love with Jekyll because I could write in markdown.  With &lt;a href=&quot;http://wordpress.org/extend/plugins/markdown-on-save-improved/&quot;&gt;this plugin&lt;/a&gt;, I can now do just that with WordPress.  It stores the Markdown in a separate meta field and generates the post_content html upon publishing the post. So, I&amp;#8217;m not married to the plugin in case I decide to ditch it.&lt;/p&gt;


&lt;p&gt;I have also hid the disgusting &amp;#8220;Visual Editor&amp;#8221; that WordPress is unfortunate enough to ship with.  This makes my writing experience much more pleasant.&lt;/p&gt;


&lt;h4&gt;The Future&lt;/h4&gt;


&lt;p&gt;While Jekyll was a fun experiment, I think I will stick with WordPress for now.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;geekCred&amp;#8211;;&lt;/strong&gt;&lt;/p&gt;

</description>
				<category></category>
		    </item>
	    
	    	<item>
		        <title>What's Your Cruising Speed?</title>
		        <link>http://brandontreb.com/whats-your-cruising-speed/</link>
		        <pubDate>2011-10-04T19:20:00-07:00</pubDate>
		        <guid>http://brandontreb.com/whats-your-cruising-speed/</guid>
		        <description>&lt;center&gt;&lt;img src=&quot;http://f.cl.ly/items/3i3A3o3o0M3O1I3G3K3M/2009-porsche-911-carrera-19_460x0w.jpg&quot;&gt;&lt;/center&gt;


&lt;p&gt;Earlier this year, I launched an application called &lt;a href=&quot;http://itunes.apple.com/us/app/smart-lockscreen-creator/id419890996?mt=8&quot;&gt;Smart Lockscreen Creator&lt;/a&gt;.  It was a pretty simple app that allowed you to add dynamic data (such as weather) to your wallpaper and save it back out to your camera roll.  The idea is to improve the functionality of the user's lockscreen.  It did very well on launch (and even made it to #1 in the Israel App Store).  At the peak, I was selling about 600 copies per day.&lt;/p&gt;

&lt;p&gt;Well, the honeymoon period is over and sales have slowed down &lt;strong&gt;quite a bit&lt;/strong&gt;, however they have completely stabilized around what I'm calling the &quot;cruising speed&quot;.  So, what's my speed?  On an average day, I will sell between 10-15 copies of the application per day.  This is with no additional marketing, I'm not on any top 500 pages, and honestly I haven't done much to the application at all.   The app even has ~2 star rating.  Not because it sucks, but because people don't read the description and assume it will constantly update their lockscreen.&lt;/p&gt;

&lt;p&gt;I have asked a few developers and this seems to be a fairly common cruising speed.  So, now I'm asking you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's YOUR cruising speed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do you think updating the application will affect this speed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What dictates the speed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear your responses in the comments.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	    	<item>
		        <title>Join Me At The Voices That Matter iOS Conference</title>
		        <link>http://brandontreb.com/join-me-at-the-voices-that-matter-conference/</link>
		        <pubDate>2011-09-06T21:00:00-07:00</pubDate>
		        <guid>http://brandontreb.com/join-me-at-the-voices-that-matter-conference/</guid>
		        <description>&lt;p&gt;&lt;img width=&quot;540&quot; src=&quot;http://ios2011.voicesthatmatter.com/attachments/0002/0659/topright.gif&quot;&gt;&lt;/p&gt;

&lt;p&gt;In November, I will be attending the &lt;a href=&quot;http://ios2011.voicesthatmatter.com/&quot;&gt;Voices That Matter iOS Developers conference&lt;/a&gt;.  It will be my third time attending, and I can't recommend it enough. One major change from this year however is, I will be attending as a sponsor.  A new company/project (currently in private alpha) will be participating as a sponsor at the conference.&lt;/p&gt;

&lt;p&gt;We intend to have a table set up with multiple computers and devices so you can check out our product first hand.  Bleh, that sounds kind of spammy.  But, we have been working on something incredibly killer and I can't wait to share it with all of you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If YOU are planning on attending the conference&lt;/strong&gt;, please comment on this post, &lt;a href=&quot;http://twitter.com/brandontreb&quot;&gt;write me on Twitter&lt;/a&gt;, or email me.  I'd love to set up a one on one time to give you the full demo.&lt;/p&gt;

&lt;p&gt;Also, I'm sure many of you already have a discount code, but if not, I have a pretty sweet promo code for $100!&lt;/p&gt;

&lt;h4&gt;BSTBLOG&lt;/h4&gt;

&lt;p&gt;Enter that at checkout.  Combining that with the &quot;Early Bird Pricing&quot;, you save $300! Not a bad deal.&lt;/p&gt;

&lt;p&gt;So, if you do end up coming (you are crazy not to), please communicate with me.  At least to say hi, you don't &lt;em&gt;have&lt;/em&gt; to here my super awesome sales spiel if you don't want to...&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	    	<item>
		        <title>Beginning Jailbroken iOS Development - Your First Tweak</title>
		        <link>http://brandontreb.com/beginning-jailbroken-ios-development-your-first-tweak/</link>
		        <pubDate>2011-08-23T22:00:00-07:00</pubDate>
		        <guid>http://brandontreb.com/beginning-jailbroken-ios-development-your-first-tweak/</guid>
		        <description>&lt;p&gt;This is the 3rd installment of my jailbroken iOS development series.  If you haven't already, make sure you read the following tutorials to get up to speed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://brandontreb.com/beginning-jailbroken-ios-development-getting-the-tools/&quot;&gt;Beginning Jailbroken iOS Development - Getting The Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://brandontreb.com/beginning-jailbroken-ios-development-building-and-deployment/&quot;&gt;Beginning Jailbroken iOS Development - Building And Deployment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Today I'm going to show you how to patch any internal Apple method that you want.  In this demo, we are going to hook into the init method of Springboard and show a UIAlertView upon starting your phone up.  It's not the &lt;em&gt;coolest&lt;/em&gt; of applications, but the design pattern and concepts used can be applied to patching any other internal method of any class.&lt;/p&gt;

&lt;h4&gt;Getting Set Up&lt;/h4&gt;

&lt;p&gt;In order to create a tweak, you must interface with Saurik's libsubstrate.dylib dynamic library.  This might come packaged with theos, but if not, you need to download a fresh copy. One can be found on this &lt;strong&gt;very spammy&lt;/strong&gt; site. &lt;a href=&quot;http://www.mediafire.com/?2upm53uzzj0488u&quot;&gt;Download libsubstrate.dylib&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have downloaded it, copy it to the folder /opt/theos/lib.  This is the folder where you will copy any other dynamic libraries that you might need to use in your application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The iOS Headers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most likely, theos came with the iOS headers that you need.  If not, you need to obtain them by doing a header dump on the device OR Googling around for them.  I suggest the latter as someone else has surely done the work for you.  Once you have these headers, you need to put them in the folder /opt/theos/include.  For this example you should have a folder in there called Springboard containing all of the Springboard headers.&lt;/p&gt;

&lt;h4&gt;Creating The Project&lt;/h4&gt;

&lt;p&gt;The process for creating the project is simple.  I'm going to assume that you already have all of your environment variables in place that we discussed in the &lt;a href=&quot;http://brandontreb.com/beginning-jailbroken-ios-development-building-and-deployment/&quot;&gt;last tutorial&lt;/a&gt;.  If not, you will get errors.&lt;/p&gt;

&lt;p&gt;Open the console, cd into the directory where you want to create your application and type the following command to create a new Tweak application.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$THEOS&lt;/span&gt;/bin/nic.pl
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Now, when prompted select the number [5] for a tweak.  Next, you will enter all of the information about your project.  The resulting output should look like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;NIC 1.0 - New Instance Creator
------------------------------
  &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;1.&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; iphone/application
  &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;2.&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; iphone/library
  &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;3.&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; iphone/preference_bundle
  &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;4.&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; iphone/tool
  &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;5.&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; iphone/tweak
Choose a Template &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;required&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;: 5
Project Name &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;required&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;: WelcomeWagon 
Package Name &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;com.yourcompany.welcomewagon&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;:                 
Author/Maintainer Name &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;Brandon Trebitowski&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;: 
MobileSubstrate Bundle filter &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;com.apple.springboard&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;: 
Instantiating iphone/tweak in welcomewagon/...
Done.
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h4&gt;The Tweaks File&lt;/h4&gt;

&lt;p&gt;Once your project has been created, you can open in up in your favorite editor.  I prefer TextMate.  Theos creates a file for you called Tweak.xm.  This is a special file that will run through theos's preprocessor in order to hook into the classes and methods that you specify.  So, rather than us having to write tons of boilerplate/crazy hook code, Theos does that all for us with a nice interface.&lt;/p&gt;

&lt;p&gt;By default, EVERYTHING in that file is commented out.  It took me longer than I care to admit to figure that out when I created my first Jailbroken iOS app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Preprocessor commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are a few commands that you need to know in order to hook into a class:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;%hook and %end&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;objc&quot;&gt;&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hook&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Springboard&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;// overwrite methods here&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;The first command is called %hook followed by the name of the class you are hooking in to.  You choose the methods to overwrite within the context of %hook className and %end. In the above code, we are saying that we want to hook into some methods in the SpringBoard class.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;%orig&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When inside a method, the %orig command will call the original method.  You can even pass arguments to the command like this %orig(arg1,arg2).  One thing to note is, if you don't call %orig, the original method will never be called.  So, if you hook SpringBoard's init command and fail to call %orig, SpringBoard will never start and your phone will be unusable until you delete your app via ssh.&lt;/p&gt;

&lt;h4&gt;Hooking Into Springboard&lt;/h4&gt;

&lt;p&gt;Open up Tweak.xm and add the following code.  Don't worry, I will explain it afterwards.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;objc&quot;&gt;&lt;span class=&quot;cp&quot;&gt;#import &amp;lt;SpringBoard/SpringBoard.h&amp;gt;&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hook&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;SpringBoard&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;applicationDidFinishLaunching:&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;application&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;orig&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;n&quot;&gt;UIAlertView&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;alert&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;UIAlertView&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;alloc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;initWithTitle:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;Welcome&amp;quot;&lt;/span&gt; 
        &lt;span class=&quot;nl&quot;&gt;message:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;Welcome to your iPhone Brandon!&amp;quot;&lt;/span&gt; 
        &lt;span class=&quot;nl&quot;&gt;delegate:&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;nil&lt;/span&gt; 
        &lt;span class=&quot;nl&quot;&gt;cancelButtonTitle:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;Thanks&amp;quot;&lt;/span&gt; 
        &lt;span class=&quot;nl&quot;&gt;otherButtonTitles:&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;alert&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;alert&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;OK, so what's going on here.  First, we import the Springboard.h header.  This will allow us access to springboard.  Next, we tell the preprocessor to hook into the Springboard class.&lt;/p&gt;

&lt;p&gt;The method that we are overriding here is the applicationDidFinishLaunching: method.  This will of course fire right when SpringBoard starts up.  Notice that we make the %orig call.  If we omit this, our phone would never boot up properly as SpringBoard needs it's initialization method.&lt;/p&gt;

&lt;p&gt;Finally, we just throw up a UIAlertView.  Again, not too exciting, but you get the point.&lt;/p&gt;

&lt;h4&gt;Adding Additional Frameworks&lt;/h4&gt;

&lt;p&gt;If you were to type build to build this project at this point you would see an error like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;Tweak.xm: In &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; ‘objc_object* &lt;span class=&quot;nv&quot;&gt;$_ungrouped$SpringBoard$init&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;SpringBoard*, objc_selector*&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;’:
Tweak.xm:6: error: declaration of ‘objc_object* self’ shadows a parameter
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This is because we depend on the UIKit framework to show alerts.  In order to tell theos that we want to link in UIKit, we must create an addition to the Makefile.  Add the following line to your Makefile.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;WelcomeWagon_FRAMEWORKS&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; UIKit
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This will ensure that UIKit gets linked in.&lt;/p&gt;

&lt;h4&gt;Building, Packaging, And Installing&lt;/h4&gt;

&lt;p&gt;In the terminal, cd into your project's directory.  At this point, you can type make to simply build your project.  Theos has provided a nice way to automatically install your library on your device.  In order for it to work you must have the THEOS_DEVICE_IP environment variable set to your iPhone/iPod's IP address. This is explained in the &lt;a href=&quot;http://brandontreb.com/beginning-jailbroken-ios-development-building-and-deployment/&quot;&gt;previous tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the terminal type:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;make install
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This will build your tweak and install it on your device. When prompted to enter your password, the default is &quot;alpine&quot;.  Also, make sure that SSH is installed on your device.&lt;/p&gt;

&lt;p&gt;After installation, your device will respring and you will be greeted with your custom message like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3J1W0j0c1F3y081P2D2i/IMG_0001.PNG&quot; alt=&quot;Jailbroken App Development&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;You should now have a basic understand of how to patch any method inside of iOS.  With this knowledge, you can customize ANYTHING that you don't like about the device.  If you have any questions or comments, feel free to leave them in the comments section of this post.&lt;/p&gt;

&lt;p&gt;You can download the source code for this tutorial &lt;a href=&quot;http://cl.ly/1u0l0U0y2I0T1g2s3D0O&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy Jailbreaking!&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	    	<item>
		        <title>10 Great Pixel Art Tutorial And Free Resource Sites For Your Games</title>
		        <link>http://brandontreb.com/10-Great-Pixel-Art-Tutorial-And-Free-Resource-Sites-For-Your-Games/</link>
		        <pubDate>2011-08-13T20:30:00-07:00</pubDate>
		        <guid>http://brandontreb.com/10-Great-Pixel-Art-Tutorial-And-Free-Resource-Sites-For-Your-Games/</guid>
		        <description>&lt;p&gt;I don't usually create &quot;list&quot; posts, however I wanted to share a grouping of resources I have been collecting over the past few months.  As you may have noticed, I'm a bit of a Pixel Art fanatic and wanted to share with you the tutorials that helped to get me started as well as some sites offering some high quality &lt;strong&gt;free&lt;/strong&gt; pixel art.&lt;/p&gt;

&lt;p&gt;Keep in mind that some of these sites have similar content, however they all take a slightly different approach in teaching.  I found it very helpful to read each of the tutorials and learn from different points of view.&lt;/p&gt;

&lt;h4&gt;1. Gas 13 - Isometric Pixel Art Tutorial&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://www.gas13.ru/v3/tutorials/f9.gif&quot; alt=&quot;Pixel House&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.gas13.ru/v3/tutorials/isometric_pixelart_tutorial_mathematics_of_isometrics.php&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was my very first pixel art tutorial.  I was amazed at how quickly I was able to make a really professional looking pixel art building.  I highly recommend all of the tutorials on this guy's site.  Some of them however can be quite complex.&lt;/p&gt;

&lt;h4&gt;2. Derek Yu - The Pixel Tutorial&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://www.derekyu.com/images/extras/lucha-finished.gif&quot; alt=&quot;Wrestler&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.derekyu.com/?page_id=221&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was another site that I stumbled upon early on in my pixel art quest.  Derek provides a nice story telling approach to teaching the in's and out's of pixel art.  I really appreciated his tutorial on lines.&lt;/p&gt;

&lt;h4&gt;3. Mini Wizard Studios - What is 'Isometric' pixel art&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://www.miniwizardstudios.com/images/pixel/iso/office.gif&quot; alt=&quot;Sample pixel art&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.miniwizardstudios.com/iso.asp&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This guy offers another dead simple intro to pixel art.  Most of it is just explanation, however his examples are quite good.  He shows examples of Backgrounds, Characters, objects, tiles, as well as a ton of different UI elements and icons. It's a great place to go for some inspiration.&lt;/p&gt;

&lt;h4&gt;4. Hub Pages - How To Start With Pixel Art&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://s3.hubimg.com/u/1629662_f520.jpg&quot; alt=&quot;Victorian House&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://vanmall.hubpages.com/hub/How-To-Start-With-Pixel-Art&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again, another great site for the pixel art n00b.  This tutorial goes over all of the basics of line, cubes, and texturing.  It also links out to other great pixel art tutorials for creating various objects such as a bed, table, and lamp.&lt;/p&gt;

&lt;h4&gt;5. Bio Rust - Isometric Pixel Art&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://www.biorust.com/tutorials/ps-isometricpixelart/Image-15a.jpg&quot; alt=&quot;Pixel Sphere&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.biorust.com/tutorials/detail/247/us/&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tutorial is a bit rushed &lt;em&gt;however&lt;/em&gt; it provides a great overview for creating other basic shapes besides a cube.  In addition to lines and cubes, it demonstrates pyramids, cylinders, and spheres.&lt;/p&gt;

&lt;h4&gt;6. Oceans Dream - Pixel Art Tutorials&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://pixel.oceansdream.net/wp-content/uploads/pixel.oceansdream.net/2010/02/celsiusHair.png&quot; alt=&quot;Pixel Character&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pixel.oceansdream.net/&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the most comprehensive site for pixel art tutorials.  While many of them aren't for the faint of heart, there is some fantastic content here.  This site has everything from tips and tricks, to character creation, to breakdowns of existing games.  I could spend hours on this site.&lt;/p&gt;

&lt;h4&gt;7. Pixel Character Tutorial - NekoSoraYagami on Deviant Art&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/28162n1b1i1H0f03421d/Screen%20shot%202011-08-13%20at%209.38.11%20PM.png&quot; alt=&quot;Pixel Character&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://nekosorayagami.deviantart.com/art/Pixel-Character-Tutorial-76829227&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a nice in depth tutorial for creating a custom character from start to finish.  They start out with a base character (plain, nude, genderless) and turn it into their own creation.  Very well written and very fun to follow.&lt;/p&gt;

&lt;h4&gt;8. City Creator&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://www.citycreator.com/images/pages/home_card_1.gif&quot; alt=&quot;City Creator&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.citycreator.com/&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The City creator is not so much a tutorial as it is a resource for creating gorgeous pixel cities.  It has a nice interface and a &lt;strong&gt;huge&lt;/strong&gt; selection of buildings, objects, roads, signs, and trees to go into your city.  I am not sure what their license is on the generated cities, however I didn't see any clause about not reusing the graphics in your own projects.&lt;/p&gt;

&lt;h4&gt;9. Has Graphics&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://hasgraphics.com/thumbs/genetica-texture-pack-10-mystery-forest.png&quot; alt=&quot;Pixel level&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://hasgraphics.com/&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Has graphics provides tons of free game graphics mostly geared towards tiled games.  So, if you are hacking an old school RPG or platformer, I would definitely check out this site.&lt;/p&gt;

&lt;h4&gt;10. VX Resource Planet&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://vxresource.files.wordpress.com/2010/07/remakertp01.png?w=384&amp;amp;h=384&quot; alt=&quot;Pixel characters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://vxresource.wordpress.com/&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the &lt;strong&gt;Motherload&lt;/strong&gt;.  I have saved the best for last.  This a wordpress blog that contains TONS of free pixel art and tilesets for use in your games.  They have endless spritesheets and beautiful tiles that would enable anyone to have a very professional looking game.  If you visit one site from this list, visit this one.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;If you have any resources of your own, please paste them in the comments. My readers and myself would be very interested in them.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	    	<item>
		        <title>Cocos2D Tutorial - Dynamically Coloring Sprites</title>
		        <link>http://brandontreb.com/Cocos2D-Tutorial-Dynamically-Coloring-Sprites/</link>
		        <pubDate>2011-07-30T16:05:00-07:00</pubDate>
		        <guid>http://brandontreb.com/Cocos2D-Tutorial-Dynamically-Coloring-Sprites/</guid>
		        <description>&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/42231G3d1P3d1b3H2Q2g/Screen%20shot%202011-07-30%20at%204.39.28%20PM.png&quot; alt=&quot;Custom Bitizens&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Have you ever seen a game (such as Tiny Tower) that contains similar sprites that only vary by certain attributes (coloring, shading, accessories, etc...)?  I would often wonder how long it would take the artists to create each permutation of these sprites.  After discovering that you can call a method on a CCSprite called setColor, I realized how most of this customization is done in code.&lt;/p&gt;

&lt;p&gt;This tutorial will be a continuation of my last post about &lt;a href=&quot;http://brandontreb.com/Pixel-Art-Character-Tutorial-Create-A-Bitizen&quot;&gt;creating your own Bitizen in Photoshop&lt;/a&gt;.  So, if you don't already have a Bitizen character to work with, I suggest you follow that tutorial OR download my template &lt;a href=&quot;http://cl.ly/2u3h0g2F2H2b1S280519/bitizen.psd&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;White Out&lt;/h4&gt;

&lt;p&gt;As I mentioned above, we are going to be using the setColor method of CCSprite to dynamically color each part of our Bitizen.  The way it works is each pixel's color is multiplied by the value passed into setColor giving it a &quot;tint&quot;.  So, pixels that are all white will be fully tinted and pixels that are all black will have no change.&lt;/p&gt;

&lt;p&gt;So, our first goal is to create an &quot;all white&quot; version of our Bitizen.  Don't worry about shading for now, I will cover that in a moment.  I just started with our Bitizen as a base and created new layers for each of the &quot;white&quot; components.&lt;/p&gt;

&lt;p&gt;You should end up with 5 new layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;white-head&lt;/li&gt;
&lt;li&gt;white-skin&lt;/li&gt;
&lt;li&gt;white-hair&lt;/li&gt;
&lt;li&gt;white-pants&lt;/li&gt;
&lt;li&gt;white-shoes&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For each layer, trace over the corresponding colored layer.  For the &quot;white-skin&quot; layer, make sure to trace over the hands as well as the face.  This will ensure that your Bitizen's color is consistent.  When you are done, your Bitizen should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/0Z08222Z1v233i1G3H1o/Screen%20shot%202011-07-30%20at%204.52.03%20PM.png&quot; alt=&quot;White Bitizen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Looks pretty bland... The next step is to add our shading.  We will be using only black with varying alpha in order to achieve the desired shading.  So, make sure to play with it a bit and get the shading to your liking. Add a new shading layer for each component (or simply draw on top of the current layer with the black pencil).&lt;/p&gt;

&lt;p&gt;Your bitizen should look something like this after doing all of the shading:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3f2P3F1b2Z1y1W0W2V3V/Screen%20shot%202011-07-30%20at%203.47.09%20PM.png&quot; alt=&quot;Shaded Bitzen&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Chop It Up&lt;/h4&gt;

&lt;p&gt;The final thing we need to do with our graphic is chop up the pieces so that they can be individually colored.  Convert each of the white-* layers to Smart Objects, copy them to a new document, and save them.  You should end up with 5 .png files (head.png,skin.png,hair.png,pants.png,shoes.png).&lt;/p&gt;

&lt;p&gt;I increased the size of my Bitizen by 4 before doing this step.  You might consider increasing their size as well.  Remember that the size increase you choose will change some of the values when we recreate the Bitizen in Cocos2D.  So, if you want to follow along, make sure your Bitizen is 60x100 before exporting the various parts.&lt;/p&gt;

&lt;p&gt;One thing to note is we are going to bring these into Cocos2D as 5 different sprites.  There are some optimizations that you could do using sprite sheets, however I want to make things as clear as possible.  So, we are going the long way.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://cl.ly/1I102a1F2L323C1R2Y2h&quot;&gt;You can download my completed white bitizen here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Rebuilding The Bitizen In Cocos2D&lt;/h4&gt;

&lt;p&gt;Once you have imported the 5 Bitizen image files into Cocos2D, you need to reconstruct them in code.  This involves adding each sprite to the layer.&lt;/p&gt;

&lt;p&gt;Here is the code to display the skin/head+hands in our layer.  As a note, I simply created a new Cocos2D project and am using the retina only mode for my display using [director enableRetinaDisplay:YES].  The offsets will change quite a bit if you are choosing to support non-retina.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;objc&quot;&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;240&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;160&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;skin.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This will draw our white(shaded) head on the screen.  That's pretty boring so let's draw the rest of the body.  Update your code to look like the following:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;objc&quot;&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;240&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;160&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;skin.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hairOffset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hair&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;hair.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hair&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hairOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hair&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shirtYOffset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shirtXOffset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirt&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;shirt.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirt&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shirtXOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirtYOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pantsYOffset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pantsXOffset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pants&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;pants.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pants&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pantsXOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pantsYOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pants&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shoesYOffset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shoesXOffset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shoes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;shoes.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shoes&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shoesXOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shoesYOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shoes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Now, you should see the lonely ghost of a Bitizen standing in the center of your screen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/090s2v0F1B3d3k3v3V1R/Screen%20shot%202011-07-30%20at%205.10.34%20PM.png&quot; alt=&quot;Ghost Bitizen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Still boring... Time to spice him up with some color.&lt;/p&gt;

&lt;h4&gt;Tinting Cocos2D Sprites&lt;/h4&gt;

&lt;p&gt;As I mentioned before, tinting Cocos2D sprites is very simple. I would recommend keeping all sprites that you wish to tint a shade of white/gray otherwise some crazy things will happen.&lt;/p&gt;

&lt;p&gt;The setColor method takes an array of integers from 0-255.  This array contains 3 numbers (1st for red, 2nd for green, 3rd for blue). For example, we can pass all &lt;font color=&quot;red&quot;&gt;Red&lt;/font&gt; to the setColor method by sending it {255,0,0}.&lt;/p&gt;

&lt;p&gt;Let's start by tinting our Bitizen's shirt a random color.  Change the code that displays the shirt to look like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;objc&quot;&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirt&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;shirt.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirt&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shirtXOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirtYOffset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ccColor3B&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shirtColor&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;arc4random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;arc4random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;arc4random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirt&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setColor:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirtColor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shirt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Now, every time you run the application, the Bitizen should have a different shirt color.  You can apply this principle to each of your sprites to completely customize your Bitizen.&lt;/p&gt;

&lt;p&gt;What if you only want to limit certain colors? (you ask).  Well, that's a great question. I solved this by creating an array of ccColor3Bs.  Basically an array of arrays.  And then I index into this array and set the color accordingly.  Here is an example of setting a random skin color to avoid having blue people (unless maybe you are making Smurfs).&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;objc&quot;&gt;&lt;span class=&quot;n&quot;&gt;ccColor3B&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;skinColors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;247&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;224&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;194&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;232&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;214&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;136&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;119&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;82&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;245&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;232&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;205&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;144&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;110&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;38&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CCSprite&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;spriteWithFile:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;skin.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setPosition:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ccp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;spriteX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spriteY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)];&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ccColor3B&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;skinColor&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;skinColors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;arc4random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;setColor:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skinColor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;addChild:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;skin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;I have an array of 5 different arrays and randomly index into it using skinColors[arc4random() % 5].  This will give me a random color within my skin color group.&lt;/p&gt;

&lt;p&gt;After running this through a loop and adding random colors to some of the other sprites, I ended up creating the image you see at the top of this post.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;I hope that this tutorial has found you well and I have demystified the magic that is dynamic sprites.  You may download the source code for this tutorial (include the code to generate the screenshot above) &lt;a href=&quot;http://cl.ly/3h3R2D1p2w2y2X3t0R32&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have any questions or comments, please feel free to leave them in the comments section of this post.  Also, make sure you &lt;a href=&quot;http://feeds.feedburner.com/brandontreb&quot;&gt;subscribe to my RSS feed&lt;/a&gt; for more great tutorials!&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	    	<item>
		        <title>Pixel Art Character Tutorial - Creating And Customizing A Bitizen</title>
		        <link>http://brandontreb.com/Pixel-Art-Character-Tutorial-Create-A-Bitizen/</link>
		        <pubDate>2011-07-16T13:05:00-07:00</pubDate>
		        <guid>http://brandontreb.com/Pixel-Art-Character-Tutorial-Create-A-Bitizen/</guid>
		        <description>&lt;center&gt;&lt;img src=&quot;http://f.cl.ly/items/1R171P3K050O2m1H210C/Toy-Story-brandontreb.com.png&quot;&gt;&lt;/center&gt;




&lt;br /&gt;


&lt;p&gt;This will be a continuation of my last pixel art tutorial about &lt;a href=&quot;http://brandontreb.com/Configuring-Photoshop-For-Pixel-Art&quot;&gt;configuring Photoshop for Pixel Art&lt;/a&gt;.  For the past month or so, both my wife an I have been pretty addicted to this amazing game called &lt;a href=&quot;http://itunes.apple.com/us/app/tiny-tower/id422667065?mt=8&quot;&gt;Tiny Tower&lt;/a&gt; created by &lt;a href=&quot;http://nimblebit.com/&quot;&gt;Nimble Bits&lt;/a&gt;.  The biggest draw for me to this game isn't the fact that it has great simulation style game mechanics, it's the fact that it was created using &lt;strong&gt;Pixel Art&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As I mentioned in my other post, I have a serious passion for pixel art and have been doing everything I can to learn about it and improve my skills.  One great thing about it is, &lt;strong&gt;anyone can do it&lt;/strong&gt;.  You don't have to be this amazing artist to be able to create interesting pixel art.&lt;/p&gt;

&lt;h4&gt;Getting Started&lt;/h4&gt;

&lt;p&gt;They say that imitation is the best form of flattery, so we are going to flatter the heck out of the Nimble Bits guys are learn how to make our own Bitizen characters from Tiny Tower.  I have found that a good starting place for learning pixel art (or anything really), is to start with something that already exists, copy it, then modify it.  Once you do that a few times and get comfortable, then you should have the confidence to branch out into creating your own artwork.&lt;/p&gt;

&lt;p&gt;When creating a game (or complex piece of pixel artwork) that involves a ton of different characters, it will save a ton of time and energy if you create a &quot;base character&quot;.  What I mean by &quot;base character&quot; is one that is very bland and plain.  Something that is easily customizable.  So, that's what this tutorial is about, we are going to create a bland white guy for Tiny Tower.&lt;/p&gt;

&lt;p&gt;One thing I want to point out before we start is, I have lowered the resolution of the character a bit and am not putting in as much detail as the Nimble Bits team.  This is just for simplicity's sake in order to get my point across and make things easier on you.&lt;/p&gt;

&lt;h4&gt;New Document&lt;/h4&gt;

&lt;p&gt;Start out by creating a 15x25px document.  I know, it's very small, but we don't need much.  Make sure you have Photoshop &lt;a href=&quot;http://brandontreb.com/Configuring-Photoshop-For-Pixel-Art&quot;&gt;configured&lt;/a&gt; for pixel art.  At this point, I'd suggest creating all of the layers for your bitizen.  &lt;strong&gt;Why use layers?&lt;/strong&gt; you might ask.  Great question.  Well, in order to quickly modify our base character, we want to have a separate layer for each of his features/body parts.  So, create the following layers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Head&lt;/li&gt;
&lt;li&gt;Mouth&lt;/li&gt;
&lt;li&gt;Hair&lt;/li&gt;
&lt;li&gt;Eyes&lt;/li&gt;
&lt;li&gt;Shirt&lt;/li&gt;
&lt;li&gt;Pants&lt;/li&gt;
&lt;li&gt;Feet&lt;/li&gt;
&lt;li&gt;Arms&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Now, you can confidently modify any part of your Bitizen without the risk of destroying the rest.  As I reference each part below, make sure you switch to the correct layer when drawing.&lt;/p&gt;

&lt;h4&gt;Creating The Head&lt;/h4&gt;

&lt;p&gt;The head is perhaps the most complicated part of the Bitizen due to its odd shape and shading.  The shape is due to the fact that the Bitizen is always looking in the forward direction.&lt;/p&gt;

&lt;p&gt;Start with a skin tone color (I have used #f7e0c2) and create a 10 x 6 rectangle in the center of your view like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/211O2O1P37131Q2m2Z2P/Screen%20shot%202011-07-16%20at%201.22.24%20PM.png&quot; alt=&quot;Bitizen head&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now, that the base head is in place, it's time to draw the chin and neck.  With the same color, indent one pixel in on the bottom and draw straight across.  Finally, indent 3 more pixels in, and draw 4 pixels across.  This is what your head should look like at this point.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/401p2x3t1d1B2n2A1W0Y/Screen%20shot%202011-07-16%20at%201.25.11%20PM.png&quot; alt=&quot;Head and Chin&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shading&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shading with pixel art is simply a matter of drawing with a darker shade of your main color.  With the color chooser in PS and the skin tone still selected, drag the color down to a slightly darker shade and lowlight a 1 pixel line on the right side of the face.  In our example the Bitizen is looking to his right, so his left will be shaded.&lt;/p&gt;

&lt;p&gt;Then, add some more shading as you see necessary.  If you look at mine, I have used a bit of shading to extend the head a little bit.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3y3z2Z1n3f0d3T1h3Q46/Screen%20shot%202011-07-16%20at%201.31.16%20PM.png&quot; alt=&quot;Head Shading&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hair, Mouth And Eyes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The mouth and eyes are very simple with our Bitizens.  The eyes are just single black pixels and the mouth is just a 4 pixel line using a darker shade of the skin tone.&lt;/p&gt;

&lt;p&gt;Hair can be whatever you like.  I have chosen a very simple hairstyle that you see quite often in the game with a simple shade of brown.  I have also applied the same shading technique to the hair that I did to the face and neck.  When you are finished, it should really start looking like a person.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/2n181w081O20042v3U0g/Screen%20shot%202011-07-16%20at%201.35.22%20PM.png&quot; alt=&quot;Hair and eyes&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Creating The Body, Legs and Feet&lt;/h4&gt;

&lt;p&gt;For the body, start with 6 x 5 rectangle set to the color that you want to make the shirt. I chose #63cfea.  For the pants, simply draw a solid line.   Finally, the feet are just two 2px lines spread apart by two more pixels.  If you notice in the game, to animate the movement of these guys, they simply alternate between this position and a centered 4px line.  It just goes to show you how much things can be simplified when you use pixel art.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3B203J0j2R3T0p0s3r39/Screen%20shot%202011-07-16%20at%201.43.55%20PM.png&quot; alt=&quot;Body and legs&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To finish up our Bitizen, we add single pixel dots for hands and a couple pixels for arms.  After that, we add a collar and some simple shading.&lt;/p&gt;

&lt;p&gt;Here is what the completed Bitizen looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/0M1F0I0O0F3q3E2n3w0I/Screen%20shot%202011-07-16%20at%201.51.49%20PM.png&quot; alt=&quot;Completed Bitizen&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;The one thing to remember when creating pixel art for game is to keep it simple.  Simplify everything.  Take for example the Toy Story characters I made at the top of this post.  They are &lt;em&gt;very&lt;/em&gt; simplistic yet you recognize who they are right away.  My 2.5 year old son was yelling &quot;Woody! Buzz!&quot; the entire time I was creating them.  I think this is one of the largest challenges; sticking to &quot;less is more&quot;.&lt;/p&gt;

&lt;p&gt;There are some other fun things we can do to customize these guys.  We can even do it in code!  Next time, I will show you how to take a &quot;base character&quot; and customize its colors using Cocos 2D.  This can save you even more time and energy when trying to make dynamic characters for your game.&lt;/p&gt;

&lt;p&gt;If you are feeling lazy and want to simply download my bitizen base, click the following link:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://cl.ly/2u3h0g2F2H2b1S280519/bitizen.psd&quot;&gt;Download my bitizen.psd template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On a final note, &lt;strong&gt;don't just copy these guys for YOUR game&lt;/strong&gt;!   I know it might seem tempting to give em a different shirt and plop them in your super rad fart machine RPG, but these guys are the product of the hard work of the guys at Nimble Bits.&lt;/p&gt;

&lt;p&gt;If you have any questions or tips, please feel free to leave them in the comments.&lt;/p&gt;

&lt;p&gt;I would also &lt;strong&gt;LOVE&lt;/strong&gt; to see some of the custom bitizens you guys come up with. Please link to them in the comments if you end up creating some.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	    	<item>
		        <title>Configuring Photoshop For Pixel Art</title>
		        <link>http://brandontreb.com/Configuring-Photoshop-For-Pixel-Art/</link>
		        <pubDate>2011-07-02T07:00:00-07:00</pubDate>
		        <guid>http://brandontreb.com/Configuring-Photoshop-For-Pixel-Art/</guid>
		        <description>&lt;p&gt;First things first.  My wife and I had welcomed a new baby boy into the world on Monday so you guys are going to have to see the obligatory &quot;dad&quot; pics.&lt;/p&gt;

&lt;p&gt;Here they are&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://images.instagram.com/media/2011/06/30/a63ad6fab0dc4839a604e885a8a85f50_7.jpg&quot; alt=&quot;Jack&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://images.instagram.com/media/2011/07/01/e77e30a4d504437ba75df8a7129f7d9d_7.jpg&quot; alt=&quot;Jack&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ok, now that's past us, let's chat about pixel art.  I have always been a HUGE fan of pixel art both in games and as a form of art.  As an aspiring game developer (games coming soon ;) ), I found pixel art a great fit for me.  Not only is is aesthetically pleasing, it also allows developers to create &quot;better&quot; art than developer art.  All it takes is a little patience.&lt;/p&gt;

&lt;p&gt;Today, I'm going to share with you how I have configured Photoshop to create some pixel art and eventually show you how to make your own Bitizens from &lt;a href=&quot;http://itunes.apple.com/us/app/tiny-tower/id422667065?mt=8&quot;&gt;Tiny Tower&lt;/a&gt; in a follow up post.&lt;/p&gt;

&lt;p&gt;Some of you might argue that Photoshop is not the way to go and that there are &lt;em&gt;better&lt;/em&gt; tools for Pixel art.  I have tried quite a few and keep coming back to PS because of some of it's great features (shapes, layering, masks, gradients, noise filters, etc...).  We can use a lot of these tools to our advantage when creating pixel art, PS just needs to be set up correctly.&lt;/p&gt;

&lt;p&gt;Just a heads up before I start, I'm using Adobe Photoshop CS3 for Mac.&lt;/p&gt;

&lt;h4&gt;Change The Way Photoshop Scales Images&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;/img/post_images/2011/07/bitizens-compare.png&quot;&gt;&lt;/p&gt;

&lt;p&gt;First, we need to change the way PS scales images.  This is useful for when you are ready to export your sprites for production.  By default, PS uses a Bicubic algorithm when you want to enlarge an image.  This generally produces a very blurry effect.  It's quite useful in many cases, but terrible for pixel art.  Here, we need to tell PS to use a &quot;Nearest Neighbor&quot; scaling algorithm.  This will preserver all of our edges without PS mucking with the blending.&lt;/p&gt;

&lt;p&gt;To change this setting, navigate to &lt;strong&gt;Photoshop-&gt;Preferences-&gt;General&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/023E3D060e2T420f013j/Screen%20shot%202011-07-02%20at%2010.34.22%20AM.png&quot; alt=&quot;Nearest Neighbor&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The only setting you need to modify is &quot;Image Interpolation&quot;.  Make sure to change it to &quot;Nearest Neighbor&quot;.&lt;/p&gt;

&lt;h4&gt;Enabling A Grid&lt;/h4&gt;

&lt;p&gt;When creating pixel art, it is very useful to have a grid in place in order to determine where to place your next pixel.  Without it, you are just blindly placing them.  To turn on and configure a grid in PS, navigate to &lt;strong&gt;Photoshop-&gt;Preferences-&gt;Guides, Grid, Slices &amp;amp; Count...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3c1g0r1g1n3S020z3G1K/Screen%20shot%202011-07-02%20at%2010.42.00%20AM.png&quot; alt=&quot;1px gridlines&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Make sure to set &lt;strong&gt;Gridline every&lt;/strong&gt; to 1 and &lt;strong&gt;Subdivisions&lt;/strong&gt; to 1.  This will create a 1px grid on for you to use as a guide.&lt;/p&gt;

&lt;p&gt;Once you have configured the grid, click on &lt;strong&gt;View-&gt;Show-&gt;Grid&lt;/strong&gt; to display it.  You might have to do this for every document.&lt;/p&gt;

&lt;h4&gt;Configuring the Pencil Tool&lt;/h4&gt;

&lt;p&gt;When creating pixel art in PS, the pencil tool is your best friend.  You will use it ~95% of the time when drawing.  We need to make sure that the pencil draws single pixel dots without any interpolation.  With the pencil tool selected, click the dropdown next to &lt;strong&gt;brush&lt;/strong&gt;, tap the &lt;strong&gt;arrow&lt;/strong&gt; and then select &lt;strong&gt;basic brushes&lt;/strong&gt;.  When prompted to replace current brushes, click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3G3M3s0M0O2H3J332x0M/Screen%20shot%202011-07-02%20at%2010.57.03%20AM.png&quot; alt=&quot;Basic Brushes&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Next, select the 1 px brush (it should be in the top left). Most of the time, you will want to draw with single pixels.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3L132f1e2y2z0Y291e0i/Screen%20shot%202011-07-02%20at%2010.53.40%20AM.png&quot; alt=&quot;1 px brush&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Creating A New Document&lt;/h4&gt;

&lt;p&gt;Deciding on a document size can be tricky.  You generally want to create your document as small as possible to avoid having to do more work than you need.  The size depends on how &quot;pixellated&quot; you want your art to look after scaling.  Basically, using the scaling we chose above (nearest neighbor), the &quot;pixels&quot; will just increase in size.&lt;/p&gt;

&lt;p&gt;Here is a blown up view of our 15x25 image that we will use in the next tutorial to create a Bitizen from Tiny Tower.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/110e2542012Y3I3Y2L1i/Screen%20shot%202011-07-02%20at%2012.31.54%20PM.png&quot; alt=&quot;New Document&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Since the zoom level isn't too high, we are seeing grid slices every 2 pixels rather than 1.  As you zoom, you will see the grid size increasing.&lt;/p&gt;

&lt;h4&gt;Multiple Zoom Levels In View&lt;/h4&gt;

&lt;p&gt;One cool trick with PS is, it allows you to have multiple windows of the same document open.  The reason this is handy is you can see various zoom levels for your artwork all at once.  While drawing each pixel zoomed in, you can see the result in the desired resolution.  This helps out dramatically when you are trying to fine tune your work.&lt;/p&gt;

&lt;p&gt;To do this, go to &lt;strong&gt;Window-&gt;Arrange-&gt;New Window for [projectname.psd]&lt;/strong&gt;  Now you can control the zoom level of each window individually.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/0o2A0E3h0K470v02273G/Screen%20shot%202011-07-02%20at%2012.39.07%20PM.png&quot; width=&quot;450&quot;&gt;&lt;/p&gt;

&lt;p&gt;In the next post, I will go over how to make these Bitizens as well as some tips for customization as an example for creating dynamic characters.  We will also go over some of the basic techniques that were used.&lt;/p&gt;

&lt;p&gt;If you have any comments, questions, or Photoshop Pixel Art Tips, please feel free to post them in the comments.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	    	<item>
		        <title>Announcing iOS 4 In Action + Free Chapter!</title>
		        <link>http://brandontreb.com/Announcing-iOS4-In-Action/</link>
		        <pubDate>2011-06-18T07:00:00-07:00</pubDate>
		        <guid>http://brandontreb.com/Announcing-iOS4-In-Action/</guid>
		        <description>&lt;p&gt;&lt;img src=&quot;http://www.manning.com/jharrington/jharrington_cover150.jpg&quot; class=&quot;size-full wp-image-1387 alignleft&quot;&gt;&lt;/p&gt;

&lt;p&gt;Wow, I can't believe it has been over a year since the release of my book &lt;a href=&quot;http://manning.com/trebitowski/&quot;&gt;iPhone And iPad In Action&lt;/a&gt;.  Since then, we have sold over 6,000 copies and have just have released in numerous languages!&lt;/p&gt;

&lt;p&gt;As with all iOS (tech books really), my book was almost outdated the moment it hit the shelves due to Apple's constant SDK release cycle.  My book ended with &quot;here is what's coming in iOS 4…&quot;, and didn't hit the shelves until after iOS 4 was released.&lt;/p&gt;

&lt;p&gt;I was asked last year by &lt;a href=&quot;http://manning.com&quot;&gt;Manning Publishing&lt;/a&gt; to write the 3rd version of the book to include all of the 4.0 SDK changes.  Due to some huge changes in my life, I was unable to accept and they had to find the 4th author to work on the book.&lt;/p&gt;

&lt;p&gt;Earlier this month, &lt;a href=&quot;http://www.manning.com/jharrington/&quot;&gt;Jocelyn Harrington&lt;/a&gt; released the 3rd version of the book titled &quot;iOS 4 In Action&quot;.  Here is a bit about this version from their site.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Written for Xcode 4, iOS 4 in Action guides you from setting up your development environment,
through coding your first app, all the way to selling in the App Store. Work through sample
applications including a chat client, a video game, an interactive map, background audio,
and more as you explore the iOS 4 SDK.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Here are some highlights about what's inside.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full coverage of iOS SDK 4.3&lt;/li&gt;
&lt;li&gt;Mastering Xcode 4&lt;/li&gt;
&lt;li&gt;Multitasking for iPhone and iPad&lt;/li&gt;
&lt;li&gt;Game Center, iAd, and AirPrint&lt;/li&gt;
&lt;li&gt;Local and push notification&lt;/li&gt;
&lt;li&gt;Implementing in-app purchasing&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This is a significant update and I'm really excited to get my copies in the mail.  As soon as I do so, I'll do a couple giveaways on my blog.  Make sure you stick around or &lt;a href=&quot;http://feeds.feedburner.com/brandontreb&quot;&gt;subscribe to the RSS feed&lt;/a&gt; so you don't miss it!&lt;/p&gt;

&lt;h4&gt;Freebie&lt;/h4&gt;

&lt;p&gt;Manning is allowing anyone to download the full &lt;a href=&quot;http://www.manning.com/jharrington/iOS4iASample-ch21.pdf&quot;&gt;Chapter 21&lt;/a&gt; on multitasking now for free!  &lt;a href=&quot;http://www.manning.com/jharrington/iOS4iASample-ch21.pdf&quot;&gt;Go grab your copy&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-family: 'Lucida Grande';&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;em&gt;﻿﻿This post is part of &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;iDevBlogADay&lt;/a&gt;, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://idevblogaday.com/&quot;&gt;web site&lt;/a&gt;, &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://feeds.feedburner.com/idevblogaday&quot;&gt;RSS feed&lt;/a&gt;, or &lt;a style=&quot;text-decoration: none; color: #004199; padding: 0px; margin: 0px;&quot; href=&quot;http://twitter.com/#search?q=%23idevblogaday&quot;&gt;Twitter&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<category>iDevBlogADay</category>
		    </item>
	    
	</channel>
</rss>
