<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://nerdishbynature.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://nerdishbynature.com/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-08-28T14:35:01+00:00</updated><id>https://nerdishbynature.com/feed.xml</id><title type="html">nerdish by nature</title><subtitle>nerdish by nature builds small, focused iOS apps that keep your data on your device. Home of AirportQuiz and YouUpload.</subtitle><author><name>Piet Brauer-Kallenberg</name></author><entry><title type="html">DevOps in the iOS World - Continuous Integration</title><link href="https://nerdishbynature.com/post/2015/08/19/devops-continuous-integration.html" rel="alternate" type="text/html" title="DevOps in the iOS World - Continuous Integration" /><published>2015-08-19T00:00:00+00:00</published><updated>2015-08-19T00:00:00+00:00</updated><id>https://nerdishbynature.com/post/2015/08/19/devops-continuous-integration</id><content type="html" xml:base="https://nerdishbynature.com/post/2015/08/19/devops-continuous-integration.html"><![CDATA[<p>Continuous integration should be a crucial part in every developers daily workflow. Some time ago most iOS Developers never heard of it, except they came from another platform. That luckily changed but I still see exceptions.</p>

<p>Continuous Integration (CI) originated as part of extreme programming (XP). Originally web applications where integrated once a week or once a month and every time a new version was integrated it resulted in an Integration Hell. Features broke and functionality was lost. To circumvent this integrations were moved from a weekly or monthly schedule to a daily or hourly schedule.</p>

<p>Before seeing the benefits of CI we first have to recap the broken workflow and I will try my best to map it to the iOS world.</p>

<h2 id="a-broken-workflow">A broken Workflow</h2>

<p>Imagine you are a developer of a 3 person team at some large corporation in the 90s developing kick-ass iOS enterprise apps. You are spending your day developing a mind blowing visualisation of business data (really cool with pie charts and everything).
Your colleagues are working on the data layer and integration with the backend. There are no stand ups, sprint planning etc. (I mean, you are paid to code, why spent all day in some rubbish meetings?).</p>

<p>You also have a deadline which is approaching quickly but you are confident as your code runs very smooth. As soon as your deadline is reached you will merge your changes with your colleagues.</p>

<h3 id="merge-day---shit-just-got-real">Merge Day - Shit just got real.</h3>

<p>Holy cow. What did happen? Your stupid colleagues changed the whole data layer that totally broke all your visualisations. Now your boss is getting angry at you and wants you guys to fix it as soon as possible.
Even after you fixed all your merge conflicts in your Xcode project you are still faced with some significant changes in the data layer. You will spend the whole day fixing all your problems and go home at 5 a.m. with more bugs in your software than you might imagine.</p>

<p>While a drastic example and an unrealistic one (iOS didn’t exist in the 90s) it shows how broken things were in this team.</p>

<h2 id="a-stress-free-workflow">A stress free workflow</h2>

<p>Imagine you are a developer of a 10 person team at some large corporation in 2015, developing a kick-ass iOS recipe app (your mom loves it). You are Head of Image caching in your team and you have an upcoming release. You are calm.</p>

<h3 id="release-day---coffee-someone">Release day - Coffee someone?</h3>

<p>You pushed all your changes multiple times daily, so were your colleagues, the server ran all unit and integration tests and your beta is online and tested by your QA. You get a coffee and head home early so you can enjoy the weather.</p>

<h2 id="how-to-get-from-integration-hell-to-developers-heaven">How to get from Integration Hell to Developers Heaven</h2>

<p>What we have seen are two extreme scenarios which show the big gap between Integration Hell and Developers Heaven.</p>

<p>Continuous Integration describes a workflow which is proven to lead to a less stressful working life. Instead of integrating in large intervals, you integrate multiple times daily. You might also wonder what integrating even means, because you are so used to it you never thought of a word for it.</p>

<p>Integration means merging your code with the code of the others. Doing this in small intervals means you can react on changes and adopt to them in the code base more frequently. Integration usually happens in your Source Code Management (SCM) system, e.g. Git. It can happen when merging a Pull Request or merging a branch.
All Integrations are stored on a central server, e.g. GitHub, Bitbucket or Gitlab and on your local machine.</p>

<p>A Build Server continuously reacts on new changes to the code base. After it is triggered it:</p>

<ul>
  <li>downloads the latest code</li>
  <li>installs any new dependencies</li>
  <li>builds your app</li>
  <li>runs your Unit Tests</li>
  <li>runs your Integration Tests (e.g. KIF, UI Tests)</li>
  <li>notifies you if any failures occurred</li>
</ul>

<p>Because it is doing it so frequently you see failures immediately and are able to react to them.</p>

<p>Some popular CI services that support iOS and Mac devlelopment are:</p>

<ul>
  <li><a href="http://travis-ci.org">Travis CI</a></li>
  <li><a href="http://circleci.com">Circle CI</a></li>
  <li><a href="http://bitrise.io">Bitrise</a></li>
  <li><a href="http://ship.io">Ship.io</a></li>
  <li><a href="http://greenhouseci.com">Greenhouse</a></li>
  <li><a href="https://jenkins-ci.org">Jenkins</a>, <a href="https://de.atlassian.com/software/bamboo">Bamboo</a> (self hosted)</li>
</ul>

<p>I encourage you to try some of these out and find the one that best suits your needs and budget.</p>

<p>If you found yourself in the broken workflow story, I highly recommend setting up a continuous integration service in your company, most start with an old computer of a coworker. Start testing your code or just build the codebase to spot some configuration errors and you will soon be in Developers Heaven.</p>]]></content><author><name>Piet Brauer-Kallenberg</name></author><summary type="html"><![CDATA[Continuous integration should be a crucial part in every developers daily workflow. Some time ago most iOS Developers never heard of it, except they came from another platform. That luckily changed but I still see exceptions.]]></summary></entry><entry><title type="html">Living the dream</title><link href="https://nerdishbynature.com/post/2015/06/30/living-the-dream.html" rel="alternate" type="text/html" title="Living the dream" /><published>2015-06-30T00:00:00+00:00</published><updated>2015-06-30T00:00:00+00:00</updated><id>https://nerdishbynature.com/post/2015/06/30/living-the-dream</id><content type="html" xml:base="https://nerdishbynature.com/post/2015/06/30/living-the-dream.html"><![CDATA[<p>I am happy to announce, that starting from July 1, 2015 my daily focus will shift from working full time at XING to being an Indie developer.</p>

<p>I will focus on building <a href="http://git2go.com">Git2Go</a> and the open source software around it. While the AppStore tries to be a hostile place for independent developers, I hope there will be room for productivity software that shifts iOS devices from being media consuming monsters to working machines on the go.</p>

<blockquote lang="en"><p>Hello World!</p><p class="post-meta">&mdash; Git2Go (@Git2Go), <a href="https://twitter.com/Git2Go/status/557293910016688129">19 January 2015</a></p></blockquote>

<p>The current market for productivity software mainly consists of to-do list apps, with some exceptions <code class="language-plaintext highlighter-rouge">[1]</code>. We also saw some nice additions from Apple with the iOS SDK in iOS 8 and 9 with <a href="https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/FileProvider.html">file provider extensions</a>, <a href="http://www.theverge.com/2015/6/8/8737639/apple-ipad-split-screen-multitasking-wwdc-2015">split screen multitasking</a> and <a href="http://www.macrumors.com/2015/06/15/ios-9-keyboard-scaling-ipad-pro/">additions to the built in keyboard</a>. But software will not be the end. We are currently seeing rumors of an iPad Pro all over the Internet and the OS itself.</p>

<p>More importantly I want to experience my freedom of being self-employed and being able to travel through Germany seeing some friends and family. All in all, I think it will be an exciting journey and I am happy to hear your feedback!</p>

<p><code class="language-plaintext highlighter-rouge">[1]</code>:</p>

<ul>
  <li><a href="http://ulyssesapp.com/">Ulysses</a>, which I use for writing this blog</li>
  <li><a href="http://www.appcooker.com/">AppCooker</a>, which I use for doing mock ups and prototypes</li>
  <li><a href="https://kapeli.com/dash_ios">Dash</a>, handy online and offline documentation app</li>
  <li><a href="http://www.textasticapp.com/">Textastic</a>, fabulous code editor</li>
  <li><a href="http://codereview.io/">CodeReview</a>, which I use for reviewing pull requests</li>
</ul>]]></content><author><name>Piet Brauer-Kallenberg</name></author><summary type="html"><![CDATA[I am happy to announce, that starting from July 1, 2015 my daily focus will shift from working full time at XING to being an Indie developer.]]></summary></entry><entry><title type="html">DevOps in the iOS World — Streamline Configurations</title><link href="https://nerdishbynature.com/post/2015/06/01/devops-configurations.html" rel="alternate" type="text/html" title="DevOps in the iOS World — Streamline Configurations" /><published>2015-06-01T00:00:00+00:00</published><updated>2015-06-01T00:00:00+00:00</updated><id>https://nerdishbynature.com/post/2015/06/01/devops-configurations</id><content type="html" xml:base="https://nerdishbynature.com/post/2015/06/01/devops-configurations.html"><![CDATA[<p>In my previous article I gave a quick overview of the DevOps mindset in perspective to the iOS world. In this first article of the series, I want to go a bit deeper in how to align multiple configurations in your project.</p>

<h2 id="what-is-a-configuration">What is a configuration?</h2>

<p>One problem developers in the pre-DevOps age where fighting with were the different environments your application runs in. Environments were not the same and bugs only occurred in QA or Live environments.</p>

<p>Possible environments are:</p>

<ul>
  <li>
    <p><strong>Development</strong>, your daily working environment. Your project local machine and the machines of your colleagues.</p>
  </li>
  <li>
    <p><strong>Test</strong> is the environment your quality assurance people run your applications that might be sandbox systems of your web application, your unit test configuration or even your Beta deployment.</p>
  </li>
  <li>
    <p><strong>Production</strong> is the live environment that is the AppStore for most people. But could also be an internal AppStore or the distribution system your enterprise app is distributed through.</p>
  </li>
</ul>

<p>The goal of streamlining your configurations is to get each stage of development as close as possible to each other. This makes sure you can reproduce bugs and your app is the same in all stages of development.
The only parts that should differ are the ones specific to the environment, such as URLs, authentication keys and other constants. The rule of thumb is: <em>The less, the better.</em></p>

<p>Things that should not differ:</p>

<ul>
  <li>
    <p>Files that are compiled</p>
  </li>
  <li>
    <p>Assets (images and text resources)</p>
  </li>
  <li>
    <p>Code Paths</p>
  </li>
</ul>

<h2 id="targets-vs-configurations">Targets vs. Configurations</h2>

<p>When I started with iOS development under Xcode 3 it was common to use different targets for each stage of development. You would have a debug target, a beta target and a release target and if you work on a legacy project you might still see this. Here is my tip: <strong>Delete them all</strong>.</p>

<p>Targets make everything very hard. When adding a class or an asset you have to make sure each of the targets is checked (which it isn’t by default). So it might occur that, when you compile in a different target, some classes and images are missing and you have no clue what happened.</p>

<p><em>The solution is to replace targets with configurations.</em> You can add new configurations to your project in the projects settings in Xcode. Some valid configurations are</p>

<ul>
  <li>
    <p><strong>Debug</strong> to develop your app and run unit and integration tests.</p>
  </li>
  <li>
    <p><strong>Beta</strong> for beta distribution over HockeyApp or Fabric. You won’t need that for Apples Testflight.</p>
  </li>
  <li>
    <p><strong>Release</strong> for submission to the AppStore and Tesflight.</p>
  </li>
</ul>

<h3 id="valid-usage-of-targets">Valid usage of targets</h3>

<p>Of course there are some valid usages for targets and there is also a simple rule for that: Every extension has to be a target. That is Watch extensions, share extensions and today view extensions. For each of these cases Xcode is taking care of adding the targets.</p>

<h2 id="differentiate-between-configurations">Differentiate between configurations</h2>

<p>If you <em>have to</em> differentiate between the different configurations do yourself a favor and use as little Preprocessor macros as possible. There are a few reasons against them</p>

<ul>
  <li>
    <p>Complex macros don’t work well with Swift</p>
  </li>
  <li>
    <p>they are not unit testable and</p>
  </li>
  <li>
    <p>code enclosed is only compiled if the macro is active</p>
  </li>
</ul>

<p>At @xing we use different bundle identifiers for each stage. This also allows you to install multiple versions of the app at once. To see which stage we are running in at runtime, we use a simple method that gives back the current configuration. We only use these switches for different tracking suites and for the HockeyApp identifiers.</p>

<h4 id="adding-different-bundle-identifiers">Adding different bundle identifiers</h4>

<p>In your <strong>projects build settings</strong> add a <code class="language-plaintext highlighter-rouge">User-Defined Setting</code> and name it <code class="language-plaintext highlighter-rouge">BUNDLE_ID_SUFFIX</code>. Take the configurations as the value <code class="language-plaintext highlighter-rouge">.$(CONFIGURATION)</code>.</p>

<p>In your <strong>projects Info.plist</strong> edit the <code class="language-plaintext highlighter-rouge">CFBundleIdentifier</code> value to <code class="language-plaintext highlighter-rouge">com.YourCompany.AppName$(BUNDLE_ID_SUFFIX)</code> this results in a Bundle Identifier like <code class="language-plaintext highlighter-rouge">com.YourCompany.AppName.Debug</code>.</p>

<p>You can add a helper method for getting the current configuration:</p>

<script src="https://gist.github.com/pietbrauer/0780ba0a9fd5f48661cc.js"></script>

<p>This approach gives you the opportunity to test your code paths in unit tests by mocking the <code class="language-plaintext highlighter-rouge">infoDictionary</code>.</p>

<h2 id="make-it-configurable">Make it configurable</h2>

<p>If you are in need for different API endpoints for each stage, it is best to make them choosable from within the app.
Use a small <code class="language-plaintext highlighter-rouge">UITableView</code> to list them and let your beta users choose the environment they want to test in. This makes sure you don’t depend on a configuration, everything is exchangeable and it also leads to cleaner code as the options are clearly identified and documented.</p>

<h2 id="conclusion">Conclusion</h2>

<p>I hope you do most of the things listed above already and if you take over a project or start a new one it is best to grab a pen and paper and get a clear overview of the needed configurations.
Simply write them down and identify the differences. <strong>Make parameters exchangeable</strong> and use <strong>Xcode configurations over targets</strong>.</p>]]></content><author><name>Piet Brauer-Kallenberg</name></author><summary type="html"><![CDATA[In my previous article I gave a quick overview of the DevOps mindset in perspective to the iOS world. In this first article of the series, I want to go a bit deeper in how to align multiple configurations in your project.]]></summary></entry><entry><title type="html">DevOps in the iOS World — Introduction</title><link href="https://nerdishbynature.com/post/2015/05/28/devops-introduction.html" rel="alternate" type="text/html" title="DevOps in the iOS World — Introduction" /><published>2015-05-28T00:00:00+00:00</published><updated>2015-05-28T00:00:00+00:00</updated><id>https://nerdishbynature.com/post/2015/05/28/devops-introduction</id><content type="html" xml:base="https://nerdishbynature.com/post/2015/05/28/devops-introduction.html"><![CDATA[<p><em>DevOps</em> — You may have read this term in various links on HackerNews, job offers or conversations in your company and so did I. The sad thing is that I couldn’t relate to the term and took it as a job title which combined development work and operations tasks in one person, but then a friend introduced me to the book <a href="http://www.amazon.com/The-Phoenix-Project-Helping-Business/dp/0988262592">The Phoenix project</a>.</p>

<h2 id="the-phoenix-project">The Phoenix project</h2>

<p>The Phoenix project is a fictional novel about an IT manager in a car parts manufacturer called „Parts Unlimited“. This company is organized in the most old fashioned way you can imagine.
In the beginning of the book the protagonist gets promoted and faces the mess his predecessors left, naming a desolate IT infrastructure with systems failing every hour and more outages than you can count.
Shortly after his promotion he begins his renovation journey supported by an experienced mentor who used to manage production lines.
Long story short: he slowly comes across the DevOps mindset and introduces it in his company. Systems are getting more stable, developers spend their time on developing features not mitigating outages and people are getting happier.
I don’t want to spoil all of it and if you are interested I highly encourage you to read it.</p>

<h2 id="what-exactly-is-devops">What exactly is DevOps?</h2>

<p>DevOps is coming from a time where you developed an application and had 3 months plus release cycles. You would hand your carefully crafted software with incomplete setup instructions to the operations team to deploy your project. But every second time the deployment would fail because your development, test and production environment wouldn’t match. The final integration was never tested before. Deployments are a series of manual tasks you would run on your root server in order to provision it. Once in a while you forgot one and the application failed to run on the server correctly.</p>

<p>After seeing that for some decades some smart people came around and thought they could do better. They build cross functional teams namely: Developers, Operations, QA and product managers. But, they did not only bring everyone together, they also worked on automation.
They streamlined creation of development, test and production systems and checked everything into version control.
What has been a manual setup process for new employees taking days to get setup, now is a simple script. The same way you configured your computer, you would provision the server to match the packages, scripts and code. Tools like <a href="https://www.chef.io/">Chef</a>, <a href="http://www.ansible.com/home">ansible</a> and <a href="http://capistranorb.com/">Capistrano</a> where developed to help you even further.</p>

<p>Teams would take over responsibility for server provisioning and  deployment and go from 2 - 4 releases a year to 10 deployments a day. This reduced the feedback loop, features could be developed much faster and overall developer happiness increased.</p>

<h2 id="thats-all-backend-stuff-why-would-i-as-an-ios-developer-care">Thats all backend stuff why would I, as an iOS developer, care?</h2>

<p>While working at my previous companies I have seen a lot of things go wrong and a lot of things go right. When reading my Twitter stream or talking to friends I hear things like:</p>

<blockquote>
  <p>„Sorry, I can’t join for beer tonight. I have to release a new version“ (Friday evening at 10 pm)</p>
</blockquote>

<blockquote>
  <p>„Code signing sucks, Apple should fix that.“</p>
</blockquote>

<blockquote>
  <p>„We build because our release configuration is different from our Beta config. Some files and images are missing. It sure worked on my old computer.“</p>
</blockquote>

<p>Once you realize that you have the same problems as an iOS developer in 2015 like the backend folks had 5 years ago, you begin to think that we are not that different.
The one and only solution of this is to adapt your work to an DevOps like workflow: Build cross functional teams, streamline configurations and automate.</p>

<p>In the following weeks I will write blog posts about:</p>

<ul>
  <li><a href="https://nerdishbynature.com/post/2015/06/01/devops-configurations.html">Streamline Configurations in Xcode</a></li>
  <li><a href="https://nerdishbynature.com/post/2015/08/19/devops-continuous-integration.html">Continuous Integration</a></li>
  <li>Continuous Deployment</li>
</ul>

<p>I saw some great impact at @xing, once we increased the automation in our team, even when we where only 2 - 3 people.
We now do biweekly (App Store) release cycles and everything just became easier since we have automated the tasks we do over and over.
For us building an App Store release is nothing more than pushing to a branch and each step is automated afterwards:</p>

<ul>
  <li>Tests are run</li>
  <li>Beta app is deployed to HockeyApp</li>
  <li>Live app is deployed to iTunes Connect.</li>
</ul>

<p>All the automated testing and manual quality assurance of features took place continuously during development.</p>

<p>I would even go so far to say that even if you are a sole developer working on your part time project, automation can save you hours, if not days, of work.
It also reduces your stress level when you know that doing an App Store release is nothing more than a commit (yes, even code signing).</p>]]></content><author><name>Piet Brauer-Kallenberg</name></author><summary type="html"><![CDATA[DevOps — You may have read this term in various links on HackerNews, job offers or conversations in your company and so did I. The sad thing is that I couldn’t relate to the term and took it as a job title which combined development work and operations tasks in one person, but then a friend introduced me to the book The Phoenix project.]]></summary></entry><entry><title type="html">Building better apps</title><link href="https://nerdishbynature.com/post/2015/05/06/building-better-apps.html" rel="alternate" type="text/html" title="Building better apps" /><published>2015-05-06T00:00:00+00:00</published><updated>2015-05-06T00:00:00+00:00</updated><id>https://nerdishbynature.com/post/2015/05/06/building-better-apps</id><content type="html" xml:base="https://nerdishbynature.com/post/2015/05/06/building-better-apps.html"><![CDATA[<p>As a kid I always loved to watch the James Bond movies. Mostly because of his gadgets. I am pretty young still so I started watching the movies when Pierce Brosnan was the protagonist.
We are talking 1995+ here. I don’t know for certain (although I am pretty sure) if you still remember some of his gadgets in that time.</p>

<p>There were this very cool looking BMW Z3, Z8 and the famous 750iL which he drove through Hamburg (the city I am currently living in). Every vehicle he drove was equipped with all kind of cool things from missiles over spikes to fax machines.
The coolest thing for me was the Ericsson JB988 he used to steer his BMW 750iL in „Tomorrow never dies“. Although just a concept phone I fell in love with the idea to have such a powerful and diverse technology in my pocket.</p>

<h2 id="nokia">Nokia</h2>

<p>Later Nokia started producing the communicator line in <a href="http://en.m.wikipedia.org/wiki/Nokia_Communicator">1996</a> starting with the <a href="http://en.m.wikipedia.org/wiki/Nokia_9000_Communicator">Nokia 9000 Communicator</a>. Although I can’t remember the first model I still remember the Nokia 9210. It came out in 2001 and featured a 66 MHz processor, a color display and a real file explorer. Of course it was aimed at managers and other busy people, but as a kid I wanted it so badly because of the first Bond movies and the endless things you could do with it.
I asked my mom if I could get one of these and she had a friend who got one. She asked her about the device and she really didn’t like it. It was very heavy (244g), had an internal hard drive and because of that it had no vibration alarm on it. Mobile internet access was still a pain, very expensive and so my dream went unfulfilled.</p>

<p>I have had a lot of mobile phones since then starting with some regular Nokia devices like the <a href="http://en.m.wikipedia.org/wiki/Nokia_3210">3210</a>, <a href="http://en.m.wikipedia.org/wiki/Nokia_3310">3310</a>. Despite the usual suspects I always were a fan of unusual phones.
I started my career as an owner of non-regular phones with a <a href="http://en.m.wikipedia.org/wiki/Nokia_5510">Nokia 5510</a>. It featured a full qwerty keyboard but besides that it was a usual phone. But it looked very cool and different.
I also owned a <a href="http://en.m.wikipedia.org/wiki/N-Gage_(device)">Nokia N-Gage</a> which was meant for playing games you could purchase in a physical form. But despite them getting better displays and increased processing power I was still far from my James Bond experience.</p>

<p>And although I could talk about the mobile phones of my youth for hours and hours, it is time to move to the mobile phone that changed my live in a very significant way.</p>

<h2 id="the-iphone">The iPhone</h2>

<p>The path to my first iPhone is a lengthy story. As you all know it came out in 2007 and I was 16 at the time. Purchasing an early iPhone while living in Germany wasn’t the easiest thing at this time. You had to wait until November 2007 to buy an official one in Germany. But of course you could not just buy one, you had to agree to an overpriced contract with T-Mobile or GTFO.
My parents aren’t very rich and getting a 50€+ per month contract to your 16 year old son is not the wisest thing you could do. So we searched for alternatives and found a way to get two contracts (one for me and one for my mother) and get an imported iPhone with it. Of course the deal failed because the dealer went out of stock. So he gave us 700€ and we bought an imported one for 586€ on eBay.</p>

<p>I had to start working because I paid for the phone and the contract myself. So I started working in a Pizzeria nearby cleaning dishes for 25€ a day. Still I was one of the happiest people on earth having a first generation iPhone in Germany. It was very rare and everyone who had one was pretty proud of it.
I remember getting it delivered after lunch but the battery had died so I couldn’t try it out immediately.
After my shift at the pizzeria (which was about 7 hours) I finally went home to get to know my new friend.</p>

<p>I immediately jail broke it, because that was what you did at the time, to install some apps. I stayed up all night until my mother got up at 7 in the morning showing her all the stuff I found out in the night and went to sleep.</p>

<p>After installing some early apps like the piano keyboard (which name I don’t remember anymore), some cool ringtones and downloading some songs, I realized that I couldn’t just start our car and drive with it :wink:.</p>

<h2 id="ipad-and-living-ipad-only">iPad and living iPad only</h2>

<p>While doing my apprenticeship I got my first iPad which was an iPad 2. I decided that I didn’t need the first iPad because no apps were really ready for it.</p>

<p>I used it once in a while but not really much. Owning one was more a status than a need. I also think I wasn’t using it much because I would use my MacBook and do some programming instead, which is kind of silly. I believe that to craft beautiful iPhone and iPad apps it is a necessity to own and use one excessively. That is why I introduced iPad only weekends when traveling to various relatives. These weekends made me realize that the iPad ecosystem is far, far from perfect. I don’t think this is because of the device itself. It is mainly because the apps really don’t play together. Let me give you an example:</p>

<p>Me and my girlfriend were visiting her parents and went on a boat trip on a small river. Immediately I took the opportunity to use my GoPro, which is laying in the corner 364 days a year and I took some amazing underwater videos. I imported them to iMovie the same day using the Apple Camera Kit and edited them in iMovie.
Editing in iMovie on the iPad may not satisfy truly passionate filmmakers but I found it very joyful. Of course to increase my social media footprint I wanted to upload it to my almost empty tumblr account.
That’s where things hit the fan and I discovered that uploading a 50 MB video from the iPad is the worst thing you could try. I used the tumblr share extension and it failed silently or just aborted at some point. I was so disappointed that no one saw the video ever again.</p>

<p>That may be an edge case for most people, but I was so encouraged coming that far with just a GoPro and an iPad that all my excitement went into sadness.</p>

<p>If that example was too special for you that’s totally ok, but let me give you another short one:</p>

<p>I would love to blog more and being a programmer I would love using jekyll for that.
Guess what: there is no easy way to blog with jekyll on the iPad. Of course there are a ton of markdown editors out there and they all are perfect for just that, but how do you get that piece of art on your blog?
Here is the solution: You need a laptop, git and an email address (or iCloud). If you are done writing you just sent it to yourself, open the laptop and do the usual commit and push on the laptop. I find that far from optimal.</p>

<p>Not only the broken workflows are a problem but also the cross device experience. A while ago I went back from using AirMail, Chromes and others to using Apple apps like Mail, Maps, Messages, Safari. I don’t think you can get that kind of cross device feature rich experience from any third party business, yet.</p>

<p>I write this article on my 3rd gen petition iPad mini on <a href="http://www.ulyssesapp.com/">Ulysses</a> which I find nailed the writing experience on the iPad and on the Mac. Everything just works the same way (except for the statistics) and I don’t have to think if I am on an iPad or on the Mac.</p>

<h2 id="finally-building-better-apps">Finally building better apps</h2>

<p>After you heard me complaining about all the issues I have, let me give a short conclusion:</p>

<ol>
  <li>I have access to devices that are just as cool as James Bond’s gadgets, but I cannot do really cool stuff with them.</li>
  <li>I want to use my iPad <strong>or</strong> my Mac all the time if I want to and have an easy and effortless transition between them.</li>
  <li>I don’t want to have to use my computer because someone hasn’t thought of an app based solution yet.</li>
</ol>

<p>What does this leave us with? I <strong>have</strong> to create some apps, brb.</p>

<p>I decided that in order to solve my own issues and potentially the issues of a few more people, I need to tackle them myself. That’s why I want to pursue my dream of nerdish by nature becoming a small company crafting beautiful universal apps for professionals.
I think we as professionals are left out most of the time and a lot of developers only think about photo editing and sharing apps because that’s where the money is.
Don’t get me wrong I find photo apps cool, too. I just don’t take photos, I create apps.</p>

<p>Maybe doing apps for professional usage is a bold idea but I am happy to try it.</p>]]></content><author><name>Piet Brauer-Kallenberg</name></author><summary type="html"><![CDATA[As a kid I always loved to watch the James Bond movies. Mostly because of his gadgets. I am pretty young still so I started watching the movies when Pierce Brosnan was the protagonist. We are talking 1995+ here. I don’t know for certain (although I am pretty sure) if you still remember some of his gadgets in that time.]]></summary></entry></feed>