<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-19188870</id><updated>2009-10-13T05:32:46.905-05:00</updated><title type='text'>The Crown Jewels</title><subtitle type='html'>Er...somethin' like that.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19188870.post-3005359672393983684</id><published>2007-12-06T23:14:00.000-06:00</published><updated>2007-12-07T01:50:20.245-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='iChat'/><title type='text'>Introducing Logsessive</title><content type='html'>&lt;p&gt;So I’ve been using iChat since it debuted, and had the automatic chat logging turned on for most of that. So every time I send or receive an IM, it gets saved for posterity (for better or for worse).&lt;/p&gt;&lt;p&gt;When iChat first started logging chats, it was only naming them with the name of the other person and an incrementing number- chats with me are “Dan Kuehling #2”, “Dan Kuehling #3”, and on. Later on, I think in one of the versions of iChat for Panther, Apple started adding date and time stamps to the chats- “Dan Kuehling on 2007-12-06 at 22:35”. Now, in Leopard, Apple’s finally decided to do the smart thing and sort all of these chats into dated folders, so all of the chats for a particular day are in a folder named something like “2007-12-06”. &lt;/p&gt;&lt;p&gt;Now that’s great, but the obsessive part of me noticed one problem here: The logs that iChat created before Leopard are still sitting there by the thousands, numbered logs alongside dated logs alongside Leopard’s chat folders. &lt;/p&gt;&lt;p&gt;It’s ugly. It’s messy. It’s stupid. THERE MUST BE ORDER!&lt;/p&gt;&lt;p&gt;I had to fix it.&lt;/p&gt;&lt;p&gt;So I’d been meaning to learn &lt;a href="http://www.ruby-lang.org/" title="Ruby Programming Language"&gt;Ruby&lt;/a&gt;. It’s got some serious fans at &lt;a href="http://www.rentzsch.com/psig/" title="Programming Special Interest Group"&gt;PSIG&lt;/a&gt;, most notably the group’s young rock-star &lt;a href="http://violasong.com/" title="violasong.com"&gt;Victoria&lt;/a&gt; :-)&lt;/p&gt;&lt;p&gt;My task was clear- write a Ruby script to sort these free-floating logs into the folders. So I learned Ruby (or at least what Ruby I know now) the way I always do- Google enough to write a really, really simple little test (even just “Hello World” to start), then expand on it. Add  string handling and regexes (which work GREAT in Ruby, by the way), filesystem access with the Dir and File classes, and Date handling. Before I knew it, I’d written a script that walked the ~/Documents/iChats directory, read the date out of the filename, created a directory based on that date (if it doesn’t already exist), and move the log in there. Then, after some work on how to get Mac OS X to give up the real creation date of a file (&lt;code&gt;/usr/bin/mdls -name kMDItemFSCreationDate filename&lt;/code&gt; is the key), I got the numbered chat transcripts to take the plunge behind their dated counterparts.&lt;/p&gt;&lt;p&gt;So, without further ado, here’s my brilliant Ruby creation:&lt;/p&gt;&lt;p&gt; &lt;a href="http://homepage.mac.com/macprince/logsessive.zip"&gt;Logsessive&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The name derives from the how &lt;span style="font-weight: bold;"&gt;exc&lt;/span&gt;essive it looks to have all of those logs splayed across the  iChats directory and the &lt;span style="font-weight: bold;"&gt;ob&lt;/span&gt;sessive nature of wanting everything all neat and tidy. Logsessive!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It includes both the Ruby file and an easy GUI application created with &lt;a href="http://sveinbjorn.org/platypus" title="Sveinbjorn Thordarson's Website - Platypus"&gt;Platypus&lt;/a&gt;, if you’re just as obsessive as I am but don’t want to look at the Ruby. (But please do!)&lt;/p&gt;&lt;p&gt;So, on the other side of this, I’ve come out of this really digging Ruby. After I finished Logsessive, I was looking around with other things to do with it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-3005359672393983684?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/3005359672393983684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=3005359672393983684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/3005359672393983684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/3005359672393983684'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/12/introducing-logsessive.html' title='Introducing Logsessive'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-8549180315132148222</id><published>2007-11-28T04:32:00.000-06:00</published><updated>2007-11-28T18:11:48.085-06:00</updated><title type='text'>iChatting: iPhone SDK Already?</title><content type='html'>&lt;p&gt;A discussion that &lt;a href="http://pourhadi.com/"&gt;Dan Pourhadi&lt;/a&gt; and I had over iChat late last night.&lt;/p&gt;This strikes me as the perfect way to get started blogging about my opinions and insights about what's going on with Apple without a lot of effort. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; padding: 1em;"&gt;&lt;dt style="color: rgb(255, 0, 0);"&gt;Dan Kuehling:&lt;/dt&gt;&lt;dd&gt;So the word floating around is that Apple's releasing the iPhone SDK to some lucky ducks early&lt;/dd&gt;&lt;br /&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;i heard&lt;/dd&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;februarys not too far away&lt;/dd&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;and joswiak is talking up the sdk like it's the second coming of christ&lt;/dd&gt;&lt;br /&gt;&lt;dt style="color: rgb(255, 0, 0);"&gt;Dan Kuehling:&lt;/dt&gt;&lt;dd&gt;It is actually kind of a big thing- since the beginning, I always thought iPhone-as-platform would be huge&lt;/dd&gt;&lt;br /&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;of course&lt;/dd&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;i wrote a piece a whiles back about iphone not just being iphone, but being a whole new ... yeah platform&lt;/dd&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;cant remember the word i used&lt;/dd&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;whiles is actually a word&lt;/dd&gt;&lt;br /&gt;&lt;dt style="color: rgb(255, 0, 0);"&gt;Dan Kuehling:&lt;/dt&gt;&lt;dd&gt;Heh&lt;/dd&gt;&lt;dt style="color: rgb(255, 0, 0);"&gt;Dan Kuehling:&lt;/dt&gt;&lt;dd&gt;You know, I wonder&lt;/dd&gt;&lt;dt style="color: rgb(255, 0, 0);"&gt;Dan Kuehling:&lt;/dt&gt;&lt;dd&gt;What the saturation (as a percentage of capable iPods) of iPod games is&lt;/dd&gt;&lt;br /&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;good question&lt;/dd&gt;&lt;br /&gt;&lt;dt style="color: rgb(255, 0, 0);"&gt;Dan Kuehling:&lt;/dt&gt;&lt;dd&gt;Because I'd think that'd be a good lower bound for the acceptance of iPhone/ iPod touch apps&lt;/dd&gt;&lt;dt style="color: rgb(255, 0, 0);"&gt;Dan Kuehling:&lt;/dt&gt;&lt;dd&gt;If they're sold through iTunes&lt;/dd&gt;&lt;br /&gt;&lt;dt style="color: rgb(0, 0, 255);"&gt;Dan Pourhadi:&lt;/dt&gt;&lt;dd&gt;yeah&lt;/dd&gt;&lt;/div&gt;&lt;p&gt;A few things:&lt;/p&gt;&lt;p&gt;The select "lucky ducks"? Almost certainly Apple's strategic partners- Google, Yahoo, Microsoft,  and a very select few small Mac developers who are threatened with losing their heads if they speak a word of it to anyone.&lt;/p&gt;Why didn't they do this before? Why the "Web apps are sweet" nonsense? I think there are a few reasons:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Apple's dev tools probably sucked.&lt;/span&gt; I have to imagine that Apple's own tools for development on the iPhone were something cobbled together out of bubble gum and paper clips, just enough to get the stuff written and the iPhone shipped. Then, once 1.0 is out the door, they got the time to forge better tools that might be fit for 3rd party consumption.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;They couldn't figure out how to secure it.&lt;/span&gt; The iPhone, as it stands right now, runs everything as root.  Yeah, really. Keeping an app in a sandbox that keeps it away from the GSM radio without wasting a ton of processor cycles and RAM on something like a Java virtual machine is a fairly tall order. I'm very curious to see what they've come up with for solving this problem. I would hope that it doesn't restrict hardware features unnecessarily ("No, you can't use the accelerometer! Not yours!")&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The hackers have done some really impressive stuff.&lt;/span&gt; Apple &lt;span style="font-style: italic;"&gt;completely&lt;/span&gt; underestimated the drive and ingenuity of the iPhone hacker crowd. Just a few examples:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Navizon- GPS-like location via cell tower and WiFi hotspot mapping&lt;/li&gt;&lt;li&gt;TapTapRevolution- tap on the screen in time with your songs&lt;/li&gt;&lt;li&gt;Labyrinth- uses the accelerometer to guide a ball through a maze, like those wooden boxes we used to play with as kids&lt;/li&gt;&lt;/ul&gt;Some pretty awesome stuff, really. The folks at Apple finally realized that the insanely clever folks working against them actually had something there.&lt;br /&gt;&lt;/ol&gt;By the way- looking back on Jobs's comment about rogue phone "taking down the AT&amp;amp;T west coast network", I sort of see what he means. Yes, you can install software on your Treos and whatnot, but if the iPhone hits an iPod-like level of popularity (and it certainly looks like it's going that way), malware for the iPhone will be a huge problem. And yes- hundreds of thousands of iPhones all set to dial a 1-900 phone sex number at the same time would certainly be capable of bringing down part of the AT&amp;amp;T network, and bring in lots of dough for the scammer, to boot.&lt;br /&gt;&lt;br /&gt;Anyway, I can't wait for the iPhone SDK to show up and the iPhone software that's out there now to "go legit". Because I have to believe that what we've seen so far is only the beginning...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-8549180315132148222?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/8549180315132148222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=8549180315132148222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/8549180315132148222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/8549180315132148222'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/11/ichatting-iphone-sdk-already.html' title='iChatting: iPhone SDK Already?'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-7836962128224017251</id><published>2007-11-10T19:07:00.000-06:00</published><updated>2007-11-10T23:01:39.099-06:00</updated><title type='text'>Leopard presentation</title><content type='html'>Hey, folks. If you're here, it's probably because of my presentation at the NorthWest of Us today (2007-11-10). Though it was hard work, it was really worth it in the end. &lt;br /&gt;&lt;br /&gt;Here's the Keynote '08 file of the presentation:&lt;br /&gt;&lt;a href="http://homepage.mac.com/macprince/leopard.zip"&gt;http://homepage.mac.com/macprince/leopard.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's the PDF:&lt;br /&gt;&lt;a href="http://homepage.mac.com/macprince/leopard.pdf"&gt;http://homepage.mac.com/macprince/leopard.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-7836962128224017251?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/7836962128224017251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=7836962128224017251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/7836962128224017251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/7836962128224017251'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/11/leopard-presentation.html' title='Leopard presentation'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-8462744559113312491</id><published>2007-05-27T16:05:00.000-05:00</published><updated>2007-05-27T21:54:51.623-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Terror! (Or is that "Terr"?)</title><content type='html'>So, even &lt;span style="font-weight: bold;"&gt;further&lt;/span&gt; back, an &lt;a href="http://homepage.mac.com/macprince/iblog/"&gt;entire blog ago&lt;/a&gt;, in fact, I hacked together a &lt;a href="http://homepage.mac.com/macprince/iblog/C1070661379/E1301035980/index.html"&gt;little PHP script&lt;/a&gt; to display your own version of the government's terror alert level. I had it up on &lt;a href="http://www.pourhadi.com/"&gt;Dan Pourhadi's site&lt;/a&gt; for a while, until he switched hosts or something and lost it. It sat in the Software Projects folder on my desktop, gathering virtual dust. About a week ago, I had been playing around with regexes and rediscovered this gem, and set about to rewriting it, basically from the ground up.&lt;br /&gt;&lt;br /&gt;The changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;1 regular expression performed, instead of 2 in the best case, and 6 in the worst case.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;file_get_contents&lt;/code&gt; instead of &lt;code&gt;implode()&lt;/code&gt;-ing a &lt;code&gt;file()&lt;/code&gt;&lt;/li&gt;&lt;li&gt;A simple &lt;code&gt;switch()&lt;/code&gt; construct instead of a chain of &lt;code&gt;if/elseif&lt;/code&gt;s with regexes&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Optimized the order of the switch cases by sorting them by how likely they are to come up&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So it's optimized quite a bit, and works wonderfully. Then, just today, I made a rather interesting discovery. Some time ago, &lt;a href="http://www.mivox.com/"&gt;Mivox&lt;/a&gt; used my code (with attribution!) to produce &lt;a href="http://rant.mivox.com/archives/000221.html"&gt;her own version&lt;/a&gt; with her own graphics, and used the &lt;a href="http://www.libgd.org/Main_Page"&gt;GD library&lt;/a&gt; in PHP to allow the script to output an image directly. That allows you to reference the PHP script as the &lt;code&gt;src&lt;/code&gt; of an &lt;code&gt;img&lt;/code&gt; tag, instead of having to &lt;code&gt;include&lt;/code&gt; the script.&lt;br /&gt;I found that to be a fabulous idea, so after downloading Xcode Tools to compile GD to test it out, I implemented that change in my new version of the script. So:&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://homepage.mac.com/macprince/terroralert/terrorimg.php.zip"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://homepage.mac.com/macprince/terroralert/terror.php.zip"&gt;Terror.php, Include Version&lt;/a&gt;&lt;ul&gt;&lt;li&gt;To be included using a PHP &lt;code&gt;include()&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Runs on a server with only a PHP installation&lt;/li&gt;&lt;li&gt;May be slightly faster&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://homepage.mac.com/macprince/terroralert/terrorimg.php.zip"&gt;Terror.php, Image Version&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To be referenced from an HTML &lt;code&gt;img&lt;/code&gt; tag&lt;/li&gt;&lt;li&gt;Runs on a server with PHP and the GD image library installed&lt;/li&gt;&lt;li&gt;Much easier to reference, especially from outside&lt;/li&gt;&lt;/ul&gt;Instructions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the script of your choice&lt;/li&gt;&lt;li&gt;Upload it to the desired location on your PHP-compatible server. Remember, the Image Version requires the GD library installed on your server&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In the same directory, upload PNG format images:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;severe.png&lt;/li&gt;&lt;li&gt;high.png&lt;/li&gt;&lt;li&gt;elevated.png&lt;/li&gt;&lt;li&gt;guarded.png&lt;/li&gt;&lt;li&gt;low.png&lt;/li&gt;&lt;li&gt;(Image Version only) error.png&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;Then, just reference the script in your pages:&lt;br /&gt;Include Version:&lt;br /&gt;&lt;code&gt;&amp;lt;?php include("terror.php"); ?&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Image Version:&lt;br /&gt;&lt;code&gt;&amp;lt;img src="terror.php"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As the comments in the scripts say, if you use the script on your site, please email me and let me know; my email address is in the comments.&lt;br /&gt;&lt;br /&gt;In the near future, I may be posting a few image sets for use with these scripts, since I see that Mivox is a fan of the (incomplete) &lt;a href="http://pbskids.org/dragontales/"&gt;Dragon Tales&lt;/a&gt; set.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-8462744559113312491?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/8462744559113312491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=8462744559113312491' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/8462744559113312491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/8462744559113312491'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/05/terror-or-is-that-terr.html' title='Terror! (Or is that &quot;Terr&quot;?)'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-6001434955956220448</id><published>2007-05-26T02:38:00.000-05:00</published><updated>2007-05-26T02:53:07.025-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='companies'/><category scheme='http://www.blogger.com/atom/ns#' term='ATT'/><category scheme='http://www.blogger.com/atom/ns#' term='Cingular'/><title type='text'>AT&amp;Tingular?</title><content type='html'>So, way way back, I posted about &lt;a href="http://macprince.blogspot.com/2005/11/makes-me-dizzy.html"&gt;Cingular becoming AT&amp;T&lt;/a&gt; again. Well, it's finally happening, and I still don't like it. There's no "AT&amp;amp;T Mobility" web site, just &lt;a href="http://www.cingular.com/"&gt;Cingular.com&lt;/a&gt;. The AT&amp;T globe is popping up everywhere, but everything's still orange, not blue. One of my professors (Hi, Prof. Clark!) got a new KRZR with a Cingular logo on it from a "Cingular is now The New AT&amp;amp;T" store, with a SIM card that reports AT&amp;T on the screen.&lt;br /&gt;&lt;br /&gt;Wouldja just hurry up and switch it, AT&amp;amp;T? Nobody who doesn't remember the Ma Bell thing is going to hate you more for changing everything really quick, and those who do remember aren't going to hate you any less. No loss, that I can see.&lt;br /&gt;&lt;br /&gt;(Yes, I'm still somewhat jaded about the "baby Bells forming together like &lt;a href="http://en.wikipedia.org/wiki/Voltron"&gt;Voltron&lt;/a&gt;" thing. But if they gave me an &lt;a href="http://www.apple.com/iphone/"&gt;iPhone&lt;/a&gt;, I could be persuaded to forget...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-6001434955956220448?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/6001434955956220448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=6001434955956220448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/6001434955956220448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/6001434955956220448'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/05/at.html' title='AT&amp;Tingular?'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-3222514290658968372</id><published>2007-05-26T02:24:00.000-05:00</published><updated>2007-05-26T02:32:08.425-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='case'/><category scheme='http://www.blogger.com/atom/ns#' term='cleaning'/><category scheme='http://www.blogger.com/atom/ns#' term='organizing'/><category scheme='http://www.blogger.com/atom/ns#' term='CDs'/><title type='text'>Clearing House</title><content type='html'>Behold, the group of old/useless CDs that were purged from my CD case:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_7CKZnHlXpRw/RlfhQdGv1PI/AAAAAAAAAA0/FUql---tAEw/s1600-h/IMG_0948.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_7CKZnHlXpRw/RlfhQdGv1PI/AAAAAAAAAA0/FUql---tAEw/s320/IMG_0948.JPG" alt="" id="BLOGGER_PHOTO_ID_5068767578435867890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;del&gt;21&lt;/del&gt; 22 in all.&lt;br /&gt;&lt;br /&gt;Slowly, ever so slowly, I'm getting my stuff cleaned up and organized.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-3222514290658968372?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/3222514290658968372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=3222514290658968372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/3222514290658968372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/3222514290658968372'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/05/clearing-house.html' title='Clearing House'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_7CKZnHlXpRw/RlfhQdGv1PI/AAAAAAAAAA0/FUql---tAEw/s72-c/IMG_0948.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-8085905472648171537</id><published>2007-05-25T00:55:00.000-05:00</published><updated>2007-05-25T01:17:40.626-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bills'/><category scheme='http://www.blogger.com/atom/ns#' term='house'/><category scheme='http://www.blogger.com/atom/ns#' term='died'/><category scheme='http://www.blogger.com/atom/ns#' term='grandma'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='school'/><category scheme='http://www.blogger.com/atom/ns#' term='girlfriend'/><category scheme='http://www.blogger.com/atom/ns#' term='dumped'/><title type='text'>Every 5 Months...</title><content type='html'>...whether I need it or not.&lt;br /&gt;&lt;br /&gt;Remember, no promises of regular updates were made.&lt;br /&gt;&lt;br /&gt;So, what's been going on with me...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;School:&lt;/span&gt; Plugging along, headed toward that I.T. degree. One more semester to go. Last semester was my first non-A grades at Roosevelt--2 Bs, in Network Design and Distributed Databases. I didn't try very hard in either one, and still pulled off the B. Nice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Work&lt;/span&gt;: The lab aides are now part of the Educational Technology Resource Center (read: AV department), and the labs are basically no-man's land. ETRC is "don't know", and IT is "don't care". Nothing gets fixed, lab policies go out the door. But it's $8.24/hr to sit and surf on a fat pipe. So I'm staying where I am for now.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Girlfriend dumped me:&lt;/span&gt; Okay, so I really screwed up big time, but she won't even talk to me about what happened between us. If she's going to be that petty about it, I don't see what else I can do. It hurt like hell, don't get me wrong-- it still does. But if she can't get over her own...pride? self-importance? feelings for me? ...enough to talk to me like an adult just once, then I don't see why I should pound me head against the wall trying to get her back.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Grandma died:&lt;/span&gt; Not a huge surprise-- she was 81  years old and very sick. (Emphysema  and lung cancer). Man, though, when they say you can't ever be ready for it, they're not wrong. The thing that's going to haunt me is the fear in my mom's voice when she screamed to me "Are they coming!?" (the paramedics) because she knew her mother was dying.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;House still isn't sold: &lt;/span&gt;Downturn in the market means downturn in the market, no matter the real estate agent. I think that my mom should just sel the house for whatever she can get for it, take the hit and stop the ever-mounting credit card bills. She don't listen to me, though.&lt;br /&gt;&lt;br /&gt;Yeah, that's basically been life. I haven't gone on a shooting spree or offed myself yet, so I figure things must be going okay.&lt;br /&gt;&lt;br /&gt;I do post musings, at least daily, on my &lt;a href="http://twitter.com/macprince"&gt;Twitter&lt;/a&gt; stream. I'm going to try to not let this blog fade out, but what happens kinda happens, y'know?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-8085905472648171537?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/8085905472648171537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=8085905472648171537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/8085905472648171537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/8085905472648171537'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/05/every-5-months.html' title='Every 5 Months...'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-3788317741322885906</id><published>2007-01-10T18:34:00.000-06:00</published><updated>2007-01-12T13:21:38.432-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RADAR'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='widgets'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>iPhoneiPhoneiPhoneiPhone!!!</title><content type='html'>So, we're all officially feeling the post-keynote RDF buzz, and for &lt;a href="http://www.apple.com/iphone/"&gt;a damn good reason&lt;/a&gt;.&lt;br /&gt;My thoughts, no particular order:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;My overall reaction? "OMGOMGOMGIWANTONEIWANTONE!!!111eleventy"&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;This will entirely turn the smartphone market on its ear and turn them from executive toys to something that soccer moms carry. Nokia, Motorola, RIM and the like have the right to be scared.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Will I be able to turn off EDGE and use only Wi-Fi for data? Cingular's data fees are huge, especially in pay-per-use, and with Wi-Fi hotspots everywhere, I'll take the free option, thanks. (I suppose I can always call Cingular or hop on their account manager site and get rid of the pay-per-use data on my plan.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;What's the price if I won't/can't/don't lock myself in to another 2 years on Cingular? Some have said that it won't be available at &lt;span style="font-style: italic;"&gt;any&lt;/span&gt; price without a 2 year contract, and others have wondered how Apple+Cingular will force a contract if the phone is purchased at the Apple Store. Maybe I'll get lucky and they'll decide that $499/$599 are the prices&lt;span style="font-weight: bold;"&gt; before&lt;/span&gt; the two year contract, and will come down to $299/$399 after the activation discount. It would make the iPhone more price-competitive with the other smartphones out there, but I wouldn't bet the farm on it.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I'm wondering how &lt;a href="http://www.apple.com/iphone/phone/?feature=feature02"&gt;Visual Voicemail&lt;/a&gt; works, exactly. My theories:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The brute-force option is the iPhone gets the voicemail alert silently, secretly dials into the user's voicemail and records the message, then presents its own voicemail notification. However, that seems very hack-ish and lazy, and wouldn't require this deep level carrier integration that Apple's bragging about.&lt;/li&gt;&lt;li&gt;Another option, and the one I'm most dreading, is that it's data service-based. As in, the network pushes down voicemail messages as audio files over EDGE which are then stashed on the phone. Note my aversion to cellular data above. (Sub theory: This bit of data access is free as part of your iPhone's ordinary service plan?)&lt;/li&gt;&lt;li&gt;Yet another option is that they have some way using GSM only to random access your voicemail messages that doesn't use data, (IMO the best option)  but how this would work is not something I've got figured out yet.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Lack of user-installable applications/widgets would indeed be a bummer, and may or may not be a deal-killer for me. I do, however, very much like &lt;a href="http://rentzsch.com/notes/iPhoneVsTreo"&gt;Jon's theory&lt;/a&gt; on the matter, with one twist. The difference between widgets and applications in the context of the iPhone seems to be almost nil. The Stocks "widget" shown on the iPhone seems to be a straight port from the Dashboard version, and the Weather "widget" seems to only be modified to fit the screen better and allow for multiple locations. Remember that &lt;a href="http://www.widgetdeveloper.com/viewtutorial.php?id=2&amp;t=Embedding%20Cocoa%20Objects%20in%20Dashboard%20Widgets"&gt;Dashboard widgets can embed Cocoa objects&lt;/a&gt;, allowing them much more power than simple HTML, CSS and JavaScript. (Heck, who knows how much of the iPhone interface is written as "widgets" as it is?) So Apple may, eventually, allow developers to write "widgetlications" (my term)  for the iPhone, get them signed and put them on the iPhone one way or the other. In fact, the signing may or may not be required, if Apple's got Cingular in the corporate headlock that they seem to. In any event, I followed &lt;a href="http://rentzsch.com/cocoa/iphoneIndieAppDevelopment"&gt;Jon's lead&lt;/a&gt; and filed a bug report, &lt;a href="rdar://problem/4918087"&gt;Radar 4918087&lt;/a&gt;. Here's what's inside, in case anyone wants to use it as the basis for their filing:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;/blockquote&gt;&lt;blockquote style="font-style: italic;"&gt;Title: Ability to Develop/Deploy Applications for iPhone&lt;br /&gt;Summary:&lt;br /&gt;Developers should be able to develop, code and deploy their own applications for the iPhone using Xcode. The iPhone's rich software environment and extensive hardware and communications capabilities open up a world of possibilities for third-party developers.&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;see rdar://problem/4917169&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-3788317741322885906?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/3788317741322885906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=3788317741322885906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/3788317741322885906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/3788317741322885906'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/01/iphoneiphoneiphoneiphone.html' title='iPhoneiPhoneiPhoneiPhone!!!'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-1174095417376445048</id><published>2007-01-10T18:09:00.000-06:00</published><updated>2007-01-10T18:30:10.867-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chicago'/><category scheme='http://www.blogger.com/atom/ns#' term='piracy'/><category scheme='http://www.blogger.com/atom/ns#' term='signal'/><category scheme='http://www.blogger.com/atom/ns#' term='television'/><title type='text'>Greatest Risk, Greatest Reward</title><content type='html'>I just learned about &lt;a href="http://en.wikipedia.org/wiki/Max_Headroom_Pirating_Incident"&gt;this&lt;/a&gt; &lt;a href="http://winstonengle.tripod.com/chicagowho/maxhead.htm"&gt;fascinating&lt;/a&gt; &lt;a href="http://www.etext.org/CuD/TNS/tns14"&gt;little&lt;/a&gt; &lt;a href="http://www.etext.org/CuD/TNS/tns15"&gt;piece&lt;/a&gt; of Chicago television history.&lt;br /&gt;&lt;br /&gt;This is one of those things that's amazing and creepy at the same time. Amazing that he was able to pull it off twice (the second time, uninterrupted by the station) and that he's never been caught. As for the creepy, well, just &lt;a href="http://www.youtube.com/watch?v=OnDYssFcNxc"&gt;watch for yourself&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My hat's off to you, though, Max Headroom dude, wherever you are. Very cool trick, even if it was illegal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-1174095417376445048?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/1174095417376445048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=1174095417376445048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/1174095417376445048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/1174095417376445048'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2007/01/whiskey-tango-foxtrot.html' title='Greatest Risk, Greatest Reward'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-114428811557274880</id><published>2006-04-05T20:47:00.000-05:00</published><updated>2006-04-05T20:48:35.573-05:00</updated><title type='text'>Webcomic Viewers on Mac OS X, Round II</title><content type='html'>OK, so don't ask me what I did, but somehow, iComic 3.0 is running fine for me now, and it has for the past few months.&lt;br /&gt;&lt;br /&gt;*shrug*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-114428811557274880?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/114428811557274880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=114428811557274880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/114428811557274880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/114428811557274880'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2006/04/webcomic-viewers-on-mac-os-x-round-ii.html' title='Webcomic Viewers on Mac OS X, Round II'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-114428769069300961</id><published>2006-04-05T20:38:00.000-05:00</published><updated>2006-04-05T20:42:15.230-05:00</updated><title type='text'>Huh...what?</title><content type='html'>So much for that whole "I'm going to post regularly, honest!" thing. I'm not even going to try to say that again, because I think we both know what it really means.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-114428769069300961?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/114428769069300961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=114428769069300961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/114428769069300961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/114428769069300961'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2006/04/huhwhat.html' title='Huh...what?'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-113581879281196497</id><published>2005-12-28T19:13:00.000-06:00</published><updated>2006-01-25T20:41:06.423-06:00</updated><title type='text'>Webcomic Viewers on Mac OS X</title><content type='html'>For the longest time, I was a faithful user of &lt;a href="http://ruxp.net/"&gt;Steve Saxon&lt;/a&gt;'s &lt;a href="http://ruxp.net/iComic/default.asp"&gt;iComic 3.0&lt;/a&gt;. It worked great to get all of the comics I like- &lt;a href="http://www.dilbert.com/"&gt;Dilbert&lt;/a&gt;, &lt;a href="http://www.garfield.com/"&gt;Garfield&lt;/a&gt;, &lt;a href="http://www.foxtrot.com/"&gt;Foxtrot&lt;/a&gt;, and &lt;a href="http://www.penny-arcade.com/"&gt;Penny Arcade&lt;/a&gt;. But alas, with the arrival of Tiger came iComic crashing on startup nine times out of ten. Oh, but Steve announced that he was working on a new spiffy version of iComic that worked with Apple's new buzzword-thy Dashboard environment. So I pulled down a copy of &lt;a href="http://www.ruxp.net/iComic/dashboard.asp"&gt;that&lt;/a&gt; and installed it. It worked okay, albeit quite slow. It even recognized the vast archives I had amassed. But then I began adding all of my comics to my Dashboard and I noticed one slight problem- there's no way to consolidate multiple comics into one copy of the widget, or to collapse the copies of the widget to make them smaller. So with just the 4 comics I currently read (not counting ones I want to pick up, like &lt;a href="http://www.cad-comic.com/"&gt;Ctrl-Alt-Delete&lt;/a&gt;), my screen is well past completely full. And unless someone out there wants to give me a &lt;a href="http://www.engadget.com/2005/12/24/gift-guide-dell-2405fpw/"&gt;Dell 2405FPW&lt;/a&gt; as a late Christmas present, that's not terribly practical. So iComic is out.&lt;br /&gt;I remembered another piece of software, &lt;a href="http://www.spiny.com/"&gt;Spiny Software&lt;/a&gt;'s &lt;a href="http://www.spiny.com/comictastic/"&gt;Comictastic&lt;/a&gt;. I'd used it to mass-download the archives of Garfield back when uComics had the entire Garfield collection (back to 1978!) up for the Garfield movie. But I'd dumped the resulting files into iComic because, well, iComic was free and Comictastic was $15. I downloaded a fresh copy of Comictastic and tried it out. Hey, this is really nice! Well worth the shareware fee!   Now I just have to....damn. Between the version of Comictastic I used and 2.3.1, the latest version, Jan changed the comic cache format from an iComic-like folder of date-named JPEGs and GIFs to a folder of .ctcache files...packages that include the comic image file and a bunch of other extraneous data related to the strip. So close and yet so far!&lt;br /&gt;So here's the deal, Comictastic folks: give us back the old cache format (it can stay in the new location, but back to the old "folder full of image files" way of storing it) or, better yet, code in an option to either have the extra information or not, and I'll gladly buy a license code for &lt;span style="font-weight: bold;"&gt;twice your asking price&lt;/span&gt;.&lt;br /&gt;Alternative idea: iComic is now open source. iComic stores its' extra data inside the image file's EXIF data. Pick apart how they did that and get the best of both worlds. &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-113581879281196497?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/113581879281196497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=113581879281196497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/113581879281196497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/113581879281196497'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2005/12/webcomic-viewers-on-mac-os-x.html' title='Webcomic Viewers on Mac OS X'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-113277015639588099</id><published>2005-11-28T20:35:00.000-06:00</published><updated>2005-11-28T20:43:01.873-06:00</updated><title type='text'>Apple Store Link Bookmarklet</title><content type='html'>&lt;a href="http://rentzsch.com/"&gt;Jon&lt;/a&gt; posted a note about how hard it is to &lt;a href="http://www.rentzsch.com/notes/bookmarkingAppleStorePages"&gt;bookmark a page&lt;/a&gt; on the Apple Store. Based on his findings, I threw together a little bookmarklet that will transform an Apple Store session URL to a nice, tidy bookmarkable URL:&lt;br /&gt;&lt;br /&gt;&lt;a href="javascript:var i = document.location.href.indexOf('nplm=');if(i == -1){window.alert(&amp;quot;Sorry. This is not a valid Apple Store product page.&amp;quot;);}else{i = i + 5;var part = document.location.href.substr(i, i+10);document.location.href = &amp;quot;http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore?productLearnMore=&amp;quot; + part;}"&gt;&lt;span style="text-decoration: underline;"&gt;Apple Store Links&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;&lt;/span&gt;&lt;a style="color: rgb(204, 204, 204);" href="javascript:var i = document.location.href.indexOf('nplm=');i = i + 5;document.location.href = &amp;quot;http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore?productLearnMore=&amp;quot; + document.location.href.substr(i, i+10);"&gt;&lt;/a&gt;&lt;br /&gt;Just stick that in your bookmarks bar, and click on it at the product page. The page will refresh with your bookmarkable URL shown this time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Fixed it! I guess reading from &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; writing to document.location.href at the same shot wasn't such a great idea. ;-) Now it works in Safari, Firefox, and even Internet Explorer, if you're, y'know...a masochist or something.&lt;br /&gt;&lt;br /&gt;Oh, and props to &lt;a href="http://www.squarefree.com/"&gt;Jesse Ruderman&lt;/a&gt; for his rockin' &lt;a href="http://www.squarefree.com/jsenv/"&gt;JavaScript Dev Environment&lt;/a&gt; and &lt;a href="http://www.squarefree.com/shell/"&gt;JavaScript Shell&lt;/a&gt;, without which writing this bookmarklet would've been a heck of a lot harder.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update 2:&lt;br /&gt;&lt;/span&gt;I'd intended to mention the trick that my bookmarklet uses to get the part number that it appends to the URL that Jon so helpfully provided. It turns out that the session URLs also contain the part number in a URL parameter called "nplm". For example:&lt;br /&gt;http://store.apple.com/1-800-MY-APPLE...?mco=F6E8EACE&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&amp;nplm=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;M9779LL%2FA&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;My bookmarklet searches for that "nplm=" and grabs the next 11 characters after it. The slash in the part number is even already URI encoded for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-113277015639588099?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/113277015639588099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=113277015639588099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/113277015639588099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/113277015639588099'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2005/11/apple-store-link-bookmarklet.html' title='Apple Store Link Bookmarklet'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19188870.post-113261072372594483</id><published>2005-11-21T15:56:00.000-06:00</published><updated>2005-11-21T16:05:23.733-06:00</updated><title type='text'>Makes Me Dizzy...</title><content type='html'>OK, so yesterday my mom, my brother and I all got new cell phones on Cingular. This way, we'll all be on one family plan and be able to call each other as much as we like, I can call Britt as much as I like, it'll all be gravy. Got really cool phones, too.&lt;br /&gt;&lt;br /&gt;I come to find out today that &lt;a href="http://www.usatoday.com/tech/news/techpolicy/business/2005-11-20-cingular-att_x.htm"&gt;Cingular is becoming AT&amp;T&lt;/a&gt; (again?)&lt;br /&gt;&lt;br /&gt;Why can't these companies just pick &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;one name&lt;/span&gt;&lt;/span&gt; and stick with it? I found out not too long ago that BankOne, who I'd just moved my checking account to, was becoming Chase.&lt;br /&gt;&lt;br /&gt;Cingular: take some advice- stay as Cingular. Leave all this AT&amp;amp;T (Wireless or not) nonsense behind, keep playing with that quirky little orange dude and don't change your name for at least two more years. Please?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19188870-113261072372594483?l=macprince.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macprince.blogspot.com/feeds/113261072372594483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19188870&amp;postID=113261072372594483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/113261072372594483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19188870/posts/default/113261072372594483'/><link rel='alternate' type='text/html' href='http://macprince.blogspot.com/2005/11/makes-me-dizzy.html' title='Makes Me Dizzy...'/><author><name>MacPrince</name><uri>http://www.blogger.com/profile/12251305888736119914</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03887562328264698690'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>