<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sasmito Adibowo</title>
    <description>The latest articles on DEV Community by Sasmito Adibowo (@adib).</description>
    <link>https://dev.to/adib</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F176469%2F73c0ef13-8a8e-46e1-8239-83bd9a9e33fb.jpg</url>
      <title>DEV Community: Sasmito Adibowo</title>
      <link>https://dev.to/adib</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adib"/>
    <language>en</language>
    <item>
      <title>How to Setup Xcode 13 Server for macOS Development</title>
      <dc:creator>Sasmito Adibowo</dc:creator>
      <pubDate>Mon, 25 Oct 2021 00:39:52 +0000</pubDate>
      <link>https://dev.to/adib/how-to-setup-xcode-13-server-for-macos-development-4p7o</link>
      <guid>https://dev.to/adib/how-to-setup-xcode-13-server-for-macos-development-4p7o</guid>
      <description>&lt;p&gt;Testing applications is very important to ensure that existing functionalities keep on running while you add new ones. It’s like how brakes in a car enables it to run faster. On the flip side, executing tests can be a chore. Unless of course you have proper automations in place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8Ixc_Yyj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cutecoder.org/wp-content/uploads/2021/08/xcode-13-bot%402x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Ixc_Yyj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cutecoder.org/wp-content/uploads/2021/08/xcode-13-bot%402x.jpg" alt="Xcode Continuous Integration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinyurl.com/ydwwmowf"&gt;Follow this link&lt;/a&gt; to find out how to setup Xcode Server to continuously run automated tests on macOS applications—both unit tests and user interface tests. Let the bots do the mundane work while developers do what they do best: create new features.&lt;/p&gt;

</description>
      <category>macos</category>
      <category>xcode</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Program iOS on iOS</title>
      <dc:creator>Sasmito Adibowo</dc:creator>
      <pubDate>Sun, 24 Oct 2021 07:14:15 +0000</pubDate>
      <link>https://dev.to/adib/how-to-program-ios-on-ios-56k9</link>
      <guid>https://dev.to/adib/how-to-program-ios-on-ios-56k9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Do I need a mac to program iOS?&lt;br&gt;
How to program iOS on Windows? &lt;br&gt;
Do I need a Mac to program iOS?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a frequent question asked by amateur programmers (or want-to-be programmer) looking to get into iOS programming.&lt;/p&gt;

&lt;p&gt;For a long time the answer was a definite “yes - a Mac is required to program iOS”.&lt;/p&gt;

&lt;p&gt;However that is no longer true.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9-Z0cpLF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cutecoder.org/wp-content/uploads/2020/06/img_0072.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9-Z0cpLF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cutecoder.org/wp-content/uploads/2020/06/img_0072.jpg" alt="Programming on an iPad Mini"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Programming iOS on the device itself has been feasible for a long time now. Often with the help of an external keyboard, of course. However apparently not many people know about it. Moreover many iOS developers themselves seems to be denying this fact – probably due to &lt;em&gt;job security&lt;/em&gt; reasons.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinyurl.com/ydm3h9td"&gt;Read on&lt;/a&gt; to find out how to program on an iPad, iPhone, or even iPod touch without needing a Mac.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>database</category>
    </item>
    <item>
      <title>How to Integrate macOS Notarization into CI/CD jobs</title>
      <dc:creator>Sasmito Adibowo</dc:creator>
      <pubDate>Sun, 24 Oct 2021 07:04:18 +0000</pubDate>
      <link>https://dev.to/adib/how-to-integrate-macos-notarization-into-cicd-jobs-12o5</link>
      <guid>https://dev.to/adib/how-to-integrate-macos-notarization-into-cicd-jobs-12o5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“Is there instruction on how to best integrate [notarization] into a CI build process?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unlike App Review, notarization is a completely automated process that does not require human intervention. At least it’s automated on Apple’s side. You would need to invest a good amount of effort in setting up automation otherwise spend even more time notarizing every release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lNgWvlUJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/skyn90wgvfkni3iqk3kq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lNgWvlUJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/skyn90wgvfkni3iqk3kq.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to automate this process? &lt;a href="https://tinyurl.com/ygbf79gw"&gt;Read on to find out more&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>macos</category>
      <category>gatekeeper</category>
      <category>notarize</category>
    </item>
    <item>
      <title>Code Signing Failure due to Symlink Folders </title>
      <dc:creator>Sasmito Adibowo</dc:creator>
      <pubDate>Tue, 09 Jun 2020 04:10:53 +0000</pubDate>
      <link>https://dev.to/adib/code-signing-failure-due-to-symlink-folders-31i3</link>
      <guid>https://dev.to/adib/code-signing-failure-due-to-symlink-folders-31i3</guid>
      <description>&lt;p&gt;Symlinks are &lt;em&gt;not&lt;/em&gt; the correct way to reduce space in a macOS application bundle. When you share code or resources in an app bundle by creating symbolic links across frameworks, that can wreak havoc with code signing — and consequentially notarization.&lt;/p&gt;

&lt;p&gt;Learn the proper way to use code exported from one framework into another framework within the same application bundle. Not just code, also learn how to share images and other resources across framework within the same application. Thus reduce your app’s download time by nullifying duplications &lt;em&gt;and&lt;/em&gt; be compliant with code signing and notarization that’s mandatory starting from macOS Catalina.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinyurl.com/rhjys6c"&gt;https://tinyurl.com/rhjys6c&lt;/a&gt;&lt;/p&gt;

</description>
      <category>macos</category>
      <category>appkit</category>
      <category>framework</category>
      <category>security</category>
    </item>
    <item>
      <title>How to Implement Clean Architecture in an iOS App</title>
      <dc:creator>Sasmito Adibowo</dc:creator>
      <pubDate>Sun, 07 Jun 2020 10:55:11 +0000</pubDate>
      <link>https://dev.to/adib/how-to-implement-clean-architecture-in-an-ios-app-40gp</link>
      <guid>https://dev.to/adib/how-to-implement-clean-architecture-in-an-ios-app-40gp</guid>
      <description>&lt;p&gt;When you don’t have formal education in software engineering, you might find the topic of &lt;em&gt;software architecture&lt;/em&gt; uncomfortable. You might hear these &lt;em&gt;architecture du jour&lt;/em&gt; and have difficulties in separating signal from the noise – hence dismiss these as &lt;em&gt;nonsense talk&lt;/em&gt; done by charlatans to sell books.&lt;/p&gt;

&lt;p&gt;Nevertheless a good architecture – when correctly applied – would promote longevity of the code base as it gets maintained and enhanced. A clear structure would compartmentalize functionalities, making them easy to find and guides how code should be added (or even removed).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinyurl.com/yccd68tg"&gt;Follow this jump&lt;/a&gt; to learn how to apply the principles of Clean Architecture on an iOS app by using the VIPER / MVVM-R style as an example.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>ios</category>
      <category>patterns</category>
    </item>
  </channel>
</rss>
