<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Colin Wheeler is just a Mac OS X/iOS Cocoa Developer sharing thoughts on the good and bad aspects of developing good apps.
@cocoasamurai (App.Net)</description><title>Mac Samurai</title><generator>Tumblr (3.0; @macsamurai)</generator><link>http://macsamurai.tumblr.com/</link><item><title>iOS 7 and the Future</title><description>&lt;p&gt;I am going to depart from the opinions of many of the top designers that I respect and say that overall I like iOS 7’s design. However, I should state that as of right now I have yet to install iOS 7 on any device, and have not tested it out. So take what I say with a grain of salt.&lt;/p&gt;
&lt;p&gt;Any major departure from the norm inevitably brings with it a fear of how bad things will be because we depart from the OS and interfaces we know, to the unknown. This isn’t to say that iOS 7 couldn’t have flaws and bugs meriting criticism, for example &lt;a href="https://twitter.com/gt/status/344512993930924032/photo/1"&gt;here is a huge flaw in the current blurring translucency effect&lt;/a&gt;. I myself have some reservations about how well iOS 7 could work, but for now Im burying those fears until I can get some quality time with iOS on actual hardware.&lt;/p&gt;
&lt;p&gt;The biggest change obviously is that the whole UI has gone simplistic…really simplistic. Even though under the hood is many of the familiar concepts and elements we know very well, the new visual appearance has scared many into fearing it. I must admit that as much as I can accept the new user interface, it does rub me as too simplistic in places and I find some of the current Icon designs to be questionable. Some people &lt;a href="http://dribbble.com/shots/1109500-iOS-7/attachments/140195"&gt;attempted to show that you can go sipmlistic while keeping familiar iOS 6 UI elements&lt;/a&gt;, however this mockup really misses the point of the new UI in my opinion.&lt;/p&gt;
&lt;p&gt;This mockup seems to imply that Apple should not use square corners, or change any icons or redesign any UI element, but hey introducing a translucent theme thats okay. This screenshot seems to scream “Hey! Don’t take my familiar iOS 6, but uh you can theme it slightly.” It seems to me this mockup is one done out of fear of the new UI. From things publicly shown on iOS 7, it appears that Apple very consciously chose to break with iOS UI tradition in very intentional ways that wouldn’t make sense if you were simply choosing to theme iOS 6. I wish I could discuss things shown only to developers under the NDA, but after watching some conference videos I can only say that the new UI is a lot more than a simple new theme imposed on the existing UI controls.&lt;/p&gt;
&lt;p&gt;Like it or not this style is the future of iOS. If the rumors about Apple scrambling to get work done on it are true, then its inevitable we’ll only see this style of UI polished and refined from here on out. I think it will be interesting to see all the tweaks from preview build to preview build. What was introduced yesterday was not the final version of iOS as it will be installed on all our iPhones &amp;amp; iPads when it reaches GM.&lt;/p&gt;
&lt;p&gt;As &lt;a href="http://frankchimero.com/blog/2013/06/generosity-of-perspective/"&gt;Frank Chimero said&lt;/a&gt; “The aesthetics will be refined in time, as they always are, but it’s worth noting that it’s always easier to take something that’s pushed too far and make it more tame than to do the opposite. I’m not a fan of how iOS looks right now, but I have hope for its future. iOS has one thing that can’t be denied: it lacks nuance, but it has courage.” Its inevitable that every build of iOS 7 from here on out will begin to polish the UI and reduce it down where its needed. I would not be surprised to see some translucency reduced in places where it makes sense and interactions refined as we begin to really see what this new UI means to everybody outside of Cupertino.&lt;/p&gt;
&lt;p&gt;Given Johnny Ive and every Apple Designers experience in crafting great UI’s in the past, I am hopeful that they will do the right thing and make iOS 7 into the great OS we all want it to be.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/52743230125</link><guid>http://macsamurai.tumblr.com/post/52743230125</guid><pubDate>Tue, 11 Jun 2013 18:45:00 -0400</pubDate></item><item><title>iOS Gestures</title><description>&lt;p&gt;Reecently &lt;a href="http://pbowden.net/2012/03/01/two-kinds-of-gestures.html"&gt;Phillip Bowden wrote about what makes a good gesture on iOS&lt;/a&gt;. Having seen how my mom uses the iPad &amp;amp; seeing what guestures are natural &amp;amp; easy I thought i&amp;#8217;d do a semi response &amp;amp; my own thoughts post.&lt;/p&gt;

&lt;p&gt;I agree that there are 2 classes of gestures. There are guestures that are really easy to get and ones that aren&amp;#8217;t very obvious.&lt;br/&gt;The problem as I see it right now is while we have some standards for what gestures should mean right now. Theres no standard to say that swiping right on a table view row should mean something, while swiping left on that same row should mean something else across all apps. We do have general standards for how iOS apps should be broken down into sections to make the UI easily discoverable and adhere to good UI guidelines.&lt;/p&gt;

&lt;p&gt;In his post Phillip covers TweetBot which I think is an excellent example of some easily discoverable gestures and some not so discoverable ones. I like Tweetbot because the easy gestures cover the most used functions, while the not so easily discoverable gestures are generally more advanced features.&lt;/p&gt;

&lt;p&gt;Think about it in a twitter client the most common things you do are (1) Check your timeline view for new tweets (2) Reply to tweets and (3) retweet other peoples tweets. You launch the app to check new tweets and reply &amp;amp; retweet are functions exposed as buttons when you just tap a tweet.&lt;/p&gt;

&lt;p&gt;The other guestures which aren&amp;#8217;t as obvious or as easily discoverable (swipping left and right to see the conversation chain and replies to a tweet) aren&amp;#8217;t used as much by a normal user because they may not be even expecting to be able to swipe left or right on a table row. The good thing about this is really since the average user may not be expecting to be able to do these gestures, they don&amp;#8217;t get in the way at all. But if a user does discover them then users may really appreciate being able to do that.&lt;/p&gt;

&lt;p&gt;What though would these do in an application like Mail.app? Or an application displaying Cooking Recipies? Should we expect to be able to swipe left or right on any table view row? Its interesting though that TweetBot makes a compromise in just tapping a row which normally you&amp;#8217;d expect to just push a new view onto the stack and animate in. Instead it expands the row vertically to show you a row of buttons of which if you want to you can tap one to bring up the tweet detail view.&lt;/p&gt;

&lt;p&gt;I think if any application wants to pull off something like what TweetBot does you are going to have to carefully think things through to make sure that the common actions are linked to the most used gestures and the not so commonly used features are linked to the gestures not so easily discoverable.&lt;/p&gt;

&lt;p&gt;I think I saw a tweet or a blog post explaining the tweetbot gestures for swipping left or right and holding down on a row to expose some more functions like translation for example. I think we as a community are going to have to see how more and more iOS apps use these gestures for good or bad effect and how they can fit in to different types of apps. I wonder if I would have figureed out if they were there if I had never read about them.&lt;/p&gt;

&lt;p&gt;I think its interesting to see how Sparrow for iOS has used the same gestures for different things. While you can swipe from right to left to bring up a series of action buttons for doing various actions to the specific email, holding down on an email appears to change it form read to unread or vice versa. Swipping left to right actually slides a view away to reveal different email accounts.&lt;/p&gt;

&lt;p&gt;Both TweetBot and Sparrow have excellent use of gestures, but  they both use the same gestures in completely different ways that are appropriate for each app, but at the same time this forces you to learn what each gesture means on each app, which could be confusing to many users.&lt;/p&gt;

&lt;p&gt;I am not saying any of these apps are bad apps, but I say these things to make note of them. I honestly love both apps, because while the gestures are different for each one they both make excellent use of guestures and that makes them better apps than ones that just didn&amp;#8217;t do anything with swipping left/right on a row or holding down at all.&lt;/p&gt;

&lt;p&gt;I think we are still in the Wild West era of gestures and its going to be a while till we figure out what makes a good gesture vs a bad one. I do agree with patrick that in general the better a gesture directly manipulates the content it is acting on the better.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/19374882294</link><guid>http://macsamurai.tumblr.com/post/19374882294</guid><pubDate>Thu, 15 Mar 2012 21:29:14 -0400</pubDate></item><item><title>My Developer Tools</title><description>&lt;p&gt;Other people have been doing this and this is something i&amp;#8217;ve been meaning to write about for a while so I am taking a little bit to sit down and write about what I use. This is not a complete list.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Developer Tools&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://developer.apple.com/xcode/"&gt;Xcode 4&lt;/a&gt;&lt;/strong&gt; - This version of Xcode didn&amp;#8217;t start off so well, but has been progressively getting better as time goes on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://developer.apple.com/library/mac/#documentation/developertools/conceptual/InstrumentsUserGuide/Introduction/Introduction.html"&gt;Instruments&lt;/a&gt;&lt;/strong&gt; - If your an Mac/iPhone Developer and you don&amp;#8217;t know what this is stop now and go to Apples website and read about it or watch developer videos on this, its awesome.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://llvm.org/"&gt;LLVM/Clang&lt;/a&gt;&lt;/strong&gt; - This is a dream compiler. Its implemented as a library instead of a big singular program and licensed under a liberal license instead of a restrictive one like the GPL. This has allowed great integration with Xcode and allowed Apple to speed up advancements in Objective-C and C to make things that were never there before.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://mac.github.com/"&gt;Github for Mac&lt;/a&gt;&lt;/strong&gt; - this has become my go to git commit &amp;amp; history tool. I do all my commits through this and now its added support for partial commits. It makes it easy to commit and push my changes to github and when I need to check out repositories from github. I do go to the command line interface for git every so often, but I try and stay as high level as possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://tools.google.com/dlpage/chromesxs"&gt;Google Chrome Canary&lt;/a&gt;&lt;/strong&gt; - while not strictly a developer tool I use the current version of chrome canary synced to a google account to store all my bookmarks and keep my search engines saved online for a dedicated developer browser separate from my day to day browsing history. If you use Google Chrome then this browser will use a separate preferences/keychain etc. I like this because its a separate app dedicated to this one task. If you don&amp;#8217;t use Google Chrome as your daily browser then you  can substitute Google Chrome for Chrome canary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://krillapps.com/coderunner/"&gt;Code Runner&lt;/a&gt;&lt;/strong&gt; - I&amp;#8217;ve come to love this tool as a way to run small snippets of code without having to use Xcode or anything else to create projects just to try small bits of code I want to test out. It seems stupid but its very easy to ask a question about what you assume something will do and then just open this app up and quickly test that assumption. Coding it this isn&amp;#8217;t as great as other editors, but for testing small bits of code it gets the job done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://christian-kienle.de/CoreDataEditor"&gt;Core Data Editor&lt;/a&gt;&lt;/strong&gt; - This is the best way to quickly browse through your code data stores regardless if they are SQLite3 or whatever the format is. I started out testing SQLIte browsers to browse through core data, but this makes it easy to see/edit object attributes and see relationships between objects in the store which you&amp;#8217;ll have a hard time with using a SQLite browser alone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.macromates.com/2011/textmate-2-0-alpha/"&gt;Textmate 2&lt;/a&gt;&lt;/strong&gt; - I&amp;#8217;ve really tried to get into BBEdit, but in the end I just could not get used to the app. I may give it another shot, but ultimately I think these are just 2 different tools aimed at very different tasks and that BBEdit may not be up to what I need it to do. TextMate 2 isn&amp;#8217;t perfect by far, but it does what I need and I know how to easily extend it with bundles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://jstalk.org/"&gt;JSTalk&lt;/a&gt;&lt;/strong&gt; - Another great tool to test code and prototype it but in Javascript. Gus has done a great job with this tool, just about anything you can do in cocoa you can do in this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.sublimetext.com/2"&gt;Sublime Text 2&lt;/a&gt;&lt;/strong&gt; - Overall this is a really great editor without such a great preferences system. It takes a little bit of getting used to but overall the quality of this editor is really great.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/macvim/"&gt;MacVim&lt;/a&gt;&lt;/strong&gt; - I&amp;#8217;ve started to pick up vim and use it for more and more these days. I really am just beginning to discover its power.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://ditchnet.org/httpclient/"&gt;HTTPClient&lt;/a&gt;&lt;/strong&gt; - be able to see the full responses back you get back from web API&amp;#8217;s.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://markedapp.com/"&gt;Marked&lt;/a&gt;&lt;/strong&gt; - Easy way to quickly preview any markdown document&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Internet Stuff&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://sparrowmailapp.com/"&gt;Sparrow&lt;/a&gt;&lt;/strong&gt; - I don&amp;#8217;t know why, but i&amp;#8217;ve been able to get to Inbox Zero and respond to email quicker with this client than any other one i&amp;#8217;ve used, including the web UI&amp;#8217;s.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://reederapp.com/mac/"&gt;Reeder&lt;/a&gt;&lt;/strong&gt; - I hated leaving NetNewsWire, but after a while I grew to appreciate doing some reading within the app itself and not in my browser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.red-sweater.com/marsedit/"&gt;MarsEdit&lt;/a&gt;&lt;/strong&gt; - I work on all my drafts and blog posts in this app.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.codeux.com/textual/"&gt;Textual&lt;/a&gt;&lt;/strong&gt; - for IRC&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Productivity&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.omnigroup.com/products/omnifocus/"&gt;OmniFocus&lt;/a&gt;&lt;/strong&gt; - no other personal project management app remotely comes close to being as good as OmniFocus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://agilebits.com/onepassword"&gt;1Password&lt;/a&gt;&lt;/strong&gt; - The best Password management app I&amp;#8217;ve used.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://flyingmeat.com/voodoopad/"&gt;VooDooPad&lt;/a&gt;&lt;/strong&gt; - Great for Wiki style documents where you can easily keep a bunch of notes together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.evernote.com/"&gt;Evernote&lt;/a&gt;&lt;/strong&gt; - A pretty good note app that I use to keep more general notes on a variety of things that I would need to easily access online on my iPhone &amp;amp; Mac.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://flyingmeat.com/acorn/"&gt;Acorn&lt;/a&gt;&lt;/strong&gt; - my goto app for image editing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://qsapp.com/"&gt;Quicksilver&lt;/a&gt;&lt;/strong&gt; - its been updated for Lion and is stable and works very fast. I was never quite able to find a replacement for it when I briefly switched away while it was in development limbo.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Misc&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.realmacsoftware.com/littlesnapper/"&gt;LittleSnapper&lt;/a&gt;&lt;/strong&gt; - easy way to sort &amp;amp; organize screenshots&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://skitch.com/"&gt;Skitch&lt;/a&gt;&lt;/strong&gt; - Nice for sharing occasional screenshots &amp;amp; quickly annotating them&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ZShell (ZSH) &amp;amp; &lt;a href="https://github.com/robbyrussell/oh-my-zsh"&gt;Oh My Zsh&lt;/a&gt;&lt;/strong&gt; - Great Shell &amp;amp; Framework for enhancing the shell, better than bash which is what you use on OS X by default.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/17610905103</link><guid>http://macsamurai.tumblr.com/post/17610905103</guid><pubDate>Tue, 14 Feb 2012 11:50:11 -0500</pubDate></item><item><title>Quick Notes on Porting Mac OS X code to iOS </title><description>&lt;p&gt;Recently I ported &lt;a href="https://github.com/Machx/Zangetsu"&gt;a bunch of code&lt;/a&gt; written just for Mac OS X/Cocoa to iOS. Most of this code was foundation level code or code that called Core Graphics. Once I figured out how to #def away sections of code it was easy to get it working on iOS. The amazing thing was, most of this was written without knowing what was/wasn&amp;#8217;t compatible with iOS and the vast majority of it just worked fine and compiles for iOS without issue. I did have to make some changes or not include some code on iOS&amp;#8230;&lt;/p&gt;
&lt;p&gt;- isEqualTo doesn&amp;#8217;t exist on iOS so all instances had to be changed to isEqual (no biggie)&lt;/p&gt;
&lt;p&gt;- TARGET_OS_MAC is defined on iOS so you have to use &amp;#8216;#if&amp;#160;!(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)&amp;#8217; for code you only want compiled on OS X&lt;/p&gt;
&lt;p&gt;- NSTask and NSWorkspace obviously don&amp;#8217;t exist on iOS so there was no way to port code that used them&lt;/p&gt;
&lt;p&gt;- a bunch of &amp;#8220;#import &amp;lt;Cocoa/Cocoa.h&amp;gt;&amp;#8220;&amp;#8216;s got changed to &amp;#8216;#import &amp;lt;Foundation/Foundation.h&amp;gt;&amp;#8217;&lt;/p&gt;
&lt;p&gt;- NSInteger and NSUInteger are used whenever possible throughout the code and made it easy to get some things working on iOS&lt;/p&gt;
&lt;p&gt;- a big downside of getting some code to work on iOS was that I took advantage of SecTransform on OS X Lion which made it really easy to do things like Base64/ZLib encoding &amp;amp; decoding, without that suddenly I had to find some code that did that for iOS or leave it out. Right now CWURLRequest simply doesn&amp;#8217;t support setting a Base64 encoded http authorization header because Sec Transform is missing so the NSString category isn&amp;#8217;t there so it can&amp;#8217;t be used by my URL Utilities which means that can&amp;#8217;t be used in CWURLRequest.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s pretty much it. I hadn&amp;#8217;t included AppKit specific things in this package so that made the work very easy. Though soon I may start including UIKit stuff as I start to work more and more with Chameleon. It targets iOS 5 and later, and no I have no plans to support anything earlier than that. Overall once I got over the big hump in my development process it was easy to support both OS X and iOS.&lt;/p&gt;
&lt;p&gt;The Zangetsu Library is here on Github: &lt;a href="https://github.com/Machx/Zangetsu"&gt;&lt;a href="https://github.com/Machx/Zangetsu"&gt;https://github.com/Machx/Zangetsu&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/16068881323</link><guid>http://macsamurai.tumblr.com/post/16068881323</guid><pubDate>Wed, 18 Jan 2012 13:24:01 -0500</pubDate></item><item><title>Quick Thoughts on Unit Testing</title><description>&lt;p&gt;I got caught in a quick discussion on Unit Testing recently so I thought I&amp;#8217;d write down some thoughts on what Unit Tests mean for me&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Proof that your API&amp;#8217;s work as desired&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unit Tests force you to prove your API&amp;#8217;s do what you wrote them to do. You can say your API always returns X but if you write a unit test and it returns Y then you&amp;#8217;ve discovered a bug. If you are ever in the least bit of doubt as to if you broke something you can always go and run the unit tests and see if anything failed. If nothing failed then you have nothing to be concerned about at the moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation on how to use them&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unit tests not only test your code to make sure they work correctly they also serve as a form of documentation as to how they work. Although Unit Tests are not meant to be documentation, a side effect of testing your code means that you demonstrate how it works in the process of using it. If your unit tests are written by the person who worked on the API then you see the authors intention as to how the API was supposed to be used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stopping Regressions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unit Tests stop you from ever reintroducing the same bug back into your codebase. With Unit tests as long as you have a test to cover bugs you discover in your code base its theoretically impossible to introduce that same bug back into your code again because if you ever do then as soon as you run your unit tests you&amp;#8217;ll catch it and be forced to fix it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upping the Code Quality&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As your code base gets more and more complex things like turning -Werror on and running the clang static analyzer and doing unit tests give you more and more confidence in the quality of your code and reducing the amount of bugs in your code base. You&amp;#8217;ll never be able to rid your code base of all bugs unless you stop adding any features to your software and just spend forever doing line by line code reviews to rid your code of all bugs possible (like the Guy who snuck into Apple to work on the graphing calculator &amp;amp; had 3+ months to do this.)&lt;/p&gt;

&lt;p&gt;That said Unit Tests are not the be all end all thing to end bugs in software and have some downsides&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unit Tests cannot test everything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I forget where I heard this, but someone once said that Unit tests should not test things like things on disk, in a database, on a network, etc… and I agree. Things like that don&amp;#8217;t really test what your trying to test, they really test your environment which is probably not what your trying to test 99.99% of the time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can go overboard on Unit Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a balance to time spent creating unit tests and how much they actually make your code better. It can be tempting at times to spend a lot of time creating lots of unit tests to test any possible thing that could go wrong, but really there is a balance between how much you work on your code to how much you spend working on unit tests. At some point you start to see diminishing returns on your time spent in unit tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GUI&amp;#8217;s are not easily testable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sure there are ways to automate interacting with UI&amp;#8217;s but as of right now I have not really seen anything that great. Maybe, I am wrong and I just haven&amp;#8217;t found the super mega awesome framework x that makes testing GUI&amp;#8217;s easy, but as of right now I have not seen anything that makes this easily manageable. The best UI automation I&amp;#8217;ve seen is in instruments which is not really meant to be run with tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While I don&amp;#8217;t think everything needs Unit Tests, I think every project out there could benefit from some degree of unit testing. What that degree is depends on each project to figure out for themselves.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/12334911118</link><guid>http://macsamurai.tumblr.com/post/12334911118</guid><pubDate>Fri, 04 Nov 2011 16:05:03 -0400</pubDate></item><item><title>vi vs emacs</title><description>&lt;p&gt;Yeah yeah yeah I know this is gotta be a really old topic. I expressed some opinion about this on twitter, but It feels like its far to easy to sound condescending about this topic within 140 character segments when really your trying to be respectful to someone you disagree with. I recently had a discussion with Jon Buys where he said he loved and kept coming back to vi and felt like everybody should know how to use it. I replied back about my horrible experiences with it and how I just didn’t get vi’s modes.&lt;/p&gt;
&lt;p&gt;To be specific when I first started work as tech support I was working on some old SCO UNIX boxes and inevitably we had to edit text files. One of my bosses said to launch vi and edit a text file. Before this experience I had never used vi before, I don’t know why I’d never used vi, but I just didn’t know about it or didn’t have a need to use it before this point. I believe I had used pico/nano and at least BBEdit or TextWrangler. So when I launched vi I assumed that, although it surely had a couple differences from other editors, that it worked very similarly to what I already knew. How wrong I was…&lt;/p&gt;
&lt;p&gt;I started up vi and started to type text *BEEP* *BEEP* *BEEP* *BEEP* *BEEP* wait… what? This was such a jarring moment compared to every other text editor I had ever worked with. I start up TextEdit and you get a window and you can just start typing text right away. I start up TextMate and you get a window and you can just start typing text right away. I start up Xcode and you get a window and you can just start typing text right away if you left it on a text file. I start up BBEdit and you get a window and you can just start typing text right away. The purpose of a text editor is to allow you to edit and type text and vi has been the only text editor to get in the way of doing this task.&lt;/p&gt;
&lt;p&gt;Instead of just allowing me to type text I have to remember to hit “I” so I get switched to the insert mode so I can begin to type text. VI’s modes feel greatly like a solution to a problem that I don’t have. It feels like vi’s modes could be a solution to some problem, but even now I fail to mentally grasp their purpose. The only thing I can think of is that they prevent you from accidentally performing certain operations in accidentally adding/deleting text. But still that doesn’t feel like a good reason for them, because any text editor with undo support this problem is irrelevant because you can just undo changes very easily. Instead of just hitting a key sequence to do a command I have to mentally keep track of what mode I am in and remember to switch between modes for certain tasks. For me this feels like a big burden to ask people to carry with them to use your editor.&lt;/p&gt;
&lt;p&gt;Even now I just started up vi and tried to type some text and perform 1 or 2 operations and then quit. Instead of ending up with the text “This is some text.” I ended up with “this is some text jkjk^Z”. Thats another thing with vi is it feels like when things go wrong, it doesn’t quite let me know whats going wrong, I only know that it is going wrong and my editor is beeping and complaining to me. Once I started up vi at this tech support job and tried to edit some text I did edit a file successfully and then at the end when I thought I was saving a file vi felt the need to append a number I apparently accidentally hit to the end of the text file several times. One of my coworkers said “oh yeah if you hit [some key] it will do that.” I could help but think “What the fuck?! how is this helping me, how does appending text to the end of this document without my consent help me at all?”&lt;/p&gt;
&lt;p&gt;No one text editor does everything for me. vi just doesn’t feel like it was designed well, emacs works wonderfully for me, but I just don’t need to go to it that often and I dislike having the files with “~” appended to the end of a file clutter up my directories. When I need a simple text editor that just f’ing works and just need to simply edit some text I start up nano(pico on older systems). Most of the rest of the time I use Xcode’s source code editor, I do edit some text in TextMate though I am trying out BBEdit and liking it to some degree, but as of yet I just don’t know if its for me.&lt;/p&gt;
&lt;p&gt;In short I use whatever text editor is suited to the problem I need, sometimes its nano, sometimes its TextMate, sometimes its Xcode. vi just isn’t for me and everything that works for me, just isn’t for everybody else.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/9574347270</link><guid>http://macsamurai.tumblr.com/post/9574347270</guid><pubDate>Mon, 29 Aug 2011 23:38:00 -0400</pubDate></item><item><title>Letter to my Congressman</title><description>&lt;p&gt;I am sending this letter to my representatives in Congress. I suggest you write one as well and send it before early September when Congress meets to amend the current Patent Reform Bill. You can use the contents of this letter if you wish, though I would strongly advise that you write an original letter if you can.&lt;/p&gt;

&lt;p&gt;=============================================&lt;/p&gt;

&lt;p&gt;Dear [Congressman],&lt;/p&gt;

&lt;p&gt;&lt;br/&gt;I wish to write to you on a matter of great importance to the United States. Our Patent System is tremendously broken, and if we do not take steps to fix it this will lead to a significant loss of tax revenue as software developers withdraw their software from sale within the US and a loss of tech talent as more and more developers flee the US because of not wanting to deal with the broken US software patent system. There is already a movement within the software development community to recommend against including obvious features in software that are currently under litigation. Some are actively beginning to recommend against selling software in the US because of patent threats.&lt;/p&gt;

&lt;p&gt;&lt;br/&gt;Congress is working to pass S.23 and H.R. 1249 to reform the patent system. Unfortunately, these bills as they currently stand do not protect companies from damages against Non Practicing Entities (NPE) which many in the software industry refer to as Patent Trolls. We refer to them as patent trolls because these companies make no actual products. All they do is buy or acquire patents and use them to sue everybody who they perceive as violating it. These companies you never know are there pop up and demand you pay them because they believe your products violate their patents. Because these patents are so broadly worded everybody can be said to violate the patent. If I was ever sued, and even if I knew with 100% certainty that the patent was invalid, I would definitely lack the funds to fight the patent in court. This is because the burden is on me to invalidate the patent by paying millions of dollars out of my own pocket, and even then there is no guarantee that I would win If I ever did find sufficient funds.&lt;/p&gt;

&lt;p&gt;&lt;br/&gt;I strongly encourage you to amend any of these bills to include limited damages against NPE&amp;#8217;s. Many in my industry would even go so far as to recommend abolishing software patents entirely, but at the very least these NPE&amp;#8217;s need to be brought under control. Many companies are being put out of business and those who do survive patent attacks lose out on a lot of money that could be spent to hire more employees and buy resources to expand their business. There is even the possibility that many of those same companies may have to withdraw their products from the market.&lt;/p&gt;

&lt;p&gt;&lt;br/&gt;This is not a time when we can afford to let companies with no actual employees who hire many lawyers purely to sue others hinder progress and innovation in the United States when we really need to be expanding and trying to grow our businesses. All I want to do is work hard on my software products, put them up for sale at a good price and try to earn a honest living from them. Unfortunately it disheartens me every time I see a patent troll sue one of my colleagues for patents that are obviously invalid and should never have been issued in the first place.&lt;/p&gt;

&lt;p&gt;&lt;br/&gt;Colin Wheeler&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/8758315565</link><guid>http://macsamurai.tumblr.com/post/8758315565</guid><pubDate>Wed, 10 Aug 2011 21:25:11 -0400</pubDate></item><item><title>Googles Patent Problem</title><description>&lt;p&gt;Today &lt;a href="http://googleblog.blogspot.com/2011/08/when-patents-attack-android.html?m=0"&gt;Google lashed out against the winners of the Nortel Patents&lt;/a&gt; and went on the offensive assuming these patents were going to be used against them. The Patents went to a bunch of companies including Apple &amp;amp; Microsoft. According to &lt;a href="http://www.npr.org/blogs/money/2011/07/26/138576167/when-patents-attack"&gt;NPR’s When Patents Attack Episode&lt;/a&gt; Google wanted the patents purely to defend themselves. It then seems strange to automatically assume others would use those patents specifically for attacking Google. Some of the patents may actually eventually be used against them at some point, but I doubt that was their primary intention when buying the patents. So their reaction kinda seems almost a little paranoid.&lt;/p&gt;
&lt;p&gt;I can’t say I really believe them at this point. I know Google doesn’t like patents, nobody in the software industry really likes patents. But Google seems to be right about not liking them for all the wrong reasons. They appear (in public) to only care about themselves. Still as of today Google has yet to publicly say or do anything for any of their Android developers when it comes to patent attacks especially from Lodsys. Apple in comparison as done at least a couple things. Apple sent Lodsys a letter telling them that their issue shouldn’t be with iOS Developers but with Apple since iOS Developers are using their API’s and services (via the App Store.) Then Apple requested to intervene in the patent lawsuits against iOS Developers. At this stage its not a lot, but Apple has publicly spent employee time, money &amp;amp; resources at least doing something for their iOS Developers under threat because of their API’s/services.&lt;/p&gt;
&lt;p&gt;The frustrating thing in all of this is there must be employees at Google raging and angered about patents being used against them and against Android Developers. That they hire and have employed many Linux developers who tend to not like patents must mean this is a significant issue to them. However nothing has come out publicly from Google regarding patents used to harm their Android ecosystem or their 3rd Party Android Developers until they felt themselves to potentially be under direct threat from Patents. I don’t know if Google themselves feel because of contractual obligations they can’t do much, and it is very possible that Apple is under the same contract and can really only do so much and it’ll turn out that in the end they can’t do anything. Google has, in comparison, done nothing… nothing (at least publicly.) Geeze Google at the very least you can send a very strongly worded letter to Lodsys telling them to go fuck themselves and to please leave your Android developers alone. I have no idea what Google employees are thinking that they are literally not doing anything at all.&lt;/p&gt;
&lt;p&gt;Even stranger is that according to &lt;a href="https://twitter.com/#!/bradsmi/status/98902130412355585"&gt;Brad Smith of Microsoft on Twitter&lt;/a&gt;, Google was invited to join the pool of companies biding on the Nortel Patents and they declined. Again from a very public point of view Googles actions seems incredibly strange and to not make any sense at all. Google please for goodness sake, do anything… anything publicly at all to show you at least give a slight shit about the software patent issue beyond it directly affecting you specifically.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/8451876684</link><guid>http://macsamurai.tumblr.com/post/8451876684</guid><pubDate>Wed, 03 Aug 2011 21:24:00 -0400</pubDate></item><item><title>The Broken U.S. Patent System</title><description>The US Patent System is severely broken when it comes to software patents. This latest incident involving Lodsys really just exposed how broken the system is. This is all just my personal opinion and I cannot stress enough that I am not a Lawyer.
&lt;p&gt;
There are several problems with the system as it is now
&lt;/p&gt;&lt;p&gt;
(1) Smaller companies are effectively cut out. Small companies can&amp;#8217;t afford the funds to pay $15,000+ for each patent filed and that doesn&amp;#8217;t even count all the resources you&amp;#8217;d need to seek out people infringing on the patent and then additionally get them to pay you or sue them for infringing your patent(s.)
&lt;/p&gt;&lt;p&gt;
(2) There is no incentive to see if you are infringing. Now I am not a lawyer, but last time I read up on patent law if it is proven that you researched patents and knowingly infringed then its 2x damages. So our system encourages everybody except for the massive corporations like Apple, Google &amp;amp; Microsoft to never research to see if they could possibly be infringing on patents. 
&lt;/p&gt;&lt;p&gt;
(3) Obvious patents are awarded. In an episode of Security Now! Steve Gibson discussed a patent Microsoft filed for in which they were patenting a system to make e-ink flow smoothly. When you get into the meat of the patent it turns out that really the patent was for priority queues which have been around for a long time, certainly longer than Microsoft has existed. I don&amp;#8217;t know if this was awarded or not, but it really would not surprise me to find out they were awarded it. 
&lt;/p&gt;&lt;p&gt;
(4) Even if it is incredibly obvious a patent is invalid, it still takes a huge amount of money to fight it. Figures i&amp;#8217;ve seen range anywhere from $50,000 to $1 million which is absurd. So the small companies are screwed again, they can&amp;#8217;t afford to file patents, can&amp;#8217;t afford to buy them from other companies and can&amp;#8217;t afford to fight them in court even if its incredibly obvious that the patent is invalid. 
&lt;/p&gt;&lt;p&gt;
(5) There is no requirement to enforce a patent. So even if a company is awarded a patent there is no requirement to enforce it, this often results in many patent &lt;strike&gt;troll&lt;/strike&gt; holding companies holding on to patents for a long time while the industry builds on top of using the patent and then they strike and get companies to pay huge damages.
&lt;/p&gt;&lt;p&gt;
I personally like Marco&amp;#8217;s analogy to prohibition, where a law intended to be noble and do good in practice turns out to have very negative consequences and in the end does more harm than good. I must admit I am torn. On the one hand the developer side of me has seen no evidence these do any good at all, but on the other hand the skeptical side of me knows that surely there must be some good that software patents have done.
&lt;/p&gt;&lt;p&gt;
Another issue is that really when software engineers violate patents really they are just engineering solutions to problems. They aren&amp;#8217;t thinking &amp;#8220;gosh I need to solve this problem, but not in a way that violates any possible patents.&amp;#8221; They are thinking, hey I need to solve a problem, here is my approach and now I&amp;#8217;ve engineered a solution to the problem. Yes in the course of engineering solutions to problems you&amp;#8217;ll probably come up with some neat tricks, but then so will 10,000 other engineers with 100 other programming languages on many different platforms. Ultimately my overall opinion is one shared with many others. That really in the end these ideas are worthless, its the implementations that matter. You may have come up with a clever hack, but so will a thousand other engineers. 
&lt;/p&gt;&lt;p&gt;
So with that in mind what do we need to do? I think one of the best solutions is twofold (1) keep obvious/invalid patents from being awarded to begin with and (2) to make it easy to invalidate patents. If you have a patent and it&amp;#8217;s a good patent with no prior art then you really have nothing to fear from having it examined. The big point in any reform should be on beefing up the defenses of those being sued, because clearly the way our system works now, the people holding patents clearly have demonstrated that they have a sufficient amount of funds to acquire those patents regardless of the means that they used to acquire them.
&lt;/p&gt;&lt;p&gt;
Clearly the US Patent system is in bad need of reform and even the big companies like Apple, Microsoft and Google agree. Even they have problems where they stock up on software patents like the US/Russia did in the cold war and when they are sued for violating patents it usually ends up that the 2 big companies agree to cross license each others patents and avoid paying out huge damages.
&lt;/p&gt;&lt;p&gt;
This system is not beneficial for anybody except the patent &lt;strike&gt;troll&lt;/strike&gt; holding comanies. &lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/5899936899</link><guid>http://macsamurai.tumblr.com/post/5899936899</guid><pubDate>Fri, 27 May 2011 12:20:15 -0400</pubDate></item><item><title>Earlier Marco posted a very good point about why you...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lks2wi7K1o1qayu7jo1_400.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Earlier &lt;a href="http://www.marco.org/2011/05/05/apps-prompting-for-reviews"&gt;Marco posted a very good point&lt;/a&gt; about why you shouldn’t nag users about App Reviews. It was pointed out to me by Peter Hosey that &lt;a href="http://twitter.com/boredzo/status/66339247518527488"&gt;Apple Reccomends that you ask users to review the app after a while.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would say that App Reviews are okay to ask your users to do, but only passively. In other words it’d be far better to simply have a button/link somewhere where the users are actively discovering it and decide to write a review themselves vs being nagged by the app. Thats because 99% of the time when an app asks me to leave a rating I don’t feel like i’ve had an adequate amount of time to give it an honest review. If I did anyway most of my reviews would be like&lt;/p&gt;

&lt;p&gt;“This app seems okay however I am still getting used to it. It does Annoying-Thing-1 and it may possibly be related to Annoying-Thing-2 however I just really haven’t had enough time with the app. I may possibly delete it in a couple days”&lt;/p&gt;

&lt;p&gt;All this reminds me of The Futurama episode where Fry discovers that he can have a celebrity girlfriend/robot and downloads Lucy Liu. After staring at her for a while he asks “What do you want to do?” and the conversation goes something like&lt;/p&gt;

&lt;p&gt;Liu Bot:”Would you like to take a moment to register me?” 
Fry: “Later”
Liu Bot:”I’ll go ahead and remind you later you hot stud”
Fry: “So what do you want to do?”
Liu Bot:”Would you like to take a moment to register me?” 
Fry: “I said later!”&lt;/p&gt;

&lt;p&gt;Every time I see a “Would you take a moment to review me?” screen I am reminded of this. Even if the prompt to review an app never comes up again I just don’t think you’ll get honest reviews out of it. I imagine that if users do leave reviews its to get the prompt to never come up again. When is the best time to ask a user to review the app? The answer is, whenever the user feels like it and thats something you can’t really develop an algorithm to figure out without being incredibly intrusive. Apps seem to use a standard of asking users after x amount of time or x times launching the app, both of which are not good ways to go by for choosing a time to ask users to review your app.&lt;/p&gt;

&lt;p&gt;But really this is just tip of the iceberg. Really the issue is that this is a giant turd in the users experience of the app. Here you are just getting used to an app and you may possibly be having a great time and then suddenly a prompt comes up out of nowhere. My reaction is usually “What? Why are you asking me to review the app now? I am just getting used to it.” For me personally regardless of how noble the developers intentions the app review prompt feels a bit needy/attention grabbing. I can’t really imagine that for a significant amount of users that they really hang on every word of reviews, who knows maybe I am wrong and there are some group of users who really can’t make up their mind until they’ve seen a few reviews. Even if there are users who really deeply care about reviews, it is never a good experience for a prompt which blocks everything else on screen, to come up just so the users can do something for you which they have to leave your app to do so.&lt;/p&gt;

&lt;p&gt;So what would be better than this prompt? How about in your app settings/help section somewhere you have a button with the title “Review [APP_NAME] on the App Store” perhaps right by a support link button so that users see this is a separate distinctive action from support. Really anywhere where the users discover that they can do this in the app and decide to do so on their own time unprompted. Only then will you get honest reviews most of the time vs complaints about what doesn’t work in the app or cues that users really haven’t taken any time to learn the app or don’t care to learn the app and just wanted to complain/vent.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/5243977642</link><guid>http://macsamurai.tumblr.com/post/5243977642</guid><pubDate>Fri, 06 May 2011 10:29:07 -0400</pubDate></item><item><title>“if @twitter is intentionally trying to destroy their apps...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lhjhjqH3zs1qayu7jo1_400.png"/&gt;&lt;br/&gt;&lt;br/&gt;“if @twitter is intentionally trying to destroy their apps UI’s &amp; make them as distracting as possible they’ve completely succeeded” 
&lt;p&gt;
Yesterday I tweeted that and I really do mean it. I’ve never been so excited and then let down as I have with the Twitter for Mac &amp; Twitter for iPhone apps. Both i’ve completely left as I just cannot use them anymore because they are so unusable for me. Twitter for desktop won’t stay confined to 1 desktop space even if you try to force it to in the Spaces preference on Mac OS X, and it forces all links to be shortened by their url shortener even if you’ve already shortened it with goo.gl or is.gd. Now Twitter for iPhone puts an &lt;a href="https://twitter.com/stop/status/43446669836173312"&gt;“intentionally disruptive”&lt;/a&gt; in app notification across the top of the tweets.
&lt;/p&gt;&lt;p&gt;
When you are designing an app you have to ask what that app is focusing on as an object that it is trying to help you with. In the case of Twitter it is your tweets, in Google Chrome it is a webpage, etc, etc. Anything in the most commonly used UI had damn well better be that object the app is trying to help you with or a helper function that helps you navigate that object or something directly related to that. What most twitter users want to see is their timeline of tweets from people they follow and thats it.
&lt;/p&gt;&lt;p&gt;
Why this is so bad is that it’s a tertiary function at best to see trending topics (Personally I haven’t given a shit about the trending topics in years.) worse is that it gets in the way of seeing the 1 object that I really care about… the tweets. It doesn’t matter that I can scroll down and get rid of it… what matters is that it’s in the way of me seeing my damn tweets and that’s the sole point of the app. Whats worse is it was designed this way intentionally “That’s the whole point - it’s disruptive intentionally. You won’t always see the top.” (&lt;a href="https://twitter.com/stop/status/43446669836173312"&gt;link&lt;/a&gt;) That’s gotta be one of the saddest tweets on UI design i’ve ever read.
&lt;/p&gt;&lt;p&gt;
I don’t know what’s worse, how bad this UI has gotten or how Twitter genuinely thinks this is a good user interface. Can someone please send them a copy of &lt;a href="http://goo.gl/XyRID"&gt;Designing Interfaces&lt;/a&gt; or any good User Interface Design book? &lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/3638292633</link><guid>http://macsamurai.tumblr.com/post/3638292633</guid><pubDate>Fri, 04 Mar 2011 14:26:16 -0500</pubDate></item><item><title>Thoughts on the Mac App Store</title><description>&lt;p&gt;So the Mac App Store has finally appeared. Like it or not this represents a new era for Mac Software Developers. All today people have been speculating as to if it&amp;#8217;ll succeed or not, certainly if you look at the guidelines for submission to the Mac App Store you&amp;#8217;ll see things that will immediately stop a lot of Mac apps from being accepted. Although iPhone developers are forbidden from using things like private API&amp;#8217;s, Mac Developers have had the freedom to use them because Mac Apps are distributed by each developer individually and Apple has had no say in if the apps can be published. Apples stance though has been clear that you should stay the hell away from private api&amp;#8217;s (duh).&lt;/p&gt;

&lt;p&gt;I am both optimistic and cautious when it comes to the Mac app store, I certainly don&amp;#8217;t think it&amp;#8217;ll fail, but at the same time right off the bat I can see a lot of Mac Apps that (as of the time of this writing) won&amp;#8217;t be in the app store. I agree with Craig Hockenberry when he said that just as we went through rough times on the iOS App Store, the same thing is bound to happen on the Mac App Store.&lt;/p&gt;

&lt;p&gt;When you think about it we&amp;#8217;ve been trying to go this route for a while, App Bodega was the first attempt at this that I heard of. Sadly I think today pretty much marks the end of Bodega. I think they had a great concept, but simply took too long to get it to maturity and even then you have to convince people to go out and download it. To put it simply Apple is the right company/people to do this, because the only way you&amp;#8217;ll get most people to use it is to have it included by default on the operating system, otherwise you have to campaign to get people to download and actively use it. Pretty soon your app will be just a click away from 50 million users and that&amp;#8217;s a really exciting possibility.&lt;/p&gt;

&lt;p&gt;The only thing I really fear on the Mac App Store is this race to the bottom which a lot of people dislike on the iOS App Store. The iPad numbers are encouraging in that they raised the price of the average app which I think is completely appropriate for a bigger device and apps with more features. With any luck the Mac App Store will avoid heading down the same path as the iPhone App Store in terms of a race to the bottom in price.&lt;/p&gt;

&lt;p&gt;I cannot stress this enough to all developers: CHARGE WHAT YOUR APP IS WORTH! Nearly every single comment on this from Developers that i&amp;#8217;ve seen, who go to a higher price is that though they sell lower volume, their profit is higher and you have customers who will leave you constructive criticism. I have 3 apps planned which may show up on the app store and all of them except for 1 I will sell for a minimum of $25 (my 3rd one may sell in the $15-20 price range, but none of these prices are set in stone yet.)&lt;/p&gt;

&lt;p&gt;Don&amp;#8217;t kid yourself there are some rough seas ahead of us and the Mac App Store (and iOS App Store) need some features desperately like trials &amp;amp; upgrades, but with any luck and enough radars we&amp;#8217;ll hopefully get through it as a stronger Mac Developer Community.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/1363497482</link><guid>http://macsamurai.tumblr.com/post/1363497482</guid><pubDate>Wed, 20 Oct 2010 23:08:04 -0400</pubDate></item><item><title>Start out with something small that works</title><description>&lt;p&gt;With all the Google TV coverage, one thing seems to be consistent, people don&amp;#8217;t like the huge bulky controllers with 50 buttons on their remotes. In my opinion, one thing the tech industry suffers from is trying to do too much at once, which is why Apple succeeds.&lt;/p&gt;

&lt;p&gt;Apple starts off with something simple and small that works &amp;amp; works well. Take the first iPhone, by todays standards it was an incredibly limiting device. There was no AppStore, nothing but Apples iPhone apps and web apps. People were excited and got their hands on it and then started saying what they wanted in it and Apple responded. Now we have the App Store, multitasking, Folders, Spotlight, etc.&lt;/p&gt;

&lt;p&gt;Google TV device manufacturers on the other hand appear to be doing the opposite. Rather than making a bold statement and trying to start off with a small device that works well, they want to cast the widest net possible by jamming the Google TV devices with as many features as possible &amp;amp; as a result the remotes for these devices have dozens &amp;amp; dozens of buttons. They seem to be saying that they don&amp;#8217;t know what people will like so we need it to have as many features as possible so that more people will buy Google TV devices.&lt;/p&gt;

&lt;p&gt;As software engineers we all know that you can have an app that does a few things exceptionally well and other things moderately well or you can have software that does a lot of things poorly. Apple starts out with products that do a few things well and then they listen to their customers as to what they want and then expand out with those features.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s possible for a Google TV device manufacturer to strip a device down to the essentials and make a minimal Google TV OS that focuses on doing a few things well for you, but sadly I fear that idea is lost on the companies that actually have the finances &amp;amp; resources to make such devices. The formula is pretty easy, but sadly nobody wants to copy the formula from Apple that makes them such a success.&lt;/p&gt;

&lt;p&gt;Google here is a few metrics I have for if Google TV devices are worth using&amp;#8230;&lt;/p&gt;

&lt;p&gt;If I can&amp;#8217;t grasp most/all of the remote in 1 hand you&amp;#8217;ve failed.&lt;/p&gt;

&lt;p&gt;If you have facebook/twitter built into version 1 you&amp;#8217;ve failed&lt;/p&gt;

&lt;p&gt;If I can&amp;#8217;t browse to everything available on Google TV with only a few buttons you&amp;#8217;ve failed&lt;/p&gt;

&lt;p&gt;If you offer a full size keyboard with your device you&amp;#8217;ve failed&lt;/p&gt;

&lt;p&gt;Sadly those metrics pretty much eliminate every Google TV device out there. I don&amp;#8217;t know what UI/hardware combination is best suited for using with TV&amp;#8217;s, but I can tell what is not good, full size keyboards. I feel as an industry we are all still trying to figure out how to best tackle this problem, and even Apple doesn&amp;#8217;t have the most ideal solution, though I feel they are on the right track.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/1269798684</link><guid>http://macsamurai.tumblr.com/post/1269798684</guid><pubDate>Fri, 08 Oct 2010 12:18:19 -0400</pubDate></item><item><title>"The nature of programming is a tug of war between what the computer does and what you want it to do...."</title><description>“The nature of programming is a tug of war between what the computer does and what you want it to do. And the computer always wins.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Mark Fenoglio (via &lt;a href="http://wilddogcow.tumblr.com/"&gt;wilddogcow&lt;/a&gt;)&lt;/em&gt;</description><link>http://macsamurai.tumblr.com/post/1110010083</link><guid>http://macsamurai.tumblr.com/post/1110010083</guid><pubDate>Sun, 12 Sep 2010 12:51:52 -0400</pubDate></item><item><title>The Free Software Foundation Attack on Apple's BSD Stance</title><description>&lt;p&gt;Recently Eben Moglen of the Software Freedom Law Center (SFLC) at an event sponsored by the Free Software Foundation (FSF) made an attack on Apple that they were being malicious and intentionally trying to deny user freedom with software (&lt;a href="http://www.groklaw.net/article.php?story=20100806143457345" title="Eben Moglen's LibrePlanet 2010 Keynote on the State of Free Software and the Future"&gt;link&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The problem here is that the FSF is completely unable to see beyond their own ideals. I read at one point that Richard Stallman was only recommending 1 GNU Linux distribution called UTUTO (or something like that.) Even well established linux distributions like Debian didn&amp;#8217;t get his seal of approval. In their world if you don&amp;#8217;t have the freedom to get access to the source code and the freedom to share that source with others and ensure that they then can get the same freedoms you do that then you don&amp;#8217;t have freedom. The FSF apparently doesn&amp;#8217;t know that Apple is really supporting LLVM so that they can freely mingle the code with Xcode and integrate the compiler directly into the IDE. If they tried to do the same with GCC, Apple would have to publish the source code to Xcode under the GPL even if they didn&amp;#8217;t want to.&lt;/p&gt;

&lt;p&gt;So even though Clang &amp;amp; LLVM are open source and you are able to grab the source code and make changes the &lt;a href="http://llvm.org/releases/2.7/LICENSE.TXT" title="LLVM BSD License"&gt;LLVM BSD License&lt;/a&gt; doesn&amp;#8217;t protect anyone from someone grabbing the LLVM source code, making a change, publishing the binary and not publishing their source code modification. That&amp;#8217;s perfectly well within your rights to do so. However in practice this isn&amp;#8217;t really beneficial to anyone aside from well supported coders determined to do so, because the moment this happens there is an inherent burden on you to maintain your fork and merge in changes from the original repository. It can happen (see CentOS &amp;amp; other linux distros), but especially for something like a compiler it&amp;#8217;d be in your interest to stay synced with the project. However the FSF values preserving the freedom to always get the source code &amp;amp; pass on that freedom to others, and because BSD license doesn&amp;#8217;t totally support this the FSF sees it as deceptive in offering source code, but not protecting your freedoms.&lt;/p&gt;

&lt;p&gt;While the intent of the FSF is inherently noble, their actions feel like anything but that. To them if your not using the GPL or LGPL your not protecting freedoms. However their noble intent has a nasty side effect thorn, the so called &lt;a href="http://www.red-sweater.com/blog/825/getting-pretty-lonely" title="Daniel Jalkut on the GPL"&gt;viral nature of the GPL&lt;/a&gt; which Daniel Jalkut commented on, feels more like an inhibitor to participation than anything else, because if you ever mingle with GPL code you might have to make your project GPL &amp;amp; publish it. Now people are generally afraid to ever mingle their source code with GPL code for fear of legal ramifications down the line. I know I would LOVE LOVE LOVE to simply integrate the git source code into my git client and be done with any possible integration problems with git right now. However because my git client is proprietary and git is GPL, that is impossible. The same would go with any commercial hg or bzr client.&lt;/p&gt;

&lt;p&gt;However the world has largely moved on. The trend these days that I have seen is that while specific application source code is largely proprietary, the general purpose code in Applications is being opened sourced under the BSD and MIT licenses. I am starting to do that with my Zangetsu Framework, the OmniGroup has produced a lot of open source code, Google has their Mac Developer Toolkit, Matt Gemmell has &lt;a href="http://mattgemmell.com/source" title="published a lot of open source code"&gt;published a lot of open source code&lt;/a&gt;, and much much more by many other developers. Especially with services like &lt;a href="http://github.com" title="Github"&gt;Github&lt;/a&gt; I see people sharing more BSD/MIT Licenced code than ever. This is extremely beneficial to everybody, while your specific application code is proprietary you get the benefits of being able to use others source code. The Mac community seems very willing to publish source code under the BSD license because it helps other developers (making proprietary apps or not) and is beneficial to the community as a whole.&lt;/p&gt;

&lt;p&gt;Do the world a favor, whenever you publish some open source code publish it under a liberal open source license like the BSD or MIT license. Thank you.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/924032381</link><guid>http://macsamurai.tumblr.com/post/924032381</guid><pubDate>Sun, 08 Aug 2010 18:40:56 -0400</pubDate></item><item><title>On over Evangelizing</title><description>&lt;p&gt;There is always a new hotness coming out, now it&amp;#8217;s distributed version control. touch screen smart phones, etc. With anything when we embrace some of these new things, and as a result our lives become much better, we want to share these things with other people and make their lives better too.&lt;/p&gt;
&lt;p&gt;However with this feeling of bliss we forget that these new things we embrace are not for everybody. For instance I love GTD (Getting Things Done) and OmniFocus, however I know some people who use GTD and just have a simple notepad and even more people whom don&amp;#8217;t use GTD at all. When I was struggling with School I switched to GTD and my grades instantly shot up to Straight A&amp;#8217;s. I wanted to share this with everybody, and I did share it with a lot of people, however I also recognized that it wasn&amp;#8217;t for everybody. I think that many of my aunt&amp;#8217;s and uncles would love switching to a Mac or iPad even, but whenever I talk to them about this Im careful to ask what they have, what they do, and say what the good &amp;amp; the bad of switching to a Mac would be.&lt;/p&gt;
&lt;p&gt;Not everybody wants to change however, many people are happy with what they have, many may be stuck with something due to certain circumstances and for those people when you try and constantly or fairly frequently try to convince them that something else is better, all you end up doing is putting them off the thing your trying to evangelize. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve seen this a lot with the Distributed Version Control Systems lately, Jeff LaMarche experienced this more than anybody else i&amp;#8217;ve heard ( http://twitter.com/jeff_lamarche/status/19008848638 .) Git people aren&amp;#8217;t alone, people evangelizing Mercurial have been just as bad. I&amp;#8217;ve been able to have plenty of civil conversations with people who like Subversion, I&amp;#8217;ve disagreed with them, but I always listened to why they use it and in the end respect their position. In the end people you have to realize that anything we evangelize is like a tool, it will help you fix some things, but not all things. Just because your $300 Titanium hammer works incredibly well helping you fix all your issues, doesn&amp;#8217;t mean it&amp;#8217;s necessarily the best tool to help me fix my bike.&lt;/p&gt;
&lt;p&gt;Evangelism requires a bit of empathy, the knowledge that your idea/tool is the better one and the patience to explain to someone why that is the case. If you don&amp;#8217;t know this, your not doing evangelism.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/837375490</link><guid>http://macsamurai.tumblr.com/post/837375490</guid><pubDate>Tue, 20 Jul 2010 15:09:25 -0400</pubDate></item><item><title>Building 64-bit git on Mac OS X 10.6</title><description>&lt;p&gt;make CFLAGS=&amp;#8221;-mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64&amp;#8221; LDFLAGS=&amp;#8221;-mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64&amp;#8221; prefix=/usr/local/git all&lt;/p&gt;

&lt;p&gt;make CFLAGS=&amp;#8221;-mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64&amp;#8221; LDFLAGS=&amp;#8221;-mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64&amp;#8221; prefix=/usr/local/git strip&lt;/p&gt;

&lt;p&gt;sudo make CFLAGS=&amp;#8221;-mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64&amp;#8221; LDFLAGS=&amp;#8221;-mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64&amp;#8221; prefix=/usr/local/git install&lt;/p&gt;

&lt;p&gt;Installs to /usr/local/git/bin/git. If all went well you should see something like&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Last login: Tue Jun 29 19:13:11 on ttys002
samurai% git --version
git version 1.7.1.1
samurai% cd /usr/local/git/bin 
samurai% file git
git: Mach-O 64-bit executable x86_64
samurai% pwd    
/usr/local/git/bin
&lt;/code&gt;&lt;/pre&gt;</description><link>http://macsamurai.tumblr.com/post/751570242</link><guid>http://macsamurai.tumblr.com/post/751570242</guid><pubDate>Tue, 29 Jun 2010 20:23:06 -0400</pubDate><category>git</category></item><item><title>On Android UI Fragmentation</title><description>&lt;p&gt;News came out recently that &lt;a href="http://www.theregister.co.uk/2010/06/20/google_android_oem/" title="Google is trying to really push it's own Android UI"&gt;Google is trying to really push it&amp;#8217;s own Android UI&lt;/a&gt; and make it better so that these other external UI&amp;#8217;s become unnecessary. This is a very good thing, if you have various handset manufacturers making various custom proprietary UI&amp;#8217;s built on top of Android it does nothing, but hurt the platform. The whole point in Android is that it&amp;#8217;s a consistent (well as it can be) experience across various devices that support it.&lt;/p&gt;

&lt;p&gt;The moment you introduce different UI&amp;#8217;s you add on differing features and you get completely different user experiences across different devices. Not only that if you want a consistent experience it forces you to research various devices to make sure that the UI you have on your current device is the same on a new device you are thinking of getting. What if it&amp;#8217;s different? Will my current Apps look the same? Will apps get new features for free? Or could it break my current apps? These are a ton of questions already going through my head thinking about this.&lt;/p&gt;

&lt;p&gt;I knew something like this might come to happen for the simple reason that the carriers (especially Verizon) like to bolt on anything they can to make the phone unique or to keep you coming to them. I&amp;#8217;ve heard varying reports that some carriers were thinking of charging for Android OS updates and others weren&amp;#8217;t. This is a case of the carriers totally missing the point of what Android is.&lt;/p&gt;

&lt;p&gt;I personally don&amp;#8217;t have an Android device, though I would love to test one for a while (as i&amp;#8217;ve only had 30 minutes with my brothers Android phone), but I fully support Google in this effort. A huge advantage Apple has is that they make the iPhone OS (iOS) and they make the hardware and they fight tooth &amp;amp; nail to keep the experience clean &amp;amp; consistent. There is no AT&amp;amp;T logo anywhere on the iPhone, if you are on AT&amp;amp;T then you&amp;#8217;ll most likely only see their name on the top bar on the iPhone for the carrier you are using&amp;#8230; that&amp;#8217;s it. When Apple releases a new iPhone (now iOS) OS update, everybody gets it for free and with little exception (like no camera, mic on iPod touch and only new iPhone 4 getting front camera &amp;amp; some models getting multitasking on iOS 4) the experience is pretty much the same.&lt;/p&gt;

&lt;p&gt;If I get really used to the way I enter text &amp;amp; do text manipulation actions on my iPhone 3GS it&amp;#8217;s going to be the same on my iPod touch. Now imagine if your iPhone got some fancy way to type text fast and then you switched to an iPod touch and you couldn&amp;#8217;t use it because it was proprietary to the iPhone. Yes it&amp;#8217;s an experience that sucks, but that&amp;#8217;s what&amp;#8217;s happening to Android right now. What&amp;#8217;s worse is that customers are not going to blame the handset manufacturer, they are going to blame Android &amp;amp; Google.&lt;/p&gt;

&lt;p&gt;In order to bring order &amp;amp; peace to Android, Google is going to have to be like Apple and make a great UI and then enforce the UI experience with an Iron fist.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/719081571</link><guid>http://macsamurai.tumblr.com/post/719081571</guid><pubDate>Sun, 20 Jun 2010 14:33:55 -0400</pubDate></item><item><title>Thoughts on Google Chrome &amp; Safari</title><description>&lt;p&gt;The browser wars are back on and it feels so good. The 2 main points around which the browser wars are going on this time appear to be HTML5/CSS3 compatibility and browser features.&lt;/p&gt;

&lt;p&gt;For me it appears that basically it&amp;#8217;s Google Chrome vs Safari fighting it out. Yes Firefox has more market share, but the browser hasn&amp;#8217;t done anything of value lately. Mozilla has spewed out something which made no sense to me, as to why they aren&amp;#8217;t as compelled to win the HTML5/CSS race. But I think it&amp;#8217;s painfully obvious that the Firefox project (at least in it&amp;#8217;s current form) is stagnating, &lt;a href="http://news.slashdot.org/story/10/05/18/2222238/Firefox-Is-Lagging-Behind-Its-Co-Founder-Says" title="an opinion even shared by one of the co founders of the project"&gt;an opinion even shared by one of the co founders of the project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Google showed the world that not only can you build a browser that is very standards compliant, but that the browser features can add great value to the experience. Google did a couple things with Chrome (1) They sandboxed each webpage, something that has made it very secure (&lt;a href="http://arstechnica.com/security/news/2009/03/chrome-is-the-only-browser-left-standing-in-pwn2own-contest.ars" title="so much that hackers don't want to tackle it."&gt;so much that hackers don&amp;#8217;t want to tackle it.&lt;/a&gt;) (2) They made webpages the highlighted feature in Chrome with things liked pinned tabs (it&amp;#8217;s also my understanding Chrome can create easy shortcuts on the desktop to pages that load in Chrome.) (3) They introduced the V8 Javascript engine which posed to be a serious competitor to Safari&amp;#8217;s Javascript engine.&lt;/p&gt;

&lt;p&gt;Now I don&amp;#8217;t agree with Google that webpages make better apps than native desktop apps, there are various reasons that many people smarter than I have outlined as to why this will probably be the case for the foreseeable future. One thing is clear though, Google in it&amp;#8217;s quest to make webpages better made a better web browser and that has forced Apple to make a better browser. I am not the only one to notice this, Wolf Rentzsch &lt;a href="http://twitter.com/rentzsch/status/15667231797" title="made the comment"&gt;made the comment&lt;/a&gt; &amp;#8220;no longer can there be any doubt, Chrome has make Safari a better browser #competitionisgood.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Chrome introduced a better browser with a native plugin architecture and that has finally forced Apple to allow extensions as well. And in the process everybody wins, browsers become faster, more standards compliant and introduce features which make everybody&amp;#8217;s lives better in the process.&lt;/p&gt;

&lt;p&gt;Now for the record let me state that although I very much appreciate Safari&amp;#8217;s recent features, I haven&amp;#8217;t switched away from Google Chrome. For me both browsers seem to lack something: For Chrome it&amp;#8217;s some native integration with the OS (see Dictionary, Bookmarks,etc (I suspect if I do switch back to Safari it&amp;#8217;ll probably be for native OS integration features)). For Safari it&amp;#8217;s the extensions, the webpage sandboxing (sometimes I very much appreciate being able to tell exactly which webpage is taking up so much CPU usage, something I am appreciative of Chromes task manager to be able to show me what webpage is doing what with my CPU and network) and the lack of some minor things like Bookmark syncing (yes safari has that, but only if you use Mobile Me.)&lt;/p&gt;

&lt;p&gt;Also we forget when we try out new browsers that it&amp;#8217;s not just about the initial raw speed, but how fast the browser is when you have your 30+ tabs open in the morning after browsing through your RSS client, it&amp;#8217;s how much CPU &amp;amp; RAM the browser is using on average throughout the whole day, so far for me Google Chrome has been kicking Safari&amp;#8217;s ass in this area. Each browser has gotten better and better at resource usage, but for me Google Chrome is the overall winner right now. It&amp;#8217;s Chrome&amp;#8217;s responsiveness and it&amp;#8217;s UI (omnibar,etc) that I like and am &lt;a href="http://twitter.com/mattgemmell/status/15695330157" title="not alone in noticing"&gt;not alone in noticing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lastly I hate to seem like I am so biased towards Google Chrome right now, but Mike Pinkerton made a valid point about how Apple described Safari 5 &amp;#8220;How can you be the &amp;#8220;most innovative browser&amp;#8221; if your new features include &amp;#8220;add bing&amp;#8221; and &amp;#8220;extensions like everyone else already has&amp;#8221;?&amp;#8221; &lt;a href="http://twitter.com/mikepinkerton/status/15679197580" title="link"&gt;link&lt;/a&gt;&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/676740800</link><guid>http://macsamurai.tumblr.com/post/676740800</guid><pubDate>Tue, 08 Jun 2010 10:32:22 -0400</pubDate><category>Google Chrome</category><category>Safari</category><category>WebKit</category></item><item><title>Hello World!</title><description>&lt;p&gt;We&amp;#8217;ll see what this turns out useful for. I definitely wanted to separate some content from my other Mac Samurai blog into this one so that ones just personal stuff and the other one is just developer stuff.&lt;/p&gt;</description><link>http://macsamurai.tumblr.com/post/283634681</link><guid>http://macsamurai.tumblr.com/post/283634681</guid><pubDate>Mon, 14 Dec 2009 16:40:27 -0500</pubDate></item></channel></rss>
