<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<title> - iOS</title>
	<link href="https://www.fullstackstanley.com/tags/ios/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="https://www.fullstackstanley.com"/>
	<generator uri="https://www.getzola.org/">Zola</generator>
	<updated>2015-08-23T00:00:00+00:00</updated>
	<id>https://www.fullstackstanley.com/tags/ios/atom.xml</id>
	<entry xml:lang="en">
		<title>My first iOS app with RubyMotion in 2015</title>
		<published>2015-08-23T00:00:00+00:00</published>
		<updated>2015-08-23T00:00:00+00:00</updated>
		<link href="https://www.fullstackstanley.com/articles/my-first-ios-app-with-rubymotion-in-2015/" type="text/html"/>
		<id>https://www.fullstackstanley.com/articles/my-first-ios-app-with-rubymotion-in-2015/</id>
		<content type="html">&lt;p&gt;So, I&#x27;ve taken to learning RubyMotion specifically to make iOS applications.  This blog is all about my experience as a fresh iOS developer with no prior experience with Objective C or Swift.  I&#x27;ll go through the benefits, the bottlenecks and what I intend to do in the future.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Here&#x27;s a screenshot of my App. It&#x27;s a very simple guitar tuner called Tune Fork. For anyone that doesn&#x27;t play guitar, the strings occasionally need tuning and some songs need playing in different tunings, too.  This app&#x27;s purpose is to make tuning easier. It&#x27;s certainly not a unique app. Similar apps exist, but I felt it was a reasonably simple app to make for my skill level.&lt;&#x2F;p&gt;
&lt;img class=&quot;gfyitem&quot; data-id=&quot;NiftyCreativeDutchsmoushond&quot; style=&quot;margin-left:auto;margin-right:auto;&quot;&#x2F;&gt;
&lt;p&gt;There are 3 tabs: &lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The tuner, which plays the notes out loud&lt;&#x2F;li&gt;
&lt;li&gt;The profiles tab, which lets you select or create custom tunings.&lt;&#x2F;li&gt;
&lt;li&gt;The settings tab, which adds some minor customisations to the tuner.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;RubyMotion is comparable to Ruby, with the added project generator and various rake tasks for compiling and testing out of the box.  These are useful, but I had no prior experience with iOS development and I spent most of my time reading books and watching screencasts on how to use it.&lt;&#x2F;p&gt;
&lt;p&gt;I really wish that RubyMotion came with &lt;em&gt;more&lt;&#x2F;em&gt; documentation and &lt;em&gt;more&lt;&#x2F;em&gt; handholding for beginners. The getting started guide consists of basic terminology, installation, a list of recommended text editors and a &amp;quot;Hello World&amp;quot; application for iOS and OSX. I appreciate that there are a lot of samples but for a paid programming language I expect more documentation.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;motioninmotion.tv&quot;&gt;MotionInMotion&lt;&#x2F;a&gt; has some incredible screencasts that really made RubyMotion click for me, especially the RubyMotion for Rails Developers series. It&#x27;s disappointing that FluffyJack seems to have stopped making them. Considering it costs $9&#x2F;month and boasts a &amp;quot;New Episode Every Monday&amp;quot; - as of now (August 22nd, 2015) there hasn&#x27;t been a screen cast since April 7th. That&#x27;s a lot of missed Mondays! His book, RubyMotion for Rails Developers, which I preordered, also appears to be abandoned, with no sign of updates since the initial sample chapter.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;motion-toolbox.com&#x2F;&quot;&gt;Motion Toolbox&lt;&#x2F;a&gt; is a simple website that helps you find gems. It leaves a lot to be desired if, like me, you don&#x27;t really know what you&#x27;re looking for. Categories are cool and all but having a text search like &lt;a href=&quot;https:&#x2F;&#x2F;rubygems.org&quot;&gt;RubyGems&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;packagist.org&#x2F;&quot;&gt;NPM&lt;&#x2F;a&gt; or &lt;a href=&quot;https:&#x2F;&#x2F;packagist.org&#x2F;&quot;&gt;Packagist&lt;&#x2F;a&gt; would be more useful.&lt;&#x2F;p&gt;
&lt;p&gt;There are a lot of gems out there that try to hide the cruft of Objective C which leaks through to RubyMotion. ProMotion, MotionKit, Sugarcube, RMQ, Bubblewrap, MotionPrime... the list goes on.  You would think that this is a good thing; however, as a beginner it&#x27;s quite overwhelming. Some of these gems have overlapping responsibilities it&#x27;s difficult to know which combinations to use.&lt;&#x2F;p&gt;
&lt;p&gt;The RedPotion gem makes this a non-issue. RedPotion glues a few of these gems together.  Namely, ProMotion and RMQ, as well as other useful gems. It has detailed documentation to get you started. It also comes with a lot of useful generators and a sensible directory structure. It&#x27;s essentially Rails for  RubyMotion.&lt;&#x2F;p&gt;
&lt;p&gt;If RedPotion is Rails then RMQ is jQuery. As quoted from their Github, &amp;quot;fast, non-polluting, chaining, front-end library. It’s like jQuery for RubyMotion plus templates, stylesheets, events, animations, etc.&amp;quot;.  My favourite feature of this gem is the live stylesheet reloading which allows editing the styles without recompiling the application - a huge time saver!&lt;&#x2F;p&gt;
&lt;p&gt;With the documentation from all of the gems that RedPotion brings you can get a surprising amount of work done. Problems arise when you want to steer away from the happy path, though. For example I wanted to change a significant amount of the colour scheme of my app and with certain elements it can be very awkward.  Along side a lot of Googling, &lt;a href=&quot;http:&#x2F;&#x2F;revealapp.com&quot;&gt;Reveal&lt;&#x2F;a&gt; and the Sublime Text Plugin &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kyamaguchi&#x2F;SublimeObjC2RubyMotion&quot;&gt;SublimeObjC2RubyMotion&lt;&#x2F;a&gt; have been incredibly useful.&lt;&#x2F;p&gt;
&lt;p&gt;The majority of problems can be solved with Google but it&#x27;s very rare to see an answer in RubyMotion. It&#x27;s a shame, but I don&#x27;t feel pretending Objective C or Swift don&#x27;t exist is a viable option. I may end up reading one or two books on iOS development in Swift in the future, as I believe it would be hugely beneficial. I fear there will never be a time when I can Google a question and assume that the answer is already available in RM.&lt;&#x2F;p&gt;
&lt;p&gt;In terms of community RubyMotion has the disadvantage of the added cost. This steers a significant amount of people away from RM but the people that &lt;em&gt;are&lt;&#x2F;em&gt; there are very helpful and fast to respond to any questions. &lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;d like to see a way to encourage programmers from other CLI driven languages to pursue RubyMotion. Node, [Modern] PHP, Python developers etc. As far as I&#x27;m aware there is no alternative in those languages. Although they may not know Ruby they still might enjoy the workflow that RubyMotion and RedPotion bring.&lt;&#x2F;p&gt;
&lt;p&gt;In summary, RubyMotion is far from perfect, but if you prefer the &amp;quot;webdev&amp;quot; workflow of CLI generators, REPL and using your preferred text editor I think it&#x27;s worth a shot - especially with the RedPotion gem. Aside from a few hiccups, it&#x27;s quite enjoyable to use. I know that I would never have made my first app if RubyMotion and RedPotion didn&#x27;t exist so I&#x27;m quite pleased that I gave it a go.&lt;&#x2F;p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>12 Day Challenge: RubyMotion</title>
		<published>2014-12-30T00:00:00+00:00</published>
		<updated>2014-12-30T00:00:00+00:00</updated>
		<link href="https://www.fullstackstanley.com/articles/12-day-challenge-rubymotion/" type="text/html"/>
		<id>https://www.fullstackstanley.com/articles/12-day-challenge-rubymotion/</id>
		<content type="html">&lt;p&gt;I have wanted to expand my skills into mobile development for a long time now. I &lt;em&gt;love&lt;&#x2F;em&gt; developing for the web and I think it&#x27;s only natural for any web developer to want to take a peak in to the world of mobile app development.&lt;&#x2F;p&gt;
&lt;p&gt;Many tools exist already that I could use to build HTML5 websites and convert them into usable apps. Software such as PhoneGap, Cordova or Titanium. The problem is that I don&#x27;t want to build sluggish HTML apps.&lt;&#x2F;p&gt;
&lt;p&gt;Over a year ago I spent some time learning to make Android apps using Java and Android Studio. My experience was &lt;em&gt;okay&lt;&#x2F;em&gt;. Nothing special. It wasn&#x27;t all easy sailing because I have no previous experience with Java. Add that on to learning a new IDE and I feel like I&#x27;m battling with both.&lt;&#x2F;p&gt;
&lt;p&gt;I learned a lot in that time but I never really applied the knowledge. And I don&#x27;t find Java enjoyable enough to push to continue.&lt;&#x2F;p&gt;
&lt;p&gt;So right now I am fortunate enough to have 11 days off from my job for our Christmas break.  I have decided to dedicate an hour each day to learning RubyMotion (and an extra day because why not?!).&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;why-rubymotion&quot;&gt;Why RubyMotion&lt;&#x2F;h2&gt;
&lt;p&gt;I have been researching RubyMotion for a long time now. As I am a PHP, Ruby and Javascript developer spending money on a programming language is not something I am used to. I wanted to make sure I was making the right decision. I already mentioned that I didn&#x27;t enjoy Java so why RubyMotion over Swift for iOS?&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I already know Ruby fairly well. I am by no means a professional Ruby developer - I build websites and various scripts with it in my spare time. I use a couple of gems at work for certain tasks like SASS but that&#x27;s it. Even so, I really enjoy using it and now I have an excuse to use it even more!&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;It&#x27;s not just the language: It&#x27;s the tools.  To be more specific, I can use the command line to bootstrap code, run tasks, use the REPL and I can use an IDE of &lt;em&gt;my&lt;&#x2F;em&gt; choice.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;I am not part of a team of iOS developers. I am not planning to maintain or build on previously made apps so there is no need to pick Swift, Obj-C or Java (for Android) over RubyMotion.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;reasons-against-rubymotion&quot;&gt;Reasons against RubyMotion&lt;&#x2F;h2&gt;
&lt;p&gt;These are some common arguments I have found against RubyMotion. They are perfectly legitimate claims but I have explained my reasoning as to why they are not issues for me. If you are asking yourself the same question then you will have to weigh up if they are deal breakers for you.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;limitations&quot;&gt;Limitations&lt;&#x2F;h3&gt;
&lt;p&gt;I do not know enough about RubyMotion to know when or even if I will hit a wall. I do know that the apps I intend to make right now are pretty basic in functionality and being able to bootstrap code is more important to me.  From what I have read there really aren&#x27;t many limitations because it all compiles down to the same code anyway.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;cost&quot;&gt;Cost&lt;&#x2F;h3&gt;
&lt;p&gt;Cost is a big factor. HipByte have recently changed the pricing to three separate plans and the cheapest one suits me fine.  Better support isn&#x27;t something I need right now as I&#x27;m just learning the ropes. I have no time constraints to get shit done so better support just isn&#x27;t necessary.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;you-end-up-learning-ios-android-api-s-anyway&quot;&gt;You end up learning iOS&#x2F;Android API&#x27;s anyway&lt;&#x2F;h3&gt;
&lt;p&gt;I consider this a happy bonus. If the day comes where I find a game changing limitation and I decide to bite the bullet and switch to Java&#x2F;Obj-C&#x2F;Swift then I will have acquired a lot of knowledge already. Hopefully RubyMotion would have taught me enough to ease the transition.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;lack-of-documentation&quot;&gt;Lack of documentation&lt;&#x2F;h3&gt;
&lt;p&gt;This concerns me the most. Fortunately there are resources such as MotionInMotion screencasts and various books to help me on my way.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;limited-employability&quot;&gt;Limited employability&lt;&#x2F;h3&gt;
&lt;p&gt;I do not aim to get a job as an iOS&#x2F;Android developer so this is a non-issue for me.  My only aim is to work on my own projects in a language I enjoy.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;I have chosen to learn RubyMotion because it suits my needs. The benefit of using a language and tools that I enjoy and are already familiar with outweigh the negatives.  If you&#x27;re thinking of learning RubyMotion but are on the fence then I recommend reading the following articles:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;blog.motioninmotion.tv&#x2F;is-rubymotion-suitable-for-client-work&#x2F;&quot;&gt;Is RubyMotion Suitable for Client Work?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;blog.thefrontiergroup.com.au&#x2F;2014&#x2F;09&#x2F;should-my-company-choose-rubymotion-or-swift&#x2F;&quot;&gt;Should my company choose RubyMotion or Swift?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;spector.io&#x2F;swift-will-only-benefit-rubymotion&#x2F;&quot;&gt;Swift Will Only Benefit RubyMotion&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I am currently on my 7th day learning RubyMotion and I am really enjoying it.  I&#x27;m getting a lot of &amp;quot;Eureka!&amp;quot; moments the same way I do with Ruby, Vim, ElasticSearch and various other languages and tools that I enjoy.  I will be writing another blog at the end with my experience in more detail.&lt;&#x2F;p&gt;
</content>
	</entry>
</feed>
