<?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>Hsoi Enterprises LLC » blog</title>
	
	<link>http://hsoienterprises.com</link>
	<description />
	<lastBuildDate>Sat, 19 May 2012 12:19:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/HsoiEnterprisesBlog" /><feedburner:info uri="hsoienterprisesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>HsoiEnterprisesBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Moving to Git (bye bye Subversion)</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/xm0K8S6twVc/</link>
		<comments>http://hsoienterprises.com/2012/05/19/moving-to-git-bye-bye-subversion/#comments</comments>
		<pubDate>Sat, 19 May 2012 12:19:05 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=520</guid>
		<description><![CDATA[All things evolve, and if you don&#8217;t keep up you will fall behind. The new hotness in version control systems are distributed systems like Git ...]]></description>
			<content:encoded><![CDATA[<p>All things evolve, and if you don&#8217;t keep up you will fall behind.</p>
<p>The new hotness in version control systems are distributed systems like Git and Mercurial. I have used Subversion for many years and have been mostly satisfied with it. I&#8217;ve known about Git and Hg but just didn&#8217;t have reason to delve into them. But over the past some months I&#8217;ve been exploring Git and really like it. It&#8217;s time to move Hsoi Enterprises&#8217; source control from svn to git.</p>
<p>Here&#8217;s the kink.</p>
<p>About a month ago I obtained new server hardware, which also brought about a major OS change. I brought my svn repository over, but for whatever reason it refuses to work. I&#8217;ve pounded endlessly upon apache, but it refuses to allow me access to my repository. Yes, I am giving up. In the end it doesn&#8217;t matter if I can get svn serving, because I&#8217;m abandoning it. All I really want is to move my existing svn repositories in git, just let me have my data and all my history.</p>
<p>Thankfully my Google searching for ways to beat apache turned up some pages that reminded me about <em>svnadmin dump</em> and <em>load</em>.</p>
<p>It&#8217;s been a manual process, but it works something like this (using the <a href="http://hsoienterprises.com/software/practicedeck/">PracticeDeck</a> repository as example):</p>
<p>1. Dump the old svn repository</p>
<p>Navigate to the physical svn repository on the server.</p>
<pre>$ svnadmin dump PracticeDeck &gt; PracticeDeck.dump</pre>
<p>2. Import the svn repository</p>
<p>Since git works locally, I copied the PracticeDeck.dump file to my main dev machine (via AFP file sharing). Fired up the Terminal, cd&#8217;d to the place I wanted the git repository, and started work in there.</p>
<p>Yes, you will have to create a local svn repository to import the dump into, which is then used for the git import. This local svn repo is just a temporary artifact.</p>
<pre>$ svnadmin create PracticeDeckSVN</pre>
<pre>$ svnadmin load PracticeDeckSVN &lt; PracticeDeck.dump</pre>
<p>3. Create a file to map the authors.</p>
<p>Creating an authors.txt file is useful since git likes to track each commit by the author and their email address, which is slightly different from svn. The file is simple, merely using a &#8220;svn-name = git-name&#8221; mapping. But I had a problem! In my case my svn repository had no user information! So how to map this?</p>
<pre>(no author) = John C. Daub &lt;hsoi@hsoienterprises.com&gt;</pre>
<p>The &#8220;(no author)&#8221; is the magic apparently.</p>
<p>4. Create the git repository</p>
<pre>$ mkdir PracticeDeck</pre>
<pre>$ git init PracticeDeck</pre>
<p>5. Import!</p>
<pre>$ git svn clone file://$(pwd)/PracticeDeckSVN ./PracticeDeck -A authors.txt --stdlayout</pre>
<p>There are numerous ways you can format this command. Some people use the &#8220;-no-metadata&#8221; option, but I see no harm in doing that and keeping it around. Some Google searching turned up that lacking this created problems down the line, but others just don&#8217;t want the clutter. It&#8217;s up to you. I opted to keep metadata because there&#8217;s no harm (that I&#8217;m aware of). I&#8217;d rather have it and not need it than need it and not have it.</p>
<p>I&#8217;ve also seen some others use different options than &#8211;stdlayout, but since my stuff was mostly standard, I just used that to keep it simple.</p>
<p>For the most part, this handled things fine. I&#8217;ve seen <a href="http://www.lowlevelmanager.com/2011/06/migrate-svn-repositorydump-to-git.html">some folks go in</a> and do some other manual fetching and branching and tagging to migrate their stuff better, but my stuff was simple enough and colored within existing lines for the most part, that the basic clone worked out fine for me.</p>
<p>6. Add other files</p>
<p>I have a habit of keeping some other files around. For example, I&#8217;d keep the built binary, the .dSYM file, and other artifacts of release builds. Granted, this is less important to do manually now with Xcode 4&#8242;s Archiving, but it&#8217;s a holdover habit and even if I don&#8217;t do it in the future, certainly I&#8217;d like to maintain what I already have.</p>
<p>In my case, my svn repository broke from standard convention and had a layout like this:</p>
<pre>/root
  /archives
  /branches
  /tags
  /trunk
  /vendor</pre>
<p>In this case, it&#8217;s the &#8220;archives&#8221; directory that mattered. Git doesn&#8217;t quite work like svn in this regard, in that there isn&#8217;t some separate folder structure you can have (e.g. typically all you work with locally is the &#8220;trunk&#8221;). I must admit, as soon as I ran into this, I felt like gee, this is one vote for Subversion over Git! But you can deal with it easily enough. For example, I just created an &#8220;archives&#8221; folder in my normal source code (git) working copy and exported the svn &#8220;archives&#8221; contents into that folder. Yes, I had to fire up my svn client (svnX), create a file-based repository entry that pointed to my &#8220;PracticeDeckSVN&#8221; folder, and then I could browse around and do as I needed to. Worked fine. I&#8217;m not sure this &#8220;archives&#8221; folder will make for a good long-term solution&#8230; maybe I&#8217;ll have another repository somewhere else, or just a simple file structure somewhere because it doesn&#8217;t necessarily need to be in git. But for right now, this is fine.</p>
<p>7. Clean up</p>
<p>Delete the &#8220;PracticeDeckSVN&#8221; folder.</p>
<p>I opted to keep the .dump files in a folder, just in case I need to come back to them later (I can always trash them later)</p>
<p>And then one thing I liked <a href="http://maururu.net/2009/svn-to-git-take-2/">I read about here</a>. When you use &#8220;git svn&#8221; it keeps a connection to the svn archive as a remote. Well, I don&#8217;t want that because svn is going away. So what to do?</p>
<pre>$ git config --remove-section svn-remote.svn
$ rm -Rf .git/svn/</pre>
<p>And life is good.</p>
<p>If you want, you could go in and delete git branches:</p>
<pre>$ git branch -d trunk</pre>
<p>In this case, &#8220;trunk&#8221; will be redundant with &#8220;master&#8221;, and trunk is an svn-ism that we can get away from.</p>
<p>Of course, any other cleanups and changes you want to do to your new git repository is up to you. Me, I don&#8217;t really care. Small team, and I really just want to have all the old history. If the tags and branches and whatever aren&#8217;t perfect, that&#8217;s alright. It&#8217;s good enough for me to get by and move forward in the land of Git.</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/xm0K8S6twVc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/05/19/moving-to-git-bye-bye-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/05/19/moving-to-git-bye-bye-subversion/</feedburner:origLink></item>
		<item>
		<title>kwikkEmail 1.0.1 released</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/T3CY1ZorgaA/</link>
		<comments>http://hsoienterprises.com/2012/05/09/kwikkemail-1-0-1-released/#comments</comments>
		<pubDate>Wed, 09 May 2012 23:14:14 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=512</guid>
		<description><![CDATA[kwikkEmail 1.0.1 is now available in the AppStore. What&#8217;s new in 1.0.1? A new attachment type: Ask. It allows you to configure a template but ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://hsoienterprises.com/software/kwikkemail/">kwikkEmail</a> 1.0.1 is now available in the AppStore.</p>
<p>What&#8217;s new in 1.0.1?</p>
<ul>
<li>A new attachment type: <strong>Ask</strong>. It allows you to configure a template but dynamically add an attachment. Gives you the best of both worlds!</li>
<li>Fixed a problem with voice memo recording on iPhone 4S&#8217;s. Fixing this improved recording so there wasn&#8217;t a pause of indeterminate length before recording actually started. Audio files are still stored in .caf (<a href="https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CAFSpec/CAF_overview/CAF_overview.html#//apple_ref/doc/uid/TP40001862-CH209-DontLinkElementID_63">Core Audio Format</a>) files, but the audio itself is in IMA4 format, resulting in better compression rates and thus less network data consumption.</li>
<li>Added some Facebook and Twitter functionality.</li>
<li>A few other little things and fixes.</li>
</ul>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/T3CY1ZorgaA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/05/09/kwikkemail-1-0-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/05/09/kwikkemail-1-0-1-released/</feedburner:origLink></item>
		<item>
		<title>To support Android… or not</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/vMaPMzg_bYQ/</link>
		<comments>http://hsoienterprises.com/2012/05/03/to-support-android-or-not/#comments</comments>
		<pubDate>Thu, 03 May 2012 11:53:06 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=509</guid>
		<description><![CDATA[Lots of people love the PracticeDeck app. Even more people love the notion of the app, want the app, then learn it&#8217;s iOS-only&#8230; and the ...]]></description>
			<content:encoded><![CDATA[<p>Lots of people love the <a href="http://hsoienterprises.com/software/practicedeck/">PracticeDeck app</a>.</p>
<p>Even more people love the notion of the app, want the app, then learn it&#8217;s iOS-only&#8230; and the smile fades from their face and they put their Android phone back in their pocket. But most follow up by asking me to bring it to Android.</p>
<p>There&#8217;s no question that&#8217;s my #1 request: bring the app to Android.</p>
<p>Would I like to? Yes. But being a small shop there&#8217;s only so much I can do&#8230; and it&#8217;s a lot of time and trouble to make the port. I had thought about contracting it out to someone else, but then that&#8217;s a lot of money I can&#8217;t expect to recoup. Not only because I know how much time and effort it took to write the app thus I can make a fair estimate of Android dev costs, but well&#8230; Android just doesn&#8217;t make much money for developers.</p>
<p><a href="http://www.pcpro.co.uk/blogs/2012/04/27/android-fans-pay-for-your-apps-please/">Take this article</a>.</p>
<p>I didn&#8217;t realize piracy on Android was so rampant, and so many people proud to do it. It bugs me because I&#8217;m sure you work for a living and you wouldn&#8217;t like it if someone didn&#8217;t pay you for your efforts, or just took whatever you made and didn&#8217;t pay for it. So what motivation should I have to make things if someone&#8217;s just going to take it and not compensate me? I have a family to feed and only so much time in a day, so I have to spend my time so I can care and provide for my family. Busting my hump for months and getting nothing to show for it doesn&#8217;t motivate me all that much, sorry.</p>
<p>Many have told me that the &#8220;revenue&#8221; model on Android tends to be ad-based apps. But I know ads just do not make much money, except for a few very lucky people. But reading that article, I didn&#8217;t realize that there are ad-blockers on Android, and so we&#8217;re back to the same thing of people getting something for nothing and the developer loses out.</p>
<p>I&#8217;m sorry, but that&#8217;s just not motivating. Well it is motivating: motivating to focus my efforts elsewhere.</p>
<p>Do I want to make an Android version? Sure. But I think it&#8217;s going to take the larger Android ecosystem to first become more supportive of developers, because right now it&#8217;s losing developers. Google, the handset makers, the carriers&#8230; they&#8217;re going to have to start the change. And yes, the customers/consumers in that realm will have to change too. But it&#8217;s a larger change that needs to happen with folks in general.</p>
<p>Everyone hated Metallica when they spoke out against Napster, and while they were wrong in many ways, the fundamental premise what they produce X so they can earn a living, and if people don&#8217;t pay them for X, they can&#8217;t earn a living. Think about that folks. You really love the product someone provides; doesn&#8217;t matter if it&#8217;s music or art or software or food or whatever. This person does X because they are good at it, so they work to make money doing what they&#8217;re good at so they can feed themselves and their family. If they determine they can make enough money at X to care for themselves, they&#8217;ll keep doing X. If they can&#8217;t, then they will have to stop doing X and find something else to do, because we all like to eat. So think about that. If you really love X, support the person that makes X so they can keep making X so you can keep enjoying X. Because if you don&#8217;t support X, the creator of X will have to find something else to do and X will cease and you will no longer be able to enjoy it.</p>
<p>It&#8217;s simple. Support the things you like, that you use, that make your life better in some way. If you support them, they can continue to make your life better.</p>
<p>If you don&#8217;t support them, they will vanish and ultimately you lose out.</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/vMaPMzg_bYQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/05/03/to-support-android-or-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/05/03/to-support-android-or-not/</feedburner:origLink></item>
		<item>
		<title>Updates updates</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/l3lxhhnlazM/</link>
		<comments>http://hsoienterprises.com/2012/05/02/updates-updates/#comments</comments>
		<pubDate>Thu, 03 May 2012 00:08:41 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=506</guid>
		<description><![CDATA[Updated the back-end code that runs the Hsoi Enterprises website. All seems to be good. I also just submitted a bug fix update for kwikkEmail ...]]></description>
			<content:encoded><![CDATA[<p>Updated the back-end code that runs the Hsoi Enterprises website. All seems to be good.</p>
<p>I also just submitted a bug fix update for kwikkEmail to the AppStore. I&#8217;ll post it here when it goes public!</p>
<p>And now to get back to the PracticeDeck. I recently upgraded my source code server and um&#8230; have to get a few things fixed there first. *sigh* But, work will recommence soon!</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/l3lxhhnlazM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/05/02/updates-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/05/02/updates-updates/</feedburner:origLink></item>
		<item>
		<title>PracticeDeck featured in the USCCA Magazine</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/HDGhaX3rQ2g/</link>
		<comments>http://hsoienterprises.com/2012/04/12/practicedeck-featured-in-the-uscca-magazine/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 11:35:17 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=499</guid>
		<description><![CDATA[The DR Performance Practice Deck for iOS is featured in the USCCA Magazine, in an article titled &#8220;Train Smarter: Using a Smart Phone or Tablet ...]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://hsoienterprises.com/software/practicedeck/">DR Performance Practice Deck for iOS</a> is featured in the USCCA Magazine, in an article titled &#8220;<a href="https://www.usconcealedcarry.com/ccm-columns/features/train-smarter-using-a-smart-phone-or-tablet-to-improve-your-shooting-practice/">Train Smarter: Using a Smart Phone or Tablet to Improve your Shooting Practice</a>&#8220;.</p>
<p>Awesome!</p>
<p>Lots of good apps profiled in that article.</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/HDGhaX3rQ2g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/04/12/practicedeck-featured-in-the-uscca-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/04/12/practicedeck-featured-in-the-uscca-magazine/</feedburner:origLink></item>
		<item>
		<title>Ruby</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/9Bzh1O7JWk0/</link>
		<comments>http://hsoienterprises.com/2012/04/06/ruby/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 10:59:19 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=496</guid>
		<description><![CDATA[Some years ago I opted to give up on Perl and learn a new scriping language. My choices were Python or Ruby. I went with Python ...]]></description>
			<content:encoded><![CDATA[<p>Some years ago I opted to give up on <a href="http://www.perl.org/">Perl</a> and learn a new scriping language. My choices were <a href="http://www.python.org/">Python</a> or <a href="http://www.ruby-lang.org/">Ruby</a>.</p>
<p>I went with Python because, at the time, it appeared to better serve the needs at hand. I also appreciated Python&#8217;s desire to be clean, readable, and maintainable, something Perl seems to take pride is not being. Or rather I should say, I don&#8217;t need to live every day in these languages, as I only use them every so often to solve some need. When working in Perl it was very slow because I had to constantly refer to a reference manual in order to understand and remember things. I reckon if I worked in Perl every day, I too would take greater joy in obfuscation. And I must admit&#8230; one thing that kept me away from Ruby was reading so much about how it borrowed from Perl. I wanted &#8220;anti-Perl&#8221; so Ruby didn&#8217;t seem like the way to go.</p>
<p>I don&#8217;t regret the Python choice at all. It served me very well for my needs, especially when I had to work with embedded scripting support (e.g. <a href="http://www.boost.org/doc/libs/1_49_0/libs/python/doc/">Boost.Python</a>).</p>
<p>But like all things in the computing world, change comes. Just a few years ago if you had said we&#8217;d all be embracing these little hand-held computing devices to do everything, we would have laughed. But now the iPhone is taking over. And with all this mobile computing, there still needs to be a lot of non-mobile computing to support it. Thus things like &#8220;the cloud&#8221; are growing in popularity. And what tends to power a lot of that back end?</p>
<p>Ruby.</p>
<p>Or more specifically, <a href="http://rubyonrails.org/">Ruby on Rails</a>.</p>
<p>I&#8217;m starting to read up on this, starting with the Ruby language itself, and once I feel alright with that, working on Rails. I suspect it&#8217;ll come in very handy in the future.</p>
<p>Thing is, Mac OS X 10.7 comes with Ruby 1.8.x, and I want to use the latest 1.9. I found <a href="http://pragmaticstudio.com/blog/2010/9/23/install-rails-ruby-mac">this guide on how to install</a>. Unfortunately it didn&#8217;t work because I lack &#8220;autoreconf&#8221; on my system. But with a little more Googling around, I found the &#8220;<a href="https://github.com/thoughtbot/laptop">thoughtbot/laptop script</a>&#8221; which seems pretty awesome. It looks to install just about anything and everything you could want and need for this sort of dev work. It&#8217;s running right now as I type this up. So far, so good. Oh wait&#8230; spoke too soon. Looks like it failed due to some permissions errors. Hrm. I shall investigate.</p>
<p>Yes I am still working on an update to both <a href="http://hsoienterprises.com/software/kwikkemail/">kwikkEmail</a> and the <a href="http://hsoienterprises.com/software/practicedeck/">PracticeDeck</a>, fret not. Just have lots of irons in the fire and have to strike at certain priorities while they&#8217;re hot.</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/9Bzh1O7JWk0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/04/06/ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/04/06/ruby/</feedburner:origLink></item>
		<item>
		<title>App Stores and Paid Upgrades</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/o3enB0Asx3w/</link>
		<comments>http://hsoienterprises.com/2012/03/27/app-stores-and-paid-upgrades/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 20:52:43 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=493</guid>
		<description><![CDATA[Wil Shipley writes a fantastic article about why the Mac App Store needs paid upgrades. I&#8217;d also say the iOS App Store needs paid upgrades ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.wilshipley.com/2012/03/mac-app-store-needs-paid-upgrades.html">Wil Shipley writes a fantastic article about why the Mac App Store needs paid upgrades</a>.</p>
<p>I&#8217;d also say the iOS App Store needs paid upgrades as well. It&#8217;s perhaps a different ecosystem, but it&#8217;s still necessary. I can feel the same pain myself, because there&#8217;s that whole liking food, clothing, and shelter thing.</p>
<p>There&#8217;s not much more to say, since Wil said it all and covered just about every base there is on the topic. Pretty thorough and pretty convincing, at least from a developer&#8217;s point of view.</p>
<p>The only question is&#8230; will Apple listen?</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/o3enB0Asx3w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/03/27/app-stores-and-paid-upgrades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/03/27/app-stores-and-paid-upgrades/</feedburner:origLink></item>
		<item>
		<title>Clang Language Extensions</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/7Bn6H-BurA0/</link>
		<comments>http://hsoienterprises.com/2012/03/27/clang-language-extensions/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 11:11:12 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=490</guid>
		<description><![CDATA[Geek time. Xcode 4.4, which is currently a developer preview for Mountain Lion (Mac OS X 10.8) will contain the llvm 4.0 compiler. There&#8217;s a ...]]></description>
			<content:encoded><![CDATA[<p>Geek time.</p>
<p>Xcode 4.4, which is currently a developer preview for Mountain Lion (Mac OS X 10.8) will contain the llvm 4.0 compiler.</p>
<p>There&#8217;s a few nifty things in that compiler, such as number literals, collection literals, and object subscripting. <a href="http://clang.llvm.org/docs/ObjectiveCLiterals.html">Here&#8217;s clang documentation about the new features</a>.</p>
<p>Very nice things. Are they totally necessary? No, we&#8217;ve gotten along without them for this long. But the syntactical sugar is welcome as it will make it easier to write code. Plus depending just what feature we&#8217;re talking about and how it&#8217;s implemented, good can come from it (e.g. how the object subscripting is implemented).</p>
<p>I haven&#8217;t looked at the developer preview yet, only been able to read about it. I&#8217;ll be curious to see how this affects iOS development, since it seems obvious this requires not only compiler support but some changes to the OS as well.</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/7Bn6H-BurA0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/03/27/clang-language-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/03/27/clang-language-extensions/</feedburner:origLink></item>
		<item>
		<title>kwikkEmail – The kwikkest way to send email!</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/Ou6omotldqg/</link>
		<comments>http://hsoienterprises.com/2012/03/11/kwikkemail-the-kwikkest-way-to-send-email/#comments</comments>
		<pubDate>Sun, 11 Mar 2012 17:21:17 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=468</guid>
		<description><![CDATA[kwikkEmail – The kwikkest way to send email AUSTIN, TX (March 11, 2012) – Hsoi Enterprises LLC is proud to announce kwikkEmail™ as the kwikkest ...]]></description>
			<content:encoded><![CDATA[<h1 style="text-align: center;">kwikkEmail – The kwikkest way to send email</h1>
<p><a href="http://hsoienterprises.com/wp-content/uploads/2012/03/kwikkEmail.png"><img class="alignleft size-full wp-image-438" title="kwikkEmail" src="http://hsoienterprises.com/wp-content/uploads/2012/03/kwikkEmail.png" alt="" width="88" height="88" /></a>AUSTIN, TX (March 11, 2012) – Hsoi Enterprises LLC is proud to announce kwikkEmail™ as the kwikkest way to send email from your iPhone.</p>
<p>kwikkEmail allows you to get right to the business of composing and sending email.</p>
<ul>
<li>Writing it</li>
<li>Snapping a picture or video</li>
<li>Selecting a photo or movie from your library</li>
<li>Recording a voice memo</li>
</ul>
<p style="text-align: center;"><a id="bb193" class="bigbutton" href="http://itunes.apple.com/us/app/kwikkemail/id504198442" ><span style="background-color:#8aa43c; -moz-text-shadow: -1px -1px 0 #8aa43c; -webkit-text-shadow: -1px -1px 0 #8aa43c; text-shadow: -1px -1px 0 #8aa43c";>Download Now!</span></a><style type="text/css" media="all">#bb193:hover {background-color:#8aa43c;}</style></p>
<p>You use email to manage and organize your life, and you don&#8217;t need to wait for mail apps to launch, causing mail to be downloaded and processed, bogging down the network and device keeping you from the important task at hand &#8212; composing a new message! kwikkEmail answers this problem and simplifies the task of sending email by minimizing taps, and streamlining workflow.</p>
<p>kwikkEmail fully supports VoiceOver.</p>
<p>&#8220;I wrote kwikkEmail out of necessity,&#8221; says Chief Architect and Hsoi Enterprises LLC President, John C. Daub. &#8220;Too many mail accounts, too slow a network, too much email to manage, and my Mail app and iPhone would constantly bog down and lock up while all this mail was downloaded and processed. Meanwhile I&#8217;m sitting, waiting, wasting time, because I cannot get my needed job done: sending an email! Thus, I had to write kwikkEmail to bring some efficiency back to my iPhone&#8217;s workflow.&#8221;</p>
<p>kwikkEmail is available for free in the Apple App Store.</p>
<p>For more information, visit <a href="http://hsoienterprises.com/software/kwikkemail/">http://hsoienterprises.com/software/kwikkemail/</a></p>
<p><strong>About Hsoi Enterprises LLC</strong></p>
<p>After 17 years, Hsoi’s Shop closed and Hsoi Enterprises LLC was opened in 2010. Based in Austin, Texas, Hsoi Enterprises provides technical consulting, and training, bringing together the worlds of mobile computing and personal defense. Hsoi Enterprises strives to provide useful products and services to solve real-world problems. More information can be found at our website: <a href="http://www.hsoienterprises.com/">http://www.hsoienterprises.com/</a></p>
<p><strong>Press Contacts</strong></p>
<p>John Daub</p>
<p><a href="mailto:info@hsoienterprises.com">info@hsoienterprises.com</a></p>
<p>Hsoi, Hsoi Enterprises, kwikkEmail, &#8220;The kwikkest way to send email&#8221; are trademarks of Hsoi Enterprises LLC. All other product names and trademarks are property of their respective companies.</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/Ou6omotldqg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/03/11/kwikkemail-the-kwikkest-way-to-send-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/03/11/kwikkemail-the-kwikkest-way-to-send-email/</feedburner:origLink></item>
		<item>
		<title>Starting to git it</title>
		<link>http://feedproxy.google.com/~r/HsoiEnterprisesBlog/~3/IA7rs8SomFI/</link>
		<comments>http://hsoienterprises.com/2012/03/09/starting-to-git-it/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 10:44:42 +0000</pubDate>
		<dc:creator>hsoi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://hsoienterprises.com/?p=466</guid>
		<description><![CDATA[Version control systems (VCS) are important in a developer&#8217;s life. It&#8217;s one way we remain sane. Long ago I used Projector. Actually before that I ...]]></description>
			<content:encoded><![CDATA[<p>Version control systems (VCS) are important in a developer&#8217;s life. It&#8217;s one way we remain sane.</p>
<p>Long ago I used <a href="http://www.electricfish.com/hawkfish/macvcs/#projector">Projector</a>. Actually before that I didn&#8217;t really use anything except making periodic clones and perhaps putting them into <a href="http://www.stuffit.com/">StuffIt</a> archives and backing them up to 3.5&#8243; floppy disks. But once I started using Projector and the joys of &#8216;ckid&#8217; resources, life was never the same. <img src='http://hsoienterprises.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>For a short time there was <a href="http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe">Visual SourceSafe</a>, but I actually never used Microsoft&#8217;s version of it. Metrowerks had made a Mac client for it and I used that, because I worked for Metrowerks at the time. But oh&#8230; it was&#8230; terrible. I think the only thing I miss from it is <a href="http://www.mairdesigns.com/">Robin Mair</a>&#8216;s PageController GUI widget (revolutionary at the time, and looked damn cool), but otherwise VSS was called &#8220;Visual Source Suck&#8221; for a reason. Still, it was better than what had come before.</p>
<p>But then we moved on to <a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a>, which wasn&#8217;t horribly bad but was pretty bad. The simple fact you couldn&#8217;t rename things was a big problem.</p>
<p>Then then along came <a href="http://subversion.apache.org/">Subversion</a> and everyone was happy, because finally we had a CVS that didn&#8217;t suck! And that it was, based pretty much around the same concepts and paradigms and CVS, but without much of the suck. And for the most part, that&#8217;s what I have used for VCS for the past I don&#8217;t know how many years.</p>
<p>Now there&#8217;s tons of other stuff out there, then and now, but my developer path never crossed with Perforce or any of the other things out there.</p>
<p>But these days there&#8217;s two new hotness: <a href="http://git-scm.com/">Git</a> and <a href="http://mercurial.selenic.com/">Mercurial</a> (or Hg).</p>
<p>I&#8217;ve known about them for a while, but to me it seemed like just another attempt to reinvent the wheel. What did they really bring to the table? Was there really something that was significant enough of an advantage to switch? I never like switching to these things in the beginning because they&#8217;re always immature. I mean, when we first switched to svn it lacked some important functionality; it was far enough along to finally start using it on a daily basis but still not 100% there. I don&#8217;t need immature tools that then hamper my work in a day.</p>
<p>Not a day goes by when I don&#8217;t have some growing interaction with them, especially git due to <a href="http://github.com/">GitHub</a>. I find a lot of iOS developers using git and GitHub, maybe because Xcode seems to have a built-in preference for it now. I talk with more people using git. I have a little time right now, so I opted to start reading up on git.</p>
<p>I guess the timing is right, because suddenly it makes sense to me. I see where it could be potentially advantageous. I still haven&#8217;t actually used it yet, just been reading, but two things happened.</p>
<p>1. On another project, the svn repository is scheduled to be moved from one server machine to another. Work is still being actively performed on this repository. If they did things right, there shouldn&#8217;t be any problem nor revisions missed. However, we are anticipating things won&#8217;t be done smoothly and revisions risk being lost (better to plan for the worst). The solution? Just don&#8217;t commit anything from &#8220;now&#8221; until we know the server transition completes. This is&#8230; not good for numerous reasons.</p>
<p>But it occurred to me that with git, you&#8217;d still be able to incrementally work on your code, deal with daily life matters such as realizing you need to roll back, or just ensuring some sort of trail and history of your work. Whatever, all the advantages and reasons for why we use VCS. Then just be sure to do a few extra or special tags or commits regarding the server transition, and then see the state of things after the server move. And if anything was lost, no big deal.</p>
<p>Sure you could still find a way to manage this with svn, that&#8217;s more elegant than just &#8220;don&#8217;t commit&#8221;. But still there&#8217;s so much extra work and overhead to make it work, at least, compared to a git solution. Or at least, as I perceive a git solution to be.</p>
<p>2. On yet another project, an iOS project, I was in the midst of a lot of work that wasn&#8217;t ready to share with anyone. But someone needed a one-off build because we just added their device&#8217;s UDID to the provisioning profile. The build machine had problems, I wasn&#8217;t in a position to build, but a build had to be made. Thankfully everything just managed to work out, but at that moment when it all came down it would have been disruptive to do the build.</p>
<p>Likely what I would have had to do is hit the VPN, hit the network, checkout a totally new working copy of the project (non-trivial if you have a large project and a slow network; thankfully not the case here but I&#8217;ve experienced such projects), then do that as a build. So it&#8217;s possible to do, of course. But when I thought about a git solution, it&#8217;d be so easy to stash my work away, switch to the master branch, build, then get back to my work.</p>
<p>So yeah.</p>
<p>Now I git it (lame pun).</p>
<p>Now I see some advantage to the tool over existing tools.</p>
<p>I&#8217;m going to start playing with it.</p>
<p>Create a dummy repository and just tinker a bit. That &#8220;another project&#8221; above? It&#8217;s hosted in svn and has to stay that way, but I&#8217;m going to use &#8220;git-svn&#8221; to make things go. Thus, it&#8217;s all git to me, use git locally for my own work, but then still pipe it back to svn. Hsoi Enterprises code is in svn, and I may start out with it in &#8220;git svn&#8221; so the code still gets backed up and maintained on another server (gotta slowly break myself of the client-server mode of thinking), but I&#8217;m sure if I end up liking git I&#8217;ll use it alone tho I may still push to a remote for redundant backups.</p>
<p>The other thing will be seeing how I can integrate back with various GitHub projects. I&#8217;ve downloaded numerous Cocoa Touch classes from there, but many had to be modified for some reason or other. Will be curious to see how that all will work out.</p>
<p>It&#8217;s always fun to explore new things and find new ways to work better, work smarter, and overcome the little things that get in your way on a daily basis.</p>
<img src="http://feeds.feedburner.com/~r/HsoiEnterprisesBlog/~4/IA7rs8SomFI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hsoienterprises.com/2012/03/09/starting-to-git-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://hsoienterprises.com/2012/03/09/starting-to-git-it/</feedburner:origLink></item>
	</channel>
</rss>

