<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ref="http://purl.org/rss/1.0/modules/reference/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://purl.org/rss/1.0/">
	<channel rdf:about="http://personal.oatmealandcoffee.com/blog/rss.rdf">
		<title>Oatmeal &amp; Coffee by Philip Regan</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php</link>
		<description><![CDATA[Oatmeal &amp; Coffee © Philip Regan. All Rights Reserved<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-3996440-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>]]></description>
		<items>
			<rdf:Seq>
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry100310-073244" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry100304-211624" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091226-151903" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091210-195920" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091206-165135" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091119-062504" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091116-190933" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091113-060939" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091111-065037" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091104-173248" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091024-170419" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091012-223855" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091012-213137" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091005-194844" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091001-070012" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090914-205858" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090906-074522" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090828-052556" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090816-170018" />
				<rdf:li resource="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090815-073622" />
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry100310-073244">
		<title>Adobe Illustrator</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry100310-073244</link>
		<description><![CDATA[<img src="http://www.oatmealandcoffee.com/external/IllustratorBugReport.png"><br /><br />There was once a time when Illustrator was one of my favorite applications (most Adobe applications were at one point). But now I dread clicking the icons in my dock for fear of what non-sensical problem I will be faced with in using them.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry100304-211624">
		<title>What To Do?</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry100304-211624</link>
		<description><![CDATA[First off, I am not going to apologize for not posting in such a long time. This blog is free and you get what you pay for. At the same time, any parent that reads this blog will understand when I write that babies change everything. Let me do that again with a bit more emphasis for all of those non-parental types out there:<br /><br /><b>Babies change everything.</b><br /><br />I&#039;m not saying it&#039;s a good thing (it is for most people, myself included), nor am I saying it&#039;s a bad thing (although there have been times already where I yearn for &quot;the bygone days&quot;). All I&#039;m stating here is that right now, when given the choice between eating a sandwich and writing a blog post about whatever is on my mind at that given time, the sandwich wins. Every time.<br /><br />However, I&#039;ve missed the blog. I miss the ability to pontificate on anything I want at anytime I want about things my wife either already knows about (so there&#039;s no sense in complaining to her) or doesn&#039;t affect her (see previous parenthetical comment). Time is, at minimum, a <i>very</i> precious commodity, but I have received a couple calls from folks wondering when I am going to write again.<br /><br />So, here I am, in front of the keyboard (with a slightly gummy &quot;H&quot; key). But what to write about? Certainly, I could write about my (mis)adventures with REALbasic and Xcode. I recently wrote an Undo system in REALbasic (that was hard), I&#039;ve gone full-blown Subversion with all of my working code (that was easy), and there are the current hobbyist-vs-professional debates (both camps need to learn to live with each other and I have some ideas on how to make that happen), and whether iPhone compilation in REALbasic is a good idea or not (it isn&#039;t). <br /><br />But my thoughts are wandering around other topics as well. Like the simple pleasure I get from cleaning the baby bottles at night because it gives me a chance to reflect on my busy day. Or the general, typical, yet not entirely unfounded concerns I have as a new parent (and there are many).<br /><br />When I first started this blog, it was a re-telling of my day and some of the odd situations I find myself in. Then, programming took over my spare time, and all I wanted to do was talk about that. Amelia (said baby) changed all of that and now my thoughts drift between those two aspects of my life, usually with ease, but often not (the context of my basement office has changed from needed hideaway to evil necessity).<br /><br />I&#039;m still trying to sort out what, exactly, the focus of this site will be, and as I write this, I have the feeling its going to be about a little bit of everything, a public diary of sorts of a formerly wayward displaced Californian now late thirty-something coming to terms with the joys of family, the burden of responsibility, and the thrills of programming. <br /><br />Maybe I&#039;ll throw a little chess in there for good measure. <br /><br />At minimum, this place could use a new coat of paint.<br /><br />More to come...stay tuned.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091226-151903">
		<title>Simple Cataloger v3.1.1 Update</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091226-151903</link>
		<description><![CDATA[Here is the rundown of the new features that are included and/or are now fixed:<br /><br /><ul>
	<li>Custom delimiters between data points.
	<li>User selects when and where catalog metadata get saved (At beginning, at end, or not at all).</li>
	<li>Simple Cataloger is now a document-based application. Multiple catalogers can be run at the same time, and catalogers can be saved for later reuse.</li>	
	<li>Added a Recent Items menu, and support for opening the most recent item by default when starting the application.</li>
	<li>The frontmost cataloger window can be saved as the default preferences.</li>
	<li>Verified Mac OS 10.6 (Snow Leopard) compatibility.</li>
</ul><br /><br />I&#039;m still not entirely clear as to what happened with the v3.1 release, but the v3.1.1 update sorts everything out, is <i>thoroughly</i> tested, and uploaded to the server. So, what&#039;s done is done, and it&#039;s not so much about the mistake as it is the recovery. It took a little longer than I had wanted (and expected) to get this out the door, but it&#039;s done and that&#039;s what&#039;s important.<br /><br />I hope you find this new version as useful as I do, and, as always, I&#039;m happy to hear any and all feedback you have.<br />]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091210-195920">
		<title>Simple Cataloger: Third time wasn&#039;t the charm it seems</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091210-195920</link>
		<description><![CDATA[Well, I made a huge mistake of epic proportions: I complied the wrong code and posted it for all of the world to download. The one that got posted was an alpha I had kicking around, but wasn&#039;t feature complete and still had the moral equivalent of a few wires and hoses hanging out of an open hatch. It wasn&#039;t the final product. <br /><br />I could blame this on a number of things: I was in a vaguely self-imposed rush, I have a sleep-deprived, addled brain from caring for a newborn, whatever. But there really isn&#039;t an excuse.  Frankly, I&#039;m mortified by this, and to cap it all off, I can&#039;t seem to reconcile what is supposed to be the <i>correct</i> set of code. For someone who desperately would love to become a full-time programmer, I fell flat on my face.<br /><br />The earliest I will be able to deal with this is this weekend. So, until then, I&#039;m going with the notion that it isn&#039;t about the mistake, it&#039;s about the recovery. To that end, please feel free to download the Simple Cataloger 2 here...<br /><br /><a href="http://www.oatmealandcoffee.com/software/downloads/SimpleCataloger2.zip" target="_blank" >http://www.oatmealandcoffee.com/softwar ... loger2.zip</a><br /><br />...and please use this code to unlock all of the features:<br /><br /><b>OCSC20-4W3R2N-0M7R6R-37608</b><br /><br />Sorry about this, everyone. You deserve better. A fix is on the way.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091206-165135">
		<title>Simple Cataloger 3: The third time is the charm</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091206-165135</link>
		<description><![CDATA[Simple Cataloger 3 is now available. There are quite a few changes in this version, and they are largely as a direct result of feedback from our users.<br /><br /><ul>
	<li>Custom delimiters between data points.</li>
	<li>User selects when and where catalog metadata get saved (At beginning, at end, or not at all).</li>
	<li>Catalog settings can be saved for later use. Also added support for a Recent Items menu.</li>
	<li>Multiple catalogers can be run at the same time. For preferences, the frontmost cataloger window can be saved as the default preferences.</li>
	<li>Verified Mac OS 10.6 (Snow Leopard) compatibility.</li>
</ul><br /><br />The single biggest change is that Simple Cataloger is now <b>free</b>. I enjoy working on this project, and to all of those people over the past couple of years that have purchased licenses and sent in feedback, I would like give my most heartfelt gratitude. I will continue to support the software and all of you, and I hope everyone enjoys the new changes. I look forward to hearing what everyone thinks.<br /><br />The other major change is that there is now <a href="http://www.arbpmembers.org/index.php?option=com_remository&amp;Itemid=71&amp;func=fileinfo&amp;id=136" target="_blank" >an open source branch of the code hosted in the ARBP&#039;s Source Code Repository</a>. Please note that this is not the same code that is used in the commercial version hosted on my site and I will be independently developing that as needed. As such, there are still some unfinished and unpolished portions of this project, though, for the most part, it is clean code. I&#039;m submitting it as open source because it contains solutions to a variety of interface problems in Mac OS X that I have found in a variety of locations and I hope other developers within the REALbasic community can find use with what is contained inside. This is simply my saying &quot;Thanks&quot; to the REALbasic community as a whole.<br /><br />This has been sitting on my list of things to do for far too long and external forces have finally pushed me to actually do something about it. Enjoy!]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091119-062504">
		<title>Applescripting Adobe InDesign CS4 Revisited</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091119-062504</link>
		<description><![CDATA[I have an update to an earlier post about Applescripting InDesign, <i><a href="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090422-184505" target="_blank" >Applescripting for Adobe and Kindergarten Scissors: A Study in Object Transformations Across Versions</a></i>.<br /><br />Just a quick recap, here is how the commands looked in CS2 and CS3:<br /><br /><b>Adobe InDesign CS2</b> <br />rotate <i>text frame</i> ¬<br />by <i>fixed</i> ¬<br />around <i>anything</i> ¬<br />considering current rotation <i>boolean</i> ¬<br />transforming content <i>boolean</i> ¬<br />considering parents rotation <i>boolean</i><br /><br />set <i>theResult</i> to move <i>reference</i> ¬<br />to <i>insertion location</i> ¬<br />by <i>number</i> | <i>string</i> ¬<br />binding <i>binding</i><br /><br /><b>Adobe InDesign CS3</b> <br />Rotating then required an undocumented matrix:<br /><pre>tell application &quot;Adobe InDesign CS3&quot;<br />	set myMatrix to make transformation matrix with properties {counterclockwise rotation angle:90, horizontal translation:-217.5, vertical translation:217.5}<br />	transform myLayoutObject in pasteboard coordinates from center anchor with matrix myMatrix<br />end tell</pre><br /><br />Move was unchanged from CS2<br /><br /><b>Adobe InDesign CS4</b> <br />I now have CS4, and was able to look up the <tt>Rotate</tt> and <tt>Move</tt> commands.<br /><br /><tt>Rotate</tt> is back when searching for it in the dictionary, but it&#039;s not Rotate as we know it. It&#039;s really more of an abstract command meant to be performed on one of those ill-documented transformation matrices.<br /><br /><b>rotate matrix</b>  <i>(verb)</i>Rotate the transformation matrix. (from Layout Suite)<br /><br /><b>function syntax</b> <br />set <i>theResult</i> to rotate matrix <i>transformation matrix</i> ¬<br />     by angle <i>fixed</i> ¬<br />     by cosine <i>fixed</i> ¬<br />     by sine <i>fixed</i><br />     <br /><b>result</b> <br />transformation matrix: The rotated transformation matrix<br /><br />Actually rotating an object in the layout is still left to the transform command, which mentions nothing about rotating. Essentially, rotating an object is unchanged from CS3. Which makes me wonder why was this command even necessary? But, again, to find how to rotate an object is an exercise it &quot;What were the programmers thinking at the time they wrote this?&quot;. <br /><br /><UL>
	<LI>Searching "rotate" brings up eight hits none of them having to do with rotating an actual object in the layout, only abstract transformation matrices and other devices and properties.</LI>
	<LI>Searching "rotating" returns 14 hits in four functions: <tt>transform again</tt>, <tt>transform again individually</tt>, <tt>transform sequence again</tt>, and <tt>transform sequence again individually</tt>. The only mention of rotation is in the function description: "Transformations include moving, rotating, shearing, scaling, and flipping."</LI>
	<LI>Searching "rotation" returns 47 hits almost all of them <tt>rotation angle</tt> and <tt>absolute rotation angle</tt> properties of a variety of classes. I can't decide if this is reasonable or not, but to perform a transformation as an actual verb/command, we're still left with the abstracted <tt>transform</tt>command, which we know doesn't appear when searching for the painfully obvious "rotate". Besides, the sister command Move is called as a verb and here we're not. The interfaces to two commands usually grouped together are altogether different. So, no, properties aren't entirely reasonble, are they?</LI>
</UL>
<br /><br /><tt>Move</tt>, surprisingly but not all at that time, is unchanged from CS2/CS3.<br /><br />Words escape me.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091116-190933">
		<title>Adobe Acrobat Professional: A Gaping Hole in Macintosh Scripting </title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091116-190933</link>
		<description><![CDATA[Anyone who has used Adobe products for any length of time knows that UI consistency is not one of Adobe&#039;s strong points. In fact, for the uninitiated, things have gotten so bad over at Adobe that there is even a blog about it over at <a href="http://adobegripes.tumblr.com/" target="_blank" >Adobe Gripes</a> and though it seems Flash is the biggest culprit, all of the applications are guilty of some nonsense. Anyone who has scripted Adobe products knows that their UI inconsistency carries over to their APIs as well. I&#039;ve complained about this in the past<sup>1</sup> and <a href="http://code.google.com/p/xee/source/browse/trunk/XeePhotoshopLoader.m?spec=svn28&amp;r=11#107" target="_blank" >I&#039;m not the only one to do so</a>, either.<br /><br />For the first time, I really, really need to script the processing of PDFs because eBooks are popping up freakin&#039; everywhere and vendors want PDFs if I can&#039;t give the native format, which I can&#039;t (yet and it will be a long while before I can). I&#039;m not asking for a lot of depth here. I just need to compile, optimize, and crop multiple sets of PDFs. This type of work I can set up in other applications, Adobe&#039;s included, fairly easily. <br /><br />None of those basic production commands in Acrobat are available to Applescript, however. It seems that Adobe has decided to abandon further Applescript (without really telling anyone) and focus entirely on Javascript. So, what few Applescript commands that do exist look like they were simply abandoned and clearly not brought to the same implementations of the rest of the Creative Suite. For the Applescript folks they have offered (what I guess is) a laurel leaf, albeit a rotting one with most of the leaves lobbed off:<br /><br /><pre><br />-- get the title of an open document<br />tell application &quot;Adobe Acrobat Professional&quot;<br />	do script &quot;this.info.title;&quot;<br />end tell<br /></pre><br /><br /><tt>"do script"</tt>. That&#039;s it.<br /><br />So, I can automate Acrobat, but only on its own terms, which are both cheesy and lame. Communication is strictly limited: I can&#039;t send data to it, but that doesn&#039;t matter because even if I could I can&#039;t get data out of it, and it looks as though I&#039;m pretty much forced to debug the code in Acrobat&#039;s Javascript debugger.<sup>2</sup><br /><br />At the same time, all of the other Adobe products that matter to me—InDesign, Photoshop, and Illustrator—have very robust, if not feature-complete implementations (though frustratingly inconsistent and/or poorly documented at times). So, why no Applescript support in Acrobat, Adobe, when clearly you care enough about it everywhere else? What is it about Acrobat that sets it so far apart from the rest of the line-up that you felt Applescript was unnecessary, despite the fact that all of the other production-related applications have robust PDF support? It&#039;s nonsense like this that makes people want to throw chairs.<br /><br />The <tt>do script</tt> command is nothing more than a crappy cop-out of them not doing their job to the level their price points imply and <i>Adobe Acrobat is preventing me from me doing my job effectively</i>. I&#039;ve found alternatives to all of Adobe&#039;s apps at home, but unfortunately I&#039;m burdened with Adobe forever at The Day Job and have to suffer the consequences of their poor decision-making (how are those layoffs working out for you guys?).<br /><br />Even if <tt>do script</tt> were actually, you know, <i>useful</i>, the Javascript implementation still isn&#039;t feature-complete even though were are now on version <i><b>9</b></i> of Acrobat...of course. Why would it be any other way? <br /><br />It seems I can combine PDFs, and I can crop, but I can&#039;t optimize. Ironically, of all the things I need to do that is the single command I need more than anything. Optimizing a PDF is necessary to go from a print PDF to the &quot;web PDF&quot; that all of the vendors ask for and are so much easier to FTP. I can go from 3 GB of PDF to &lt;300 MB, and the process may only take a couple clicks, but it can take hours to run through a large enough book, and it almost entirely consumes a machine in the process. I have literally <i>thousands</i> of books to go through, and scripting this would save me tens of thousands of dollars each year. It&#039;s a perfect job for my automation Mac and it would be a huge win for me. But can I script it? No, because that would be too freakin&#039; logical, and that just reinforces my dislike of Adobe. It seems just when I think I have a solution at my fingertips, they have some reason why I can&#039;t do it properly or, in this case, at all.<br /><br />Essentially, even after all of these years and upgrades, there is no way I can reasonably (comprehensively) integrate Acrobat into my other well-established, <i>Adobe-centric</i> workflows, and that whole notion is just laughable. Everything is so seemingly well-integrated, yet Acrobat stands alone. I have Applescripts that are <i>thousands</i> of lines long that save me <i>countless</i> hours (at least thousands) of manual work each year. In one set of scripts I send calls to Adobe InDesign, Adobe Illustrator, Adobe Photoshop, the Mac OS Finder, and Microsoft Excel all seamlessly working together. The single gaping hole in all of that is Adobe Acrobat, and up until now I was able to work around Acrobat&#039;s severe scripting limitations.<br /><br />But now that eBooks have taken on a whole new priority, and all of the vendors that I work with take PDFs out of convenience, I desperately need to script the processing of PDFs. I don&#039;t have a choice here. I have to find a solution. Adobe is, in its own weird way, keeping me from doing my job in a reasonable fashion.<br /><br />Since I can&#039;t do what I want with Adobe&#039;s software &quot;out of the box&quot;, my last alternative is to call an Adobe rep and see if they have a <i>server</i>-based solution (ugh, there goes another point of IT independence) that can help move a lot of PDFs in a short period of time. I&#039;m sure this is going to cost <i>me</i> a whole more than it costs <i>them</i> to pay one of their programmers to write some code over the course of a week or so and they can just fix this for everybody.<br /><br />Perhaps that&#039;s been their plan all along.<br /><br /><hr /><br /><br /><b>1:</b>  Two blog postings come to mind: <a href="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090226-210402" target="_blank" >An Applescript and Adobe Rant</a> and <a href="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090422-184505" target="_blank" >Applescripting for Adobe and Kindergarten Scissors: A Study in Object Transformations Across Versions</a> <br /><br /><b>2:</b> These are assumptions on my part since I haven&#039;t actually used this command before. However, the Applescript dictionary entry for <tt>do script</tt> only shows this in Script Debugger:<br /><br /><b>do script</b>  <i>(verb)</i>Perform a JavaScript. (from the miscellaneous standards suite)<br /><br /><b>COMMAND SYNTAX</b> <br /><tt>do script</tt> <i>unicode text</i> ¬¨<br />     <tt>file</tt> <i>alias</i><br />     <br /><b>PARAMETERS</b> <br /><i>direct parameter</i>, optional, unicode text, The actual text of the JavaScript to perform.<br /><tt>file</tt>, optional, alias, The file containing the JavaScript to perform.<br /><br />I don&#039;t see any way to send arguments and return values. Do you?]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091113-060939">
		<title>Anthony Daniels in the Boston Globe on Music vs. Sports</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091113-060939</link>
		<description><![CDATA[<blockquote>I hope that children will be inspired to take up music. Why not? Enough baseball, enough football in this country! I cannot believe the yardage that is given to sports. How can they speak so long about a man hitting a ball?</blockquote><br /><br />Very well put. As much as I enjoy a good sporting event, I always thought skilled musicians of any genre were much more interesting. <br /><br />Link: <a href="http://www.boston.com/ae/music/articles/2009/11/13/anthony_daniels_aka_3_cpo_narrates_star_wars_in_concert_tomorrow_at_td_garden/" target="_blank" >‘Please don’t deactivate me’</a>]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091111-065037">
		<title>Bits and Bobs</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091111-065037</link>
		<description><![CDATA[All child-rearing books are comprehensive, detailed, and inapplicable to children.<br /><hr/><br />The guideline that 7-day-old babies are supposed to poop three to four times a day falls under the same context of the guideline that states I am supposed to eat five fruits and vegetables a day.<br /><hr/><br />Now I understand why new fathers respond with &quot;Everyone is doing great!&quot; when asked &quot;How are the Mom and new baby?&quot;. The reality is far too complex for casual conversation, the uninitiated would never have kids if they knew the truth, and nobody wants to be rude. This goes back to my personal rule of &quot;Don&#039;t ask the question for which you really don&#039;t want to know the answer.&quot;<br /><hr/><br />Pregnancy is a hassle, labor sucks, and birthing is gross, but they answer that fundamental question of &quot;Why am I here?&quot;. Parenting a child fulfills your part of the evolution equation.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091104-173248">
		<title>And then there were three...</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091104-173248</link>
		<description><![CDATA[Amelia Regan was brought forth unto this world on November 3 with a lovely head of golden blonde hair and what look like are going to be gorgeous blue eyes. But, perhaps I&#039;m a bit biased. Mom, Dad, and The Kid are doing just fine.<br /><br />Just to confirm the immediate suspicion, Amelia is named after the aviator <a href="http://en.wikipedia.org/wiki/Amelia_Earhart" target="_blank" >Amelia Earhart</a>. Names were tossed around that focused on women who kicked some butt during the time they were here, and Amelia Earhart certainly did enough of that. The name Amelia was my pick, and special thanks to Renee for allowing me the privilege. <br /><br /><img src="images/Amelia2.jpg" width="480" height="360" border="0" alt="" /><br /><br />Let the multi-tasking begin!<br /><br /><img src="images/Amelia3.jpg" width="480" height="360" border="0" alt="" />]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091024-170419">
		<title>I am not an idiot, but sometimes header files make me feel like one.</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091024-170419</link>
		<description><![CDATA[This gives me an error, but **** all if I can figure out how to fix it.<br /><br /><code><br />// Controller.h<br /><br />#import &lt;Foundation/Foundation.h&gt;<br /><br />@class Model;<br />@class AScene;<br /><br />@interface Controller : NSObject {<br />	Model *Model;<br />}<br />@property (nonatomic, retain) Model *Model;<br /><br />-(void)runScene;<br /><br />// Controller.m<br /><br />#import &quot;Controller.h&quot;<br /><br />#import &quot;Model.h&quot;<br />#import &quot;AScene.h&quot;<br /><br />@implementation Controller<br /><br />@synthesize Model;<br /><br />-(void)runScene {<br />	AScene *newScene = [[AScene alloc] init];<br />	newScene.controller = self;<br />}<br /><br />// RootScene.h<br /><br />#import &quot;cocos2d.h&quot;<br /><br />@class Controller;<br /><br />@interface RootScene : Scene {<br />	Controller *controller;<br />}<br /><br />@property (nonatomic, retain) Controller *controller;<br /><br />@end<br /><br />// RootScene.m<br /><br />#import &quot;RootScene.h&quot;<br /><br />#import &quot;Controller.h&quot;<br /><br />@implementation RootScene<br /><br />@synthesize controller;<br /><br />- (id) init<br />{<br />	self = [super init];<br />	if (self != nil) {<br />		//<br />	}<br />	return self;<br />}<br /><br />- (void) dealloc<br />{<br />	[controller release];<br />	[super dealloc];<br />}<br /><br />@end<br /><br />// AScene.h<br /><br />#import &quot;RootScene.h&quot;<br /><br />@class ALayer;<br />@class Model;<br /><br />@interface AScene : RootScene {<br /><br />}<br /><br />@end<br /><br />// AScene.m<br /><br />#import &quot;AScene.h&quot;<br />#import &quot;ALayer.h&quot;<br />#import &quot;Model.h&quot;<br /><br />@implementation AScene<br /><br />- (id) init<br />{<br />	self = [super init];<br />	if (self != nil) {<br />		ALayer *newLayer = [ALayer node];<br />		newLayer.model = controller.Model; // &lt;-- Request for member &#039;Model&#039; in something not a stucture or union<br />		// casting does not work here.<br />		[self addChild:statusScreenLayer];<br />	}<br />	return self;<br />}<br /><br />- (void) dealloc<br />{<br />	//<br />	[super dealloc];<br />}<br /><br />@end<br /><br />// RootLayer.h<br /><br />#import &quot;cocos2d.h&quot;<br /><br />@class Model;<br /><br />@interface RootLayer : Layer {<br />	Model *model;<br />}<br /><br />@property (nonatomic, retain) Model *model;<br /><br />@end<br /><br />// RootLayer.m<br /><br />#import &quot;RootLayer.h&quot;<br /><br />#import &quot;Model.h&quot;<br /><br />@implementation RootLayer<br /><br />@synthesize model;<br /><br />- (id) init<br />{<br />	self = [super init];<br />	if (self != nil) {<br />		//<br />	}<br />	return self;<br />}<br /><br />- (void) dealloc<br />{<br />	[model release];<br />	[super dealloc];<br />}<br /><br />@end<br /><br />// ALayer.h<br /><br />#import &quot;RootLayer.h&quot;<br /><br />@interface ALayer : RootLayer {<br />	<br />}<br /><br />-(void) draw;<br /><br />@end<br /><br />// ALayer.m<br /><br />#import &quot;ALayer.h&quot;<br /><br />@implementation ALayer<br /><br />-(void) draw {<br />	// draw based on state of the model<br />}<br /><br />@end<br /></code><br /><br />Oh, yeah, and I still haven&#039;t resolved my code signing problem from before.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091012-223855">
		<title>Why I killed my Facebook account</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091012-223855</link>
		<description><![CDATA[I could generate a massive list of all the reasons why I killed my Facebook account—it&#039;s a time sink, it&#039;s too open, there are too many damn widgets—and they would all be true. But, it really only came down to one.<br /><br />It seemed to me as though using Facebook to &quot;keep in touch with friends and family&quot; had the same feeling that Boston is still &quot;Irish&quot;. It is but it isn&#039;t. I hardly used my account except for a brief flurry of activity, and then I was more voyeur than participant with my odd little &quot;Philip Regan is...&quot; blurb at the top of the page. As with anything, one gets out of it what one puts into it, but there are two reasons why I wasn&#039;t putting anything into it.<br /><br />The first is that the Facebook &quot;news&quot; stream became Yet Another Inbox/RSS Feed to read and I felt as though I was reading about things that I normally wouldn&#039;t talk about in a face-to-face conversation or even in an email. I have 14 email addresses and over 150 RSS feeds I read reguarly already, so I stopped reading the last one to be added. Last hired, first fired, if you will.<br /><br />The second is that Facebook also became Yet Another Web Portal to maintain, and I&#039;m having a hard enough time keeping this one (that I actually <i>pay</i> for) filled with new content these days. So, I decided that it was better to just cut my account loose and walk away.<br /><br />Ultimately, I felt the whole experience was more than a little disingenuous, and not a true reflection of who I am and what I do. My friends and family, frankly, deserve better than that. The people who really know me know where I am. The people who want to know me can just come looking (it&#039;s not as though I&#039;m hard to find).<br /><br />So, it&#039;s nothing personal, my (formerly Facebook but still real) friends, I just needed to improve the signal-to-noise ratio and killing my Facebook account was the best way to jump start that process.<br /><br />I figure in the not-too-distant future, there is going to be another &quot;Philip Regan&quot; out there who won&#039;t believe his luck that <a href="http://www.facebook.com/philip.regan" target="_blank" >http://www.facebook.com/philip.regan</a> is actually available and snap it up. Good luck with that, mate, and I hope you have a better time with it than I did.<br /><br />Now, about those 14 emails addresses (you can have my RSS feeds when you pry them from my cold, dead fingers)...<br />]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091012-213137">
		<title>Why programming for the iPhone sucks...</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091012-213137</link>
		<description><![CDATA[Two words: codesign<br /><br />&quot;Signing code is fast, requires few resources, and...&quot; insert more justification text here.<br /><br />Fast? A 30 page introductory manual is not &quot;fast&quot;.<br /><br />&quot;Because the system will expect all code to be signed, any code that is not signed will not behave in the same manner as the majority of the programs on the user’s system.&quot;<br /><br />Apparently now it doesn&#039;t behave at all.<br /><br />&quot;CodeSign error: code signing is required for product type &#039;Application&#039; in SDK &#039;Device - iPhone OS 3.1.2&#039;&quot;<br /><br />Thanks for the error on compiling to the device when it worked ten gazillion times without so much as a warning in the simulator.<br /><br />I am not an idiot, but reading the pages and pages of documentation makes me feel like one. Heaven forbid something should go wrong because there is <i>nothing</i> to help you. This is the &quot;hate&quot; part of my love-hate relationship with Apple.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091005-194844">
		<title>A couple homemade Cocoa/Objective-C functions...</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091005-194844</link>
		<description><![CDATA[Nothing fancy, but my comfort level with Objective-C is growing and these were made totally on the fly. I&#039;m pleased and ever-so-slightly proud of them, I think because they were totally improvised, but now I&#039;m using them elsewhere...<br /><br />I had to create a bunch of dummy sample XML that went pretty deep in levels for an app I&#039;m working on. These two methods helped me out quit a bit. I was kind of surprised that Cocoa&#039;s NSXML class didn&#039;t have something like this already because this greatly reduced the amount of code I <i>could</i> have written.<br /><br /><code><br />- (NSXMLElement *)addTagWithName:(NSString *)tagName andText:(NSString *)tagText toParent:(NSXMLElement *)parent {<br />	NSXMLElement *newTag = [NSXMLElement elementWithName:tagName];<br />	[parent addChild:newTag];<br />	if (tagText != nil) {<br />		NSXMLNode *textNode = [NSXMLNode textWithStringValue:tagText];<br />		[newTag addChild:textNode];<br />	}<br />	return newTag;<br />}<br /><br />- (NSXMLNode *)addAttributeWithName:(NSString *)attributeName andValue:(NSString *)attributeValue toTag:(NSXMLElement *)tag {<br />	NSXMLNode *newAttribute = [NSXMLNode attributeWithName:attributeName stringValue:attributeValue];<br />	[tag addAttribute:newAttribute];<br />	return newAttribute;<br />}<br /></code><br /><br />In another app, I needed to create some random content. In REALbasic, I would create a Random object and use the InRange method. Simple stuff. Not so with Objective-C. All I could find was arc4random() as being the onluy really good random number function, but the syntax is everything that makes C so bad.<br /><br /><code><br />int random = arc4random() % maximumValue;<br /></code><br /><br />A modulus? Really? What the heck is that? To top that off, it will only return maximum numbers one <i>less</i> than the number passed. So, it returns really random numbers, but not in the expected range. This is the function that everything I read directed me towards being the preferred method. So, not content with bad syntax and and incorrect range, I rolled my own version of the Random.InRange function.<br /><br /><code><br />-(int)intInRangeMinimum:(int)min andMaximum:(int)max {<br />	if (min &gt; max) { return -1; }<br />	int adjustedMax = (max + 1) - min;<br />	int random = arc4random() % adjustedMax;<br />	int result = random + min;<br />	return result;<br />}<br /></code><br />]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091001-070012">
		<title>I can still see her bounding across the lawn now...</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry091001-070012</link>
		<description><![CDATA[<a href="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090828-052556" target="_blank" >The signs come down this weekend.</a><br /><br />Of the cats we have, Lizzie was the smallest, the cutest, and damn well knew it. Lizzie was the one that followed Renee and I around whenever we did anything around the house, even while I was mowing the lawn, and was always the first to catch a lap when someone sat down. She was the first to complain about being hungry and had to physically see you serving out food before she would eat, otherwise she would just sit there and complain about being hungry.<br /><br />While cleaning out the iPhone, I came across this photo which captures her in one of her typical places, Renee&#039;s sock drawer, usually in the morning while Renee gets ready for the day. Some days we would come home and find her fast asleep in there.<br /><br /><img src="images/Lizzie1.jpg" width="450" height="338" border="0" alt="" /><br /><br />I was never really a fan of pets, frankly, but I think I now have a better understanding of the bond that forms between them and their caretakers (&quot;owner&quot; really isn&#039;t the proper word for the relationship). We never really know what we have until it is gone. She is missed.<br />]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090914-205858">
		<title>Think of the danger while things are going smoothly.</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090914-205858</link>
		<description><![CDATA[Okay, so, this is my &quot;Sorry I haven&#039;t posted so long, but...&quot; post. I just want to make it clear that is not a neglected blog. Okay, it is, but it&#039;s not &quot;neglected&quot; in the absolute sense of the word. My Facebook page, <i>that <b>is</b></i> neglected, and will continue to be so.<br /><br />Here&#039;s the short reason why things have been quiet, and the only one you are going to get: Renee tore a muscle in her back that rides along the sciatic nerve, and the two have been playing off of each other for six weeks now. I won&#039;t get into details, because it&#039;s not hard to figure out what that feels like, and it had left her more or less incapacitated.<br /><br />So, that has left me to do just about everything there is to do around the house in addition to the iPhone application I signed on for. Not that I&#039;m complaining, I knew this day was going to arrive, but neither of us had planned on it coming this soon. Frankly, and I think Renee would agree here, <i>pregnancy f-ing sucks</i> and we still have six more weeks before The Kid is due to arrive. All non-essential projects, like writing on this blog, are now on hold until after family leaves after Thanksgiving.<br /><br />But, then, these pictures we got just last week make all of it totally worth it. Take your time, kiddo, there&#039;s still lots to do...<br /><br /><img src="images/IMAGES_14.JPG" width="318" height="401" border="0" alt="" /><br /><img src="images/IMAGES_59.JPG" width="333" height="400" border="0" alt="" /><br />]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090906-074522">
		<title>Things I&#039;ve learned about Xcode, Cocoa, and Objective-C since I started programming the iPhone  </title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090906-074522</link>
		<description><![CDATA[<ul compact>
	<li>When making a new Objective-C class always—<i>always</i>—insert <tt>init</tt> and <tt>dealloc</tt> definitions, place them at the top, <i>and keep them there</i>, even if you end up not using them. Consistency counts.</li>
	<li>The rules of memory management are simple, but their proper application requires patience and experience.</li>
	<li>There are generally two ways of doing something: how you think it should work, and how Apple expects you to do it. Don't fight the framework.</li>
	<li>Properties are a massive help with code readability because they seperate state from logic. If anyone tells you they are a waste of time, then they are just stubborn. (As a migrating <a href="https://secure.realsoftware.com/store/set_affiliate.php?id=121501" target="_blank" >REALbasic</a> user, these have been a huge help.)</li>
	<li>Setting up an iPhone as a "provisioned device" (whatever the hell that means) for testing is <i>truly</i>
 a pain in the ass. When all else fails, reboot the phone. I have to reboot my phone every time I connect it to test with.</li>
	<li>Once you truly understand how difficult it is, it all becomes a lot easier.<sup>*</sup></li>
</ul><hr/><br />* This comes with a big nod to <a href="http://www.stephenfry.com/2009/09/05/emerging-into-the-light/" target="_blank" >Douglas Adams via Stephen Fry</a>. That statement could be applied to so many things in life. I really miss Douglas Adams.]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090828-052556">
		<title>It&#039;s been a long week.</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090828-052556</link>
		<description><![CDATA[<img src="images/LizzieIsLost.jpg" width="480" height="621" border="0" alt="" />]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090816-170018">
		<title>if you are going to criticize something...</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090816-170018</link>
		<description><![CDATA[...at least make sure you&#039;re not writing something that will make you lose fundamental credibility from the start. From <a href="http://www.boston.com/news/nation/articles/2009/08/16/man_falls_30_feet_down_hole_in_nyc_sidewalk/?comments=all" target="_blank" > the comments section of a recent Boston.com article</a>...<br /><br /><blockquote><br />Inf wrote:<br />English teachers are rolling in their graves: &quot;Vincent Riggio was rescued by firefighters with just cuts and bruises Saturday afternoon.&quot; <br /><br />He was rescued with cuts and bruises? You&#039;d think ropes and a ladder might have been more effective.<br /><br />The written word is dying animal as long as the newsmedia allows stories like this to pass muster.<br />8/16/2009 4:12 PM EDT<br /></blockquote><br /><br /><blockquote><br />philipr wrote:<br />@Inf: &quot;The written word is dying animal...&quot;<br /><br />The written word is *a* dying animal...<br />8/16/2009 4:55 PM EDT<br /></blockquote><br /><br />I know the article was completely irrelevant to me, but I was looking for a small diversion from the Cocoa Touch hell I was in. I just could <i>not</i> let that one pass by...]]></description>
	</item>
	<item rdf:about="http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090815-073622">
		<title>WSJ: Format War Clouds E-Book Horizon</title>
		<link>http://personal.oatmealandcoffee.com/blog/index.php?entry=entry090815-073622</link>
		<description><![CDATA[My comments to <a href="http://blogs.wsj.com/digits/2009/08/14/format-war-clouds-e-book-horizon/" target="_blank" >an article posted by the WSJ about the upcoming eBook format wars</a>:<br /><br /><blockquote>I manage a production department for a book publisher, I specialize in technical prepress myself, and helping to lead my company&#039;s digital distribution initiatives.<br /><br />eBooks are now where computers were in the 1980s, where the market was fractured by brand and not by format, and by result there is too much vendor lock-in. Publishers have no choice but to go with a variety of formats. On the flip-side, publishers are now where the music industry was in the 1990s, but have the benefit knowing the music industry&#039;s mistakes and the result. If publishers do this transition wrong, they face the same fate as music and newspapers. <br /><br />Eventually a few formats will come out on top, there are already some also rans, and some eBook distributors are easier to work with than others. Historically, the ePub and MobiPocket formats have the best chance of coming out on top of the format wars, largely because they are open as well as cheap and easy to convert to; a publisher can take their content to a variety of vendors and convert for flat rates per book as opposed to by the page. <br /><br />Adobe, as much as they would like to be the market leader (who wouldn&#039;t?), isn&#039;t a slam dunk. There are already too many proprietary formats out there now, and that&#039;s not what the eBook market needs to succeed. Adobe would have to address and resolve the collective issues brought on by those formats, and I doubt they (or anyone) can. Besides, the technical prepress and IT groups at publishers are leary of Adobe&#039;s general product quality, and Adobe has far too much hubris and other products these days, they are The Other Microsoft after all, to deal with digital distribution effectively.</blockquote><br /><br />So, nothing new here that I haven&#039;t already said before on this site and my internal company blog at The Day Job. It was a great article by the WSJ, and I&#039;m glad to see that this has been picked up so early. <br /><br />I will add one more thing to this and just say that it is not going to be easy, but absolutely vital to the health of the industry, to find a sweet spot between good eBook reading devices that customers will like (I include both hardware and software in &quot;devices&quot;) and a format that is easy to move around to various vendors by publishers. I do feel that the first device to come out with true, 32-bit, color is going to be the real winner in the long run.<br /><br />On the device side, there are still too many self-serving interests. Why can&#039;t I view my Amazon Kindle books on my computer as well as my iPhone? On the publisher side of things, I wouldn&#039;t see any problems with this (it just means a wider audience), as long as content security is properly managed for the 80% of the population that won&#039;t try anything more than a casual attempt at content copying (&quot;Hey, that picture would look great on my web site.&quot;). It is seemingly pointless restrictions such as this that need to be addressed.<br /><br />Ultimately, I don&#039;t think eBook formats are where any real danger lies. The various markets involved—publishers, readers, and devices makers—will sort that out on their own. Even ISBNs are a non-issue for digital distribution (they can just go away). I do think, however, that the real battle is going to be about permissions and copyright. U.S. copyright law is ill-equipped to handle these new markets, a lot of fundamental flaws of copyright law will have to be addressed, and most everyone who creates or owns content that allow to be reused and re-permissioned simply have no conception about how this stuff works and impose the same senseless restrictions like the Kindle titles. Looking at it from the historical perspective, though, I don&#039;t have high hopes.<br /><br /><b>UPDATE:</b> Follow-up comments...<br /><br /><blockquote>@Tom; “We’ve had WAY more than enough of consumers getting screwed in format wars. If publishers are going to play this game with ebooks, then just steal them until these folks come to their senses.”<br /><br />And the alternative for publishers is…what exactly?<br /><br />If the publishers get into the format game instead of working with the myriad of vendors, they lock themselves into a very expensive gamble that more than likely won’t work (it will be too self-serving), and they lose just as much (if not more) than the consumer. Do that enough times and there won’t be any books left for you to steal. It sucks to be the consumer, but stealing content isn’t the answer because that benefits no one in the long run. Voting with your wallet is the way to go, especially now. Nobody likes the trial and error, but that’s where we are now until the market dictates otherwise.</blockquote>]]></description>
	</item>
</rdf:RDF>
