<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Parveen Kaler</title>
	
	<link>http://parveenkaler.com</link>
	<description>Founder | Smartful Studios Inc.</description>
	<lastBuildDate>Mon, 23 Aug 2010 23:13:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ParveenKaler" /><feedburner:info uri="parveenkaler" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>CrashKit: Helping Your iOS/iPhone Apps Suck Less</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/tVw8EbyU5Vw/</link>
		<comments>http://parveenkaler.com/2010/08/11/crashkit-helping-your-iphone-apps-suck-less/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 03:38:46 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=369</guid>
		<description><![CDATA[First there was the iPhone and iPod Touch.  Then the iPad.  Then iOS 3.0.  Then 3.2 but iPad only.  Then 4.0 but some of the features aren&#8217;t available on older models.  Then there is the 4&#215;3 versus 3&#215;2 aspect ratio to worry about.  And then 480&#215;320 versus 1024&#215;768 versus 960&#215;640.  The Media Player framework changes [...]]]></description>
			<content:encoded><![CDATA[<p>First there was the iPhone and iPod Touch.  Then the iPad.  Then iOS 3.0.  Then 3.2 but iPad only.  Then 4.0 but some of the features aren&#8217;t available on older models.  Then there is the 4&#215;3 versus 3&#215;2 aspect ratio to worry about.  And then 480&#215;320 versus 1024&#215;768 versus 960&#215;640.  The Media Player framework changes at every single point release.</p>
<p>All of this fragmentation means that iOS Apps crash.  CrashKit catches uncaught exceptions, traps signals, and sends them to developers by email or straight to your bug database.</p>
<h3>Foursquare</h3>
<p>Foursquare dumps a stack trace whenever it crashes.  It then asks the user to email the crash report to the developers the next time they launch the App.</p>
<p>The problem is that the user may not ever launch your App ever again.</p>
<p><a href="http://parveenkaler.com/wp-content/uploads/2010/08/IMG_0429.png"><img class="aligncenter size-full wp-image-371" title="Foursquare Crash" src="http://parveenkaler.com/wp-content/uploads/2010/08/IMG_0429.png" alt="Foursquare Crash" width="320" height="480" /></a></p>
<p style="text-align: center;"><strong>We can do better than this.</strong></p>
<h3>What CrashKit Does</h3>
<p>CrashKit catches uncaught NSExceptions.<br />
<code>NSSetUncaughtExceptionHandler(&amp;uncaughtExceptionHandler);</code><br />
It also traps signals that the operating system sends when the App touches memory that doesn&#8217;t belong to it or executes illegal operations.</p>
<pre class="brush: objc;">
signal(SIGABRT, sighandler);
signal(SIGBUS, sighandler);
signal(SIGFPE, sighandler);
signal(SIGILL, sighandler);
signal(SIGPIPE, sighandler);
signal(SIGSEGV, sighandler);
</pre>
<p>The signal handlers unwind the stack frame and try to find out exactly where the crash happened.  This bug report can then be emailed or sent to FogBugz.</p>
<h3>FogBugz</h3>
<p>FogBugz exposes a <a title="FogBugz API" href="http://www.fogcreek.com/FogBugz/docs/70/topics/advanced/API.html">BugzScout API</a> that accepts bug reports using HTTP GET/POST methods.  It buckets similar bugs together and appends them to existing bug reports.</p>
<h3>Pump That Run Loop</h3>
<p>There are a number of subtle issues with catching and reporting crashes.  In general, UIKit is not re-entrant.  Also, UIKit methods should only be called on the main thread.  Exceptions and signals are usually trapped on a thread that is not the main thread.  And the main thread usually gets evicted once something catastrophic happens to the App.</p>
<p>CrashKit jumps back to the main thread after catching a crash and grabbing the stack frame.  It then pumps the main run loop until an email message can be sent or a HTTP method can be completed.</p>
<pre class="brush: objc;">
- (void)pumpRunLoop
{
self.finishPump = NO;
CFRunLoopRef runLoop = CFRunLoopGetCurrent();
CFArrayRef runLoopModesRef = CFRunLoopCopyAllModes(runLoop);
NSArray * runLoopModes = (NSArray*)runLoopModesRef;
while (self.finishPump == NO)
{
for (NSString *mode in runLoopModes)
{
CFStringRef modeRef = (CFStringRef)mode;
CFRunLoopRunInMode(modeRef, 1.0f/120.0f, false);  // Pump the loop at 120 FPS
}
}
CFRelease(runLoopModesRef);
}
</pre>
<h3>LLVM and LLDB</h3>
<p>LLVM and LLDB are the future.  I&#8217;ve only tested CrashKit with LLVM.  There are some LLDB features I would like to add in the future.  CrashKit probably works with GCC but I haven&#8217;t really tested it.</p>
<h3>GitHub</h3>
<p>The best way to download CrashKit is to check out the <a title="GitHub: CrashKit" href="http://github.com/kaler/CrashKit">GitHub page</a>.  Go put a fork in it.  Crash reporting is hard so patches welcome.</p>
<p></code></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=tVw8EbyU5Vw:gbGKpQjbqEs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=tVw8EbyU5Vw:gbGKpQjbqEs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=tVw8EbyU5Vw:gbGKpQjbqEs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=tVw8EbyU5Vw:gbGKpQjbqEs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=tVw8EbyU5Vw:gbGKpQjbqEs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=tVw8EbyU5Vw:gbGKpQjbqEs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=tVw8EbyU5Vw:gbGKpQjbqEs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=tVw8EbyU5Vw:gbGKpQjbqEs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=tVw8EbyU5Vw:gbGKpQjbqEs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=tVw8EbyU5Vw:gbGKpQjbqEs:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2010/08/11/crashkit-helping-your-iphone-apps-suck-less/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2010/08/11/crashkit-helping-your-iphone-apps-suck-less/</feedburner:origLink></item>
		<item>
		<title>Designing a Better iPhone Sign Up Screen</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/jza_OZDs_ps/</link>
		<comments>http://parveenkaler.com/2010/07/26/designing-a-better-iphone-signin-screen/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 21:14:00 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[iphone development]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=356</guid>
		<description><![CDATA[I install and try a lot of iPhone Apps.  That means I have to Sign In or create a new account for a new service quite often.  I create a unique password for each web service for extra security. I&#8217;ve also implemented Sign Up screens many times.  Here are a few things to considering when [...]]]></description>
			<content:encoded><![CDATA[<p>I install and try a lot of iPhone Apps.  That means I have to Sign In or create a new account for a new service quite often.  I create a unique password for each web service for extra security.</p>
<p>I&#8217;ve also implemented Sign Up screens many times.  Here are a few things to considering when designing an iPhone Sign Up screen.</p>
<h2>The Best Sign Up is no Sign Up</h2>
<p>Does your services really need a Sign Up screen?  A perfectly reasonable strategy is to identify a user by the device identifier and then allow the user to create a full account later.  Two examples are <a title="Instapaper" href="http://www.instapaper.com/" target="_self">Instapaper</a> and <a title="Posterous" href="http://posterous.com/" target="_self">Posterous</a>.</p>
<pre style="padding-left: 30px;">[UIDevice currentDevice].uniqueIdentifier</pre>
<p>Both Instapaper and Posterous use your email address on the web to automatically create an account.  On the iPhone, Instapaper uses the device identifier.</p>
<h2>Sign In and Sign Up</h2>
<p>Leah Culver has a great post on why <a title="Leah Culver: Log in or sign up?" href="http://blog.leahculver.com/2009/11/log-in-or-sign-up.html" target="_self">Sign In and Sign Up</a> should be the same.  Typing on the iPhone and managing passwords is more difficult than on a desktop machine.  It is important to minimize the amount of user error by design.</p>
<p>How the UI flow will be designed has be specific to how your service works.  One way to do this one screen is to use a Segmented Control and toggle between a Sign In and Sign Up state.</p>
<h2>Embed a Table View</h2>
<p>The best way to create a form in an iPhone App is to use a Table View.  Here is a screenshot of the Skype iPhone App.  It uses a table view to display the Skype Name and Password fields.</p>
<div id="attachment_359" class="wp-caption aligncenter" style="width: 330px"><a href="http://parveenkaler.com/wp-content/uploads/2010/07/SkypeSignIn.png"><img class="size-full wp-image-359" title="Skype Sign In" src="http://parveenkaler.com/wp-content/uploads/2010/07/SkypeSignIn.png" alt="Screenshot of Skype Sign In screen" width="320" height="480" /></a><p class="wp-caption-text">Skype Sign In</p></div>
<p>The key insight to the design of this page is that a table view does not have to take up the entire view.  This is how you can setup your view controller to handle this:</p>
<pre style="padding-left: 30px;">@interface SignupViewController : UIViewController &lt;UITableViewDelegate, UITableViewDataSource&gt;</pre>
<pre style="padding-left: 30px;">{</pre>
<pre style="padding-left: 60px;">IBOutlet UITableView *tableView;</pre>
<pre style="padding-left: 30px;">}</pre>
<p>Instead of inheriting your view controller from UITableViewController, inherit from a regular UIViewController and then implement the UITableViewDelegate and UITableViewDataSource protocols.</p>
<h2>Embed a Text Field into a Table Cell</h2>
<p>The next task is to embed a text field into a table view cell.  Most designs embed a descriptive label and a text field.  This is not required.  A text field has both a text and placeholder property.  The placeholder property can be used to describe the field.  This is especially important for the password field.  I tend to use very long passwords that tend to trail off the edge of a text field.</p>
<div id="attachment_362" class="wp-caption aligncenter" style="width: 330px"><a href="http://parveenkaler.com/wp-content/uploads/2010/07/SkypePassword.png"><img class="size-full wp-image-362" title="SkypePassword" src="http://parveenkaler.com/wp-content/uploads/2010/07/SkypePassword.png" alt="Skype Password field" width="320" height="480" /></a><p class="wp-caption-text">Password trailing off in Skype text edit field</p></div>
<h2>Source Code</h2>
<p>This article isn&#8217;t very useful without real code that implements this functionality.  I&#8217;ve uploaded code for a <a title="Github: SignUp sample code" href="http://github.com/kaler/SignUp" target="_self">TextEditCell and SignupViewController at GitHub</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=jza_OZDs_ps:Jhn4Qs78Nco:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=jza_OZDs_ps:Jhn4Qs78Nco:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=jza_OZDs_ps:Jhn4Qs78Nco:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=jza_OZDs_ps:Jhn4Qs78Nco:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=jza_OZDs_ps:Jhn4Qs78Nco:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=jza_OZDs_ps:Jhn4Qs78Nco:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=jza_OZDs_ps:Jhn4Qs78Nco:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=jza_OZDs_ps:Jhn4Qs78Nco:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=jza_OZDs_ps:Jhn4Qs78Nco:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=jza_OZDs_ps:Jhn4Qs78Nco:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2010/07/26/designing-a-better-iphone-signin-screen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2010/07/26/designing-a-better-iphone-signin-screen/</feedburner:origLink></item>
		<item>
		<title>DemoCamp Vancouver 11</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/qBjWDnjzsf8/</link>
		<comments>http://parveenkaler.com/2010/07/02/democamp-vancouver-11/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 21:15:17 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Vancouver]]></category>
		<category><![CDATA[DemoCamp]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/2010/07/02/democamp-vancouver-11/</guid>
		<description><![CDATA[I am helping host the next DemoCamp Vancouver. DemoCamp is an opportunity for designers, developers, and marketers to get together and show off the projects that they have been working on. It is an unconference style event that allows people to gather and meet in an informal manner. DemoCamp Vancouver 11 Thursday, July 22nd 2010 [...]]]></description>
			<content:encoded><![CDATA[<p>I am helping host the next DemoCamp Vancouver.  DemoCamp is an opportunity for designers, developers, and marketers to get together and show off the projects that they have been working on.  It is an unconference style event that allows people to gather and meet in an informal manner.</p>
<pre><code>DemoCamp Vancouver 11
Thursday, July 22nd 2010
5:30 PM
Ceili's Irish Pub &amp; Restaurant
670 Smithe Street
Vancouver, BC
</code></pre>
<p>You should register on the <a href="http://democampvan11.eventbrite.com/" title="EventBrite: DemoCamp Vancouver 11">EventBrite</a> page.</p>
<p>This is a great opportunity to meet other people in the technology industry in Vancouver.  What are the benefits for presenting?</p>
<h2 id="pr">PR</h2>
<p>This is a great place to build some buzz around your project.  <a href="http://www.techvibes.com/event/democamp-vancouver-11-back-to-basics-edition" title="TechVibes: DemoCamp Vancouver 11">TechVibes</a> and a number of bloggers are always hanging out looking for new, interesting stories to write.</p>
<h2 id="cofounders">Cofounders</h2>
<p>Mingle with likeminded entrepreneurs.  Maybe you are a technical person that is looking for the business person to help you build the demo into a business.  Maybe you are a business person and your demo is held together with duct tape and chicken wire and your looking for that technical person to take the idea to the next level.</p>
<h2 id="friendly_first_contact">Friendly First Contact</h2>
<p>Find that group of friendly first contacts to test out your demo.  Good BETA testers are hard to find.  This is a great event to find those people that will try your service.</p>
<p>The hashtag on Twitter for the event is #DCV11.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=qBjWDnjzsf8:EUZVS7YMgjo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=qBjWDnjzsf8:EUZVS7YMgjo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=qBjWDnjzsf8:EUZVS7YMgjo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=qBjWDnjzsf8:EUZVS7YMgjo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=qBjWDnjzsf8:EUZVS7YMgjo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=qBjWDnjzsf8:EUZVS7YMgjo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=qBjWDnjzsf8:EUZVS7YMgjo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=qBjWDnjzsf8:EUZVS7YMgjo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=qBjWDnjzsf8:EUZVS7YMgjo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=qBjWDnjzsf8:EUZVS7YMgjo:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2010/07/02/democamp-vancouver-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2010/07/02/democamp-vancouver-11/</feedburner:origLink></item>
		<item>
		<title>Could Ruby be Apple’s language and API Future?</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/dtkgex18ksI/</link>
		<comments>http://parveenkaler.com/2010/06/30/could-ruby-be-apples-language-and-api-future-3/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 00:42:44 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedevelopment]]></category>
		<category><![CDATA[llvm]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=342</guid>
		<description><![CDATA[There has been a shift in development landscape over at Apple. John Siracusa of Ars Technica recently published an article about Apple&#8217;s language and API future. I believe Apple is preparing to transition to Ruby as their next default language. Today Today, the Apple development stack sits on top of the GCC compiler. GCC compiles [...]]]></description>
			<content:encoded><![CDATA[<p>There has been a shift in development landscape over at Apple.  John Siracusa of Ars Technica recently published an article about <a href="http://arstechnica.com/apple/news/2010/06/copland-2010-revisited.ars" title="Apple's language and API future">Apple&#8217;s language and API future</a>.  I believe Apple is preparing to transition to Ruby as their next default language.</p>
<h2 id="today">Today</h2>
<p>Today, the Apple development stack sits on top of the GCC compiler.  GCC compiles Objective-C, C++, and C code down into native machine code for devices that run Mac OS X and iOS.  Core Foundation is a set of C libraries that provide low level operating system services and fundamental data types.  On the Macintosh, Cocoa is the set of frameworks that sit on top of Core Foundation.  Cocoa Touch is the set of frameworks that sits on top of Core Foundation on iOS devices.</p>
<p>Generally, developers build applications using the XCode IDE.  XCode is the GUI layer that drives the compiler, debugger, and build system.</p>
<h2 id="llvm_lldb">LLVM &amp; LLDB</h2>
<p>XCode also ships with <a href="http://llvm.org/" title="LLVM: Compiler Infrastructure Project">LLVM</a>.  LLVM is an open source compiler infrastructure that is meant to eventually replace the GCC tool chain.</p>
<p>LLVM allows the system to <a href="http://en.wikipedia.org/wiki/Low_Level_Virtual_Machine" title="Wikipedia: LLVM">compile and optimize code</a> at compile-time, link-time, and run-time.  The compilers from Microsoft have been able to do <a href="http://msdn.microsoft.com/en-us/magazine/cc301698.aspx" title="MSDN: Link Time Code Generation">link-time code generation</a> for a number of years now.  This allows the system an extra phase in which it can both optimize code and provide other types of diagnostics.</p>
<p>The LLVM project originally started at the University of Illinois.  Apple has a team of developers that work on the project full time.</p>
<p>XCode currently ships with GDB as the debugger.  The LLDB project was recently announced with the goal to replace GDB as the debugger that sits on top of LLVM.  Currently, Mac OS X is the only supported platform.  Browsing the list of <a href="http://lists.cs.uiuc.edu/pipermail/lldb-commits/" title="LLDB: Commit Mailing List">committers</a> shows email addressees from Apple.  The project also has a very Apple-esque description:</p>
<blockquote>
<p><a href="http://lldb.llvm.org/goals.html" title="LLDB: Goals">The goal of LLDB is to provide an amazing debugging experience that &#8220;just works&#8221;.</a></p>
</blockquote>
<p>Complete transition to the LLVM/LLDB stack will finally put Apple on par with the .NET stack that Microsoft ships.  This stack contains a language agnostic runtime with multiple code optimization points that runs native code.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Dalvik_(software)" title="Wikipedia: Dalvik">Dalvik</a> virtual machine that ships with Android interprets byte code.  A byte code interpreter has a few advantages over a stack that runs native code.  Performance is not one of those advantages.</p>
<h2 id="macruby_rubinius">MacRuby &amp; Rubinius</h2>
<p>Where does Ruby fit into all of this?  Both <a href="http://www.macruby.org/" title="MacRuby">MacRuby</a> and Rubinius use the LLVM compiler infrastructure to compile Ruby into native code.  The MacRuby project is driven by Apple and it sits on top o Core Foundation and uses the Objective-C runtime to execute.</p>
<p>Apple has implemented <a href="http://developer.apple.com/mac/articles/cocoa/introblocksgcd.html" title="Apple: Blocks">Blocks and Grand Central Dispatch</a> in their latest release of the Objective-C runtime.  They are available on iPhone as of the iOS 4.0 update.  This is one of the features that the runtime would be required to implement to support Ruby blocks and lambda functions.  Objective-C is a dynamic language as is Ruby, however this was one of the missing features between the two languages.</p>
<h2 id="the_transition">The Transition</h2>
<p>A number of features still need to be implemented for a full transition to the Ruby language.  However, all of the fundamental building block for this transition are there.</p>
<p><em>A hat tip goes out to <a href="http://bmannconsulting.com/" title="Boris Mann">Boris Mann</a>.  We had a great jam session early last week that led to a lot of clarification of my thoughts.</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=dtkgex18ksI:T1snDyurb6U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=dtkgex18ksI:T1snDyurb6U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=dtkgex18ksI:T1snDyurb6U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=dtkgex18ksI:T1snDyurb6U:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=dtkgex18ksI:T1snDyurb6U:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=dtkgex18ksI:T1snDyurb6U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=dtkgex18ksI:T1snDyurb6U:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=dtkgex18ksI:T1snDyurb6U:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=dtkgex18ksI:T1snDyurb6U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=dtkgex18ksI:T1snDyurb6U:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2010/06/30/could-ruby-be-apples-language-and-api-future-3/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2010/06/30/could-ruby-be-apples-language-and-api-future-3/</feedburner:origLink></item>
		<item>
		<title>Farmville is the future.  Farmville is filler.</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/Eu-b_E7nuIE/</link>
		<comments>http://parveenkaler.com/2010/04/06/farmville-is-the-future-farmville-is-filler/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 08:26:04 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[farmville]]></category>
		<category><![CDATA[final fantasy]]></category>
		<category><![CDATA[game development]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=330</guid>
		<description><![CDATA[Farmville is the future. Okay, Farmville is not the future. Farmville is filler. But entertainment that is mobile, social, augmented and can be consumed on the user&#8217;s schedule is the future. Most people just can&#8217;t justify sitting for X number of hours on their couch to play a game. The game has to fit the [...]]]></description>
			<content:encoded><![CDATA[<p>Farmville is the future.</p>
<p>Okay, Farmville is not the future.  Farmville is filler.    But entertainment that is mobile, social, augmented and can be consumed on the user&#8217;s schedule is the future.</p>
<p>Most people just can&#8217;t justify sitting for X number of hours on their couch to play a game.  The game has to fit the user and not the other way around.  It has to be there when the user has a few minutes in line at a coffee shop and it has to be there when the user has an hour on a rainy Sunday afternoon.</p>
<p>Games like Final Fantasy are the past.  There is way too much content to consume, even for a bored 12 year old, in an 80 hour game.  60 hours of Final Fantasy games are filler anyway.</p>
<p>Farmville is filler in 3 minute increments.  Final Fantasy is filler in 30 minute increments.</p>
<p>Right now 3 minute increments are winning.  But, eventually filler is going to lose because we live in a world where good content <a title="Wikipedia: PageRank" href="http://en.wikipedia.org/wiki/PageRank" target="_self">PageRanks</a> its way to the top.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=Eu-b_E7nuIE:wvEV1EKOtA8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=Eu-b_E7nuIE:wvEV1EKOtA8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=Eu-b_E7nuIE:wvEV1EKOtA8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=Eu-b_E7nuIE:wvEV1EKOtA8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=Eu-b_E7nuIE:wvEV1EKOtA8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=Eu-b_E7nuIE:wvEV1EKOtA8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=Eu-b_E7nuIE:wvEV1EKOtA8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=Eu-b_E7nuIE:wvEV1EKOtA8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=Eu-b_E7nuIE:wvEV1EKOtA8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=Eu-b_E7nuIE:wvEV1EKOtA8:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2010/04/06/farmville-is-the-future-farmville-is-filler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2010/04/06/farmville-is-the-future-farmville-is-filler/</feedburner:origLink></item>
		<item>
		<title>DemoCamp Vancouver 10: Geo Edition</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/oYNpJLVSpHg/</link>
		<comments>http://parveenkaler.com/2010/02/20/democamp-vancouver-10-geo-edition/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 22:44:43 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Vancouver]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Boris Mann]]></category>
		<category><![CDATA[DemoCamp]]></category>
		<category><![CDATA[Geo]]></category>
		<category><![CDATA[Location Based Services]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=324</guid>
		<description><![CDATA[I will be speaking at the next DemoCamp Vancouver in March.  DemoCamp is usually an event where speakers show off a product that they have been working on.  I have been consulting with a few companies over the last year or so about how to integrate Geo Location and Location Based Services into their existing [...]]]></description>
			<content:encoded><![CDATA[<p>I will be speaking at the next DemoCamp Vancouver in March.  DemoCamp is usually an event where speakers show off a product that they have been working on.  I have been consulting with a few companies over the last year or so about how to integrate Geo Location and Location Based Services into their existing applications and services.  Boris Mann from over at Bootup asked me to do a talk and I just couldn&#8217;t refuse.</p>
<p>The last time I spoke at a DemoCamp was about 2 years ago.  I was just getting out of the video game industry and had started working on iPhone Development.  Here are 2 slides from that talk:</p>
<div style="text-align: center;">
<div class="ngg-galleryoverview" id="ngg-gallery-1-324">


	<!-- Piclense link -->
	<div class="piclenselink">
		<a class="piclenselink" href="javascript:PicLensLite.start({feedUrl:'http://parveenkaler.com/wp-content/plugins/nextgen-gallery/xml/media-rss.php?gid=1&amp;mode=gallery'});">
			[View with PicLens]		</a>
	</div>
	
	<!-- Thumbnails -->
		
	<div id="ngg-image-1" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://parveenkaler.com/wp-content/gallery/democampvancouver10/slide5.jpg" title=" " class="shutterset_set_1" >
								<img title="slide5" alt="slide5" src="http://parveenkaler.com/wp-content/gallery/democampvancouver10/thumbs/thumbs_slide5.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-2" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://parveenkaler.com/wp-content/gallery/democampvancouver10/slide6.jpg" title=" " class="shutterset_set_1" >
								<img title="slide6" alt="slide6" src="http://parveenkaler.com/wp-content/gallery/democampvancouver10/thumbs/thumbs_slide6.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>

</div>
<p>I proposed that the magic of the iPhone was going to be the shift towards digital distribution.  The video game industry was (and still largley is) beholden to WalMart and BestBuy.  Everyone is trying to copy the iTunes distribution model these days.  In early 2008, 6 months before the iTunes App Store launched, it wasn&#8217;t actually clear if this new distribution model would actually be successful.</p>
<p>Hopefully, I can point out something as insightful this time around, too.</p>
<p>But really, you shouldn&#8217;t come to hear me speak.  You should come to hear <a title="Twitter: Matt Galligan" href="http://twitter.com/mg" target="_self">Matt Galligan</a>.  He will be flying up from Boulder, Colorado to talk about <a title="Simple Geo" href="http://simplegeo.com/" target="_self">SimpleGeo</a>.  SimpleGeo is building infrastructure for the next generation of location based applications.  It looks like they are up to some very cool stuff.</p>
<p>For my part, I will try not to duplicate what others have said elsewhere.  I am always all about the dollar.  So, I will talk about how to build a viable business in the space.  It&#8217;s early in the game, so we will look at revenue models that seem to be working today.  I&#8217;ll also point out gaps in the Geo technology stacks.  These gaps are opportunities for companies to build out good products.</p>
<p>Signup and More Information:</p>
<blockquote><p><a title="DemoCamp Vancouver" href="http://democamp10yvr.eventbrite.com/" target="_self">DemoCamp Vancouver 10: Geo Edition</a></p>
<p>When: Thursday March 4th, 2010</p>
<p>Where: Ceili&#8217;s Irish Pub. 670 Smithe Street. Vancouver, BC.</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=oYNpJLVSpHg:pUFBgp-f7nI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=oYNpJLVSpHg:pUFBgp-f7nI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=oYNpJLVSpHg:pUFBgp-f7nI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=oYNpJLVSpHg:pUFBgp-f7nI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=oYNpJLVSpHg:pUFBgp-f7nI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=oYNpJLVSpHg:pUFBgp-f7nI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=oYNpJLVSpHg:pUFBgp-f7nI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=oYNpJLVSpHg:pUFBgp-f7nI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=oYNpJLVSpHg:pUFBgp-f7nI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=oYNpJLVSpHg:pUFBgp-f7nI:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2010/02/20/democamp-vancouver-10-geo-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2010/02/20/democamp-vancouver-10-geo-edition/</feedburner:origLink></item>
		<item>
		<title>Vancouver 2010 Olympics</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/NFx_lypORtc/</link>
		<comments>http://parveenkaler.com/2010/02/03/vancouver-2010-olympics/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 09:33:05 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Vancouver]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=321</guid>
		<description><![CDATA[Vancouverites suck. There. I said it. If we are not busy complaining about the Olympics we are busy complaining about the rain. If we are not busy complaining about the rain, we are busy complaining about the Canucks. We are our own worst enemies. The only thing we are good at is being hospitable. In [...]]]></description>
			<content:encoded><![CDATA[<p>Vancouverites suck. There. I said it. If we are not busy complaining about the Olympics we are busy complaining about the rain. If we are not busy complaining about the rain, we are busy complaining about the Canucks.</p>
<p>We are our own worst enemies.</p>
<p>The only thing we are good at is being hospitable. In our home, we should treat guests like family.</p>
<p>In my home or in my city I will treat guests like family.</p>
<p>PERIOD.</p>
<p>I am ashamed of Vancouverites that don&#8217;t go out of their way to help guests in our city.</p>
<p>It is OUR city. We either make it BETTER or we make it worse.</p>
<p>The Olympics are our stage. We can be a bunch of dickheads and treat our guests with disrespect.</p>
<p>Or we can rise to the occasion and treat every single person that we meet with honour, respect, and kindness.</p>
<p>Being angry and disrespectful and dishonourable does not prove anything worthwhile. It proves we are angry, disrespectful, and dishonourable.</p>
<p>Be BETTER. Be way BETTER. Be magnitudes BETTER.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=NFx_lypORtc:vnu6t2jDQWk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=NFx_lypORtc:vnu6t2jDQWk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=NFx_lypORtc:vnu6t2jDQWk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=NFx_lypORtc:vnu6t2jDQWk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=NFx_lypORtc:vnu6t2jDQWk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=NFx_lypORtc:vnu6t2jDQWk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=NFx_lypORtc:vnu6t2jDQWk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=NFx_lypORtc:vnu6t2jDQWk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=NFx_lypORtc:vnu6t2jDQWk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=NFx_lypORtc:vnu6t2jDQWk:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2010/02/03/vancouver-2010-olympics/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2010/02/03/vancouver-2010-olympics/</feedburner:origLink></item>
		<item>
		<title>Measuring Obsession: How I lost 37 Lbs</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/AzukGp_FfSs/</link>
		<comments>http://parveenkaler.com/2009/12/21/measuring-obsession-how-i-lost-37-lbs/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 19:32:11 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=314</guid>
		<description><![CDATA[The following is a list, in no particular order, of those activities that most commonly elicit Resistance: &#8230; 3) Any diet or health regimen. &#8230; 5) Any activity whose aim is tighter abdominals. &#8211; Steven Pressfield. The War of Art. Losing weight is easy. Do 40 minutes of anaerobic activity like lifting weights three times [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<div id="_mcePaste">The following is a list, in no particular order, of those activities that most commonly elicit 	Resistance:</div>
<div id="_mcePaste">&#8230;</div>
<div id="_mcePaste">3) Any diet or health regimen.</div>
<div id="_mcePaste">&#8230;</div>
<div id="_mcePaste">5) Any activity whose aim is tighter abdominals.</div>
<div id="_mcePaste">&#8211; Steven Pressfield. The War of Art.</div>
</blockquote>
<p>Losing weight is easy.</p>
<p>Do 40 minutes of anaerobic activity like lifting weights three times each week.  Do 20 minutes of aerobic activity three times each week. Have egg whites and oatmeal for breakfast, tuna salad for lunch, and a chicken breast with rice for dinner.</p>
<p>3 hours of effort a week for a few weeks and you will have achieved your goal.</p>
<p>Simple, right?</p>
<h3>Physiology versus Psychology</h3>
<blockquote>
<div id="_mcePaste">- If you correct your mind, the rest of your life will fall into place.</div>
<div id="_mcePaste">Lao Tzu</div>
</blockquote>
<p>I&#8217;ve been thinking a lot about problem solving lately and the effect our own brain has on that activity.  I am a technical person.  I tend to break down all challenges into engineering problems and start applying the scientific method.</p>
<p>Losing weight should be easy.  Expend more energy than you consume and you will have achieved your goal.  It is that simple from a physiological perspective.</p>
<p>It&#8217;s much more complex from a psychological perspective.  There are a lot of moving parts that you have to manage to achieve your goals.  The brain deals with many concerns over the course of a day.  We use words like focus, motivation, tenacity, determination, and persistence to describe all of this management.  I like to use another word:</p>
<blockquote>
<div id="_mcePaste">obsession |əbˈse sh ən|</div>
<div id="_mcePaste">noun</div>
<div id="_mcePaste">• an idea or thought that continually preoccupies or intrudes on a person&#8217;s mind : he was in the grip of an obsession he was powerless to resist.</div>
</blockquote>
<p>Generally, the term obsession has a negative connotation.  The usual implication is that you don&#8217;t have control over your thoughts.</p>
<p>The plan is to tweak our brain just like we would tweak our diet or workout plan.</p>
<h3>Before &amp; After Pictures</h3>
<p>I will spare you the shirtless pictures.  The first picture is my big, fat head from December 2008.  I peaked at about 197lbs.  The second picture is this morning.  I&#8217;m hovering at about 160lbs now.</p>
<div>
<div id="attachment_317" class="wp-caption alignnone" style="width: 310px"><a href="http://parveenkaler.com/wp-content/uploads/2009/12/before.png"><img class="size-full wp-image-317" title="Before" src="http://parveenkaler.com/wp-content/uploads/2009/12/before.png" alt="Before" width="300" height="385" /></a><p class="wp-caption-text">Before</p></div>
</div>
<div id="attachment_316" class="wp-caption alignnone" style="width: 310px"><a href="http://parveenkaler.com/wp-content/uploads/2009/12/after.png"><img class="size-medium wp-image-316 " title="After" src="http://parveenkaler.com/wp-content/uploads/2009/12/after-300x225.png" alt="After" width="300" height="225" /></a><p class="wp-caption-text">After</p></div>
<h3>Measure</h3>
<p>I have one cup of coffee exactly at 6AM and another one at 3PM.  These are the perfect times for me to drink coffee and the perfect amount.  I know this because I kept a spreadsheet with every coffee I drank for 3 months.</p>
<p>I then correlated it with my timesheets in Harvest.  I track all of my billable and non-billable hours.  I started by tracking just working hours.  It has now expanded into tracking almost every activity.</p>
<p>I also did this with the amount of water I drink and how much I sleep.</p>
<p>You can automate a lot of this tracking.  I use an App on the iPhone called <a title="LoseIt.App" href="http://loseit.com" target="_self"><span style="color: #000000;"><span style="text-decoration: none;">LoseIt</span></span></a> to track every calorie I eat.  There is now also a companion website.</p>
<p>I also use <a title="Track Your Happiness" href="https://www.trackyourhappiness.org/" target="_self"><span style="color: #000000;"><span style="text-decoration: none;">Track Your Happiness</span></span></a>.  This service sends me an SMS three times a day.  A follow a link on my phone and fill out a survey.  I get a set pretty graphs at the end of the month that correlate how happy I am with what activities I was doing at the time.</p>
<h3>Automate</h3>
<p>The easiest way to make sure your brain doesn&#8217;t get in the way is to not think at all.</p>
<p>The spreadsheet with with your budget probably has a macro that automatically adds up your expenses for the month.  You probably have an email filter setup for that friend that happens to send three emails a day with the subject: &#8220;FUNNIEST JOKE IN THE WORLD. LOL&#8221;</p>
<p>The same principle applies to your brain.  Do the thinking once, up front and then don&#8217;t allow yourself to stray the next time.  If you&#8217;ve been to my apartment, you&#8217;ve probably seen all of the checklists that I have taped up everywhere.  I scribble on all the windows with dry erase markers.</p>
<p>These are the exact 6 things that I do in the morning.  Every morning.</p>
<div id="_mcePaste">
<div id="attachment_318" class="wp-caption aligncenter" style="width: 235px"><a href="http://parveenkaler.com/wp-content/uploads/2009/12/checklist.jpg"><img class="size-medium wp-image-318" title="Checklist" src="http://parveenkaler.com/wp-content/uploads/2009/12/checklist-225x300.jpg" alt="Checklist" width="225" height="300" /></a><p class="wp-caption-text">Checklist</p></div>
</div>
<h3><strong>The Future</strong></h3>
<p>You probably are not as obsessive as I am.  So, how does this help you?  Well, it probably won&#8217;t.</p>
<p>You can start by measuring calorie intake and your happiness.  LoseIt and TrackYourHappines only take a few minutes each day if you carry around an iPhone.</p>
<p>However, the future is little devices that help you automatically measure all of this data.  You may have used a pedometer like the Nike+ system to count the number of steps that you take in a day.  The <a title="Fitbit" href="http://www.fitbit.com/"><span style="color: #000000;"><span style="text-decoration: none;">Fitbit</span></span></a>, <a title="WakeMate" href="http://www.wakemate.com/" target="_self"><span style="color: #000000;"><span style="text-decoration: none;">WakeMate</span></span></a>, and <a title="Zeo Personal Sleep Coach" href="http://www.myzeo.com/" target="_self"><span style="color: #000000;"><span style="text-decoration: none;">Zeo</span></span></a> are devices that measure how many calories you expend and how much you sleep amongst other things.</p>
<p>The onus is on you to realize that you are trying to exercise your brain and not just your body.</p>
<h3><strong>Conclusion</strong></h3>
<p>I did some ridiculous things to drop 37lbs.  I did hot yoga for 90 minutes a day for 30 days straight.  I did two a day workoutf for a month.  I wear 4 layers of clothing when I&#8217;m on the elliptical.</p>
<p>But really, that stuff doesn&#8217;t matter as much as keeping your head in the game.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=AzukGp_FfSs:ScjYMGdMJg4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=AzukGp_FfSs:ScjYMGdMJg4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=AzukGp_FfSs:ScjYMGdMJg4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=AzukGp_FfSs:ScjYMGdMJg4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=AzukGp_FfSs:ScjYMGdMJg4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=AzukGp_FfSs:ScjYMGdMJg4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=AzukGp_FfSs:ScjYMGdMJg4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=AzukGp_FfSs:ScjYMGdMJg4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=AzukGp_FfSs:ScjYMGdMJg4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=AzukGp_FfSs:ScjYMGdMJg4:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2009/12/21/measuring-obsession-how-i-lost-37-lbs/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2009/12/21/measuring-obsession-how-i-lost-37-lbs/</feedburner:origLink></item>
		<item>
		<title>Vancouver iPhone Forum: Touch Interface Design</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/cyyY1__mQQI/</link>
		<comments>http://parveenkaler.com/2009/11/19/vancouver-iphone-forum-touch-interface-design/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 21:36:16 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Vancouver]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=311</guid>
		<description><![CDATA[The CBC, BCIT, and New Media BC will be hosting the Vancouver iPhone Forum next Tuesday. Vancouver iPhone Forum November 24, 2009. 8:00 AM BCIT Downtown Campus 2nd Floor, 555 Seymour Street Vancouver, BC I will be presenting, along with Kevin Kimmett, a session on Touch Interface Design.  Kevin is fantastic designer that works at [...]]]></description>
			<content:encoded><![CDATA[<p>The CBC, BCIT, and New Media BC will be hosting the <a title="Vancouver iPhone Forum" href="http://vancouveriphoneforum.com/">Vancouver iPhone Forum</a> next Tuesday.</p>
<blockquote><p>Vancouver iPhone Forum</p>
<p>November 24, 2009. 8:00 AM</p>
<p>BCIT Downtown Campus</p>
<p>2nd Floor, 555 Seymour Street</p>
<p>Vancouver, BC</p></blockquote>
<p>I will be presenting, along with <a title="Kevin Kimmet: Interactive Designer" href="http://kevinkimmett.com/">Kevin Kimmett</a>, a session on Touch Interface Design.  Kevin is fantastic designer that works at the CBC.  He has lead the design efforts at the CBC on their iPhone Apps.  He has designed the Hockey Night In Canada App, the CBC Radio App, as well as well as their mobile websites.</p>
<p>Kevin will focus on how the tools and techniques that a designer can employ to create great mobile experiences for touch devices.</p>
<p>I will be focusing on the technical aspects of interface design.  I will go over the mechanics of using the <a title="Apple: Interface Builder" href="http://developer.apple.com/tools/interfacebuilder.html">Interface Builder</a> tool.  I will cover Apple&#8217;s <a title="Apple: Human Interface Guidelines" href="http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/Introduction/Introduction.html">Human Interface Guidelines</a>.  I will also cover how technical programmers can collaborate effectively with designers.</p>
<p>You can follow the conversation on Twitter.  The hashtag for the event will be <a title="Twitter: #vaniphone" href="http://search.twitter.com/search?q=%23vaniphone">#vaniphone</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=cyyY1__mQQI:ag6CEX20xM0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=cyyY1__mQQI:ag6CEX20xM0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=cyyY1__mQQI:ag6CEX20xM0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=cyyY1__mQQI:ag6CEX20xM0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=cyyY1__mQQI:ag6CEX20xM0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=cyyY1__mQQI:ag6CEX20xM0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=cyyY1__mQQI:ag6CEX20xM0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=cyyY1__mQQI:ag6CEX20xM0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=cyyY1__mQQI:ag6CEX20xM0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=cyyY1__mQQI:ag6CEX20xM0:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2009/11/19/vancouver-iphone-forum-touch-interface-design/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2009/11/19/vancouver-iphone-forum-touch-interface-design/</feedburner:origLink></item>
		<item>
		<title>In App Purchases and Mobile Services</title>
		<link>http://feedproxy.google.com/~r/ParveenKaler/~3/mVWFeyDHnGc/</link>
		<comments>http://parveenkaler.com/2009/10/16/in-app-purchases-and-mobile-services/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 19:40:42 +0000</pubDate>
		<dc:creator>Parveen Kaler</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://parveenkaler.com/?p=305</guid>
		<description><![CDATA[Yesterday, Apple announced that they would allow In App Purchases for free applications in the iTunes App Store.  Previously, In App Purchases were only available in paid applications. Software As A Service This will allow developers to shift away from the Software As A Product model to the Software As A Service model.  We have [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, Apple announced that they would allow <a title="Apple: In App Purchases" href="http://developer.apple.com/iphone/program/sdk/inapppurchase.html" target="_self">In App Purchases</a> for free applications in the iTunes App Store.  Previously, In App Purchases were only available in paid applications.</p>
<h3>Software As A Service</h3>
<p>This will allow developers to shift away from the Software As A Product model to the Software As A Service model.  We have seen this shift on the Internet over the last decade with the rise of Web services.</p>
<p>Microsoft Office is a product but Google Docs is a service.  iWork is a product but iWork.com is a service.  iPhoto is a product but Flickr.com  and MobileMe is a service.</p>
<p>Going forward, we will see mobile applications integrate much more tightly with web and location services.</p>
<h3>Freemium / Free-To-Play</h3>
<p><a title="Fred Wilson: My Favorite Business Model" href="http://www.avc.com/a_vc/2006/03/my_favorite_bus.html" target="_self">Freemium</a> is a business model that we have seen in the web services world.  Flickr is free for the most part.  A Flickr Pro account is $25/year and buys unlimited storage and analytics.</p>
<p>We will start seeing this model in the mobile application business.</p>
<p>This model is called <a title="Top 10 Revenue Models for Free To Play Games" href="http://freetoplay.biz/2007/08/02/top-10-revenue-models-for-free-to-play-games/">Free To Play</a> in the video game business.  Zynga allows you to play games like <a title="Wikipedia: FarmVille" href="http://en.wikipedia.org/wiki/FarmVille">FarmVille</a> for free.  However, you can purchase in-game currency such as coins and experience points.</p>
<h3>Subscription</h3>
<p>The big rumour is that Apple will release a tablet that will compete with the Amazon Kindle.  In App Purchases will allow magazines and newspapers to charge a subscription for content.  It makes sense that Apple would want to unify the way e-commerce works across all platforms and devices.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=mVWFeyDHnGc:Qfeats-Hj7w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=mVWFeyDHnGc:Qfeats-Hj7w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=mVWFeyDHnGc:Qfeats-Hj7w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=mVWFeyDHnGc:Qfeats-Hj7w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=mVWFeyDHnGc:Qfeats-Hj7w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=mVWFeyDHnGc:Qfeats-Hj7w:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=mVWFeyDHnGc:Qfeats-Hj7w:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=mVWFeyDHnGc:Qfeats-Hj7w:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ParveenKaler?a=mVWFeyDHnGc:Qfeats-Hj7w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ParveenKaler?i=mVWFeyDHnGc:Qfeats-Hj7w:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://parveenkaler.com/2009/10/16/in-app-purchases-and-mobile-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://parveenkaler.com/2009/10/16/in-app-purchases-and-mobile-services/</feedburner:origLink></item>
	</channel>
</rss>
