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

<channel>
	<title>Chomer.com - The Website of Orville Chomer</title>
	<atom:link href="http://chomer.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://chomer.com</link>
	<description>The Website of Orville Chomer</description>
	<lastBuildDate>Mon, 05 Dec 2011 23:23:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Doing Math in Objective C</title>
		<link>http://chomer.com/2011/01/21/doing-math-in-objective-c/</link>
		<comments>http://chomer.com/2011/01/21/doing-math-in-objective-c/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 15:07:44 +0000</pubDate>
		<dc:creator>Orville Chomer</dc:creator>
				<category><![CDATA[Math]]></category>
		<category><![CDATA[Objective C]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=951</guid>
		<description><![CDATA[One thing you will find you need to do in any programming language is do math. Here are some useful math functions for the Objective C language. I give a little bit of a comparison to Visual Basic for those who know that language. They are provided in no special order: fabs() &#8211; Gets the [...]]]></description>
			<content:encoded><![CDATA[<p><embed src="http://www.cinchcast.com/cinchplayerext.swf" flashvars="file=http:%2f%2fwww.cinchcast.com%2fCinchPlaylist.aspx%3FRecordingID%3D160155&#038;playermode=text&amp;autostart=false&amp;bufferlength=5&amp;volume=80&amp;callback=http://www.cinchcast.com/FlashPlayerCallback.aspx&#038;width=300&#038;height=200&#038;volume=80&#038;corner=rounded" menu="false" wmode="transparent" quality="high" name="160155" id="160155" width="300" height="200" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" allowScriptAccess="always"></embed><br />
One thing you will find you need to do in any programming language is do math. Here are some useful math functions for the Objective C language. I give a little bit of a comparison to Visual Basic for those who know that language. They are provided in no special order:</p>
<ul>
<li><strong>fabs()</strong> &#8211; Gets the absolute value of the value in parentheses. Works like ABS() function in Visual Basic. fabs(-123) = 123, fabs(34) = 34.</li>
<li><strong>ceil()</strong> &#8211; Find the ceiling integer. Kind of like rounding up. Same as INT(x+1) in Visual Basic.  ceil(3.1) = 4.</li>
<li><strong>floor()</strong> &#8211; Find the floor integer. Kind of like rounding down. Same as INT(x) in Visual Basic. floor(3.6) = 3.</li>
<li><strong>exp()</strong> &#8211; Find the exponential value.</li>
<li><strong>pow()</strong> &#8211; Raise a number to the power. pow(3,6) = 3^6 in Visual Basic.</li>
<li><strong>rand()</strong> &#8211; Generate a pseudo random number. Function is RND(x) in Visual Basic. A good discussion on random numbers in Objective C can be found <a href="http://stackoverflow.com/questions/160890/generating-random-numbers-in-objective-c" target="_blank">here</a>.</li>
<li><strong>srandom()</strong> &#8211; Generate a seed for the random number generator. This is done with the Randomize statement in Visual Basic.</li>
<li><strong>sqrt()</strong> &#8211; Find out the square root of a number. sqrt(x) = x^(1/2) in Visual Basic.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2011/01/21/doing-math-in-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: RibbonX &#8211; Customizing the Office 2007 Ribbon</title>
		<link>http://chomer.com/2011/01/07/book-review-ribbonx-customizing-the-office-2007-ribbon/</link>
		<comments>http://chomer.com/2011/01/07/book-review-ribbonx-customizing-the-office-2007-ribbon/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 23:41:27 +0000</pubDate>
		<dc:creator>Orville Chomer</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[RibbonX]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=422</guid>
		<description><![CDATA[My Book Rating: 5 of 5 stars: &#160;&#160;&#160;&#160;&#160; Power Users and Developers: Making customized Apps Using Microsoft Office Those of us who have the responsibility of producing customized Excel workbooks, and Word documents that essentially have become small powerful applications in their own right are always looking for ways to make the tools we build [...]]]></description>
			<content:encoded><![CDATA[<p><em>My Book Rating: 5 of 5 stars: </em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img class="alignleft size-full wp-image-914" title="5of5stars" src="http://chomer.com/wp-content/5of5stars.png" alt="" width="90" height="19" /></p>
<p><object id="151913" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="300" height="200" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="151913" /><param name="flashvars" value="file=http:%2f%2fwww.cinchcast.com%2fCinchPlaylist.aspx%3FRecordingID%3D151913&amp;playermode=text&amp;autostart=false&amp;bufferlength=5&amp;volume=80&amp;callback=http://www.cinchcast.com/FlashPlayerCallback.aspx&amp;width=300&amp;height=200&amp;volume=80&amp;corner=rounded" /><param name="src" value="http://www.cinchcast.com/cinchplayerext.swf" /><param name="wmode" value="transparent" /><param name="quality" value="high" /><embed id="151913" type="application/x-shockwave-flash" width="300" height="200" src="http://www.cinchcast.com/cinchplayerext.swf" quality="high" wmode="transparent" flashvars="file=http:%2f%2fwww.cinchcast.com%2fCinchPlaylist.aspx%3FRecordingID%3D151913&amp;playermode=text&amp;autostart=false&amp;bufferlength=5&amp;volume=80&amp;callback=http://www.cinchcast.com/FlashPlayerCallback.aspx&amp;width=300&amp;height=200&amp;volume=80&amp;corner=rounded" name="151913"></embed></object><br />
<strong>Power Users and Developers: Making customized Apps Using Microsoft Office</strong><br />
Those of us who have the responsibility of producing customized Excel workbooks, and Word documents that essentially have become small powerful applications in their own right are always looking for ways to make the tools we build in these Microsoft Office products more powerful, easy to use, and more like actual stand-alone apps. One of the ways I looked at enhancing the &#8220;tools&#8221; I created was by adding a tool bar to an Excel workbook for example. I first did this myself in Excel 2003. It was tedious but doable. One draw-back in the way tool bars were done back then is that the changes applied to the whole app (Excel or Word), and one screw-up on your part could truly clobber Excel or Word&#8217;s tool bars and menus system wide.</p>
<p><a href="http://chomer.com/wp-content/excelRibbon.png"></a><a href="http://chomer.com/wp-content/excelRibbon1.png"><img class="aligncenter size-full wp-image-925" title="excelRibbon" src="http://chomer.com/wp-content/excelRibbon1.png" alt="" width="661" height="140" /></a></p>
<p><strong>A New Way of Doing Tool Bars in Office 2007</strong><br />
In Office 2007, Microsoft changed how their user interface worked. And they changed the scope of the changes. If you were going to screw something up for your tool bars now it would only be with one document file, not the entire system. Customizing this tool bar was more flexible. You could do much more with the new tool bar than the old version (the new tool bar Microsoft calls a <em>ribbon</em>). The Technology behind the ribbon they call <em>RibbonX</em>.<span id="more-422"></span></p>
<p><strong>Drawbacks &amp; Limitations</strong><br />
The the main draw-back to the new system was that <em>you cannot modify existing tool bars or create new tool bars purely using VBA code </em>(once the toolbar was created though you could write VBA code to modify it and response to events from it such as mouse clicks). You need to know a dialect of XML created by Microsoft for defining these ribbon tool bars, and you needed to know the steps for embedding or updating this XML inside the document file. You could do it manually (in which case you are almost sure to miss something and screw it up), or you could use a tool called the <em>Custom UI Editor for Microsoft Office</em> to do your toolbar design in. This tool isn&#8217;t real great but it beats manually editing by a long shot!</p>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td><a title="buy this book on amazon" href="http://www.amazon.com/gp/product/0470191112?ie=UTF8&amp;tag=chomercom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0470191112" target="amazon"><img class="alignleft size-full wp-image-891" src="http://chomer.com/wp-content/robbonxBookCover.jpg" alt="" width="305" height="305" /></a></td>
<td><strong>The Book I Use to Answer My RibbonX Questions</strong><br />
If you want to create your own customized tool bar ribbons in Office, you can find some information out on the web on how to do this, but by far the best source of information that I have found is the book: <em>RibbonX &#8211; Customizing the Office 2007 Ribbon</em>, which is by Robert Martin, Ken Puls, and Teresa Henning.</p>
<p>It covers how the technology has changed for tool bars from Office 2003 to the present day, goes into the strengths and weaknesses of the old and new ways of doing this, and then proceeds to dive into the task of showing you how to create your own custom Ribbons or modifying the built in ones. Most of the work that you will do is editing XML files. It then shows you how to write VBA code  that can show/hide enable/disable ribbon tabs and/or ribbon controls, update label contents on ribbons, and respond to user input (such as a user clicking a button).</td>
</tr>
</tbody>
</table>
<p><strong>The Intro to VBA is Great!</strong><br />
Chapter 4 is a whole chapter on VBA in general (not just one using it to handle a ribbon). This is some of the most clearly written text I have ever read on the subject. In my opinion it is better than the content of some books which are solely supposed to be about VBA! So, even if you don&#8217;t plan to spend a lot of time creating tool bars for your Excel or Word documents, buying the book for this chapter (and the other chapter on advanced VBA) alone is worth it.</p>
<p><strong>Finally, it is a Reference Book</strong><br />
Microsoft has different XML tags and attributes for creating ribbon tabs and all the various controls on the ribbons. At the back of the book are tables of all these items. Some of the attributes take one of many pre-defined constants that Microsoft has provided. The book contains tables of all these values too.</p>
<hr />
<ul><strong>Chapters in the Book:</strong></p>
<li>Part I &#8211; The Building Blocks for a Successful Customization
<ul>
<li>Chapter 1: An Introduction to the Office User Interface</li>
<li>Chapter 2: Accessing the UI Customization Layer</li>
<li>Chapter 3: Understanding XML</li>
<li>Chapter 4:Introducing Visual Basic for Applications (VBA)</li>
<li>Chapter 5: Callbacks: The Key to Adding Functionality to Your Custom UI</li>
<li>Chapter 6: RibbonX Basic Controls</li>
<li>Chapter 7: comboBox and dropDown Controls</li>
<li>Chapter 8: Custom Pictures and Galleries</li>
<li>Chapter 9: Creating Menus</li>
<li>Chapter 10: Formatting Elements</li>
<li>Chapter 11: Using Controls and Attributes to Help Your Users</li>
</ul>
</li>
<li>Part II &#8211; Advanced Concepts in Ribbon Customization
<ul>
<li>Chapter 12: Advanced VBA Techniques</li>
<li>Chapter 13: Overriding Built-in Controls in the Ribbon</li>
<li>Chapter 14: Customizing the Office Menu and the QAT</li>
<li>Chapter 15: Working with Contextual Controls</li>
<li>Chapter 16: Sharing and Deploying Ribbon Customizations</li>
<li>Chapter 17: Security in Microsoft Office</li>
</ul>
</li>
<li>Appendix A: Tables of RibbonX Tags</li>
<li>Appendix B: Tables of Tab and Group idMso Names</li>
<li>Appendix C: imageMso Reference Guide</li>
<li>Appendix D: Keytips and Accelerator keys</li>
<li>Appendix E: RibbonX Naming Conventions</li>
<li>Where to Find Help</li>
<li>Index</li>
</ul>
<p>The book is <a title="buy on Amazon" href="http://www.amazon.com/gp/product/0470191112?ie=UTF8&amp;tag=chomercom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0470191112" target="amazon"><strong>RibbonX: Customizing the Office 2007 Ribbon</strong></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=chomercom-20&amp;l=as2&amp;o=1&amp;a=0470191112" border="0" alt="" width="1" height="1" /> and at the time I published this post it was $25.06 USD on Amazon (oh and its available on the Kindle too). I give it 5 out of 5 stars. If you do any Office VBA stuff and want to have custom tool bars in your Office documents, I recommend you get this book.</p>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2011/01/07/book-review-ribbonx-customizing-the-office-2007-ribbon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS Christmas Concert: Amazing iBand Musicians Play Three Songs</title>
		<link>http://chomer.com/2010/12/17/ios-christmas-concert-amazing-iband-musicians-play-three-songs/</link>
		<comments>http://chomer.com/2010/12/17/ios-christmas-concert-amazing-iband-musicians-play-three-songs/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 22:43:36 +0000</pubDate>
		<dc:creator>Orville Chomer</dc:creator>
				<category><![CDATA[Christmas]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=765</guid>
		<description><![CDATA[This video is great! A band of talented musicians whose instruments are only iPads and iPhones: I am amazed at how creatively musicians from North Point Community Church use these devices&#8230; picking specific apps for different instruments, and the creativity of the app developers who dreamed them up. Just cool! The musicians needed to practice [...]]]></description>
			<content:encoded><![CDATA[<p>This video is great! A band of talented musicians whose instruments are only iPads and iPhones:<br />
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/F9XNfWNooz4?rel=0&amp;hd=1" frameborder="0"></iframe></p>
<p>I am amazed at how creatively musicians from North Point Community Church use these devices&#8230; picking specific apps for different instruments, and the creativity of the app developers who dreamed them up. Just cool!</p>
<p>The musicians needed to practice a bit more on the middle song, but the first and the last songs were very polished and professional. </p>
<p>Anyways everybody, Merry Christmas!</p>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/12/17/ios-christmas-concert-amazing-iband-musicians-play-three-songs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript: The Good Parts &#8211; A Collection of Lectures By Douglas Crockford on the Javascript Language</title>
		<link>http://chomer.com/2010/12/11/javascript-the-good-parts-a-collection-of-lectures-by-douglas-crockford-on-the-javascript-language/</link>
		<comments>http://chomer.com/2010/12/11/javascript-the-good-parts-a-collection-of-lectures-by-douglas-crockford-on-the-javascript-language/#comments</comments>
		<pubDate>Sun, 12 Dec 2010 04:08:26 +0000</pubDate>
		<dc:creator>Orville Chomer</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=598</guid>
		<description><![CDATA[A few years ago, I am not sure just when or how, I stumbled upon these videos on Yahoo where programming legend Douglas Crockford gave very interesting and insightful lectures on the JavaScript language. It has been a bit tedious to find part X of a lecture and I would think about creating a page [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://chomer.com/wp-content/jsGoodParts.png" width="600" height="232" border="0" /></center></p>
<p>A few years ago, I am not sure just when or how, I stumbled upon these videos on Yahoo where programming legend Douglas Crockford gave very interesting and insightful lectures on the JavaScript language. It has been a bit tedious to find part X of a lecture and I would think about creating a page on the web that embeds all these videos in a way that makes watching them easier to do. To <em>curate</em> this content as Robert Scoble might say. Well after all this time I am doing just that in this post.  I think that if you are a programmer and you use JavaScript in any fashion that this information is really useful. Both to learn new things, as well as for review.<span id="more-598"></span></p>
<p><a name="contents"></a></p>
<p>Doug&#8217;s lectures have been a great help to me to get an intuitive knowledge of JavaScript. Even if no one else goes to this post I will so that I can review his lectures when I please all in one spot. I hope you enjoy them in this &#8220;curation&#8221; (I know that I will)!</p>
<p>FYI: If you are reading this post in a Feedburner email, you probably will not see the videos and have to click the link that takes you to the <a href="http://chomer.com/2010/12/11/javascript-the-good-parts-a-collection-of-lectures-by-douglas-crockford-on-the-javascript-language/">actual post</a> on Chomer.com</p>
<p><b>Table of Contents</b></p>
<ul>
<li><b>Javascript: The Good Parts (0n YUI Theatre) -</b> <a href="#thegoodparts">Watch video</a>   Length: 39:09
<p>&#8220;Yahoo JavaScript architect Douglas Crockford delivered the keynote talk at the 2007 Konfabulator Developer Day and discussed the evolution of JavaScript and of his relationship to the language. Through his description of his own journey with the language, Douglas evokes what he considers to be the &#8220;good stuff&#8221; therein.&#8221; &#8211; Yahoo Video Site<br />&nbsp;</li>
<li><b>Javascript: The Good Parts (On YouTube) &#8211; </b> <a href="#thegoodpartsg">Watch video</a> Length: 1:03:47
<p>Includes a Q&#038;A session at the end of Doug&#8217;s talk.</p>
<p>&#8220;JavaScript is a language with more than its share of bad parts. It went from non-existence to global adoption in an alarmingly short period of time. It never had an interval in the lab when it could be tried out and polished. JavaScript has some extraordinarily good parts. In JavaScript there is a beautiful, highly expressive language that is buried under a steaming pile of good intentions and blunders. The best nature of JavaScript was so effectively hidden that for many years the prevailing opinion of JavaScript was that it was an unsightly, incompetent abomination. This session will expose the goodness in JavaScript, an outstanding dynamic programming language. Within the language is an elegant subset that is vastly superior to the language as a whole, being more reliable, readable and maintainable.&#8221; &#8211; Google Tech Talks<br />&nbsp;</li>
<li><strong>The JavaScript Programming Language &#8211; </strong> <a href="#proglang1">Part 1</a> (30:54), <a href="#proglang2">Part 2</a> (31:06), <a href="#proglang3">Part 3</a> (29:00), <a href="#proglang4">Part 4</a> (19:47)
<p>&#8220;Yahoo! JavaScript Architect Douglas Crockford provides a comprehensive introduction to the JavaScript Programming Language in this four-part video. &#8221; &#8211; Yahoo Video Site&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://yuiblog.com/assets/crockford/javascript.zip" target="slides">Lecture Slides</a><br />&nbsp;</li>
<li><strong>Advanced JavaScript &#8211; </strong> <a href="#advancedjs1">Part 1</a> (30:55), <a href="#advancedjs2">Part 2</a> (25:29), <a href="#advancedjs3">Part 3</a> (10:55)
<p>&#8220;Douglas Crockford teaches &#8216;Advanced JavaScript.&#8217;&#8221; &#8211; Yahoo Video Site   &nbsp;&nbsp;&nbsp;&nbsp;<a href="http://yuiblog.com/assets/crockford/advancedjavascript.zip" target="slides">Lecture Slides</a><br />&nbsp;</li>
<li><strong>Theory of the DOM &#8211; </strong> <a href="#dom1">Part 1</a> (31:11), <a href="#dom2">Part 2</a> (21:25), <a href="#dom3">Part 3</a> (26:24)
<p>&#8220;Douglas Crockford teaches &#8216;An Inconvenient API: The Theory of the Dom.&#8217;&#8221; &#8211; Yahoo Video Site.</p>
<p>Although technically the DOM (Document Object Model) used in web browsers is not a literal part of JavaScript, most developers will use the DOM with JavaScript as a part of their day-to-day work. So, knowing how to use the DOM properly is a key to being a successful web developer.  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://yuiblog.com/assets/crockford/theory.zip" target="slidesd">Lecture Slides</a><br />&nbsp;</li>
<li><b>The JSON Saga (0n YUI Theatre) -</b> <a href="#json">Watch video</a>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Length: 49:25
<p>&#8220;Yahoo! JavaScript archtect Douglas Crockford tells the story of how JSON was discovered and became a major standard for describing data.&#8221; &#8211; Yahoo Video Site.<br />&nbsp;
</li>
<li><b>AJAX Performance (0n YUI Theatre) -</b> <a href="#ajax">Watch video</a>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Length: 37:57
<p>&#8220;Douglas explains why reducing the value of &#8216;n&#8217; via Ajax is the secret to building fast web applications.&#8221; &#8211; Yahoo Video Site.<br />&nbsp;</li>
<li><b>The State of AJAX (0n YUI Theatre) -</b> <a href="#ajaxs">Watch video</a>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Length: 38:32
<p>&#8220;With Ajax, a name was given to immediately interactive distributed applications, and the focus of innovation has moved from the browser makers to the web developers. We are seeing now an explosion of application patterns and styles. In some cases, the demands of Ajax developers have gotten significantly ahead of the browsers. How will we manage large applications? How will we manage offline usage? How will we manage security when the browser&#8217;s security model is hopelessly out of date?&#8221; &#8211; Yahoo Video Site.<br />&nbsp;</li>
</ul>
<hr />
<p><a name="thegoodparts"></a></p>
<p><strong style="font-size: 11pt;">Javascript: The Good Parts (YUI Theatre)</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 39:09</p>
<div >
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="322" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"></p><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" value="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=2974197&amp;vid=630959&amp;lang=en-au&amp;intl=au&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v1/w826/630959_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3DMUc0gpdIoywY3Yi7Bqgn1g--&amp;embed=1&amp;defaultBandwidth=300" /><param name="src" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="flashvars" value="id=2974197&amp;vid=630959&amp;lang=en-au&amp;intl=au&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v1/w826/630959_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3DMUc0gpdIoywY3Yi7Bqgn1g--&amp;embed=1&amp;defaultBandwidth=300" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="512" height="322" src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" flashvars="id=2974197&amp;vid=630959&amp;lang=en-au&amp;intl=au&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v1/w826/630959_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3DMUc0gpdIoywY3Yi7Bqgn1g--&amp;embed=1&amp;defaultBandwidth=300" bgcolor="#000000" allowscriptaccess="always" allowfullscreen="true"></embed></object><br /><a href="http://uk.video.yahoo.com/watch/630959/2974197" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p><a name="thegoodpartsg"></a></p>
<p><strong style="font-size: 11pt;">Javascript: The Good Parts (Google Tech Talks)</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 1:03:47</p>
<p><object width="480" height="385"></p><param name="movie" value="http://www.youtube.com/v/hQVTIJBZook?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hQVTIJBZook?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object><br /><a href="http://www.youtube.com/watch?v=hQVTIJBZook" target="youtube">Original Page on YouTube</a>&nbsp;&nbsp;&nbsp;<a href="#contents">Back to TOC</a></p>
<hr />
<p><a name="proglang1"></a></p>
<p><strong style="font-size: 11pt;">The JavaScript Programming Language &#8211; Part 1</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 30:54</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1710507&#038;vid=111593&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111593_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=1710507&#038;vid=111593&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111593_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111593/1710507" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;<a href="#content"><small>Back to TOC</small></a></div>
<p><a name="proglang2"></a></p>
<p><strong style="font-size: 11pt;">The JavaScript Programming Language &#8211; Part 2</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 31:06</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1710553&#038;vid=111594&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111594_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=1710553&#038;vid=111594&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111594_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111594/1710553" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;<a href="#content"><small>Back to TOC</small></a></div>
<p><a name="proglang3"></a></p>
<p><strong style="font-size: 11pt;">The JavaScript Programming Language &#8211; Part 3</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 29:00</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1710607&#038;vid=111595&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111595_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=1710607&#038;vid=111595&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111595_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111595/1710607" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;<a href="#content"><small>Back to TOC</small></a></div>
<p><a name="proglang4"></a></p>
<p><strong style="font-size: 11pt;">The JavaScript Programming Language &#8211; Part 4</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 19:47</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1710658&#038;vid=111596&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111596_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=1710658&#038;vid=111596&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111596_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111596/1710658" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;<a href="#content"><small>Back to TOC</small></a></div>
<hr />
<p><a name="advancedjs1"></a></p>
<p><strong style="font-size: 11pt;">Advanced JavaScript &#8211; Part 1</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 30:55</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1027823&#038;vid=111585&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111585_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=1027823&#038;vid=111585&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111585_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111585/1027823" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;<a href="#content"><small>Back to TOC</small></a></div>
<p><a name="advancedjs2"></a></p>
<p><strong style="font-size: 11pt;">Advanced JavaScript &#8211; Part 2</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 25:29</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1027832&#038;vid=111586&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111586_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=1027832&#038;vid=111586&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111586_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111586/1027832" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p><a name="advancedjs3"></a></p>
<p><strong style="font-size: 11pt;">Advanced JavaScript &#8211; Part 3</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 10:55</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1027854&#038;vid=111587&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111587_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3DWCEKic7NXxyzthKrgFK47Q--&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=1027854&#038;vid=111587&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111587_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3DWCEKic7NXxyzthKrgFK47Q--&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111587/1027854" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<hr />
<p><a name="dom1"></a></p>
<p><strong style="font-size: 11pt;">Theory of the DOM &#8211; Part 1</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 31:11</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=992708&#038;vid=111582&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111582_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=992708&#038;vid=111582&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111582_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111582/992708" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p><a name="dom2"></a></p>
<p><strong style="font-size: 11pt;">Theory of the DOM &#8211; Part 2</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 21:25</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=996002&#038;vid=111583&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111583_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3DG2f65fsDiJybzRbHkElMzw--&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=996002&#038;vid=111583&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111583_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3DG2f65fsDiJybzRbHkElMzw--&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111583/996002" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p><a name="dom3"></a></p>
<p><strong style="font-size: 11pt;">Theory of the DOM &#8211; Part 3</strong>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length: 26:24</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=996008&#038;vid=111584&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111584_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=996008&#038;vid=111584&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111584_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/111584/996008" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p><a name="json"></a></p>
<p><strong style="font-size: 11pt;">The JSON Saga</strong>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Length: 49:25</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=14811995&#038;vid=5647980&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/10326/90441507.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=14811995&#038;vid=5647980&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/10326/90441507.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/5647980/14811995" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p><a name="ajax"></a></p>
<p><strong style="font-size: 11pt;">AJAX Performance</strong>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Length: 37:57</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=11157560&#038;vid=4141759&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/6543/76907810.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=11157560&#038;vid=4141759&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/6543/76907810.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/4141759/11157560" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p><a name="ajaxs"></a></p>
<p><strong style="font-size: 11pt;">The State of AJAX</strong>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Length: 38:32</p>
<div>
<p><object width="512" height="322"></p><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=4760685&#038;vid=1382941&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v3/w983/1382941_320_240.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=4760685&#038;vid=1382941&#038;lang=en-gb&#038;intl=uk&#038;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v3/w983/1382941_320_240.jpeg&#038;embed=1" ></embed></object><br /><a href="http://uk.video.yahoo.com/watch/1382941/4760685" target="yahoo"><small>Original Page on Yahoo! Video</small></a>&nbsp;&nbsp;&nbsp;<a href="#contents"><small>Back to TOC</small></a></div>
<p>You can get Douglas&#8217; Book <a href="http://www.amazon.com/gp/product/0596517742?ie=UTF8&#038;tag=chomercom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0596517742" target="amazon">JavaScript: The Good Parts</a><img src="http://www.assoc-amazon.com/e/ir?t=chomercom-20&#038;l=as2&#038;o=1&#038;a=0596517742" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. This is an excellent book that I own myself. It covers many of the subjects covered in these videos. I use it to zero in on a specific subject and study it intensely!</p>
<p>You can find more videos, etc. by Douglas Crockford and other Yahoo! coding luminaries at <a href="http://developer.yahoo.com/yui/theater/" target="yahooDev">http://developer.yahoo.com/yui/theater/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/12/11/javascript-the-good-parts-a-collection-of-lectures-by-douglas-crockford-on-the-javascript-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When On The Road: Useful Fitness Tips When Traveling</title>
		<link>http://chomer.com/2010/12/05/keeping-healthy-on-the-road/</link>
		<comments>http://chomer.com/2010/12/05/keeping-healthy-on-the-road/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 21:19:07 +0000</pubDate>
		<dc:creator>Orville Chomer</dc:creator>
				<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=625</guid>
		<description><![CDATA[This is a guest post from Monica Lewers, who for the past few months has been my personal trainer. Her clients keep signing up with her again and again. For one reason: she gets results. In this article she provides some tips on how to not &#160; &#8220;fall off the wagon&#8221; and stay healthly when [...]]]></description>
			<content:encoded><![CDATA[<p><center><a href="http://www.flickr.com/photos/jazzlawyer/84291062/" title="Neal &amp; MC workout by Jeffery Simpson, on Flickr" target="flickr"><img src="http://farm1.static.flickr.com/41/84291062_4d075bc913.jpg" width="500" height="333" alt="Neal &amp; MC workout" /></a></center></p>
<p  style="font-size: 10pt;">This is a guest post from Monica Lewers, who for the past few months has been my personal trainer. Her clients keep signing up with her again and again. For one reason: she gets results. In this article she provides some tips on how to <em>not</em> &nbsp; &#8220;fall off the wagon&#8221; and stay healthly when you are traveling.</p>
<p><span id="more-625"></span></p>
<p><strong style="font-size: 12pt; color: #e74d00;">Enter Monica Lewers:</strong></p>
<p><span  style="font-size: 10pt;">I have had discussions with many of my clients about keeping up their exercise and eating regimens while on the road.  Whether the trip is for work or pleasure, here are just a few of my tips to keeping on track:</span></p>
<ol>
<li style="font-size: 10pt;"><strong>Be your own boss first</strong><br />
Put on your job description &#8211; “must perform some form of ‘getting the heart rate in the range,’ ‘strength,’ or ‘flexibility’ exercise for thirty minutes at least once every couple of days while on the road.” Some of you may say, “but I don’t have the time.”  Yes, you do.  It is not a matter of having it.  It is a matter of making it.  Make the time to demand good work from you, for you, first.  Why does your job, your boss and your customers deserve the best of you and not you deserve the best of you also?  Health is not an option. It is mandatory.  It is a privilege that should be treated as such. Where do I find the time when on the road you ask?<br />
<img src="/wp-content/pixel.gif" height="4" width="100" border=0/></p>
<ul>
<li style="font-size: 10pt;">While I wind down watching the news or something else on TV in my hotel room.  I ask for extra towels and use them for mats on the floor.  I bring exercise DVDs and pop them into my computer.</li>
<li style="font-size: 10pt;">Staying at a hotel that has a 24-hour fitness room.  It doesn’t have to be fancy, just functional.  Ask a personal trainer for some creative regimens to get full body and good cardio workouts on limited equipment.</li>
<li style="font-size: 10pt;">Taking my jump rope and going outside early morning (even if it is the parking lot). Walks and jogs count too.</li>
<li style="font-size: 10pt;">Researching where the nearest health club is.  I plan my departure/arrival so that I can go outside of the times of my scheduled events and/or travel times.</li>
<li style="font-size: 10pt;">Develop great relationships with my clients and traveling colleagues.  When I do, they tend to be more understanding when I excuse myself a few minutes short from the end of the extended dinner chats or social drinks for something “heart healthy.”  And the more your body looks the part, or your enthusiasm demonstrates your commitment, the easier it is for them to understand and even be inspired.<br />
<br />&nbsp;</li>
</ul>
</li>
<li style="font-size: 10pt;"><strong>Being polite does not mean you have to be rude to yourself</strong><br />
Many of my clients have shared with me that they don’t want to be rude at family events by not filling their plates with the wonderful (but not necessarily the lightest, heart healthy, or personal physique goal matching) spreads that your loved ones have put together.  Others have noticed that often the choices at business related events are on carbohydrate, fat, and/or refined sugar overload.</p>
<p><span style="font-size: 10pt;">Again, don’t fret.  Here are some of the things that I do:</span></p>
<ul>
<li style="font-size: 10pt;">Focus on the fruits and veggies.  Go for the raw when available and leave the dressing and dips alone.</li>
<li style="font-size: 10pt;">Get only a spoonful/sliver of the indulgence foods.</li>
<li style="font-size: 10pt;">Share a piece of dessert with a colleague or loved one.</li>
<li style="font-size: 10pt;">Go for whole wheat or whole grain bread.  Consider making open face sandwiches by taking a piece of the bread off, and leave those tempting rolls in those pretty baskets.</li>
<li style="font-size: 10pt;">When the food is on the “better for your goals” side, eat the right meal amount and let good ole’ fashioned take home containers be your handbag for the rest.</li>
<li style="font-size: 10pt;">If possible, eat before you go to the event or have healthier choices waiting for you back at home or at your hotel room to complete your daily intake.</li>
<li style="font-size: 10pt;">Share in the meal preparation by making your goal-friendly dish for the family.<br />&nbsp;</li>
</ul>
<div  style="font-size: 10pt;">Often times, someone brings up my eating habits on-the-spot.  They become a topic of discussion that leads to a great conversation about health, diet and exercise.  I never criticize the food or others habits.  I just educate them why what I am doing is best for me &#8211; if they ask.  If like me, you gain energy from how understanding family and co-workers become when you share knowledge and results as the basis for your dedication, then you will be motivated to keep on keepin’ on!</div>
<p>&nbsp;</li>
<li style="font-size: 10pt;"><strong>Identify a place to purchase better choices of food</strong><br />
When I have a trip planned, I will spend the extra time to locate the places where I can get meals that meet my personal goals.<br />&nbsp;</p>
<ul>
<li style="font-size: 10pt;">Grocery and convenient stores are great places to get wraps, salads, naked juices, prepared (grilled or baked <a href="http://chomer.com/wp-content/smiley.png"><img class="alignnone size-full wp-image-636" title="smiley" src="http://chomer.com/wp-content/smiley.png" alt="" width="11" height="12" /></a>) chicken and such that store well in the hotel room.  (Still read the nutrition labels though!) Fill your ice bucket and use it as a mini-frig.</li>
<li style="font-size: 10pt;">When at a restaurant, order double of the foods that work towards your goals and use my favorite handbag – the take home bag.  (For those new to business, protocol dictates you order the extra food on your dime…)</li>
<li style="font-size: 10pt;">Buy extra at the airport.  Have protein bars, burritos (minus sour cream), bananas, etc. and have them available to eat on the plane, car, etc. and for when you get to the hotel/destination.  Eating/snacking every couple of hours helps so much to curb your appetite in the direction of your goals.</li>
<li style="font-size: 10pt;">Stay at hotels with a kitchen (or at least a frig and microwave) or spend the extra money for hotel food that is goal friendly.<br />&nbsp;</li>
</ul>
</li>
<li style="font-size: 10pt;"><strong>Cut back on the drinks</strong><br />
Drinking alcohol is not a requirement.  And drinking water, sipping on a pop (soda) – if you must &#8211; works just as well.  Enough said.<br />&nbsp;</li>
<li style="font-size: 10pt;"><strong>Whatever motivates you – Use it!</strong><br />
Find what gets your underwear in a bunch and release that negative energy into positive exercise or staying focused on your diet.  For me, I despise love handles on me and I love looking tone (ok, “cut” <a href="http://chomer.com/wp-content/smiley.png"><img class="alignnone size-full wp-image-636" title="smiley" src="http://chomer.com/wp-content/smiley.png" alt="" width="11" height="12" /></a>).  I love having health stats of a grade school age person. I love the fact that I have saved my life by shamelessly making my health a top life objective listed privately on every one of my job descriptions. If I know that eating this or not doing that impacts any of the above, then you know what – I listen to my gut before my gut shows its ugly self as a side order of flab.</li>
</ol>
<p>###</p>
<div style="font-size: 10pt;"><strong>About the Author:</strong>&nbsp;&nbsp; Monica Lewers is a certified personal trainer and corrective exercise specialist with  twenty-five years experience as a business and fitness solutions  provider located in Chicago, IL.</div>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/12/05/keeping-healthy-on-the-road/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Fix Base SDK Missing Problem in XCode</title>
		<link>http://chomer.com/2010/12/01/how-to-fix-base-sdk-missing-problem-in-xcode/</link>
		<comments>http://chomer.com/2010/12/01/how-to-fix-base-sdk-missing-problem-in-xcode/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 21:01:29 +0000</pubDate>
		<dc:creator>Orville Chomer</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[SDK Missing]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=481</guid>
		<description><![CDATA[In this article I cover how you can fix the Base SDK Missing problem you might have had using the iOS SDK 5.2. The video above is easiest to see in full screen mode. Background: I downloaded Apple&#8217;s iOS SDK 5.2 and installed it on my Mac. After that process was over , I decided [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/H2M_vOF3imE?fs=1&amp;hl=en_US&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/H2M_vOF3imE?fs=1&amp;hl=en_US&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
In this article I cover how you can fix the Base SDK Missing problem you might have had using the iOS SDK 5.2. The video above is easiest to see in full screen mode.</p>
<p><strong>Background:</strong><br />
I downloaded Apple&#8217;s iOS SDK 5.2 and installed it on my Mac. After that process was over , I decided to load an existing project of mine into XCode. Ok, good. Then I tried to do a build. Kaboom! It did not work! No worries I thought, I will just go to the drop-down and pick the latest SDK 5.2. But the option was not there! The thought came to me that I might have to create a new project and import all my files from my existing project <em>just to get it to work</em>. <em>Not</em> a very nice thought to say the least!<span id="more-481"></span></p>
<p><strong>Unexpected Source for a Solution</strong><br />
Approximately a day later I got a book I ordered called <a href="http://www.amazon.com/gp/product/1430233036?ie=UTF8&amp;tag=chomercom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1430233036" target="amazon">Learn iPhone and iPad Cocos2D Game Development</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=chomercom-20&amp;l=as2&amp;o=1&amp;a=1430233036" border="0" alt="" width="1" height="1" /><br />
by Steffen Itterheim. I bought this book with ambitions for writing my own game or two.  Anyway, in chapter 2 &#8220;Getting Started&#8221; on page 17, the author of the book described the solution to my problem and yours: how to fix this Base SDK Missing problem.</p>
<p>Here are the step by step instructions to fix your project:</p>
<ol>
<li>Load up the project in question into XCode. &#8230;   Also notice I highlighted the message in question in green:<a href="http://chomer.com/wp-content/baseSDKMissing1.png"><img class="aligncenter size-full wp-image-496" title="baseSDKMissing" src="http://chomer.com/wp-content/baseSDKMissing1.png" alt="" width="608" height="306" /></a>.<br />
.</li>
<li>On the XCode menu bar, pick the <em>Project</em> menu option.<a href="http://chomer.com/wp-content/projectMenu.png"><img class="aligncenter size-full wp-image-493" title="projectMenu" src="http://chomer.com/wp-content/projectMenu.png" alt="" /></a>.<br />
.</li>
<li>The third option from the bottom of the Project menu is <em>Edit Project Settings</em>, pick it.<a href="http://chomer.com/wp-content/projectSettingMenuOption1.png"><img class="aligncenter size-full wp-image-500" title="projectSettingMenuOption" src="http://chomer.com/wp-content/projectSettingMenuOption1.png" alt="" /></a>.<br />
.</li>
<li>The Project Info window will appear. There are four tabs at the top: <em>General, Build, Configurations</em>, and <em>Comments</em>. Make sure that the <em>Build</em> tab is selected.</li>
<li>The Top Group on this tab is called <em>Architectures</em>. The third item under Architectures is <em>Base SDK</em>. You will see which SDK it was trying to use with the word (missing) next to it.  &#8230; Notice below I&#8217;ve highlighted the Build tab and have green arrows pointing to the Architectures group, the Base SDK option, and the iOS 4.0 (missing) to have them stand out for you.<a href="http://chomer.com/wp-content/projectInfo11.png"><img class="aligncenter size-full wp-image-505" title="projectInfo1" src="http://chomer.com/wp-content/projectInfo11.png" alt="" width="574" height="268" /></a>.<br />
.</li>
<li>Click on the Value column for <strong>Base SDK</strong> to get the following menu:<a href="http://chomer.com/wp-content/SDKOptions.png"><img class="aligncenter size-full wp-image-509" title="SDKOptions" src="http://chomer.com/wp-content/SDKOptions.png" alt="" width="583" height="240" /></a>.<br />
.</li>
<li>You will notice various SDKs available to you to use. In this case we are not interested in any Mac OS X SDKs, but rather a valid iOS SDK value! The only one available in our example is <strong>iOS 4.2</strong> in this case. So, we would pick it!</li>
<li>The Base SDK value will now be set to iOS 4.2. (see screen shot below)&#8230;  The value is automatically saved to the project so there is no need to do a save.<a href="http://chomer.com/wp-content/projectInfo2.png"><img class="aligncenter size-full wp-image-518" title="projectInfo2" src="http://chomer.com/wp-content/projectInfo2.png" alt="" width="574" height="286" /></a></li>
<li>Close the Project Info window. The main project window itself will still be unchanged. It will still say Base SDK missing. Do not freak out! Your changes have taken effect. All you need to do now is close and reopen your project and you will be good to go!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/12/01/how-to-fix-base-sdk-missing-problem-in-xcode/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Happy Thanksgiving in 2010!</title>
		<link>http://chomer.com/2010/11/25/happy-thanksgiving-in-2010/</link>
		<comments>http://chomer.com/2010/11/25/happy-thanksgiving-in-2010/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 18:37:53 +0000</pubDate>
		<dc:creator>Orville Chomer</dc:creator>
				<category><![CDATA[Thankfulness]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=471</guid>
		<description><![CDATA[&#160; While in many ways 2010 was a tough year, there are still many many things to be thankful for. Here is a list of things I though of for myself: &#160; A job. Not something to be taken for granted these days. Food to eat. A roof over my head A wife that loves [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><a title="Thanksgiving Turkey by Chef Jess PhD, on Flickr" href="http://www.flickr.com/photos/chefjessphd/4178707061/" target="flickr"><img src="http://farm3.static.flickr.com/2653/4178707061_e4aee0b125.jpg" alt="Thanksgiving Turkey" width="500" height="375" align="middle" /></a><br />
While in many ways 2010 was a tough year, there are still many many things to be thankful for. Here is a list of things I though of for myself:</p>
<p>&nbsp;</p>
<ul>
<li>A job. Not something to be taken for granted these days.</li>
<li>Food to eat.</li>
<li>A roof over my head</li>
<li>A wife that loves me.</li>
<li>2 nephews.</li>
<li>2 sisters and 2 brother-in-laws.</li>
<li>My mom.</li>
<li>Fall colors.</li>
<li>Fresh clean crisp air to breathe in.</li>
<li>A good church.</li>
<li>Good friends.</li>
<li>A working car.</li>
<li>walks in the forest preserve.</li>
</ul>
<p>I could go on a while but I think you get the drift. What are you thankful for?</p>
<p>Here&#8217;s wishing you and your family a very happy Thanksgiving!</p>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/11/25/happy-thanksgiving-in-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Experience Some Positive Energy: Attend a Marathon!</title>
		<link>http://chomer.com/2010/11/12/how-to-experience-some-positive-energy-attend-a-marathon/</link>
		<comments>http://chomer.com/2010/11/12/how-to-experience-some-positive-energy-attend-a-marathon/#comments</comments>
		<pubDate>Sat, 13 Nov 2010 01:30:18 +0000</pubDate>
		<dc:creator>ochomer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Positive Experiences]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=132</guid>
		<description><![CDATA[Here&#8217;s a basic fact: What we know does not directly effect what we do. What we spend our times mentally dwelling on effects our emotions. And our emotions effect our behavior that is: what we do. Here&#8217;s something else to consider: Your environment has a lot to do with what you are mentally dwelling on [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/fuyZFMRtXGs?fs=1&amp;hl=en_US&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/fuyZFMRtXGs?fs=1&amp;hl=en_US&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
Here&#8217;s a basic fact: What we <em>know</em> does not directly effect what we do. What we spend our times mentally<span id="more-132"></span> dwelling on <em>effects our emotions</em>. And our emotions effect our behavior that is: <em>what we do</em>. Here&#8217;s something else to consider: Your <em>environment</em> has a lot to do with what you are <em>mentally dwelling on</em> at that<em> moment</em>! Want to switch around your paradigm &#8230; at least for a brief but wonderful span of time? Change that environment? Then attend a marathon! No you don&#8217;t have to run a marathon. But show up at the side lines. Cheer them on.  Oh, and by the way, don&#8217;t watch it on TV, be there in person&#8230; there is a big difference&#8230; a <em>huge</em> difference.  Though watch it on TV at very least if you absolutely cannot attend!</p>
<p>At the Chicago Marathon there are literally thousands of runners along with a few rollers (wheelchair racers) surging forward in this great race. For the most part these are people who are committed diligently to something and have been training for months just for this race. There is a certain energy of excitement as you behold in person these amazing people executing their plan. And some of these folks are among the greatest distance runners in the world!</p>
<p>There are the elite runners, and the Joe-everyman. They have taken on an impressive challenge: running 26.2 miles and crossing the finish line. I have run and completed the Chicago Marathon two times. It was hard. But there is something to be said for completing a hard and difficult goal and crossing that finish line. This kind of stuff can be drawn upon and applied to other areas of our lives. The Bible even pictures our lives as a distance race where the ones who have gone on before are on the side-lines cheering us on. Willing us to finish the race and finish it well.</p>
<p>Another wonderful thing is the literally <em>hundreds of thousands</em> of spectators who show up at an event like this. Many are there to cheer on friends and family who are in the race. The point is, they show up with an intent to do something positive: to spur on and encourage others. They are also there to be a part of something bigger than themselves.</p>
<p>Go! And be a part of something bigger than yourself! You will have to do a little planning. Here are a few interesting points and tips for going to see a  marathon live:</p>
<ul>
<li>The cost of watch a marathon is free. You don&#8217;t have to spend money to get in a stadium or any other venue. This is an opportunity that many can take advantage of regardless of income.</li>
<li>Find out the start time of the marathon and expect to be there at least an hour early.</li>
<li>If at all possible, take public transportation to the race. This especially goes for large races such as the Chicago Marathon where the traffic around the race can be awful. Just think about all those people coming to run and watch the event and all the roads blocked off from cars so that the runners can use them instead!</li>
<li>Try to get a map of the course&#8230; do this before race day. You can find information like this on the race&#8217;s web site. Most of the time a long course like this will be in the form of some sort of loop where the finish line ends up being not far from the starting line. If you plan things right, you can see the beginning of the race as well as others (including wheelchair and elite runners) crossing the finish line.</li>
<li>Watch for two or three different vantage points along the course keeping these points close to the middle of the course&#8217;s &#8220;loop.&#8221;</li>
<li>As far as roads in the loop, position your self of the side of the street that is outside the loop or you might end up stuck in the middle for 20 or 30 minutes waiting for 50,000 runners to go by before you can cross the street!</li>
<li>Many runners have their names on their shirt to provide you with an aid to cheer them on. Take them up on it and get involved in this simple way. &#8220;Go Mary!&#8221; &#8220;Go Joe!&#8221;</li>
<li>Take it all in. The cheering and shouting crowds. The ringing of cow-bells. The sirens. The pace cars. The racers.</li>
<li>Meditate on the thought that thousands of people this day will attempt and complete a hard task. Some will be in pain, tired, but they will joyfully cross that finish line. It is something that no one can take away from them!</li>
<li>And finally, later, after its is long over. Deliberately relive those moments and think of those &#8220;marathons&#8221; each of us has in our lives and the joy of coming through and crossing the finish line!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/11/12/how-to-experience-some-positive-energy-attend-a-marathon/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I Have Been Spiffing Up the Site</title>
		<link>http://chomer.com/2010/09/30/i-have-been-spiffing-up-the-site/</link>
		<comments>http://chomer.com/2010/09/30/i-have-been-spiffing-up-the-site/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 15:28:59 +0000</pubDate>
		<dc:creator>ochomer</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Site]]></category>

		<guid isPermaLink="false">http://blog.chomer.com/2010/09/30/i-have-been-spiffing-up-the-site/</guid>
		<description><![CDATA[If you have ever been to Chomer.com before, and now have come back, you will notice that things look a lot different. I&#8217;m not done with this spiff-up by any means, but it is well along the way. I think that visually it is a big improvement. Also I am using a Like button for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://chomer.com/wp-content/photo21.jpg"><img class="size-medium wp-image-89 alignleft" title="work area" src="http://chomer.com/wp-content/photo21-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>If you have ever been to Chomer.com before, and now have come back, you will notice that things look a lot different. I&#8217;m not done with this spiff-up by any means, but it is well along the way. I think that visually it is a big improvement. Also I am using a Like button for Facebook on posts, and a Retweet button for Twitter. So I&#8217;m beginning to get some of the social aspects covered too. Why the social aspects? Its a good way for people to spread the word about content on this site if they find it useful.<span id="more-80"></span></p>
<p><strong>A Reality Check<br />
</strong>Originally, I had grand ideas of how I was going to re-code the site from scratch, creating this awesome content management infrastructure that would knock everyone dead with amazement. I needed to wake up and smell the hummus!  I needed a nice looking, and working site now! I must say I have avoided posting for awhile due to the fact how embarrassed I felt about my site. So, I am going with a site that is for the most part a WordPress blog. As for the layout and styling of the pages, I got have lot of inspiration from <a href="http://www.fourhourworkweek.com/blog/" target="_blank">Tim Ferris&#8217; FourHour blog</a> and some stuff he wrote on having a successful blog.</p>
<p><strong>More Work to Go</strong><br />
The header still needs at least one graphic, stuff does not align quite right in some web browsers, and there is more stuff I want to add to the side bar but things are moving along nicely.</p>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/09/30/i-have-been-spiffing-up-the-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Create Class Categories in Objective C</title>
		<link>http://chomer.com/2010/05/16/how-to-creat-class-categories-in-objective-c/</link>
		<comments>http://chomer.com/2010/05/16/how-to-creat-class-categories-in-objective-c/#comments</comments>
		<pubDate>Sun, 16 May 2010 15:43:43 +0000</pubDate>
		<dc:creator>ochomer</dc:creator>
				<category><![CDATA[Objective C]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://chomer.com/?p=105</guid>
		<description><![CDATA[Note: Video is Best Viewed in Full Screen Mode As I began refining some sample code for making Universal Apps for the iPhone and iPad, I sought a way to make my code as concise as possible. I needed to determine if the app was running on an iPad or iPhone/iPod Touch and use it [...]]]></description>
			<content:encoded><![CDATA[<p><center><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/e1CMpQOKE3I?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/e1CMpQOKE3I?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object><br />
Note: Video is Best Viewed in Full Screen Mode</center></p>
<p>As I began refining some sample code for making Universal Apps for the iPhone and iPad, I sought a way to make my code as concise as possible. I needed to determine if the app was running on an iPad or iPhone/iPod Touch and use it to my advantage. This basic information is contained in the UIDevice class. </p>
<p>Unfortunately, using:</p>
<p><span id="more-105"></span></p>
<p><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; [</span><span class="Apple-style-span" style="background-color: white;"><span class="Apple-style-span" style="color: #351c75;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">UIDevice</span></span></span><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"> currentDevice].</span><span class="Apple-style-span" style="color: #351c75;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">model</span></span><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">&nbsp;</span>&nbsp; &nbsp; </p>
<p>did not do precisely what I needed to do. I needed something specialized. I wanted to add new functionality to the UIDevice class as if it had been there all along.</p>
<p><b>Looking for Solutions</b><br />
A few months back I ran into a code sample that adds functionality to the NSDate class called <a href="http://www.zetetic.net/blog/2009/03/11/nsdate-helper/" target="dateHelper">NSDate+Helper</a>. This class, created by a programmer named Billy Gray was my first exposure to a wonderful feature built into Objective C called <i>Class Categories</i>. When I saw how one could do this, it set the wheels turning in my mind at all the possibilities!</p>
<p>In this tutorial I am going to show you how to use class categories, and for our example we are going to add functionality to the UIDevice class for use in ultimately creating a sample Universal App.</p>
<p><b><span style="color: #0b5394; font-size: large;">Sample Code Info:</span></b></p>
<p><b>Getting Sample Project Source Code &amp; Running it in the Simulator</b><br />
It would be handy for you to <b><a href="http://chomer.com/wp-content/ios_sample_code/MyUniversalApp.zip">download a copy of our Universal App project</a></b> to look over and try out. In order to really use it you will need to have an Intel-based Mac computer, and XCode 3.2 or better installed on it. Once you have done this,&nbsp; you will be able to run it in the iPhone Simulator.</p>
<p>Make sure when running on the simulator that you set the proper build version before doing a build: </p>
<p>Simulating the app running on an iPhone:</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/_o1xAhGn208E/TDXb7uOxNnI/AAAAAAAAAcg/MmjMX0tsaVk/s1600/sim313.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_o1xAhGn208E/TDXb7uOxNnI/AAAAAAAAAcg/MmjMX0tsaVk/s320/sim313.png" /></a></div>
<p>Simulating the app running on an iPad:</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/_o1xAhGn208E/TDXcpYys_VI/AAAAAAAAAco/wWi1C3V6XaE/s1600/sim32.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_o1xAhGn208E/TDXcpYys_VI/AAAAAAAAAco/wWi1C3V6XaE/s320/sim32.png" /></a></div>
<p><b>Running the Sample Project on an Actual Device </b><br />
If you want to run the project on an actual device rather than just the simulator, you will need to be a paying member of the Apple Developer Network ($99 a year at the time of this post). And you will need to have gone through the hoops of setting up your certificates, app record, and provisioning. &#8230; <i>We are not covering any of this getting on the device stuff in this tutorial.</i></p>
<p>At least you can run the project in the iPhone Simulator for free!</p>
<div style="color: #0b5394;">
<span style="font-size: large;"><b>Getting In Class Categories</b></span></div>
<p><b>What is a Class Category?</b></p>
<ul>
<li>You use class categories to add new functionality to an existing class. This could be one of your own classes, or it could be a class in Apple or someone else&#8217;s API.</li>
<li>You do <i>not</i> have to sub-class the class you are adding to.</li>
<li>You can add the new functionality in such a way (inside your project) that it seems that the functionality was there all along!</li>
</ul>
<p>
<b>Step 1: Come Up With A Category Name</b><br />
When creating a class category you are adding some sort of new functionality to an existing class (without touching any of the code actually <i>in</i> the existing class)! If you were to describe in a general way what that new functionality was, how would you phrase it? What &#8220;category&#8221; would it fall under? &nbsp;This is something you make up. I make up some sort of camel-cased phrase for my category name. In the case of my new functionality to add to UIDevice, I thought that <span class="Apple-style-span" style="color: #0b5394;">MyDeviceType</span> captured it well. Perhaps if I had thought about it longer I could have made up something better! But that is what I came up with so that is what I used!</p>
<p>
<b>Step 2: Create a Group in Our Project to Place our Class Category in (optional)</b><br />
The first thing you may want to do is create a new group (folder in your project) to place it in. This is optional, but it can make finding it easier as well as providing some form of internal documentation.</p>
<p>So, for the sake of argument, let&#8217;s say that this is what you want to do. Let&#8217;s go through the steps needed to do this:<br />
- First of all click on your project file item (in examples shown in the screen shots, this is &#8220;classcat&#8221;).<br />
- Then control-click on it again to bring up a pop-up menu.<br />
- Click the <b>Add</b> option at the top of the menu&#8230;<br />
- Then click the <b>New Group</b> option (see screen shot below)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/_o1xAhGn208E/S-9Tv_5EJEI/AAAAAAAAAbI/bN2FyqbXI_c/s1600/newgroup.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_o1xAhGn208E/S-9Tv_5EJEI/AAAAAAAAAbI/bN2FyqbXI_c/s320/newgroup.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
At this point you will see a new group appear under classcat with the text highlighted and ready for you to edit like in the screen shot below:</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://2.bp.blogspot.com/_o1xAhGn208E/S_ASpTUyqbI/AAAAAAAAAbQ/Nfp_7sRZi3U/s1600/newgroup2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_o1xAhGn208E/S_ASpTUyqbI/AAAAAAAAAbQ/Nfp_7sRZi3U/s320/newgroup2.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
Lets rename the group to &#8220;Class Categories&#8221;&#8230;</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://4.bp.blogspot.com/_o1xAhGn208E/S_ATwB9tKLI/AAAAAAAAAbY/uO6ybKLxZlU/s1600/newgroup3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_o1xAhGn208E/S_ATwB9tKLI/AAAAAAAAAbY/uO6ybKLxZlU/s320/newgroup3.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<b>Step 3: Create a new Class from the NSObject Class</b></div>
<div class="separator" style="clear: both; text-align: left;">
- Control-click on our Class Categories group to bring up the pop-up menu.</div>
<div class="separator" style="clear: both; text-align: left;">
- Pick the <b>Add</b> option.</div>
<div class="separator" style="clear: both; text-align: left;">
- Pick the <b>New File&#8230;</b> option.</div>
<p><a href="http://3.bp.blogspot.com/_o1xAhGn208E/S_GRpCE3B8I/AAAAAAAAAbo/eITSFXCr8dw/s1600/addfile1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_o1xAhGn208E/S_GRpCE3B8I/AAAAAAAAAbo/eITSFXCr8dw/s320/addfile1.png" /></a></p>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
- The <i>New File</i> dialog window will appear.</div>
<div class="separator" style="clear: both; text-align: left;">
- Make sure that <span class="Apple-style-span" style="background-color: #6fa8dc;"><span class="Apple-style-span" style="color: white;">Cocoa Touch Class</span></span> is highlighted on the left hand side.</div>
<div class="separator" style="clear: both; text-align: left;">
- Make sure the <i><span class="Apple-style-span" style="background-color: #fff2cc;">Objective-C class</span></i> option is selected.</div>
<div class="separator" style="clear: both; text-align: left;">
- Make sure Subclass of is set to <i><span class="Apple-style-span" style="background-color: #fff2cc;">NSObject</span></i>.</div>
<div class="separator" style="clear: both; text-align: left;">
- Then click the <i><span class="Apple-style-span" style="background-color: #cfe2f3;">Next</span></i> button.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/_o1xAhGn208E/S_KMF8FexXI/AAAAAAAAAbw/K2kQrFjkxRU/s1600/addfile2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="337" src="http://2.bp.blogspot.com/_o1xAhGn208E/S_KMF8FexXI/AAAAAAAAAbw/K2kQrFjkxRU/s400/addfile2.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
The next screen will come up. It is looking for you to name the class:</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://2.bp.blogspot.com/_o1xAhGn208E/S_KNwagcMbI/AAAAAAAAAb4/HglnOekQShg/s1600/addfile3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="337" src="http://2.bp.blogspot.com/_o1xAhGn208E/S_KNwagcMbI/AAAAAAAAAb4/HglnOekQShg/s400/addfile3.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
We need to enter our class name. Gotta have some sorta naming convention! We will use the name of the original class we are creating a category for followed by the name of the category itself. That sounds good! So the original class in our example is <b>UIDevice</b>. The name of our class category is going to be: <b>MyDeviceType</b>. So we will type in <b>UIDeviceMyDeviceType</b>.</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://2.bp.blogspot.com/_o1xAhGn208E/S_KTR-N2mII/AAAAAAAAAcA/tSqZGMkuO3M/s1600/addfile4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="337" src="http://2.bp.blogspot.com/_o1xAhGn208E/S_KTR-N2mII/AAAAAAAAAcA/tSqZGMkuO3M/s400/addfile4.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Above I type in my new class name. Then I would just click the blue <span class="Apple-style-span" style="background-color: #cfe2f3;">Finish</span> button.</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
Here is the initial header file XCode created:</div>
<p><a href="http://1.bp.blogspot.com/_o1xAhGn208E/TDXV4dcUvvI/AAAAAAAAAcI/4_50s2Pr0x0/s1600/basicClassHeader.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="http://1.bp.blogspot.com/_o1xAhGn208E/TDXV4dcUvvI/AAAAAAAAAcI/4_50s2Pr0x0/s400/basicClassHeader.png" width="400" /></a></p>
<div class="separator" style="clear: both; text-align: left;">
This file starts out as just a normal class being subclassed from a superclass (NSObject).</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<b>Step 4: Modify Our New Class Files and Turn them Into a Class Category</b></div>
<div class="separator" style="clear: both; text-align: left;">
The first thing we will do here is replace the class name UIDeviceMyDeviceType with the class name we are creating a category for. In this case that is UIDevice. </div>
<div class="separator" style="clear: both; text-align: left;">
Next we are going to put MyDeviceType in parenthesis and delete the colon, NSObject and the curly braces and end up with this:</div>
<div class="separator" style="clear: both; text-align: left;">
&nbsp;<a href="http://4.bp.blogspot.com/_o1xAhGn208E/TDXXkmT2TiI/AAAAAAAAAcQ/Pz4EBZq1KmE/s1600/classCatClassHeader.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="http://4.bp.blogspot.com/_o1xAhGn208E/TDXXkmT2TiI/AAAAAAAAAcQ/Pz4EBZq1KmE/s400/classCatClassHeader.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
- Again note that above <b>UIDevice</b> is the existing class we are creating a category for.&nbsp;</div>
<div class="separator" style="clear: both; text-align: left;">
- <b>MyDeviceType</b> is the category name we made up for our category.</div>
<div class="separator" style="clear: both; text-align: left;">
- The category name is in parenthesis.</div>
<div class="separator" style="clear: both; text-align: left;">
- Although it might seem that we should put the category name in quotes&#8230; we do not.</div>
<div class="separator" style="clear: both; text-align: left;">
- Again, we removed the normally correct curly braces&#8230; to leave them in on our class category will get you errors when you build your project.</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
While we are at it, lets add some interface definitions for the methods in our class category that we want to make public:</div>
<div class="separator" style="clear: both; text-align: left;">
&nbsp;<a href="http://1.bp.blogspot.com/_o1xAhGn208E/TDXY3182JUI/AAAAAAAAAcY/5F_lS133HL0/s1600/classCatHeaderFilledIn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="http://1.bp.blogspot.com/_o1xAhGn208E/TDXY3182JUI/AAAAAAAAAcY/5F_lS133HL0/s400/classCatHeaderFilledIn.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
There may be other members in our class category than these, but these are available to be used by the &#8220;outside world.&#8221;</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
Now let&#8217;s look at the implementation file (the .m file)&#8230;</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<p><a href="http://3.bp.blogspot.com/_o1xAhGn208E/TDXiljrFiVI/AAAAAAAAAcw/XfT3r-hyOlA/s1600/classCatImp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://3.bp.blogspot.com/_o1xAhGn208E/TDXiljrFiVI/AAAAAAAAAcw/XfT3r-hyOlA/s400/classCatImp.png" width="400" /></a></p>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
Notice it has the class name we gave originally. After the text UIDevice, we need to put parenthesis around <b>MyDeviceType</b>&#8230; Again, no quotes go around the class category name.</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<p><a href="http://1.bp.blogspot.com/_o1xAhGn208E/TDXqvYsQtQI/AAAAAAAAAc4/osLR_I3ywo0/s1600/classCatImp2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://1.bp.blogspot.com/_o1xAhGn208E/TDXqvYsQtQI/AAAAAAAAAc4/osLR_I3ywo0/s400/classCatImp2.png" width="400" /></a></p>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
There! It is now setup to be used as a class category! All that remains to be done is add any variable declarations and code for our members.</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
Here is a screen shot showing a partial view of what that could look like:</div>
<div class="separator" style="clear: both; text-align: left;">
&nbsp;<a href="http://2.bp.blogspot.com/_o1xAhGn208E/TDXth82TOkI/AAAAAAAAAdA/3W4VX4-Rynw/s1600/sampleMemberCode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="393" src="http://2.bp.blogspot.com/_o1xAhGn208E/TDXth82TOkI/AAAAAAAAAdA/3W4VX4-Rynw/s400/sampleMemberCode.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
To see an actual working example <b><a href="http://chomer.com/iphoneobsessed/MyUniversalApp.zip">download the Universal App</a></b> sample code I have provided.</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<b>Step 5: Use New Functionality in Your Project!</b></div>
<div class="separator" style="clear: both; text-align: left;">
The new functionality at this point is ready to be used. There are two ways to make it accessible to various classes in your project:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
1. In the implementation file of a class that is going to use this functionality, add an #import line at the top. In our case the line would be:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
&nbsp;&nbsp; &nbsp;<span style="font-size: x-small;"><span style="font-family: &quot;Trebuchet MS&quot;,sans-serif;"> </span></span><span class="Apple-style-span" style="color: #783f04; font-family: Verdana,sans-serif; font-size: small;">#import</span><span style="font-family: Verdana,sans-serif; font-size: small;"> </span><span class="Apple-style-span" style="color: red; font-family: Verdana,sans-serif; font-size: small;">&#8220;UIDeviceMyDeviceType.h&#8221;</span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
2. If you are going to use it widely in your project there is a better way!&nbsp;</div>
<div class="separator" style="clear: both; text-align: left;">
Click in the Other Sources group in the project and click on the <span style="background-color: #ffe599;">classcat</span>_Prefix.pch file.</div>
<div class="separator" style="clear: both; text-align: left;">
(the first part of the file name is the <span style="background-color: #ffe599;">project name</span>).</div>
<div class="separator" style="clear: both; text-align: left;">
&nbsp;<a href="http://1.bp.blogspot.com/_o1xAhGn208E/TDXvh6gOpTI/AAAAAAAAAdI/9qjqVDsEeM4/s1600/pch1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="http://1.bp.blogspot.com/_o1xAhGn208E/TDXvh6gOpTI/AAAAAAAAAdI/9qjqVDsEeM4/s400/pch1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
You will see two import lines defined for Apple framework stuff. XCode puts these in so that the programmer does not have to use #import for anything in these frameworks throughout the project&#8230; the #import is implied. Underneath the #import <uikit uikit.h=""> add our import statement:</uikit></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
&nbsp;&nbsp; &nbsp;<span style="font-family: &quot;Trebuchet MS&quot;,sans-serif;">&nbsp;</span><span class="Apple-style-span" style="color: #783f04; font-family: &quot;Trebuchet MS&quot;,sans-serif;">#import</span><span style="font-family: &quot;Trebuchet MS&quot;,sans-serif;">&nbsp;</span><span class="Apple-style-span" style="color: red; font-family: &quot;Trebuchet MS&quot;,sans-serif;">&#8220;UIDeviceMyDeviceType.h&#8221;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="color: red;"><br />
</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="color: red;"></span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<p><a href="http://2.bp.blogspot.com/_o1xAhGn208E/TDXzd0T_rwI/AAAAAAAAAdQ/KkNCny1Xfh4/s1600/pch2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="http://2.bp.blogspot.com/_o1xAhGn208E/TDXzd0T_rwI/AAAAAAAAAdQ/KkNCny1Xfh4/s640/pch2.png" width="640" /></a></p>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
Save your changes and BOOM! All your new functionality in your new class category is available to project!</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
You could say:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
&nbsp;&nbsp; &nbsp; &nbsp;<span class="Apple-style-span" style="color: #7031a7; font-family: Monaco; font-size: 12px;">NSString<span style="color: black;"> *myDev = [</span>UIDevice<span style="color: black;"> </span><span style="color: #36595d;">myDeviceType</span><span style="color: black;">];</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="color: #7031a7; font-family: Monaco; font-size: 12px;"><span style="color: black;"></span></span>&nbsp;in your code anywhere in your project and the new <span class="Apple-style-span" style="background-color: #fff2cc;">myDeviceType</span> method will just work!</div>
<p>
<div class="separator" style="clear: both; color: #3d85c6; text-align: left;">
<span style="font-size: large;"><b>Different Uses for Class Categories</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
Here are some possibilities to think about:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
</p>
<ul>
<li>Add new functionality to existing classes (especially API type stuff) like we did in this tutorial.</li>
<li>Break a large class up into separate files grouping various blocks by function &#8220;category.&#8221;</li>
<li>Can you think of anything else? <img src='http://chomer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>
Hope you find this tutorial useful. Any questions? Ask away. If you could rate my <b><a href="http://www.youtube.com/watch?v=e1CMpQOKE3I">Youtube video</a> </b>that would be great too!&nbsp;</p>
<p>
In the next tutorial we will be talking about the structure of a Universal App.
</p>
<p><b style="color:green">Originally published on iPhone Obsessed blog</b></p>
]]></content:encoded>
			<wfw:commentRss>http://chomer.com/2010/05/16/how-to-creat-class-categories-in-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

