<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>upbeat.it on upbeat.it</title>
    <link>https://www.upbeat.it/</link>
    <description>Recent content in upbeat.it on upbeat.it</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 31 Jan 2019 23:00:45 +0100</lastBuildDate>
    <atom:link href="/" rel="self" type="application/rss+xml" />
    
    <item>
      <title>A JavaScript budget for the browser</title>
      <link>https://www.upbeat.it/a-javascript-budget-for-the-browser/</link>
      <pubDate>Thu, 31 Jan 2019 23:00:45 +0100</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/a-javascript-budget-for-the-browser/</guid>
      <description>&lt;p&gt;Craig Hockenberry has posted an &lt;a href=&#34;https://bugs.webkit.org/show_bug.cgi?id=194028&#34;&gt;interesting proposal&lt;/a&gt; about limiting the amount of JS loaded by a web page. I understand that the implementation can be complicated but that&amp;rsquo;s not a reason to not try.&lt;/p&gt;

&lt;p&gt;We could proceed step by step. Instead of building such limits in the browsers right away we could start with a simple extension that kicks in and tells you &amp;ldquo;This website is using too much memory/CPU&amp;rdquo;. It&amp;rsquo;s not a solution but it&amp;rsquo;s a good start to incentivize developers to be less sloppy.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Weekly cleanup</title>
      <link>https://www.upbeat.it/weekly-cleanup/</link>
      <pubDate>Wed, 30 Jan 2019 23:08:17 +0100</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/weekly-cleanup/</guid>
      <description>&lt;p&gt;Do you clean your office once a week? Or somebody does it for you?
Do you shower once a day (more or less)? Do you trim your nails periodically?
How often do you clean/update the dependencies in your software projects?&lt;/p&gt;

&lt;p&gt;Every guru solopreneur would likely tell you that, instead of doing &amp;ldquo;work that nobody notices&amp;rdquo;, you should grind, do more marketing, grow your audience and sell more.&lt;/p&gt;

&lt;p&gt;And yet, if nobody takes care of your code base, it will decay. How fast? That depends on the dependencies you picked.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s still web apps running on Ruby 1.9.3-p551. It&amp;rsquo;s been deprecated for years and it doesn&amp;rsquo;t even receive updates for critical security issues. The same happens in pretty much any other ecosystem. Try compiling a Swift 2 project with Xcode 10.1 :-p&lt;/p&gt;

&lt;p&gt;Some open source projects even publish a versioning policy, that will help you with planning upgrades. I particularly like the ones of &lt;a href=&#34;https://www.postgresql.org/support/versioning/&#34;&gt;PostgreSQL&lt;/a&gt; and &lt;a href=&#34;https://www.ubuntu.com/about/release-cycle&#34;&gt;Ubuntu&lt;/a&gt;, which are two of the workhorses I base my &lt;a href=&#34;https://www.upbeat.it/now/&#34;&gt;products&lt;/a&gt; on.&lt;/p&gt;

&lt;p&gt;When it comes to keeping a code base up to date the two extremes are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keep it running as long as you can, touch it as little as possible. When the situation gets unbearable upgrade (and potentially go through a lot of pain).&lt;/li&gt;
&lt;li&gt;follow the evolution of dependencies as closely as possible. Integrate a new (stable) version of a gem/module/library as soon as possible. Essentially, spread the pain of upgrading along the way instead of absorbing it all at once.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few months ago I started getting closer and closer to the latter approach. So far it payed off. At first it was quite demanding because some new dependencies introduced breaking changes. Then it became a habit and now I do it once a week.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s usually a matter of running a &lt;code&gt;gem|pod outdated&lt;/code&gt;, picking one item, updating a reference and running tests. I can do it even when I am tired, as it&amp;rsquo;s not a cognitively demanding task usually. If it&amp;rsquo;s all green, I push to production. If it&amp;rsquo;s red, I assess the effort needed. Small? Do it now. Big? Schedule it.&lt;/p&gt;

&lt;p&gt;Will my customers notice such a change? Likely no, although sometimes a new version of a library can be more performant. Will I feel better? Yes, because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the intimidating feeling of a big upgrade is gone&lt;/li&gt;
&lt;li&gt;adding new features will be easier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I consider a code base a bit like a plant. If you don&amp;rsquo;t take care of it, it will eventually perish.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;No, the moral of the story is NOT that you can skimp on marketing&lt;/em&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Burning life</title>
      <link>https://www.upbeat.it/burning-life/</link>
      <pubDate>Sun, 06 Jan 2019 19:29:15 +0100</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/burning-life/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;

Poetry is just the evidence of life. If your life is burning well, poetry is just the ash.

&lt;/p&gt;
  
  &lt;div class=&#34;citation&#34;&gt;
    &lt;strong&gt;Leonard Cohen&lt;/strong&gt; 
    
  &lt;/div&gt;
  
&lt;/blockquote&gt;

&lt;p&gt;I have this feeling that in 2018 I burned more life than previous years.&lt;/p&gt;

&lt;p&gt;Lots has happened:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I worked for a startup most of the year. Demanding and rewarding. (1,324 contributions in the last year, says &lt;a href=&#34;https://github.com/funkyboy&#34;&gt;my GitHub&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;I went on with restoring the house. Not totally done but happy with what I did.&lt;/li&gt;
&lt;li&gt;I supported my wife through health issues. Now she&amp;rsquo;s better.&lt;/li&gt;
&lt;li&gt;I made wine. It&amp;rsquo;s good (both making and drinking it)&lt;/li&gt;
&lt;li&gt;I made beer. It&amp;rsquo;s good (both making and drinking it)&lt;/li&gt;
&lt;li&gt;I baked breadsticks, almost daily.&lt;/li&gt;
&lt;li&gt;I have grown &lt;a href=&#34;https://www.podrover.com&#34;&gt;Podrover&lt;/a&gt; and &lt;a href=&#34;https://podcharts.co&#34;&gt;Podcharts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I made quite a bunch of experiments and investigated new ideas. I am brewing something new.&lt;/li&gt;
&lt;li&gt;I started writing a daily log. One entry a day, answering the question: what am I thankful for today? It feels good.&lt;/li&gt;
&lt;li&gt;I walked quite a lot. 8km a day, roughly. It helped both my colon and my brain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some things that didn&amp;rsquo;t happen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I didn&amp;rsquo;t blog :(&lt;/li&gt;
&lt;li&gt;I didn&amp;rsquo;t podcast :(&lt;/li&gt;
&lt;li&gt;I didn&amp;rsquo;t speak at conferences&lt;/li&gt;
&lt;li&gt;I didn&amp;rsquo;t push a lot on &lt;a href=&#34;https://www.affiliator.io&#34;&gt;Affiliator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honestly I didn&amp;rsquo;t like 2018 a lot. Too many things/events, all scattered, mostly unexpected. I had to react a lot. I can do it, but I don&amp;rsquo;t enjoy it for extended periods.&lt;/p&gt;

&lt;p&gt;Promises for 2019? None&lt;/p&gt;

&lt;p&gt;Resolutions? Zero&lt;/p&gt;

&lt;p&gt;Inspirational words? Life, ashes and fire.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Coding is a Means</title>
      <link>https://www.upbeat.it/coding-is-a-means/</link>
      <pubDate>Tue, 09 Jan 2018 06:04:24 +0000</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/coding-is-a-means/</guid>
      <description>&lt;p&gt;This tweet made me think quite a bit.&lt;/p&gt;

&lt;p&gt;&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Looking at my twitter feed, it feels like the longer you&amp;#39;ve been coding professionally, the less you actually like coding.&lt;br&gt;&lt;br&gt;For people who&amp;#39;ve been coding for 10+ years, is this how you feel?&lt;/p&gt;&amp;mdash; Saron (@saronyitbarek) &lt;a href=&#34;https://twitter.com/saronyitbarek/status/946562500065083392?ref_src=twsrc%5Etfw&#34;&gt;December 29, 2017&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;I am restoring a house. I have been in touch with quite a bunch of masons for more than a year. I never heard any of them saying &amp;ldquo;I like manipulating cement&amp;rdquo; or &amp;ldquo;I like plastering walls&amp;rdquo;. And yet, as the restoration goes on, they take pride in what they do, and they are satisfied when a floor is well tiled or a door is well mounted. And they don&amp;rsquo;t even live in that house.&lt;/p&gt;

&lt;p&gt;Coding is a bit like that for me. I don&amp;rsquo;t wake up in the morning looking forward to open an IDE. And yet, when I &lt;a href=&#34;https://www.podrover.com&#34;&gt;ship&lt;/a&gt; &lt;a href=&#34;https://podcharts.co&#34;&gt;products&lt;/a&gt; and people buy them (and even thank me) I am happy. And I take pride in what I did.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>That White Thing</title>
      <link>https://www.upbeat.it/that-white-thing/</link>
      <pubDate>Mon, 08 Jan 2018 00:09:44 +0100</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/that-white-thing/</guid>
      <description>&lt;p&gt;It was 2004. I decided to buy a Mac. It was an &lt;a href=&#34;https://en.wikipedia.org/wiki/IBook#iBook_G4&#34;&gt;iBook G4&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was about to click &amp;ldquo;Buy&amp;rdquo; when I spotted an offer for another white thing. Did I need it? I thought I didn&amp;rsquo;t, but I added it to the cart anyway. It even delayed the whole shipment. I didn&amp;rsquo;t know it yet, but it was worth it. It was an iPod.&lt;/p&gt;

&lt;p&gt;I took it with me while I was running, sleeping, in line at the post office, on the train. All the music I liked, in my pocket, ready for my ears. Heaven. The Mac has changed my life, but the iPod made it happier.&lt;/p&gt;

&lt;p&gt;Today the &amp;ldquo;real iPod&amp;rdquo; is &lt;a href=&#34;https://www.wired.com/story/goodbye-ipod-and-thanks-for-all-the-tunes/&#34;&gt;not on sale anymore&lt;/a&gt;. Only the iPod Touch is available. It&amp;rsquo;s cool, but it&amp;rsquo;s not the same.&lt;/p&gt;

&lt;p&gt;I am gonna jealously keep my iPod in the drawer, but sometimes I still feel it in my right pocket.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transmit iOS was great, and yet</title>
      <link>https://www.upbeat.it/transmit-ios-was-great-and-yet/</link>
      <pubDate>Thu, 04 Jan 2018 14:55:24 +0100</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/transmit-ios-was-great-and-yet/</guid>
      <description>&lt;p&gt;Panic is &lt;a href=&#34;https://panic.com/blog/the-future-of-transmit-ios/&#34;&gt;winding down Transmit iOS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I am surprised. I assumed they were doing good. They are, as a company. But even great companies that create compelling app have problems in justifying further investments on products that don&amp;rsquo;t bring in enough money.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s a bittersweet announcement. It must have been a tough call. I think it&amp;rsquo;s important to not fall in the &amp;ldquo;if Panic can&amp;rsquo;t make it, I can&amp;rsquo;t make it either&amp;rdquo; trap.
Panic made it. They have built and maintained Transmit iOS for around ten years. It&amp;rsquo;s a great run.&lt;/p&gt;

&lt;p&gt;People change, needs change, operative systems change. There will be new problems to solve, and old products can hold you back. So it&amp;rsquo;s better to wind them down and make room for new products. Even if you don&amp;rsquo;t know what they&amp;rsquo;ll look like yet.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Excess of focus</title>
      <link>https://www.upbeat.it/excess-of-focus/</link>
      <pubDate>Wed, 25 Oct 2017 22:59:53 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/excess-of-focus/</guid>
      <description>

&lt;p&gt;There&amp;rsquo;s plenty of books, podcasts, classes out there about staying focused:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to not waste a minute&lt;/li&gt;
&lt;li&gt;How to make most of your time&lt;/li&gt;
&lt;li&gt;How to get in the zone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mostly in response to the concerns that many of us have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I can&amp;rsquo;t focus&lt;/li&gt;
&lt;li&gt;I am busy&lt;/li&gt;
&lt;li&gt;I have so many things to do&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ll do this when I have time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There&amp;rsquo;s nothing wrong with acknowledging a problem and looking a solution. Learning how to get and stay focused is a great skill.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Entering &lt;a href=&#34;https://sivers.org/counter&#34;&gt;counter-melody&lt;/a&gt; mode now.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How come I rarely hear &amp;ldquo;I am excessively focused&amp;rdquo;?&lt;/p&gt;

&lt;p&gt;I think there&amp;rsquo;s an excessive pressure on squeezing every minute of our days. I admit it&amp;rsquo;s a great feeling when you accomplish many important tasks in a day and go to sleep fulfilled. But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what&amp;rsquo;s the cost?&lt;/li&gt;
&lt;li&gt;what did you have to give up to achieve it?&lt;/li&gt;
&lt;li&gt;will be you be able to do the same tomorrow?&lt;/li&gt;
&lt;li&gt;for how long will you be able to keep that pace?&lt;/li&gt;
&lt;li&gt;how bad would it be if you postponed some of those tasks to tomorrow?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The designer side of me would like to, well, design every single moment of my day and strive for the most productive day. But I can&amp;rsquo;t deny that the best experiences I had were not planned, they just happened. All I had to do was getting distracted enough to say &amp;lsquo;yes&amp;rsquo;. And make room for them.&lt;/p&gt;

&lt;p&gt;I wrangle often with the designer voice inside of me. I tell him that I need room to breathe and, most of all, to be bored and relaxed.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s a nice post by Sivers about &lt;a href=&#34;https://sivers.org/relax&#34;&gt;relaxing while achieving results&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;challenges&#34;&gt;Challenges&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When was the last time you enjoyed doing nothing productive?&lt;/li&gt;
&lt;li&gt;When was the last time you took a walk with no particular destination and without any electronic device?&lt;/li&gt;
&lt;li&gt;When was the last time you thought &amp;ldquo;I don&amp;rsquo;t know what do to next&amp;rdquo;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these sound like cursing to a productivity guru. I tried them all, recently. I am still alive and the world didn&amp;rsquo;t collapse. I haven&amp;rsquo;t lost money, nor health. I just enjoyed sprinkles of boredom during my days. And I&amp;rsquo;ll keep doing it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Owning your Space as a Podcaster</title>
      <link>https://www.upbeat.it/owning-your-space-as-a-podcaster/</link>
      <pubDate>Mon, 23 Oct 2017 18:33:56 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/owning-your-space-as-a-podcaster/</guid>
      <description>&lt;p&gt;I had the pleasure to be interviewed by &lt;a href=&#34;https://www.yannilunga.com/owning-your-space-podrover-cesare-rocchi/&#34;&gt;Yann Ilunga on the 360 Entrepreneur Podcast&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It was fun. I stressed the importance for podcasters to own the URLs of domains and RSS feeds. Also valid for bloggers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Breezi is Back</title>
      <link>https://www.upbeat.it/breezi-is-back/</link>
      <pubDate>Mon, 16 Oct 2017 18:44:06 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/breezi-is-back/</guid>
      <description>

&lt;p&gt;It was 2012. Prince was still alive and iOS 6 was about to be released. There were rumors of a bigger iPhone. They&amp;rsquo;d have called it &amp;ldquo;iPhone 5&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;At this point I had already built quite a lot of apps for clients and I wanted to take a stab at building AND selling an app. And so &lt;a href=&#34;https://www.breeziapp.com&#34;&gt;Breezi&lt;/a&gt; was born.&lt;/p&gt;

&lt;p&gt;I wanted it to be something unique and so I designed a fully gesture driven user interface. It&amp;rsquo;s not a big deal nowadays, but at the time it was. Flipboard was one of the few apps to take advantage of rich gestures for navigation.&lt;/p&gt;

&lt;p&gt;I still remember the day before submitting Breezi to the App Store. The code was pretty messy, because I experimented a lot. And so I rewrote it from scratch, in one day. I just kept the networking code, but I rewrote all the rest. I got rid of a lot of unneeded code and improved the performance at the same time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Opposers of big rewrites can pause here and shiver if needed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Breezi was the first app to bring in money, coming directly from Apple. It was nice to read the details of the wire transfer in my bank statement. It was supposed to be the app that would make me quit consulting and live a life of sipping cocktails on the beach.&lt;/p&gt;

&lt;p&gt;Instead, Breezi taught me that selling apps is hard. It taught me that bloggers don&amp;rsquo;t owe you a blog post, and that pixel perfect is better achieved in milestones, instead of all at once.&lt;/p&gt;

&lt;p&gt;With the release of the iPhone 5 I had to rework a bit the UI. Auto Layout was still unripe and so I went with the macro-based &lt;code&gt;IS_IPHONE5&lt;/code&gt; approach.&lt;/p&gt;

&lt;p&gt;The app was selling good but nowhere near my expectations. A project proposal came in. It was one of those &amp;ldquo;hard to say no&amp;rdquo; projects. I took it.&lt;/p&gt;

&lt;p&gt;One day I noticed a negative review. The app was crashing on an iPhone 6. I was deeply involved in the project and I didn&amp;rsquo;t have time to take care of the issue so I took it off of the store.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Then wedding, then kids, then house restoration, then &lt;a href=&#34;https://www.podrover.com&#34;&gt;Podrover&lt;/a&gt;, then &lt;a href=&#34;http://www.affiliator.io&#34;&gt;Affiliator&lt;/a&gt;, then many more things.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;the-spark&#34;&gt;The Spark&lt;/h2&gt;

&lt;p&gt;A few weeks ago I was recording a podcast (it will be out soon) and somebody mentioned Breezi. It was enough to spark my curiosity in the terms of: &amp;ldquo;how long would a revamp take me?&amp;rdquo; Just a spark, that I quickly dismissed.&lt;/p&gt;

&lt;p&gt;Last week I was reorganizing my backup and I saw it:  &lt;code&gt;Breezi.zip&lt;/code&gt;. It all started as a game:&lt;/p&gt;

&lt;p&gt;&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Opens Objc project from 2012. It works! 68 warnings &amp;hellip; but it works!&lt;/p&gt;&amp;mdash; Cesare Rocchi (@_funkyboy) &lt;a href=&#34;https://twitter.com/_funkyboy/status/909107383582040065?ref_src=twsrc%5Etfw&#34;&gt;September 16, 2017&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;//platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;It snowballed. &amp;ldquo;How quickly can I decrease the number of warnings?&amp;rdquo; That part was easy. The boring part was &amp;ldquo;modernizing&amp;rdquo; the layout.&lt;/p&gt;

&lt;h2 id=&#34;the-fire&#34;&gt;The Fire&lt;/h2&gt;

&lt;p&gt;Most of the UI was arranged using the &lt;code&gt;.center&lt;/code&gt; property of &lt;code&gt;UIView&lt;/code&gt;. Don&amp;rsquo;t judge and remember it was 2012. After the advent of Auto Layout that trick doesn&amp;rsquo;t work anymore. I started reworking those issues but when I got stuck for too long I fell back using &lt;code&gt;UIScreen&lt;/code&gt; bounds.&lt;/p&gt;

&lt;p&gt;A storyboard as launch screen is now mandatory if you want the app to be compatible with the upcoming iPhone X. When you create a project from scratch it&amp;rsquo;s already there but when you have to add a launch screen to an old project it&amp;rsquo;s not easy, if you don&amp;rsquo;t know the requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Storyboard scene has to be marked as &amp;ldquo;Use as Launch Screen:&lt;/li&gt;
&lt;li&gt;The View Controller has to be checked as &amp;ldquo;Is Initial View Controller&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Discovering the second item took me 1-2 hours and quite a lot of experimentation.&lt;/p&gt;

&lt;p&gt;Luckily the next point was substituting &lt;code&gt;UIAlertView&lt;/code&gt;s with &lt;code&gt;UIAlertController&lt;/code&gt;. It was quite easy. &lt;em&gt;I still like the old API.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And then the final part came: compatibility with iOS11 and the iPhone X.  I had to open ALL the xibs and pin the views to the safe area layout guide. When doing layout in code I had to spread a lot of references to &lt;code&gt;view.safeAreaLayoutGuide&lt;/code&gt;. In the end I settled with helper methods like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;+ (CGFloat) safeAreaY:(UIView *)view {
  if (@available(iOS 11.0, *)) {
    return view.safeAreaLayoutGuide.layoutFrame.origin.y;
  }
  return 0.0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It wasn&amp;rsquo;t rocket science, just a bit boring. Fix, run, test on different devices. Rinse and repeat.&lt;/p&gt;

&lt;p&gt;Finally I had to remap some icons to new weather conditions. While I was waiting for the review I redesigned &lt;a href=&#34;https://www.breeziapp.com&#34;&gt;the website&lt;/a&gt; and replied to some reviews on the App Store.&lt;/p&gt;

&lt;p&gt;Funny story. I tweaked a bit the app icon but I forgot to update it in iTunes Connect. The app got rejected. Luckily reviewers check also these details.&lt;/p&gt;

&lt;p&gt;When Breezi was approved it took half a day to appear live in the store. Maybe because it has been &amp;ldquo;dormant&amp;rdquo; for a bunch years?
I released it silently because I wanted to make sure it worked as intended in production.&lt;/p&gt;

&lt;p&gt;I was ready to publicize it but then I spotted a little bug. After the fix, I was about to release the update when the marketing voice inside me said: &amp;ldquo;what about a video preview&amp;rdquo;? And so I made one.&lt;/p&gt;

&lt;p&gt;&lt;script src=&#34;https://fast.wistia.com/embed/medias/vkexqcldqr.jsonp&#34; async&gt;&lt;/script&gt;&lt;script src=&#34;https://fast.wistia.com/assets/external/E-v1.js&#34; async&gt;&lt;/script&gt;&lt;div class=&#34;wistia_responsive_padding&#34; style=&#34;padding:177.5% 0 0 0;position:relative;&#34;&gt;&lt;div class=&#34;wistia_responsive_wrapper&#34; style=&#34;height:100%;left:0;position:absolute;top:0;width:100%;&#34;&gt;&lt;div class=&#34;wistia_embed wistia_async_vkexqcldqr videoFoam=true&#34; style=&#34;height:100%;width:100%&#34;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;

&lt;h2 id=&#34;pricing&#34;&gt;Pricing&lt;/h2&gt;

&lt;p&gt;I didn&amp;rsquo;t even think about releasing Breezi with a new app ID. After five years I was probably &amp;ldquo;entitled&amp;rdquo; to do it, but I think those who bought it a long time ago should keep on enjoying it. The regular price is $1.99 but until October 25th it&amp;rsquo;s $0.99.&lt;/p&gt;

&lt;p&gt;Go &lt;a href=&#34;https://itunes.apple.com/us/app/breezi/id545425653?ls=1&amp;amp;mt=8&#34;&gt;grab it&lt;/a&gt;!&lt;/p&gt;

&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;It feels good to revitalize an old app. It&amp;rsquo;s a bit like wearing again that pair of jeans you used to wear in college. I am glad I did it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Signal</title>
      <link>https://www.upbeat.it/signal/</link>
      <pubDate>Sun, 08 Oct 2017 21:11:05 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/signal/</guid>
      <description>&lt;p&gt;I am sick of iMessages not being delivered.&lt;/p&gt;

&lt;p&gt;Situation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;my wife has one Apple ID&lt;/li&gt;
&lt;li&gt;she&amp;rsquo;s logged on an iPhone and an iPad&lt;/li&gt;
&lt;li&gt;both her phone number and her email are linked to iMessage&lt;/li&gt;
&lt;li&gt;I have one Apple ID&lt;/li&gt;
&lt;li&gt;With that ID I am logged on an iPhone, a Mac Book Air and a Mac mini&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Random stuff that happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I send an important message from my iPhone&lt;/li&gt;
&lt;li&gt;She gets it on her iPad&lt;/li&gt;
&lt;li&gt;She is running errands and has just the iPhone with her. The iPad is at home.&lt;/li&gt;
&lt;li&gt;Message doesn&amp;rsquo;t get to her phone. Ever. Like swallowed by a black hole.&lt;/li&gt;
&lt;li&gt;MESS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More random stuff&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;She sends me an important message&lt;/li&gt;
&lt;li&gt;I get it on ONLY on my Mac Book Air, which I open every 2-3 days&lt;/li&gt;
&lt;li&gt;MESS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even more random stuff&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;She sends me an important message&lt;/li&gt;
&lt;li&gt;I get it both on my iPhone and my Mac mini&lt;/li&gt;
&lt;li&gt;When I receive the message I am using the Mac mini and it&amp;rsquo;s handy to reply from there&lt;/li&gt;
&lt;li&gt;I reply, but my message is received ONLY on her iPad&lt;/li&gt;
&lt;li&gt;MESS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We rely on those messages, and related notifications. At this point I can say iMessage doesn&amp;rsquo;t work for us. And I don&amp;rsquo;t know how to fix it. And I wouldn&amp;rsquo;t even know how to file a radar about this.&lt;/p&gt;

&lt;p&gt;We have switched to &lt;a href=&#34;https://signal.org&#34;&gt;Signal&lt;/a&gt; a few days ago. It&amp;rsquo;s been very reliable so far. We don&amp;rsquo;t miss animated emojis. We are just happy that messages get delivered and notifications are displayed. Isn&amp;rsquo;t it the whole point of a messaging system?&lt;/p&gt;

&lt;p&gt;Drawback: there&amp;rsquo;s not a desktop app for Signal. I think I can live with that.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Bye bye white label apps</title>
      <link>https://www.upbeat.it/bye-bye-white-label-apps/</link>
      <pubDate>Wed, 04 Oct 2017 23:32:07 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/bye-bye-white-label-apps/</guid>
      <description>&lt;p&gt;I listened to the &lt;a href=&#34;https://releasenotes.tv/229-youre-still-going-to-be-broke/&#34;&gt;last episode of Release Notes&lt;/a&gt; about the new App Store guidelines.
There&amp;rsquo;s a new clause.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;

4.2.6 Apps created from a commercialized template or app generation service will be rejected.

&lt;/p&gt;
  
  &lt;div class=&#34;citation&#34;&gt;
    &lt;strong&gt;App Store guidelines&lt;/strong&gt; 
    
        &lt;a href=&#34;https://developer.apple.com/app-store/review/guidelines/&#34;&gt;source&lt;/a&gt;
    
  &lt;/div&gt;
  
&lt;/blockquote&gt;

&lt;p&gt;My first reaction was &amp;ldquo;finally!&amp;rdquo;. There&amp;rsquo;s too many clones in the App Store and it&amp;rsquo;s time to clean it up. So bravo Apple. But my thinking here is mostly based about clones of games.&lt;/p&gt;

&lt;p&gt;Then I started thinking about businesses where a white label app might make sense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;restaurants&lt;/li&gt;
&lt;li&gt;podcasts&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apple&amp;rsquo;s message is quite clear: changing the splash screen and the icon of an app is not enough. But I think there&amp;rsquo;s still room to run a business. You can have a core that you reuse over and over, that includes data model, networking code, skeleton of view controllers. And then you can customize it for different cases, so that the app doesn&amp;rsquo;t &amp;ldquo;evidently look&amp;rdquo; white labeled.&lt;/p&gt;

&lt;p&gt;Sure, you are gonna need to spend more time, and you won&amp;rsquo;t generate new apps by running a script anymore, but the result will be superior and contribute to a cleaner (and better) App Store.&lt;/p&gt;

&lt;p&gt;On the opposite side, if I were running one of those businesses that sell templates for apps, I&amp;rsquo;d be definitely worried.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Harvesting Stories</title>
      <link>https://www.upbeat.it/harvesting-stories/</link>
      <pubDate>Mon, 25 Sep 2017 22:57:17 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/harvesting-stories/</guid>
      <description>&lt;p&gt;I spent most of the last week harvesting grapes. Yep, I don&amp;rsquo;t just make software. I also make wine.&lt;/p&gt;

&lt;p&gt;Moving many crates can take a toll on your backbone. In spite of that, harvesting is fun. The best part is that, while you harvest, you can chat.&lt;/p&gt;

&lt;p&gt;I was lucky to spend time in the vineyard with my parents and some of our neighbors. I have told and listened to many stories, jokes, adventures, struggles and dreams.
And I did it while harvesting a fruit that will become a great juice. Is there anything better?&lt;/p&gt;

&lt;p&gt;I contrast this experience with the days I make software. I sit alone, in a room, in front of a screen. Sometimes I &amp;ldquo;chat&amp;rdquo; via email/Slack but it&amp;rsquo;s not the same. I wish there was a way to make software while listening to stories. Unluckily I need silence when I reason about code. I&amp;rsquo;ll have to get over it.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m looking for a way to harvest more stories during my day to day life, because the next grape harvest is too far away. I&amp;rsquo;ll need more stories sooner.&lt;/p&gt;

&lt;p&gt;I am pondering the idea of scheduling a phone call every day, to chat with somebody I met at some conference. Mulling over it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>From Taxi to Cruise Ship</title>
      <link>https://www.upbeat.it/from-taxi-to-cruise-ship/</link>
      <pubDate>Wed, 09 Aug 2017 21:13:55 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/from-taxi-to-cruise-ship/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;
Remember that running a taxi is a fine sort of business, but don&#39;t expect to turn it into a cruise ship. And vice versa.
&lt;/p&gt;
  
  &lt;div class=&#34;citation&#34;&gt;
    &lt;strong&gt;Seth Godin&lt;/strong&gt; 
    
        &lt;a href=&#34;http://sethgodin.typepad.com/seths_blog/2017/08/the-taxi-or-the-cruise-ship.html&#34;&gt;source&lt;/a&gt;
    
  &lt;/div&gt;
  
&lt;/blockquote&gt;

&lt;p&gt;Going from freelancing/consulting to building and selling your products is a bit like becoming a cruise organizer after being a taxi driver.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s quite a switch.
You still build software but with a pretty different perspective.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Podrover Diaries: Cleaning a stain in the iOS navigation bar</title>
      <link>https://www.upbeat.it/podrover-diaries-cleaning-a-stain-in-the-ios-navigation-bar/</link>
      <pubDate>Tue, 08 Aug 2017 18:25:55 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/podrover-diaries-cleaning-a-stain-in-the-ios-navigation-bar/</guid>
      <description>&lt;p&gt;&lt;em&gt;Podrover Diaries is a series about my adventures in building &lt;a href=&#34;https://www.podrover.com&#34;&gt;Podrover&lt;/a&gt;, a service to track, collect and share your podcast reviews. Subscribe to the &lt;a href=&#34;http://www.upbeat.it/atom.xml&#34;&gt;RSS feed&lt;/a&gt; or join my &lt;a href=&#34;https://www.upbeat.it/newsletter&#34;&gt;newsletter&lt;/a&gt; to stay up to date with upcoming adventures.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When I released the 1.3.5 version of Podrover some customers reported the presence of a &amp;ldquo;stain&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;Here it is (look at the top and bottom right).&lt;/p&gt;

&lt;p&gt;&lt;center&gt;
&lt;iframe src=&#34;https://player.vimeo.com/video/228840941&#34; width=&#34;90%&#34; height=&#34;864&#34; frameborder=&#34;0&#34; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;I didn&amp;rsquo;t notice it at first but it&amp;rsquo;s creepy, isn&amp;rsquo;t it? I suspect this was introduced when I added the &lt;code&gt;UISegmentedControl&lt;/code&gt; to the navigation bar.&lt;/p&gt;

&lt;p&gt;The solution is easy, if you know it.
Just make sure that the navigation bar view has the same background color of the view.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;self.navigationController.view.backgroundColor = self.view.backgroundColor;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Many thanks to &lt;a href=&#34;https://twitter.com/rolandleth/status/881215574558347265&#34;&gt;Roland Leth&lt;/a&gt; for letting me know.&lt;/p&gt;

&lt;p&gt;Version 1.3.6 is &lt;a href=&#34;https://itunes.apple.com/app/podrover-collect-and-share-your-podcast-reviews/id1195449905?mt=8&#34;&gt;now in the store&lt;/a&gt; and the stain has been cleaned.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Stumbling</title>
      <link>https://www.upbeat.it/stumbling/</link>
      <pubDate>Thu, 29 Jun 2017 22:05:09 +0200</pubDate>
      <author>Cesare Rocchi</author>
      <guid>https://www.upbeat.it/stumbling/</guid>
      <description>&lt;p&gt;As adults we try to avoid it. Imagine yourself stumbling on a step and falling in the middle of a crowded square. Even if you didn&amp;rsquo;t do it on purpose you feel stupid, right?&lt;/p&gt;

&lt;p&gt;We (adults) probably forgot how we learned to walk.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;

.. on the floor, every day, trying it out

&lt;/p&gt;
  
  &lt;div class=&#34;citation&#34;&gt;
    &lt;strong&gt;Seth Godin&lt;/strong&gt; 
    
        &lt;a href=&#34;http://sethgodin.typepad.com/seths_blog/2017/06/a-professional-stumbler.html&#34;&gt;source&lt;/a&gt;
    
  &lt;/div&gt;
  
&lt;/blockquote&gt;

&lt;p&gt;And with no fear of feeling stupid.&lt;/p&gt;

&lt;p&gt;As a developer practicing the art of business, being of the floor and trying it out is the most important thing for me these days.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>