<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19016978</id><updated>2011-12-14T19:01:43.472-08:00</updated><category term='app'/><category term='osx spotlight quicksilver leopard'/><category term='flash packager tutorial iphone iOS'/><category term='android'/><category term='iPhone'/><category term='iOS'/><category term='as3 designPattern'/><category term='iPad'/><category term='gpg pgp osx security'/><category term='FCE finalCutExpress flipMino'/><category term='security browser firefox camino keychain'/><title type='text'>Brain Dump</title><subtitle type='html'>Thoughts on my latest research, recently discovered tricks and so on.&lt;br&gt;
Flash, PHP, MySQL, Linux and all things Internet.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19016978.post-2437072012352636595</id><published>2011-03-01T11:02:00.002-08:00</published><updated>2011-03-01T12:13:37.827-08:00</updated><title type='text'>Why would I really need a tablet computer?</title><content type='html'>I've been considering the question, "why would I or anyone really need a tablet?" for about a year now. I'd like to share my own personal experience and observations on the topic which might stand in contrast to (or incomparable isolation to) &lt;a href="http://blogs.itbusiness.ca/2011/03/are-tablets-practical-or-impractical/"&gt;posts like this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll give you the short answer: I don't need one at all but I'm not the target market.&lt;br /&gt;&lt;br /&gt;I'm an interactive developer and designer. I own and actively use my iPhone and MacBook Pro laptop. Last year when iPad came out, I had been thinking how it would be cool to have one, because they're sexy, and they've got a couple of advantages over my iPhone and MacBook Pro:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Instantly on&lt;/li&gt;&lt;li&gt;Easier to sit in an armchair and read some blog postings, read email and write short replies&lt;/li&gt;&lt;li&gt;Read digital books in bed and not cut trees down to do it (I acknowledge the pollution caused by producing the devices though, not sure which is worse in the long run)&lt;/li&gt;&lt;li&gt;A bit easier because of size and weight to use on an airplane for reading and movie watching.&lt;/li&gt;&lt;li&gt;Since I'm a developer, I can make apps for it.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;For the lowest model though, at over $500 it was pretty hard to justify the expense. Basically, yeah it would be kind of nice, but I really can do all that I need and more with the devices I have now. Luckily, I ended up winning one at a conference and have had a year now to play with it and think more about the question.&lt;br /&gt;&lt;br /&gt;I've learned that it works very well, it's &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; cool and no, as a consumer I really don't need it. In fact, I almost never use it, preferring instead to use my iPhone (which is always with me in my pocket) and my laptop.&lt;br /&gt;&lt;br /&gt;Here's where I think a lot of reviewers have the wrong perspective on tablets though: If you're an avid blog reader, or especially if you yourself are a blogger, if you have an iPhone and or a laptop then you are an advanced computer user – even if you think you suck. When &lt;span style="font-style: italic;"&gt;you&lt;/span&gt; think of "a lot of people", you probably imagine your peers, your coworkers, Facebook friends and maybe your siblings. That's a whole sweeping demographic, the majority of which probably doesn't really need a tablet. I agree, nurses, doctors, real estate agents and other mobile professions could probably use the tablets more than the rest. The point I'm alluding to though is that we're excluding two huge user groups that I've seen first hand THRIVE on the tablet: Children and Seniors.&lt;br /&gt;&lt;br /&gt;I've seen first hand, my Nana and my wife's Grandfather, pick up the iPad and become proficient with reading news, emailing, and looking at family pictures within an hour. In fact, my wife's grandfather was so smitten with my iPad during a visit that for the entire week he was with us, he'd diligently plug it in to charge each night before bed so that he could resume useing it first thing in the morning. I also happen to know that he's often frustrated with his computer and that my grandmother is terrified of hers. With her tablet though, Nana loves to take it to her seniors' community center and play Scrabble and show off pictures of her grand kids. Think about it, you can't (yet) get viruses on a tablet, there aren't multiple windows to get confused with, files to rename, drag and drop, multiple file selection and all these paradigms that you and I take for granted are learned skills. And the biggest ease of use – the input device is your finger, which you're already an expert with. You've had hand-eye coordination since you were a baby. Given an easy to use operating system, tablets are very approachable compared to traditional computers.&lt;br /&gt;&lt;br /&gt;Young children also take to the iPad very quickly. Any parent with an iPad will tell you that their kid will pick up drag and dropping shape games and animal sound games almost immediately. Do you think they're going to master all the nuances computer right away without messing something up? Here are some benefits I think most parents would agree with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The instant on/off is a big plus since young kids generally have short attention spans.&lt;/li&gt;&lt;li&gt;It's easy to hold. You can grip the screen with one hand, and hold your kid with the other. It's easier to sit on a couch than at a computer desk, and a laptop is vulnerable to the child prying open the lid too far, or shutting it while you're trying to use it.&lt;/li&gt;&lt;li&gt;A child will be able to use their finger much more easily than a mouse&lt;/li&gt;&lt;li&gt;It's easier to clean an iPad than a keyboard.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;My conclusion is that I'm sure that there are all sorts of niche uses for tablets within &lt;span style="font-style: italic;"&gt;our own&lt;/span&gt; demographic. You might even find a piece of software that alone justifies the use of one for you. Without a doubt though, looking at the toddler and senior demographics, tablets are going to be widely embraced and useful. Looking forward, tablets with front-facing cameras and Skype are an awesome combo connecting these two user groups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-2437072012352636595?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/2437072012352636595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=2437072012352636595' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2437072012352636595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2437072012352636595'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2011/03/why-would-i-really-need-tablet-computer.html' title='Why would I really need a tablet computer?'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-2490055648263088132</id><published>2010-12-06T16:39:00.004-08:00</published><updated>2010-12-06T17:00:36.174-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash packager tutorial iphone iOS'/><title type='text'>Faster way to install iOS .ipa apps on testing devices</title><content type='html'>Note: This steps in this tutorial require OS X. I have no idea whether jailbreaking your phone will have an impact on these steps, but my devices are not jailbroken, FYI.&lt;br /&gt;&lt;br /&gt;If you're creating apps using Flash, you'll know that a development build will produce a .ipa file. This is just an app archive. You can rename it to .zip and unzip it. Inside, you'll find the actual app – named Main.app for example.&lt;br /&gt;&lt;br /&gt;Until today, I was only aware of one way to install the app. Drag it into iTunes then sync to my device. There were a couple problems with this. First, if I wanted to replace an app that I synced previously, I had to&lt;br /&gt;&lt;br /&gt;1. Delete it from my iPhone&lt;br /&gt;2. Go into the apps tab in iTunes (under my device, not the main Applications area of iTunes)&lt;br /&gt;3. Check my app (it will be unchecked)&lt;br /&gt;4. sync again (which includes waiting for all the other crap to sync like addresses, music, calendars...)&lt;br /&gt;&lt;br /&gt;This is obviously an inferior process compared to just building and deploying with XCode. I'm not going to argue the benefits of which tools to use, I've built apps with all sorts of tools now. This article is focused on the developer who is already using Flash.&lt;br /&gt;&lt;br /&gt;The other downside to syncing via iTunes is that I don't think I could have installed my app to a device that wasn't set up with my computer (say I borrowed a friend's device that's all set up with is own computer). I think I'd get a bunch of warnings about having to erase the device and sync from scratch to my computer. Now that's not going to work is it?&lt;br /&gt;&lt;br /&gt;The good news is I discovered another way today to install apps to test on various devices that is faster and does not require syncing through iTunes - the devices can be set up for another user without conflict. You have to have provisioned the device as a testing or ad-hoc provisioning profile. Sorry if that's not familiar to you, it's beyond the scope of this article. Here's how you install your app:&lt;br /&gt;&lt;br /&gt;1. Compile your app, signed with your dev profile. This creates your .ipa file.&lt;br /&gt;2. Rename your .ipa file to .zip&lt;br /&gt;3. Unzip the .zip (I've done steps 2 and 3 right in the OS X Finder)&lt;br /&gt;4. Inside the folder that is created from unzipping, you'll find a .app file.&lt;br /&gt;5. Open up XCode (You'll need the Apple Developer Tools to do this, available at the Apple Developer Portal).&lt;br /&gt;6. In XCode, open up the Organizer (Window -&gt; Organizer)&lt;br /&gt;7. In the Organizer you should see your devices that you've set up in the Apple Developer Portal, listed on the left. Now you should be able to drag the .app file onto one of the devices on the left (which has to be plugged into your mac btw). That will install the app without an iTunes Sync. It will prompt you to overwrite the old version.&lt;br /&gt;&lt;br /&gt;Lastly, I just want to mention that the latest version of FlashBuilder (currently named Burrito) will probably streamline this process. So, this will probably only apply to FlashBuilder/Flash/Flex SDK versions that are older than that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-2490055648263088132?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/2490055648263088132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=2490055648263088132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2490055648263088132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2490055648263088132'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/12/faster-way-to-install-ios-ipa-apps-on.html' title='Faster way to install iOS .ipa apps on testing devices'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-1073702210178226605</id><published>2010-11-02T18:37:00.005-07:00</published><updated>2010-11-02T18:41:46.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Little ABCs now available on Android</title><content type='html'>&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 128px; height: 128px;" src="http://4.bp.blogspot.com/_euJfDNI0zLE/TKurTE5SMgI/AAAAAAAAABk/rU6GjhbgsRs/s320/abcs128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5524697712119919106" /&gt;&lt;br /&gt;My new educational game, Little ABCs hit the Android Market today. To find it, visit the Android Market on your Android device, and search for "Little ABCs"&lt;br /&gt;&lt;br /&gt;Friendly, colourful and filled with sounds and animations that little ones love, Little Apps have been created to inspire, inform and engage your toddler. Illustrations by Pete Hamblin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-1073702210178226605?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/1073702210178226605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=1073702210178226605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1073702210178226605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1073702210178226605'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/11/little-abcs-now-available-on-android.html' title='Little ABCs now available on Android'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_euJfDNI0zLE/TKurTE5SMgI/AAAAAAAAABk/rU6GjhbgsRs/s72-c/abcs128.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-7124353606425673652</id><published>2010-10-05T15:37:00.002-07:00</published><updated>2010-10-05T15:43:21.983-07:00</updated><title type='text'>FireBug and JavaScript tip and gotcha | console.info()</title><content type='html'>If you are coding in JavaScript, and have FireBug installed into FireFox, you can print messages that are handy during development to the FireBug console. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Tip:&lt;/b&gt;&lt;br /&gt;You do this by adding a line like this in your JavaScript:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var x = 123;&lt;br /&gt;console.info("hello world, " + x);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In the console tab in FireBug, the above will output:&lt;br /&gt;&lt;code&gt;hello world 123&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Gotcha&lt;/b&gt;&lt;br /&gt;When you're not debugging anymore you should delete those console.info() statements. If you neglect to do so, beyond just leaving unnecessary overhead in your code, if FireBug is closed, your JavaScript code will actually die when it reaches the first console.info() line and fail silently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-7124353606425673652?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/7124353606425673652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=7124353606425673652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/7124353606425673652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/7124353606425673652'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/10/firebug-and-javascript-tip-and-gotcha.html' title='FireBug and JavaScript tip and gotcha | console.info()'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-9071565467253924394</id><published>2010-10-05T15:32:00.007-07:00</published><updated>2010-11-02T18:41:38.751-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='iOS'/><title type='text'>My new iPhone/iPad game, Little ABCs now on iTunes app store</title><content type='html'>&lt;a href="http://itunes.apple.com/ca/app/little-abcs/id394282753?mt=8" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_euJfDNI0zLE/TKurTE5SMgI/AAAAAAAAABk/rU6GjhbgsRs/s1600/abcs128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 128px; height: 128px;" src="http://4.bp.blogspot.com/_euJfDNI0zLE/TKurTE5SMgI/AAAAAAAAABk/rU6GjhbgsRs/s320/abcs128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5524697712119919106" /&gt;&lt;/a&gt;&lt;br /&gt;My &lt;a href=" http://itunes.apple.com/ca/app/little-abcs/id394282753?mt=8"&gt;new game, Little ABCs&lt;/a&gt; hit the iTunes store this week. This educational kids game is optimized for both iPhone and iPad.&lt;br /&gt;&lt;br /&gt;Friendly, colourful and filled with sounds and animations that little ones love, Little Apps have been created to inspire, inform and engage your toddler. Illustrations by Pete Hamblin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-9071565467253924394?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/9071565467253924394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=9071565467253924394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/9071565467253924394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/9071565467253924394'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/10/my-new-iphoneipad-game-little-abcs-now.html' title='My new iPhone/iPad game, Little ABCs now on iTunes app store'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_euJfDNI0zLE/TKurTE5SMgI/AAAAAAAAABk/rU6GjhbgsRs/s72-c/abcs128.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-360965029824560888</id><published>2010-08-04T12:18:00.004-07:00</published><updated>2010-11-02T18:41:26.413-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='iOS'/><title type='text'>My new game, Concentrika now on iTunes app store</title><content type='html'>My new game &lt;a href="http://itunes.apple.com/app/concentrika/id384322351?mt=8"&gt;Concentrika hit the iTunes store&lt;/a&gt; yesterday and is selling well!&lt;br /&gt;&lt;a href="http://itunes.apple.com/app/concentrika/id384322351?mt=8" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_euJfDNI0zLE/TKusClZCDGI/AAAAAAAAABs/CMeGYvPXh8g/s1600/iTunes1512x512.png"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_euJfDNI0zLE/TKusClZCDGI/AAAAAAAAABs/CMeGYvPXh8g/s320/iTunes1512x512.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5524698528296864866" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-360965029824560888?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/360965029824560888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=360965029824560888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/360965029824560888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/360965029824560888'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/08/my-new-game-concentrika-now-on-itunes.html' title='My new game, Concentrika now on iTunes app store'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_euJfDNI0zLE/TKusClZCDGI/AAAAAAAAABs/CMeGYvPXh8g/s72-c/iTunes1512x512.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-3152173075509424321</id><published>2010-07-19T21:35:00.000-07:00</published><updated>2010-07-19T21:40:18.393-07:00</updated><title type='text'>Make your work day mornings a little easier with OS X and Automator</title><content type='html'>When I find myself doing anything repetitive, I usually question whether there is a way to automate in order to save time and get onto more interesting things.&lt;br /&gt;&lt;br /&gt;I generally find these days, that computers are awesome for what you pay for them. That has led me to be less accepting of waiting for computers to complete a task. A few people have called me a power user. I think they just mean I'm pretty quick to get around my computer and my programs because I've learned and use as many keyboard shortcuts as possible and generally use efficient techniques to be more productive and less bored! Here's something new I started doing recently to save time and I love it. Here's what I found was happening every morning:&lt;br /&gt;&lt;br /&gt;I get in, I turn on my computer, I wait for it to start up, I log in (from the OS X users screen), I wait for my dock to show up, then I start opening all the programs I'll need for the job I'm working on. For one job that might include, Email, Flash Builder, Adium, Skype, Things, and Flash CS5. For another job it might include Titanium, Coda, Adium, Skype and Photoshop. Sometimes after clicking one or two apps, the dock becomes unresponsive for a time so I have to wait a bit before I can click the next app. Multiply this by the number of apps and you have some annoying wait time between app launching plus the app launch time itself. Wouldn't it be better to go grab a coffee, fill up your BPA-free water bottle or go to the bathroom?&lt;br /&gt;&lt;br /&gt;Solution: Use Automator to create a job launcher.&lt;br /&gt;&lt;br /&gt;Create a folder called "job launchers", drag that folder into your dock. Right click it and select Display as Stack. Open Automator (use spotlight to search for it). Search in Automator's spotlight field for 'launch'. Drag the item in the middle column, 'Launch Application' to the right. Choose your app from the list. If it doesn't appear, choose Other and go find it. Drag another item below the first and repeat. For some reason Automator gets stuck when it launches Flash Builder (Eclipse), so I just make that the last app to launch in my list. Save this workflow inside the job launchers folder you created as an Application (not workflow). You might want to name it after the job or type of job you're working on, such as Flash application.&lt;br /&gt;&lt;br /&gt;In the future, if you ever want to modify your app launch list, drag the application from the Finder (not the dock onto the Automator icon).&lt;br /&gt;&lt;br /&gt;Now, click the job launchers folder in your dock. The job app should appear with an Automator icon. When you click it, it should launch all of the applications in your list while.&lt;br /&gt;&lt;br /&gt;Remember a watched pot never boils so go and take a break while your computer does your first task of the day for you!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_euJfDNI0zLE/TEUodXSrQRI/AAAAAAAAABU/4nCJE5_Q2Q8/s1600/automatorLauncher.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 380px;" src="http://4.bp.blogspot.com/_euJfDNI0zLE/TEUodXSrQRI/AAAAAAAAABU/4nCJE5_Q2Q8/s400/automatorLauncher.jpg" alt="" id="BLOGGER_PHOTO_ID_5495843405209223442" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-3152173075509424321?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/3152173075509424321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=3152173075509424321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/3152173075509424321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/3152173075509424321'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/07/make-your-work-day-mornings-little.html' title='Make your work day mornings a little easier with OS X and Automator'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_euJfDNI0zLE/TEUodXSrQRI/AAAAAAAAABU/4nCJE5_Q2Q8/s72-c/automatorLauncher.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-6925595199621194041</id><published>2010-03-29T15:36:00.000-07:00</published><updated>2010-03-29T15:37:50.922-07:00</updated><title type='text'>We’re in The Future | A Perspective on Living with Technology</title><content type='html'>&lt;a href="http://blog.iqinteractive.com/?p=1070"&gt;Click here to read the post&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-6925595199621194041?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/6925595199621194041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=6925595199621194041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/6925595199621194041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/6925595199621194041'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/03/were-in-future-perspective-on-living.html' title='We’re in The Future | A Perspective on Living with Technology'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-5385000408238861557</id><published>2010-03-25T11:23:00.007-07:00</published><updated>2010-03-26T07:10:22.683-07:00</updated><title type='text'>Regular Expressions 101 for Designers, content managers and other non-programmers</title><content type='html'>Most programmers know what Regular Expressions (aka REGEX) are for. In my experience, few non-programmers do though. While programmers might find REGEX useful more frequently and extensively, I often think when I use them how I'm saving myself time on tasks that aren't specific to programming. I think about how Designers who are managing larger amounts of HTML text or plain text content are probably doing some tedious work-arounds when they could be using REGEX instead.&lt;br /&gt;&lt;br /&gt;I recently tried to explain the usefulness of REGEX to a friend of mine who is a graphic designer, who also get into coding HTML content. She didn't really get it and I didn't really explain it right either. Today I had a task to do where REGEX came in handy and I noticed that it was a more simple example that everyone should be able to relate to.&lt;br /&gt;&lt;br /&gt;Regular Expressions, which are often referred to as REGEX, are essentially a fancy and more powerful way of searching text. It can also be a fancy and more powerful way of doing search and replace of text. Everyone needs to do that at some point, not just programmers. In fact, it was a designer who introduced REGEX to me about 10 years ago when I was a graphic designer myself (these days I'm primarily a developer).&lt;br /&gt;&lt;br /&gt;Here's the task I wanted to perform today:&lt;br /&gt;I have a tonne of text in a document. The text has dashes in it here and there. It has lots of phone numbers too. The phone numbers were all written with dots, like 604.123.4567 but I wanted to change the format to use dashes like, 604-123-4567. So, using REGEX in my favourite text editor, I search for this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;([0-9]{3})\.([0-9]{3})\.([0-9]{4})&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and replace with this:&lt;br /&gt;&lt;code&gt;\1-\2-\3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The round brackets denote groups of the search. So, &lt;code&gt;([0-9]{3})&lt;/code&gt; is one group.&lt;br /&gt;&lt;br /&gt;The dot character in REGEX has special meaning but in this search I just mean a regular old dot character, so I escape it with a slash. We must write &lt;code&gt;.&lt;/code&gt; as &lt;code&gt;\.&lt;/code&gt; to help the REGEX interpreter know that the dot is just a plain dot with no programmatic meaning in this particular search.&lt;br /&gt;&lt;br /&gt;The &lt;code&gt;[0-9]&lt;/code&gt; part means look for numbers in that range. The &lt;code&gt;{3}&lt;/code&gt; is related to the square brackets part before it and means that we're looking for exactly three of them (numbers in this case). Thus the search for a phone number is made up of these components:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;a group of three numbers (this is our first search group)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;a dot&lt;/li&gt;&lt;br /&gt;&lt;li&gt;another group of three numbers (this is our second search group)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;a dot&lt;/li&gt;&lt;br /&gt;&lt;li&gt;a final group of four numbers (this is our third search group)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In the replace part, &lt;code&gt;\1&lt;/code&gt; means put whatever was found in the first group in place of &lt;code&gt;\1&lt;/code&gt;, &lt;code&gt;\2&lt;/code&gt; in the second group, &lt;code&gt;\3&lt;/code&gt; in the third group and so on for as many groups as we searched for (we only had three groups in this search).&lt;br /&gt;&lt;br /&gt;Regex can do simple things like this or very complex patterns like thorough email address validation:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;When I was getting started with REGEX I found it helpful to refer to a cheat sheet. There are so many, you had best &lt;a href="http://www.google.ca/search?q=regex+cheat+sheet"&gt;take your pick&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Regex can get very complex as I say, so if you're trying to write a search pattern that you're having trouble getting right, try googling forums for terms like, "regex email address" or "regex visa number". Those examples are patterns that have already been solved so you should try and find them online before reinventing the wheel. &lt;br /&gt;&lt;br /&gt;Many text editors can do REGEX searches. Its usually a checkbox in the Find dialog to tell the text editor that you want to search in REGEX mode. Here are a couple free ones to get you started:&lt;br /&gt;&lt;br /&gt;Windows: &lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad++&lt;/a&gt;&lt;br /&gt;OS X: &lt;a href="http://www.barebones.com/products/TextWrangler/"&gt;TextWrangler&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-5385000408238861557?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/5385000408238861557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=5385000408238861557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/5385000408238861557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/5385000408238861557'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2010/03/regular-expressions-101-for-designers.html' title='Regular Expressions 101 for Designers, content managers and other non-programmers'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-2738635708831846283</id><published>2009-11-18T01:27:00.001-08:00</published><updated>2009-11-18T01:28:47.132-08:00</updated><title type='text'>How to develop iTunes Extras</title><content type='html'>Well that's what I googled for and while I didn't find specifics I did find quite &lt;a href="http://www.roughlydrafted.com/2009/09/14/new-itunes-lp-and-extras-built-using-tunekit-framework-aimed-at-apple-tv/"&gt;an interesting read&lt;/a&gt; with some insight into my query.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-2738635708831846283?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/2738635708831846283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=2738635708831846283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2738635708831846283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2738635708831846283'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2009/11/how-to-develop-itunes-extras.html' title='How to develop iTunes Extras'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-1966148298974659837</id><published>2009-09-10T09:46:00.001-07:00</published><updated>2009-09-10T09:47:27.972-07:00</updated><title type='text'>Skype for iPhone and iPod touch now available in Canada</title><content type='html'>I heard about it on the news yesterday and dowloaded Skype for free to my iPhone. It works beautifully and has a nice interface that seems to cover everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-1966148298974659837?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/1966148298974659837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=1966148298974659837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1966148298974659837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1966148298974659837'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2009/09/skype-for-iphone-and-ipod-touch-now.html' title='Skype for iPhone and iPod touch now available in Canada'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-4871339617323657737</id><published>2009-08-04T18:17:00.001-07:00</published><updated>2009-08-04T18:18:45.397-07:00</updated><title type='text'>Web 2.0</title><content type='html'>Some people love this term, others hate it. The general reason that it is disliked is that communicating about it is problematic. There is a lack of consensus on the definition. For one thing, there never was a Web 1.0. The Internet is an organic medium that is not controlled by any body that is able to draw a clear line between 'versions'. The best definition you find will probably talk about how Web 2.0 is more application like, or community-centric. If you want to communicate clearly, without ambiguity to someone about something you are looking for in a site or something you want to build that is in your mind Web 2.0, you are better off being specific about the types of functionality you are interested in. These may include terms such as user&lt;br /&gt;membership, connecting people to one another, rating content, cool functionality where the whole page doesn't need to refresh etc. That doesn't sound like such a big compromise does it? It just may save your bacon if someone expects something different after you tell them you want "Web 2.0".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-4871339617323657737?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/4871339617323657737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=4871339617323657737' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4871339617323657737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4871339617323657737'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2009/08/web-20.html' title='Web 2.0'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-3470029852016396006</id><published>2009-06-10T09:28:00.002-07:00</published><updated>2009-06-10T09:31:14.086-07:00</updated><title type='text'>NeoOffice mobile version now available</title><content type='html'>NeoOffice is a native Mac port of OpenOffice, which is an open source version of Microsoft Office. I use it instead of Office daily. Incidentally, OpenOffice for Mac also just came out but I found it didn't render all my Word documents reliably so I switched back to NeoOffice.&lt;br /&gt;&lt;br /&gt;Anyway, a preview of &lt;a href="http://neowiki.neooffice.org/index.php/NeoOffice_Mobile_Preview"&gt;NeoOffice mobile&lt;/a&gt; was just released for iPhone/iPod! Sweet!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-3470029852016396006?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/3470029852016396006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=3470029852016396006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/3470029852016396006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/3470029852016396006'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2009/06/neooffice-mobile-version-now-available.html' title='NeoOffice mobile version now available'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-2102043441327634160</id><published>2009-03-10T15:55:00.006-07:00</published><updated>2009-03-10T19:10:44.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FCE finalCutExpress flipMino'/><title type='text'>Preparing video files for Final Cut Express for fast editing.</title><content type='html'>&lt;a href="http://www.apple.com/finalcutexpress/"&gt;Final Cut Express&lt;/a&gt; (FCE) is a nice editing tool for those with modest needs. I prefer it to iMovie, although at the time of this writing a new version of iMovie just came out that I admit, I have not tried.&lt;br /&gt;&lt;br /&gt;FCE can work with videos, editing, cross fading etc in a non destructive manner, in realtime without constantly needing to re-render the video each time you make a change. The catch is that if your videos are not prepared in one of FCE's preset formats, it will need you to render frequently as you work so that it converts from the format your videos exist in, to the format it prefers (Apple Intermediate Codec).&lt;br /&gt;&lt;br /&gt;I recently bought a &lt;a href="http://www.theflip.com/products_flip_mino.shtml"&gt;Flip Mino&lt;/a&gt; video camera, which has been a great compromise of good quality and portability. Think of it as creating really good quality youtube videos (rather than really good quality home theater videos). The Flip produces AVI videos. To be able to use FCE to edit your videos, here are the settings you will need to prepare them for FCE:&lt;br /&gt;&lt;br /&gt;First, for your Mac to be able to play the AVI files in Quicktime Player, you might need to get the &lt;a href="http://www.perian.org/"&gt;Perian&lt;/a&gt; plugin.&lt;br /&gt;&lt;br /&gt;Export settings:&lt;br /&gt;1. File, Export&lt;br /&gt;2. Movie to Quicktime Movie&lt;br /&gt;3. Click Options&lt;br /&gt;4. Under Video click Settings&lt;br /&gt;5. In Settings choose&lt;br /&gt;-Compression Type: Apple Intermediate Codec&lt;br /&gt;-Framerate: Current&lt;br /&gt;-Preset: HDV 720p (that's good for Flip Mino, for the new Flip Mino HD you'll probably want the HDV 1080p option). &lt;br /&gt;&lt;br /&gt;6. Click OK to exit Video, Settings&lt;br /&gt;7. Under Video click Size.&lt;br /&gt;8. In Size, choose&lt;br /&gt;-Compressor native&lt;br /&gt;-Preserve aspect ratio using: Letterbox&lt;br /&gt;-Leave Deinterlace unchecked unless you know your source is interlaced (it is not if it's from a Flip camera but might be from a handy cam)&lt;br /&gt;&lt;br /&gt;9. Click OK to exit Video, Size&lt;br /&gt;10. Under Sound, click Settings&lt;br /&gt;11. In Settings, select &lt;br /&gt;-Format: Linear PCM&lt;br /&gt;-Channels: Stereo&lt;br /&gt;-Render Settings: Best&lt;br /&gt;-Sample Size: 16&lt;br /&gt;-Little Endian should be checked&lt;br /&gt;&lt;br /&gt;12. Click OK to exit Sound, Settings&lt;br /&gt;11. Make sure Prepare for Internet Streaming is not checked.&lt;br /&gt;12. Click OK to return to the file save dialog, then click Save.&lt;br /&gt;&lt;br /&gt;This will render one video to the destination of your choosing. Once that file is exported, drag it into FCE. FCE might complain about it not conforming to something but ignore that message for now. The real test, to see whether or not your video is optimal is to drag it into the timeline. Scrub the playback head with your mouse. If you can see the video playing and you can hear the audio scrubbing then mission accomplished.&lt;br /&gt;&lt;br /&gt;Here's a trick to be able to batch convert those videos so you don't have to do it one at a time. This trick essentially uses the most recently used Quicktime export settings and applies those to a set of video files.&lt;br /&gt;&lt;br /&gt;1. So, make sure you export one video first. I &lt;span style="font-weight:bold;"&gt;think&lt;/span&gt; you can get away with aborting the export after a few seconds just to get the recent settings to stick. &lt;br /&gt;2. The software that lets this happen comes with OS X (I'm not sure if it comes with Tiger but it definitely comes with Leopard, OS X 10.5). Try it anyway. &lt;a href="http://ohcool.ca/blogPostAttachments/batchQuicktime.workflow.zip"&gt;Here's the workflow I created&lt;/a&gt;. Download it.&lt;br /&gt;3. What you should do is unzip it, open it up (should launch Automator).&lt;br /&gt;4. Then in Automator go File, Save-As, Format: Application.&lt;br /&gt;5. Drag that application into your dock for convenience.&lt;br /&gt;6. From then on you can drag and drop your video files to the application you just saved. It will take the videos you dropped on it and open up Quicktime Player and export all the movies using the most recent settings. I find I have trouble bringing Quicktime to the foreground while it's doing the conversions but it does work, you just have to wait it out. You should see an indication that it's compressing in the title bar along side the date and time.&lt;br /&gt;&lt;br /&gt;Hope this helps someone, took me a while to get the combination of settings right.&lt;br /&gt;&lt;br /&gt;*Note, &lt;span style="font-weight:bold;"&gt;IF&lt;/span&gt; your files are coming from a Sony video camera and you can't play them or they don't play audio and you can't convert them, you can use this tool to prepare them: &lt;a href="http://www.squared5.com/svideo/mpeg-streamclip-mac.html"&gt;MPEG Streamclip&lt;/a&gt;. MPEG Streamclip is free, but it depends on the &lt;a href="http://www.apple.com/quicktime/mpeg2/"&gt;QuickTime MPEG-2 Playback Component&lt;/a&gt; that costs a small amount, I forget how much, but I can tell you it worked for me when I wanted to bring in wedding footage from a friend's sony handycam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-2102043441327634160?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/2102043441327634160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=2102043441327634160' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2102043441327634160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2102043441327634160'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2009/03/preparing-video-files-for-final-cut.html' title='Preparing video files for Final Cut Express for fast editing.'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-5183224590224167386</id><published>2008-09-13T17:43:00.002-07:00</published><updated>2008-09-15T13:29:02.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3 designPattern'/><title type='text'>Using namespaces to implement the state design pattern</title><content type='html'>&lt;a href="http://flash-focus.blogspot.com/2008/09/using-namespaces-to-implement-state.html"&gt;Click here to read the full post&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-5183224590224167386?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/5183224590224167386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=5183224590224167386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/5183224590224167386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/5183224590224167386'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2008/09/using-namespaces-to-implement-state.html' title='Using namespaces to implement the state design pattern'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-4570942945721906338</id><published>2008-09-09T21:10:00.001-07:00</published><updated>2008-09-09T21:12:00.255-07:00</updated><title type='text'>Open source Flash player called Gnash</title><content type='html'>This is an open source post, but it's also a Flash post, so the full post is over at the other blog I contribute to, Flash Focus. &lt;a href="http://flash-focus.blogspot.com/2008/09/open-source-flash-player-called-gnash.html"&gt;Click here to read on.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-4570942945721906338?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/4570942945721906338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=4570942945721906338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4570942945721906338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4570942945721906338'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2008/09/open-source-flash-player-called-gnash.html' title='Open source Flash player called Gnash'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-7339250478360093223</id><published>2008-08-26T10:14:00.005-07:00</published><updated>2008-08-26T10:34:55.238-07:00</updated><title type='text'>CBC offers HD show downloads. Canadian ISPs are blocking though.</title><content type='html'>The &lt;a href="http://www.cbc.radio-canada.ca/index.asp"&gt;CBC&lt;/a&gt; is making history by being the first to release a high definition television show, free of digital rights management. You will be able to download the show via &lt;a href="http://www.bittorrent.com/what-is-bittorrent"&gt;bit torrent&lt;/a&gt;. Some &lt;a href="http://en.wikipedia.org/wiki/Internet_service_provider"&gt;ISP&lt;/a&gt;s such as Rogers block bit torrent though which means that "Rogers will effectively be blocking Canadians' access to the very content that their tax dollars pay for... and if that's the case it's something that the &lt;a href="http://www.crtc.gc.ca/eng/about.htm"&gt;CRTC&lt;/a&gt; may want to look into" - quote from the &lt;a href="http://en.wikipedia.org/wiki/Search_Engine_%28radio_show%29"&gt;CBC Radio show called Search Engine&lt;/a&gt;, on March 20, 2008.&lt;br /&gt;&lt;br /&gt;Interesting related articles:&lt;br /&gt;&lt;a href="http://www.cbc.ca/arts/tv/story/2008/03/26/bittorrent-cbc.html"&gt;ISPs limit access to CBC downloads&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cbc.ca/searchengine/blog/2008/05/network_neutrality_update_coge.html"&gt;Network Neutrality and Cogeco&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's where you are supposed to be able to &lt;a href="http://www.cbc.ca/nextprimeminister/blog/2008/03/download_canadas_next_great_pr.html"&gt;download the show, Canada's Next Great Prime Minister&lt;/a&gt; – if your ISP hasn't blocked you from doing so!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-7339250478360093223?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/7339250478360093223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=7339250478360093223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/7339250478360093223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/7339250478360093223'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2008/08/cbc-offers-hd-tv-downloads-canadian.html' title='CBC offers HD show downloads. Canadian ISPs are blocking though.'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-6265091464590557697</id><published>2008-08-14T10:19:00.005-07:00</published><updated>2008-08-14T10:30:18.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osx spotlight quicksilver leopard'/><title type='text'>OS X Spotlight. Old dog, new tricks.</title><content type='html'>&lt;a href="http://www.apple.com/macosx/features/300.html#spotlight"&gt;Spotlight&lt;/a&gt; was a good idea when it came out, but once your computer gets full of stuff it gets much slower as one might expect. &lt;br /&gt;&lt;br /&gt;I like that with Spotlight I don't have to put every app I ever use in the Dock. Instead I can search Spotlight for occasionally used apps and launch them that way. But, if you're in a rush and find Spotlight slow you can get &lt;a href="http://blacktree.com/?quicksilver"&gt;Quicksilver&lt;/a&gt; – what most of my Mac-using friends have. As it's name implies, it sure is quick!&lt;br /&gt;&lt;br /&gt;Upon recently upgrading to &lt;a href="http://www.apple.com/macosx/"&gt;Leopard&lt;/a&gt; I discovered a couple new handy features of Spotlight. It seems to be the quickest way to do some simple arithmetic as well as look up the definition of a word. Try typing into Spotlight 5+5-2*1.2. It'll show the Calculator application that you can launch, but next to it is also the answer. Try typing in the word 'affable' and you'll see the Dictionary app and the truncated sentence showing the definition of the word.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-6265091464590557697?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/6265091464590557697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=6265091464590557697' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/6265091464590557697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/6265091464590557697'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2008/08/os-x-spotlight-old-dog-new-tricks.html' title='OS X Spotlight. Old dog, new tricks.'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-2066387926679300586</id><published>2008-07-22T12:05:00.002-07:00</published><updated>2008-07-22T12:12:43.094-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security browser firefox camino keychain'/><title type='text'>Store passwords securely in FireFox</title><content type='html'>I thought it couldn't be done – I thought that FireFox unlike Safari or Camino couldn't store web passwords securely. By its default setting, I was right. That's partly why I was using Camino instead for personal use (FireFox is still superior for Web development testing). Camino and Safari make use of OS X's keychain to encrypt your passwords, storing them securely. Well FireFox still can't do this without commercial third-party software but it basically has its own sort of keychain functionality built in. You go to your preferences under security, and set a master password. &lt;a href="http://useopensource.blogspot.com/2007/02/store-passwords-securely-in-firefox.html"&gt;Here's a link that explains it more.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also by the way, I was also preferring Camino because it started up so much faster than FireFox. With the introduction of FireFox 3 though, it's fast again! I think I'll retire Camino :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-2066387926679300586?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/2066387926679300586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=2066387926679300586' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2066387926679300586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2066387926679300586'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2008/07/store-passwords-securely-in-firefox.html' title='Store passwords securely in FireFox'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-6799556302618560362</id><published>2008-05-08T08:29:00.002-07:00</published><updated>2008-05-08T08:33:01.288-07:00</updated><title type='text'>Trick for moving a file in OS X from one mounted drive to another in one step</title><content type='html'>It always kind of bothered me that in OS X I couldn't choose to move a file from one location to another when the different locations were not on the same hard drive. For example from my hard drive to an external or network drive. If you drag, it copies, so you're left with the original to delete.  For large files, I sometimes got in in the practice of using the command line wihich does have the ability:&lt;br /&gt;&lt;br /&gt;mv foo.zip /Volumes/MyExternalDrive/&lt;br /&gt;&lt;br /&gt;But this isn't very elegant.&lt;br /&gt;&lt;br /&gt;I recently found a little Finder trick. If you hold down command while dragging, it moves the file instead of copying.&lt;br /&gt;&lt;br /&gt;I'm happy now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-6799556302618560362?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/6799556302618560362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=6799556302618560362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/6799556302618560362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/6799556302618560362'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2008/05/trick-for-moving-file-in-os-x-from-one.html' title='Trick for moving a file in OS X from one mounted drive to another in one step'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-1350722281840758425</id><published>2007-10-22T10:57:00.001-07:00</published><updated>2007-10-22T11:09:35.447-07:00</updated><title type='text'>OS X Tip for copying a large file from a windows server over smb</title><content type='html'>Here's a tip.&lt;br /&gt;&lt;br /&gt;Problem:&lt;br /&gt;You have connected to a windows share at an address like smb://myserver. You tried copying the file from the mounted share to your computer. It's going to take a long time. Either the connection gets dropped, or you accidentally drop it, or you need to go somewhere but you can't because if any of these things happens, you'll have to start all over again.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;Initiate a copy with the 'curl' command that can be resumed later. Crack open your Terminal, and navigate to the location where you want to save your file. With the smb share mounted already in your Finder, figure out the path to the file. I usually use 'ls' to get the path right.&lt;br /&gt;&lt;br /&gt;i.e.&lt;br /&gt;&lt;br /&gt;ls /Volumes/myserver/path/to/the/file.mov&lt;br /&gt;&lt;br /&gt;should show something like&lt;br /&gt;&lt;br /&gt;file.mov&lt;br /&gt;&lt;br /&gt;Now that you know the path (make sure to escape spaces in the path by prefixing them with a \. i.e.&lt;br /&gt;&lt;br /&gt;ls /Volumes/myserver/path/to/the\ big/file.mov&lt;br /&gt;&lt;br /&gt;if you can get the 'ls' command to work and see the file, then your path  must be right. &lt;br /&gt;copy and paste that path with the excaped spaces starting with /Volumes...&lt;br /&gt;and prefix it with file://, so you'll end upwith an initial three forward slashes like&lt;br /&gt;&lt;br /&gt;file:///Volumes/myserver/path/to/the\ big/file.mov&lt;br /&gt;&lt;br /&gt;That's the way 'curl' likes the paths for a file copy. So now that you're in the place on your computer where you want the file to end up, type (and this O is a letter not zero):&lt;br /&gt;&lt;br /&gt;curl -O file:///Volumes/myserver/path/to/the\ big/file.mov&lt;br /&gt;&lt;br /&gt;You'll even see progress and time estimate.&lt;br /&gt;&lt;br /&gt;If something bad happens, you'll be left with a partial file. (If you did this in the finder, you would be left with nothing)&lt;br /&gt;&lt;br /&gt;To resume, make sure you're in the same directory as the first time, then type:&lt;br /&gt;&lt;br /&gt;curl -O -C - file:///Volumes/myserver/path/to/the\ big/file.mov&lt;br /&gt;&lt;br /&gt;That's it. This tip is best for one big file. For multiple files, look into the mighty 'rsync' command.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-1350722281840758425?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/1350722281840758425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=1350722281840758425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1350722281840758425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1350722281840758425'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/10/tip-for-copying-large-file-from-windows.html' title='OS X Tip for copying a large file from a windows server over smb'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-7678955586000353124</id><published>2007-10-11T21:51:00.000-07:00</published><updated>2007-11-05T10:54:11.882-08:00</updated><title type='text'>Wiping your mac clean but saving your Home folder</title><content type='html'>The problem:&lt;br /&gt;&lt;br /&gt;Your OS is acting weird, or you've confirmed something's corrupted or damaged in the OS that can't be repaired (maybe Disk Utility verifies OK, but there are still anomalies like Dashboard widgets not appearing right or something that could point to a scarier problem). You still seem to be able to use your files and programs though. You'd like to reinstall the OS, but not have to reinstall all your programs and go through all the preferences setup etc. For me I think the cause of this was improper shutdowns because my battery was flakey. I know the hardrive hardware is fine, I've had it checked.&lt;br /&gt;&lt;br /&gt;My Solution seems to have worked pretty well for me:&lt;br /&gt;&lt;br /&gt;For simplicity, lets call my sick computer SICK and my healthy iMac HEALTHY.&lt;br /&gt; &lt;br /&gt;I created a new user with the same short name (what you see in the Terminal prompt) on HEALTHY and logged in.&lt;br /&gt;&lt;br /&gt;I booted SICK up in target mode on HEALTHY so that SICK mounted as a drive on HEALTHY&lt;br /&gt;&lt;br /&gt;Then used rsyncx to sync SICK home to the HEALTHY's home (which remember, has the same short name)&lt;br /&gt;&lt;br /&gt;I then synced my applications from SICK's from /Applications to HEALTHY's /Users/healthy/Applications/ folder (You may have to create an Applications folder in your home dir on HEALTHY (The reason I did it into the home's Applications is that I didn't want to mix up the applications from the existing user on HEALTHY.)&lt;br /&gt;&lt;br /&gt;Once that was done, that user account on HEALTHY worked pretty much just like it did on SICK and since HEALTHY's OS was intact to start with, I saw no weirdness with the widgets (And in theory no other major problems).&lt;br /&gt;&lt;br /&gt;On HEALTHY I had to log out and log back in again, then my doc even had all my apps in it and Eclipse started ok – but i did notice that FDT plugin for Eclipse wanted its serial # again. Still, overall probably rated a success since it seems most of my preferences and settings were retained.&lt;br /&gt;&lt;br /&gt;So in theory (and I haven't actually tried this yet), if I do a fresh install on SICK and wipe it clean, i should have similar success syncing from HEALTHY's home back to SICK's home (and for good measure I'll give the new main user account have the same short name)&lt;br /&gt;&lt;br /&gt;Later, to clean up HEALTHY I can just delete the user account I created&lt;br /&gt;&lt;br /&gt;I know there are good cloning apps like Carbon Copy Cloner but i didn't want to clone my messed up OS, only my files/prefs.&lt;br /&gt;&lt;br /&gt;If anyone has a better less time consuming solution, I'd love to hear it.&lt;br /&gt;&lt;br /&gt;**UPDATE: It worked like a charm, I'm back up and though it wasn't a quick fix, it was no doubt faster than reinstalling everything and setting up all my prefs and paths etc again. Hurray!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-7678955586000353124?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/7678955586000353124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=7678955586000353124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/7678955586000353124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/7678955586000353124'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/10/wiping-your-mac-clean-but-saving-your.html' title='Wiping your mac clean but saving your Home folder'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-4857528200234085152</id><published>2007-08-24T10:53:00.000-07:00</published><updated>2007-08-24T11:09:17.336-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gpg pgp osx security'/><title type='text'>Secure email using regular email.</title><content type='html'>Regular email is probably one of the least secure things out there. If you send an email to someone, not only is it plain text and insecure on your own computer (if someone had physical access to it), but it gets sent through the Internet. This means, that not only could someone intercept your email while it's being sent, but that it could get intercepted at MANY points along the way through the Internet, by which it hops between many different mail server computers. Furthermore, many if not all of these points will actually store that email for a limited time much like the post offices around the world need to collect and hold your mail while it gets ready to be sent to the next post office. This means that if a local server administrator or Web hosting company or hacker can get direct or indirect access to these machines they can also read your mail that way.&lt;br /&gt;&lt;br /&gt;Most people know not to put information that is too sensitive in email, but they may not realize just how vulnerable your message is. Even once a message reaches your recipient, there could be lingering copies of the email on the servers it passed through, perhaps in a cache or whatever. Perhaps some organization whether a spy or a marketing agency is hording messages for analysis later, who knows. Anyway, I don't generally have any information that's of a life or death sensitive nature, but I do like to protect my clients' interest where possible. Often Web developers and the like deal with communicating about server access in terms of usernames and passwords.&lt;br /&gt;&lt;br /&gt;If you still want to exchange user/pass or credit card information with the convenience of email there is a way to strongly encrypt your messages in a way that doesn't matter who intercepts them. If someone obtains your message it will be scrambled.&lt;br /&gt;&lt;br /&gt;I'm not going to get into the subject of how Public Key Encryption (PKE) works, but there are some GUI plugins for most operating systems that allow you to manage your ability to encrypt and decrypt messages.&lt;br /&gt;&lt;br /&gt;Especially useful is a plugin for Apple's Mail email client that allows you to encrypt a message. You can also send a plain text message that is digitally signed in such a way that shows that you irrefutably sent the message. If anyone changes even one character in the message, the signature will not validate any more. All this in the end, with plain text. This means that though you and your recipients need to have special software installed to allow this to work on your computers, you do not need any special email service from your company or host. Furthermore, this encryption software is free and open source. Learn more about it here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://macgpg.sourceforge.net/"&gt;gpg for os x&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gnupg.org/" target="_blank"&gt;gpg for windows / linux&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-4857528200234085152?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/4857528200234085152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=4857528200234085152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4857528200234085152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4857528200234085152'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/08/secure-email-using-regular-email.html' title='Secure email using regular email.'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-4289023150302747017</id><published>2007-08-24T10:51:00.000-07:00</published><updated>2007-08-24T10:53:18.750-07:00</updated><title type='text'>New security / cryptography blog</title><content type='html'>I came across this blog that I found to be an interesting read if you're into security and cryptography:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.crypto.com/blog" target="_blank"&gt;Matt Blaze's Exhaustive Search&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-4289023150302747017?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/4289023150302747017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=4289023150302747017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4289023150302747017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/4289023150302747017'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/08/new-security-cryptography-blog.html' title='New security / cryptography blog'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-646296094188384305</id><published>2007-08-07T11:40:00.000-07:00</published><updated>2007-08-07T21:38:25.614-07:00</updated><title type='text'>Ubuntu (Linux)</title><content type='html'>&lt;b&gt;Background on why I tried &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I've been using Redhat / Fedora Core for some time with Gnome or KDE. Mostly I've used these in a server capacity, but I have installed these on some old macs and PCs to try them out from a desktop computer perspective. &lt;br /&gt;&lt;br /&gt;I have never been terribly impressed with the UI, but ever time I tried I saw more and more progress. As a developer, I saw great potential in using Linux as a desktop as there are some great tools that exist for Linux. However, not all of them did so it was just an early peek into the future for me. With the Flex SDK including Flash being available for Linux, I can basically do my job as a pure developer on Linux now. I don't, but I could! haha. I'm keeping my eye on this free alternative as it interests me purely because it is free. Free AND good is good right?&lt;br /&gt;&lt;br /&gt;As a designer, I still don't see Linux making much headway for a while unless Adobe releases their tools for Linux too. Linux advocates will point you to graphic design tools such as Gimp and so on, but most career professional designers will work with the tools they were taught on, or those that work on the most prevalent machines (mac/pc) and with the tools that their colleagues use because often files are getting worked on by a group or traded. Then you get into the whole print shop / service bureau compatibility thing. A friend of mine at ILM is in the creative dept and he is now using Linux a LOT because of the custom tools they use, and says they're unbeatable, so it's not like we can discount Linux. However, they've got a controlled environment over there, with an exclusive group that can all agree to be cohesive. That doesn't really work (yet) for the mainstream.&lt;br /&gt;&lt;br /&gt;Lately I heard some buzz about Ubuntu being a great Linux distribution, that it was easy to install and use. That caught my attention, because in the context, I interpreted that to mean that it was easy for anyone, not just someone more technical.&lt;br /&gt;&lt;br /&gt;My wife's PC is a few years old and she basically hated how slow and bloated it got, so I finally convinced her to get an Intel iMac. She loves it! I took the old PC, partitioned it and installed Ubunto on the second partition.&lt;br /&gt;&lt;br /&gt;My conclusion with the one pc i tested which is a P4 with 256MB ram, is that the installer took so long as to be unusable. I had to cancel, and go and download the text-based installer – which was pretty easy and usable compared to other distros' I've tried, but still – not adequate for a novice. &lt;br /&gt;&lt;br /&gt;Once installed, the OS booted up faster that the PCs. The interface is pleasant and fairly polished. It's pretty straight forward to use, and has some similarities to windows as well as mac. Some of the same keyboard shortcuts are the same. Ubuntu is by far the easiest distro I've tried to use once it's on the user's system. To add and remove programs is very easy if you're picking from the list of online software they've got listed in the add/remove tool. The browser is FireFox, email is Evolution, which seems pretty darn powerful and will even work with an MS Exchange server. It comes with OpenOffice which is compatible with Microsoft Office files.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The conclusion that I have come to:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you know someone who needs a computer, but either can't afford one or won't bother buying one, and you have or know someone who has an older pc that they're willing to part with, Ubuntu is a great solution for someone who just needs email, word processing and web surfing. There are even some games on there. You might just have to install it for them, that's all. &lt;br /&gt;&lt;br /&gt;One cool thing too was that the Ubuntu installer itself had an option for leaving the existing Windows install on the computer and resized the partition and created another one for me. When the computer boots up you get a text based menu for 6 seconds that lets you choose between Windows and Ubuntu. When the time expires, Ubuntu boots up by default.&lt;br /&gt;&lt;br /&gt;If you use the text based installer, the only thing i found confusing was the partition size. It wasn't clear whether or not the size you set is for the old Windows partition, or the new Ubuntu one. For the record, as of today's date, it's the size of the Windows partition after resizing it. I chose to leave 3 gigs on there for windows (beyond what it was already using), and used the rest for Ubuntu.&lt;br /&gt;&lt;br /&gt;Also, Mac OS X still blows Ubuntu out of the water, but for those types of simple home users, Ubuntu just might be perfect. It'll also let your recycle an old computer. If you're more of a hard-core Linux head or developer, this article's probably not for you and you probably have a lot more options :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-646296094188384305?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/646296094188384305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=646296094188384305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/646296094188384305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/646296094188384305'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/08/ubuntu-linux.html' title='Ubuntu (Linux)'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-2061366963970807779</id><published>2007-07-16T09:21:00.000-07:00</published><updated>2007-07-16T09:23:53.162-07:00</updated><title type='text'>Reduce your spam intake (in Canada)</title><content type='html'>Supposedly this is pretty effective:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.the-cma.org/?WCE=C=47|K=224217"&gt;The Canadian Marketing Association's, Do Not Contact Service&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-2061366963970807779?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/2061366963970807779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=2061366963970807779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2061366963970807779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/2061366963970807779'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/07/reduce-your-spam-intake-in-canada.html' title='Reduce your spam intake (in Canada)'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-604287855469623766</id><published>2007-06-25T09:26:00.000-07:00</published><updated>2007-06-25T09:29:14.784-07:00</updated><title type='text'>I sure wish I could read my digital magazine subscription in bed more easily</title><content type='html'>&lt;a href="http://forums.treehugger.com/viewtopic.php?t=690&amp;start=0&amp;postdays=0&amp;postorder=asc&amp;highlight=" target="_blank"&gt;This is an environmental post&lt;/a&gt; that begs a technological solution so I posted it on TreeHugger.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-604287855469623766?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/604287855469623766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=604287855469623766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/604287855469623766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/604287855469623766'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/06/i-sure-wish-i-could-read-my-digital.html' title='I sure wish I could read my digital magazine subscription in bed more easily'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-3683644362041030633</id><published>2007-06-12T10:09:00.000-07:00</published><updated>2007-06-12T10:10:26.710-07:00</updated><title type='text'>Creating a bare-bones output window in the Terminal in OS X</title><content type='html'>&lt;a href="http://flash-focus.blogspot.com/2007/06/creating-bare-bones-output-window-in.html" target="_blank"&gt;Read the article on Flash Focus&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-3683644362041030633?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/3683644362041030633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=3683644362041030633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/3683644362041030633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/3683644362041030633'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/06/creating-bare-bones-output-window-in.html' title='Creating a bare-bones output window in the Terminal in OS X'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-1425993233410186986</id><published>2007-06-11T23:16:00.000-07:00</published><updated>2007-06-11T23:16:12.578-07:00</updated><title type='text'>I've switched from Firefox to Camino (OS X)</title><content type='html'>I've recently switched my primary browser from Firefox to Camino for OS X. It's got the same rendering engine as Firefox, but the UI has been created natively for OS X rather than in the cross platform &lt;a href="http://developer.mozilla.org/en/docs/The_Joy_of_XUL#Introduction" target="_blank"&gt;XUL&lt;/a&gt;. The downside is you don't get all the same plug ins which depend on XUL, but the upside is you get the rendering reliability of Firefox, with the speed of Safari.&lt;br /&gt;&lt;br /&gt;I realized I wear two hats when I'm online – Web developer and everyday user. When I'm in Web developer mode I usually use Firefox because I take advantage of some great developer plug ins like &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/60" target="_blank"&gt;Web Developer toolbar&lt;/a&gt;, &lt;a href="http://www.getfirebug.com/" target="_blank"&gt;FireBug&lt;/a&gt; and &lt;a href="http://xk72.com/charles/" target="_blank"&gt;Charles&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When I'm a regular user though, I just want to get stuff done faster, and I want my browser to securely remember some of my passwords. Firefox doesn't remember passwords securely for you. Trust me, they're easy to crack open. Safari and Camino on the other hand are more native in OS X, can take advantage of OS X's &lt;a href="http://www.apple.com/macosx/features/security/" target="_blank"&gt;Keychain&lt;/a&gt; security which encrypts password information. Note, Firefox does not encrypt passwords that it stores. I'm not going to get into encryption strength, but Keychain's pretty damn good compared to no encryption.&lt;br /&gt;&lt;br /&gt;If you want to make the switch to Camino or any other browser other than Safari as your default browser, you'll have to actually change the default setting in Safari's preferences. I think that requirement is weird and that it should be in the OS X Preferences panel like everything else, but that's another topic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-1425993233410186986?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/1425993233410186986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=1425993233410186986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1425993233410186986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/1425993233410186986'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/04/ive-switched-from-firefox-to-camino-os.html' title='I&apos;ve switched from Firefox to Camino (OS X)'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-8936154900746451613</id><published>2007-04-30T11:21:00.000-07:00</published><updated>2007-06-11T22:43:34.418-07:00</updated><title type='text'>Flash posts will be found on another blog, Flash Focus</title><content type='html'>I am honoured to have been invited to participate as a contributor on the &lt;a href="http://flash-focus.blogspot.com/" target="flashFocus"&gt;Flash Focus&lt;/a&gt; blog. I will continue to post to this blog to because it has a wider topic range covering *nix, PHP and general tinkerings. For Flash and Flex however, I'll be posting to &lt;a href="http://flash-focus.blogspot.com/" target="flashFocus"&gt;Flash Focus&lt;/a&gt;. I'll create a post here as a reference though when I post something new there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-8936154900746451613?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/8936154900746451613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=8936154900746451613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/8936154900746451613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/8936154900746451613'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/04/flash-posts-will-be-found-on-another.html' title='Flash posts will be found on another blog, Flash Focus'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-115886764904195484</id><published>2007-02-04T16:00:00.000-08:00</published><updated>2007-02-05T20:40:46.086-08:00</updated><title type='text'>Collections in ActionScript</title><content type='html'>An undocumented feature of ActionScript 2 is that list collection classes are possible. For the past year or so I've been using them and it's saved me a lot of time and headaches.&lt;br /&gt;&lt;br /&gt;Other languages have had them for eons, but for those just getting acquainted with the idea, a (list) collection in this context, is simply an array of one type of object. Specifically, the collection only allows a specific type of object to be added to it, and the collection itself is a strictly defined type of object. That means, that when you encounter a collection that exists in someone's code, you can be assured that you know exactly what is inside it, whereas an array can hold anything.&lt;br /&gt;&lt;br /&gt;It is quite reasonable for human error to cause you to unintentionally add a string object into an array that you intended to only hold numbers for example. Secondly, it is quite possible for you to accidentally pass the wrong array to a function. Collections save you from these headaches before they get buried like a needle in a haystack. That is, the Flash compiler will catch these mistakes early. If you're using &lt;a href="http://www.mtasc.org/" target="_blank"&gt;MTASC&lt;/a&gt;, the error messages are even more helpful.&lt;br /&gt;&lt;br /&gt;Imagine you have an address book class with a property called &lt;code&gt;people&lt;/code&gt; in which you want to contain a list of PersonVO objects (&lt;a href="http://www.adobe.com/devnet/flex/articles/cairngorm_pt2_03.html" target="_blank"&gt;see "Introducing the Value Object / Data Transfer Object Pattern" here to learn about using value objects&lt;/a&gt;. Using a collection your property would be strictly typed.&lt;br /&gt;&lt;br /&gt;Your compiler would throw an error if you tried to pass anything other than a PersonVO object to the function.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abcd.ca/infoblog/asCodePosts/ABCDCollectionsExample.zip"&gt;Here is the source code that demonstrates the above entry&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-115886764904195484?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/115886764904195484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=115886764904195484' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/115886764904195484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/115886764904195484'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/02/collections-in-actionscript.html' title='Collections in ActionScript'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-117063037498255451</id><published>2007-02-04T14:57:00.000-08:00</published><updated>2007-02-04T15:17:22.956-08:00</updated><title type='text'>Google Calculator</title><content type='html'>Maybe this is old news to you, but in case it slips past you without you noticing, Google has added Google Calculator to their tool suite. All you have to do is enter a calculation into the regular search box, and it will give you the answer.&lt;br /&gt;&lt;br /&gt;Now, on OS X I have a calculator that is very easy to use and can do pretty much anything including currency conversion. To convert $100 US dollars to Canadian dollars, I have to update my currency exchange rates, then pick convert currency, then pick the two different currencies. I've loved the convenience. Simply put, Google's is faster - and now I know I can use it on any computer that's on the Internet. Check out these searches:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=100+USD+in+CAD&amp;amp;btnG=Search" target="_blank"&gt;Convert $100 US to Canadian &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=1+pound+in+kilograms&amp;btnG=Search" target="_blank"&gt;My recipe calls for 1 pound of lean ground beef, but the label on the meat I bought is in Kilograms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ca/intl/en/help/features.html#calculator" target="_blank"&gt;More on Google Calculator here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-117063037498255451?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/117063037498255451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=117063037498255451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/117063037498255451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/117063037498255451'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2007/02/google-calculator.html' title='Google Calculator'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-116111734294917386</id><published>2006-10-17T13:27:00.000-07:00</published><updated>2006-10-17T13:38:03.106-07:00</updated><title type='text'>ActionScript class - IntrospectionUtils</title><content type='html'>I have started a class to wrap some common introspection functions. So far I've only got one in here, which wraps a function posted earlier. I'll post updates to it, with the latest version always &lt;a href="http://www.abcd.ca/infoblog/asCodePosts/IntrospectionUtils.zip"&gt;here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ca.abcd.utils.IntrospectionUtils.showClasses( ["com", "mx"] );&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-116111734294917386?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/116111734294917386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=116111734294917386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/116111734294917386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/116111734294917386'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/10/actionscript-class-introspectionutils.html' title='ActionScript class - IntrospectionUtils'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-114728649671723294</id><published>2006-05-10T11:38:00.000-07:00</published><updated>2006-06-12T21:15:00.656-07:00</updated><title type='text'>Recursive function to find class that were compiled into swf - ActionScript 2.0</title><content type='html'>Here's a little script that I wrote which will find which classes are being compiled into your swf. This maybe helpful if you're trying to pare down your swf using an Exclude xml file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/**&lt;br /&gt; * Recursive function, prints out names of classes&lt;br /&gt; * that have been compiled into the swf. Can be used&lt;br /&gt; * to reduce file size along with an Exclude xml file&lt;br /&gt; * to omit unneccessary classes.&lt;br /&gt; * &lt;br /&gt; * @param mc Scope to look in&lt;br /&gt; * @param prefix Prefix of package level&lt;br /&gt; * @author Andrew Blair :: www.abcd.ca&lt;br /&gt; */&lt;br /&gt;function findClasses(mc:MovieClip, prefix:String){&lt;br /&gt; if (prefix == undefined) prefix = "";&lt;br /&gt; for (var i:String in mc){&lt;br /&gt;  if (typeof mc[i] == "function"){&lt;br /&gt;   trace(prefix + "." + i);&lt;br /&gt;  }else if(typeof mc[i] == "object"){&lt;br /&gt;   findClasses(mc[i], prefix + "." + i);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;findClasses(_global.com, "com");&lt;br /&gt;findClasses(_global.mx, "mx");&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-114728649671723294?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/114728649671723294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=114728649671723294' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114728649671723294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114728649671723294'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/05/recursive-function-to-find-class-that.html' title='Recursive function to find class that were compiled into swf - ActionScript 2.0'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-114728327247066219</id><published>2006-05-10T10:44:00.000-07:00</published><updated>2006-06-12T21:12:27.900-07:00</updated><title type='text'>Flash quirk with Delete ASO and Exclude xml files</title><content type='html'>I found that when using an Exclude xml file, test-movie will employ the xml as expected. However, when you go to the Control Menu and Delete ASO Files, the next test-movie will not use the xml.&lt;br /&gt;&lt;br /&gt;You'll notice a file size difference too in the bandwidth profiler, tipping you off that the classes you were trying to exclude are infact being included still.&lt;br /&gt;&lt;br /&gt;I discovered this when trying to figure out how to use the Binding class with my own custom components. I was using an exclude file to try and weed out where a dependency was in either the TextInput component or the UIComponent class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-114728327247066219?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/114728327247066219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=114728327247066219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114728327247066219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114728327247066219'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/05/flash-quirk-with-delete-aso-and.html' title='Flash quirk with Delete ASO and Exclude xml files'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-114680986606598243</id><published>2006-05-04T23:10:00.000-07:00</published><updated>2007-02-05T21:04:41.993-08:00</updated><title type='text'>Code hinting in ASDT for Eclipse</title><content type='html'>It took some tinkering, but I figured out the combination of things I need to do to get code hinting to work in the &lt;a href="#ASDTVersion"&gt;*ASDT plugin for Eclipse&lt;/a&gt;. What I was really after, was code hinting for both my own classes, as well as the Macromedia "core classes" such as &lt;code&gt;MovieClip&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;I may be writing this more for my own sanity when I forget how I got this to work so I can check back, but hopefully it'll also help someone else out.&lt;br /&gt;&lt;br /&gt;I think the turning point for me was realizing that there was more working than I realized when trying all sorts of different combinations. The main problem that remains for me, is that if I type&lt;br /&gt;&lt;br /&gt;&lt;code&gt;import ca.&lt;/code&gt;&lt;i&gt;&amp;lt;ctrl-space&amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I get an error that reads,&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid #99F"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;quot;Content Assist&amp;quot; did not complete normally. Please see the log for more information.&lt;br /&gt;&lt;br /&gt;Reason:&lt;br /&gt;java.lang.NullPointerException&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The thing is though, despite that error, if I write my import statement correctly without trying to use content completion, code hinting works from there on for my classes. It also works for the macromedia core classes. Here's what I've done to get it to work:&lt;br /&gt;&lt;br /&gt;There seems to be a bug with the ASDT's preference panel where it wants you to specify the path to the core classes so I leave that blank.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Instead,I go to: Window-&gt;Preferences-&gt;General-&gt;Workspace-&gt;Linked Resources and click New.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There, I add the path to the Macromedia ...First Run/Classes folder.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I give this an id of coreClasses in the Name field for the linked resource.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Click OK, and return to your Navigator view.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;My project class packages are located in the root of my project under source/classes. You can put yours wherever you want.&lt;br /&gt;&lt;br /&gt;Now we need to tell the project where to find my project classes and the Macromedia ones.&lt;br /&gt;&lt;br /&gt;Right click your project and select Properties.&lt;br /&gt;&lt;br /&gt;Add the three class paths. Mine look like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;./source/classes&lt;br /&gt;./coreClasses&lt;br /&gt;./coreClasses/FP8&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For the one that reads FP8, if your project is publishing to Flash Player 7, use FP7.&lt;br /&gt;&lt;br /&gt;For code hinting, that's all I need to do. Maybe try right clicking your project and selecting Refresh too.&lt;br /&gt;&lt;br /&gt;I should mention as a side note that I can't seem to get a couple other features working in ASDT but I have workarounds for what I assume are bugs for now:&lt;br /&gt;&lt;br /&gt;To create a new project, I don't right click in the Navigator view and select New ActionScript project - instead, I right click and select New-&gt;Other-&gt;Simple-&gt;Project. When Similarly, when I want to create a new class I right click in Navigator, and select New-&gt;Other-&gt;Simple-&gt;File&lt;br /&gt;&lt;br /&gt;Hope this saves someone some time.&lt;br /&gt;&lt;br /&gt;&lt;a name="ASDTVersion"&gt;&lt;/a&gt;*At the time of this writing, I'm using Eclipse 3.1 and ASDT 0.0.8.build5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-114680986606598243?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/114680986606598243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=114680986606598243' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114680986606598243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114680986606598243'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/05/code-hinting-in-asdt-for-eclipse.html' title='Code hinting in ASDT for Eclipse'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-114378935954269743</id><published>2006-03-30T23:11:00.000-08:00</published><updated>2006-06-12T20:57:22.373-07:00</updated><title type='text'>Eclipse templates are my new best friend</title><content type='html'>I'll let you read &lt;a href="http://www.brooksandrus.com/blog/?p=4" target="_blank"&gt;this blog post&lt;/a&gt; first. Since I read this, I've been using templates tonnes, they're awesome.&lt;br /&gt;&lt;br /&gt;Here are some of the templates that I've customized:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Creates an empty class&lt;/h3&gt;&lt;code&gt;/**&lt;br /&gt; * ${description}&lt;br /&gt; * &lt;br /&gt; * @author Andrew Blair :: www.abcd.ca&lt;br /&gt; */&lt;br /&gt;class ${enclosing_package_and_type} ${cursor} {&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Constructor${constructorDescription}&lt;br /&gt;  */&lt;br /&gt;  public function ${enclosing_type}(${arguments}) {&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;toString&lt;/h3&gt;&lt;code&gt;&lt;br /&gt; public function toString(Void):String {&lt;br /&gt;  var parts:Array = [];&lt;br /&gt;  parts.push("----------------------------");&lt;br /&gt;  parts.push("[${enclosing_type} object]");${cursor}&lt;br /&gt;  parts.push("----------------------------");&lt;br /&gt;  return parts.join("\n");&lt;br /&gt; }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I'd like to add that I'm also pretty stoked about the ctrl-d keyboard shortcut to delete a line at once. Other apps have that shortcut too, it saves so much time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-114378935954269743?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/114378935954269743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=114378935954269743' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114378935954269743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114378935954269743'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/03/eclipse-templates-are-my-new-best.html' title='Eclipse templates are my new best friend'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-114361495237986962</id><published>2006-03-28T22:46:00.000-08:00</published><updated>2006-03-28T22:59:55.026-08:00</updated><title type='text'>Command line subversion tips 1</title><content type='html'>If you're not on OS X in the terminal, then Cygwin on PC will work, just install the subversion devel.&lt;br /&gt;&lt;br /&gt;From the root of your checked out project:&lt;br /&gt;&lt;br /&gt;Find any files not added (to prevent forgetting to add files you thought would go through on a commit)&lt;br /&gt;&lt;code&gt;svn status | grep ?&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Take it a step further to find only ActionScript and FLA files&lt;br /&gt;&lt;code&gt;svn status | grep ? | egrep 'as$|fla$'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Update, looking only for conflicts&lt;br /&gt;&lt;code&gt;svn update | grep ^C&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I'd like to hear your comments on other good tips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-114361495237986962?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/114361495237986962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=114361495237986962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114361495237986962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/114361495237986962'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/03/command-line-subversion-tips-1.html' title='Command line subversion tips 1'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113799029539525156</id><published>2006-01-22T20:22:00.000-08:00</published><updated>2006-03-28T23:24:11.206-08:00</updated><title type='text'>What you see is what you uploaded? Are you sure?</title><content type='html'>Ever uploaded something to a remote server to test it, say a Flash swf file, and you can't see your changes? The obvious first step is to clear your cache, but after that you may find yourself second guessing yourself. Did I upload to the right place? Did I upload &lt;i&gt;from&lt;/i&gt; the right place? Did I publish the file before I uploaded? Is my clear-cache really working?&lt;br /&gt;Is the Web server caching the files? This last one is something you may not think of and probably won't be an issue on a shared hosting account. However in larger development environments with a dedicated server, sometimes server caching improves performance, but it can be a bitch during development when it's the last thing you check for.&lt;br /&gt;&lt;br /&gt;Before calling up the IT people who operate the server, there's a simple test you can perform.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Download the file to your computer from the Web server. Save it to a location somewhere other than where the original file is that you uploaded to begin with. One way to get the file is to use curl on the command line like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;curl -O http://path/to/file.swf&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now for each file run this command:&lt;br /&gt;&lt;code&gt;md5 &lt; file.swf&lt;/code&gt;&lt;br /&gt;If that syntax doesn't work, try this instead:&lt;br /&gt;&lt;code&gt;openssl md5 &lt; file.swf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of each, should look something like &lt;code&gt;41689e20b9014afe77ec3c4d27dd5391&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;That hash is unique for each file. If you change anything in the file, the hash will also be different. Therefore, compare the two hashes (server file vs local file) to see if they match exactly. If not, you've confirmed that the file you uploaded is not in fact the file that has been served up in your browser.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;do they match?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113799029539525156?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113799029539525156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113799029539525156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113799029539525156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113799029539525156'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/01/what-you-see-is-what-you-uploaded-are.html' title='What you see is what you uploaded? Are you sure?'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113783112499139401</id><published>2006-01-20T23:52:00.000-08:00</published><updated>2006-01-22T12:10:36.330-08:00</updated><title type='text'>Design patterns, UML, software links</title><content type='html'>It's been a while since my last post and I wanted to share some of what I've been working on. I was also away in Toronto and LA for a while so excuse the absence please.&lt;br /&gt;&lt;br /&gt;I'm working on an RIA where the front-end is in Flash and the back-end is Java. I'm not doing the Java part. I'm working as part of a team to do the Flash though. We're trying out a platform called &lt;a href="http://ariaware.com/products/arp/"&gt;ARP&lt;/a&gt;. It's not a framework, it's a methodology as Ariaware calls it. It's a set of base classes, and a way to organize your project, using (as I understand) &lt;a href="http://www.webopedia.com/TERM/J/J2EE.html"&gt;J2EE&lt;/a&gt; design patterns.&lt;br /&gt;&lt;br /&gt;For those who aren't sure what a design pattern is, it's essentially a good way to solve a problem when programming, that you can use again and again when the same problem arises. It can be used multiple times within the same project and from project to project. It's a way to apply a solution to something without having to think up a new way, because this solution is tried tested and true.&lt;br /&gt;&lt;br /&gt;I have problem A, I will use solution B.&lt;br /&gt;I have problem A, I will use solution B.&lt;br /&gt;I have problem A, I will use solution B.&lt;br /&gt;I have problem A, I will use solution B.&lt;br /&gt;I have problem A, I will use solution B.&lt;br /&gt;&lt;br /&gt;See a &lt;span style="font-style:italic;"&gt;pattern&lt;/span&gt;? The 'design' part of 'design pattern', isn't about anything visual as a graphic designer might suspect.&lt;br /&gt;&lt;br /&gt;ARP is a set of about 6 or 7 design patterns working together. So far, I like what I see. It keeps your complex application well organized, and if multiple team members understand it, should help expedite communication. There is ramp up time, but the good news is that Ariaware has documented ARP very well. I do wish it had a PDF version to download. Currently it only has an online version, and a standalone Windows version.&lt;br /&gt;&lt;br /&gt;Another thing I've gotten pretty heavily into lately is UML. Use Case diagrams, Class diagrams, and Sequence diagrams. On OS X I started to use OmniGraffle. It's got a nice cozy drag and drop interface, very Apple. Good for smaller simple docs. Then I ran into collaboration problems with my PC counterparts who use the standard, Visio. Visio is pretty crappy still, especially when you compare it to &lt;a href="http://www.sparxsystems.com.au/products/ea.html"&gt;Enterprise Architect&lt;/a&gt; (EA), which in my opinion, blows both of the others out of the water.&lt;br /&gt;&lt;br /&gt;EA has a central source for data, so if you reuse parts within several diagrams you have one place to make a change that updates globally, like the library and symbols in Flash. It also lets people on a network work concurrently on the same file. It lets you insert sequence lines between two existing ones, something Visio can't do and was a point of frustration.&lt;br /&gt;&lt;br /&gt;The verdict is still out whether or not doing this UML documentation and ARP will save us time in the long run by planning things to a granular level up front. Veteran software engineers would say yes. I see the potential, but I will follow up when all is said and done.&lt;br /&gt;&lt;br /&gt;I still have the OS X problem. I don't have a PC and am not really very eager to get one either. I do have a Linux box running Gnome as the desktop environment. I looked to see if there was a version of EA for Linux, and sure enough there is. BUT, it's still the windows version (an .EXE), but runs under an emulator of sorts. So, the bottom line is, it should work. I'm working with &lt;a href="http://www.codeweavers.com/products/cxoffice/"&gt;CrossOver&lt;/a&gt;'s support team to get it running properly it didn't take long to get it running and opening documents, but there are some fatal errors happening because I can't seem to get one dependency, MDAC installed. I'll follow up with a comment if I get it running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113783112499139401?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113783112499139401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113783112499139401' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113783112499139401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113783112499139401'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2006/01/design-patterns-uml-software-links.html' title='Design patterns, UML, software links'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113350053374827608</id><published>2005-12-01T21:10:00.000-08:00</published><updated>2005-12-01T21:16:02.403-08:00</updated><title type='text'>Google search tricks</title><content type='html'>Recently, I tried putting &lt;code&gt;.*&lt;/code&gt; in Google's search field to see if regular expressions would work. I was surprised to see that it worked. Turns out, it's not a regex, but they do allow * as a wildcard. I had a feeling there was more that I didn't know so I did a little search. Here's a nice little list that'll get you finding stuff more easily. There are some cool things in here, I like the ~ one. I have found the * useful lately, for finding source code, like say,&lt;br /&gt;&lt;br /&gt;&lt;code&gt;actionscript "class * extends * implements"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eggheadcafe.com/articles/20041031.asp" target="_blank"&gt;http://www.eggheadcafe.com/articles/20041031.asp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113350053374827608?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113350053374827608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113350053374827608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113350053374827608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113350053374827608'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/12/google-search-tricks.html' title='Google search tricks'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113325913081172416</id><published>2005-11-29T02:05:00.000-08:00</published><updated>2005-11-29T02:14:07.976-08:00</updated><title type='text'>PHP search field in FireFox</title><content type='html'>Perhaps I'm slow on noticing this, but after visiting php.net about a billion times in my browser for reference, I wondered if I could change the google search field (to right of url field), to a php search.&lt;br /&gt;&lt;br /&gt;Sure enough, there is a way:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Click the Google search field icon&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Select "Add Engines..." at the bottom of that list&lt;/li&gt;&lt;br /&gt;&lt;li&gt;On the page it takes you to, click "Find lots of other search engines..."&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Under "Find Search Plugins", search for "php"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Click on "PHP Manual (EN)", and it will install it without a restart&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113325913081172416?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113325913081172416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113325913081172416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113325913081172416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113325913081172416'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/php-search-field-in-firefox.html' title='PHP search field in FireFox'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113289910270243831</id><published>2005-11-24T22:06:00.000-08:00</published><updated>2005-11-24T22:11:42.703-08:00</updated><title type='text'>Linux for Human Beings</title><content type='html'>I've been reading some good things about this. It's a Linux distribution that claims to be easy to install. Reminds me of Apple's ease of use focus but with an injection of open source rebelliousness.&lt;br /&gt;&lt;br /&gt;http://www.ubuntulinux.org/http://www.blogger.com/img/gl.spell.gif&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113289910270243831?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113289910270243831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113289910270243831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113289910270243831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113289910270243831'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/linux-for-human-beings.html' title='Linux for Human Beings'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113289692096898841</id><published>2005-11-24T21:22:00.000-08:00</published><updated>2005-11-27T15:02:27.066-08:00</updated><title type='text'>Zend Studio (PHP IDE)</title><content type='html'>I'm working on a little project for myself in PHP 5 &amp;ndash; which I love PHP 5 by the way! It's all OOP and MVC, packaged into lots of classes of varying size. I didn't have a robust IDE though. I was just using Dreamweaver for its syntax colouring, some basic code hinting and to hop in and out of WYSIWYG mode for my HTML templates.&lt;br /&gt;&lt;br /&gt;I've stuck to my build plan, but as my project grew in complexity, I found my progress slowing down and I was getting frustrated. A lot of my time was spent looking up class methods and their arguments, and trying to figure out which class had what. Trying to find stuff in my existing class was getting to be a pain.&lt;br /&gt;&lt;br /&gt;I then thought of Zend Studio. I had tried it a couple of years ago. It does what a good IDEs for other languages do. It does a lot more than I was immediately lacking, but the version I tried back then was unbearably slow, and some of the interface was not rendering properly in OS X. I was told that it's because it is written in Java. Well, I thought I'd try it again since I heard version 5 is out and I'd still heard some advocates of it.&lt;br /&gt;&lt;br /&gt;I'm not going to go into great detail, but it is in a nutshell. I love it. I'm mostly  using a few features but it filled a huge void. My productivity has shot up again, probably better than before when I only had one or two classes even. It's very responsive and can keep up to my 85wpm typing speed. I don't know if it's because I now have a G5 (vs G4), or if it's because it's built on the new Java, which I understand has great speed and efficiency improvements, or because probably too, Zend has optimized their product. Whatever, it's fast enough now.&lt;br /&gt;&lt;br /&gt;The things I really benefit from:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It shows you all your classes, their methods, and access (private/public/protected) in a panel.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It code hints not only your current file, but for other classes too that aren't even open.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It code hints your JavaDoc comments, and automates writing them to a point.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Overall, I'm impressed with the speed improvement. I hear there's another product, Komodo or something like that. I hear it's pretty good, but not as good for PHP (it's a bit like Eclipse and supports other languages). I haven't used it so I can't really say for sure, I'd like to hear some opinions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113289692096898841?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113289692096898841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113289692096898841' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113289692096898841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113289692096898841'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/zend-studio-php-ide.html' title='Zend Studio (PHP IDE)'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113219182989640818</id><published>2005-11-16T17:40:00.000-08:00</published><updated>2005-11-23T09:24:57.310-08:00</updated><title type='text'>JavaScript to Flash / Flash to JavaScript</title><content type='html'>In short, it now works on Mac/PC in FireFox, IE and Safari in Flash Player 8. Pretty sweet eh?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.communitymx.com/content/article.cfm?cid=0922A" target="_blank"&gt;Read more here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113219182989640818?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113219182989640818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113219182989640818' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113219182989640818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113219182989640818'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/javascript-to-flash-flash-to.html' title='JavaScript to Flash / Flash to JavaScript'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113212705585423857</id><published>2005-11-15T23:37:00.000-08:00</published><updated>2005-11-15T23:51:40.480-08:00</updated><title type='text'>Safari AJAX woes</title><content type='html'>Well, in the end, I got it to work. Safari wasn't posting my XML object properly to the server. In a nutshell, my problem was isolated to the JavaScript XML object in Safari, not the other aspects of AJAX.&lt;br /&gt;&lt;br /&gt;For one thing, XML is supposed to be case sensitive. I had mixed case attribute names, like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;person firstName="Andrew" lastName="Blair"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, I'm not talking about making XML in JavaScript by concatenating strings, I'm talking about using the native objects. When using the object's method to dump to a string so I could send the string to the server, I found that only in Safari, did my attribute names get converted to lower case. Node names and attribute values did not seem to be affected, they could be mixed case without incident. I reported the bug to Apple. We'll see if they fix it, but obviously the workaround is to just use lowercase attribute names.&lt;br /&gt;&lt;br /&gt;The second problem, was with creating a text node. Safari didn't convert the reserved characters to entities, breaking the validity of the XML document. FireFox's equivalent method would. Luckily, all browsers seem to support createCDATANode, which wraps the value in CDATA tags.&lt;br /&gt;&lt;br /&gt;Here's an example a text node vs cdata node, (note the &amp;amp; in these examples):&lt;br /&gt;&lt;br /&gt;Here's what Safari's looked like:&lt;br /&gt;&lt;code&gt;&amp;lt;url&amp;gt;http://abcd.ca/?var=value1&amp;amp;var2=value2&amp;lt;url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here's what FireFox and IE's looked like:&lt;br /&gt;&lt;code&gt;&amp;lt;url&amp;gt;http://abcd.ca/?var=value1&amp;amp;amp;var2=value2&amp;lt;url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here's how the solution looks in all browsers:&lt;br /&gt;&lt;code&gt;&amp;lt;url&amp;gt;&amp;lt;![CDATA[abcd.ca/?var=value1&amp;amp;var2=value2]]&amp;gt;&amp;lt;url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That last one was kind of what I expected all along, so use &lt;code&gt;createCDATANode&lt;/code&gt; not &lt;code&gt;createTextNode&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113212705585423857?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113212705585423857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113212705585423857' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113212705585423857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113212705585423857'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/safari-ajax-woes.html' title='Safari AJAX woes'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113212641988568257</id><published>2005-11-15T23:23:00.000-08:00</published><updated>2005-11-16T07:39:52.713-08:00</updated><title type='text'>Awesome tool for debugging Web apps</title><content type='html'>&lt;b&gt;Problem:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;How can I view what my client (i.e. Flash / AJAX) is sending to the server?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You know what you want to receive, you know what you want to send, but something's not working. You could build time-consuming debugging stuff for the client, or logging functionality for the server, but both are annoying and raise the potential for leaving that crap in for final production.&lt;br /&gt;&lt;br /&gt;At first, I learned about &lt;a href="http://www.apple.com/macosx/features/safari/" target="_blank"&gt;Safari&lt;/a&gt;'s Activity window. That's cool, but limited.&lt;br /&gt;&lt;br /&gt;Then I found out about the FireFox extension, &lt;a href="http://livehttpheaders.mozdev.org/" target="_blank"&gt;LiveHTTP Headers&lt;/a&gt;. OK, now that one's pretty darn good, I may still use it for some things. It's free, which is fantastic.&lt;br /&gt;&lt;br /&gt;But the ultimate so far, is &lt;a href="http://www.xk72.com/charles/index.html" target="_blank"&gt;Charles&lt;/a&gt;, made by a guy from NewZealand. Thanks to my kiwi friend Andy for showing it to me. It nicely organizes the back and forth stuff. It makes it easy to see for example, what post data you've sent, and formats and parses XML return data. It even does bandwidth throttling (slows down your Internet connection to a given speed), so you can test those preloaders more conveniently. By the way, I love the name and I love the icon &amp;mdash; both of which have apparently nothing to do with the software or the author :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113212641988568257?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113212641988568257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113212641988568257' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113212641988568257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113212641988568257'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/awesome-tool-for-debugging-web-apps.html' title='Awesome tool for debugging Web apps'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113212469416598583</id><published>2005-11-15T22:56:00.000-08:00</published><updated>2005-11-16T00:22:45.496-08:00</updated><title type='text'>search source code within a directory</title><content type='html'>Those who know me, know I really like doing stuff &lt;a href="#withwhat"&gt;on the command-line&lt;/a&gt;. While at first it might seem as though I've regressed from my entirely visiual Graphic Design days, I think I've just gone the route of finding the most efficient solutions to common problems.&lt;br /&gt;&lt;br /&gt;Here's a great way to find that bit of code you're looking for within reams of files in various directories. To cut to the chase:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;grep -r loadMovie .&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;will find all instances of loadMovie within the current directory and all subdirectories. It will print out the line of code that it occurs on. I've found this trick saves me so much time. For a long time, to solve this problem, I would use Dreamweaver and search a folder. In the last 6 months or so though, I've really gotten into Eclipse for ActionScript coding. Opening a Terminal window (OS X), is way faster than opening Dreamweaver.&lt;br /&gt;&lt;br /&gt;Here's a scenario:&lt;br /&gt;&lt;br /&gt;Your code is old. You need to change something. You know that SOMEWHERE in a package of classes you had some code that said &lt;code&gt;doSomethingAwesome()&lt;/code&gt;. Now you can quickly find which file it occurs in. That to me was the biggest time waster, looking for where to start.&lt;br /&gt;&lt;br /&gt;Another scenario is when you're trying to nail down where something is happening, when you need to change someone ELSE's code. That's when it's even more helpful.&lt;br /&gt;&lt;br /&gt;&lt;a name="withwhat"&gt;To execute the command mentioned above, you'll need to open a *nix console:&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;In Linux, open a console.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In Windows, download Cygwin and run it, opening a console.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In OS X, open a Terminal window (/Applications/Utilities/)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113212469416598583?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113212469416598583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113212469416598583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113212469416598583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113212469416598583'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/search-source-code-within-directory.html' title='search source code within a directory'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19016978.post-113211978137653307</id><published>2005-11-15T21:36:00.000-08:00</published><updated>2005-11-15T23:09:41.056-08:00</updated><title type='text'>Keep on bloggin'</title><content type='html'>OK, so I'm jumping on the blog bandwagon again. Who knows if I'll actually post much, but I do seem to find new and interesting things all the time (to me anyway), so I'll try and share some stuff here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://riordondesign.com/blog/peers/" target="_blank"&gt;Here's the last blog I was contributing to.&lt;/a&gt;, I'm no longer with that company. Currently I'm working and living in Vancouver.&lt;br /&gt;&lt;br /&gt;I think what I'll try and do is give my impressions on things I'm researching and tips I've learned that are handy. I've just modified a default blogger template for now, maybe one day I'll get around to making my own or tweaking this one beyond recognition. It's not a top priority just yet as I have a few projects on the go right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19016978-113211978137653307?l=abcd-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abcd-tech.blogspot.com/feeds/113211978137653307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19016978&amp;postID=113211978137653307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113211978137653307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19016978/posts/default/113211978137653307'/><link rel='alternate' type='text/html' href='http://abcd-tech.blogspot.com/2005/11/keep-on-bloggin.html' title='Keep on bloggin&apos;'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry></feed>
