<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>App on blog.iankulin.com</title><link>https://blog.iankulin.com/tags/app/</link><description>Recent content in App on blog.iankulin.com</description><generator>Hugo</generator><language>en-AU</language><lastBuildDate>Thu, 27 Oct 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.iankulin.com/tags/app/index.xml" rel="self" type="application/rss+xml"/><item><title>Day 47 - Habits App</title><link>https://blog.iankulin.com/day-47-habits-app/</link><pubDate>Thu, 27 Oct 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/day-47-habits-app/</guid><description>&lt;p&gt;I&amp;rsquo;ve been mucking around with the Habits app too long - it&amp;rsquo;s started to look like procrastination. It already meets the &lt;a href="https://www.hackingwithswift.com/100/swiftui/47"&gt;specification&lt;/a&gt;, so I&amp;rsquo;m calling it an MVP and moving on.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/IanKulin/Habitual"&gt;&lt;img src="https://blog.iankulin.com/images/github-mark-32px.png" width="32" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="https://blog.iankulin.com/images/img_3110.png" width="266" alt=""&gt;
&lt;p&gt;This is the first app of mine I&amp;rsquo;ve loaded onto my phone and started using, and there are a couple of things I&amp;rsquo;d like to do with it. It currently just lets you specify how many days between an activity repeating - so if you say you should go to the gym every second day, and you complete that activity on Monday, &amp;ldquo;Gym&amp;rdquo; will make it&amp;rsquo;s way to the top of the list on Wednesday. While it&amp;rsquo;s waiting in the list for Wednesday to come around, it will show the &amp;ldquo;Due&amp;rdquo; time as being exactly 48 hours after you last pressed &amp;ldquo;done&amp;rdquo; on it. But if the habit you want is to go to the gym after work at 6:00pm that&amp;rsquo;s when you want it to be due. I&amp;rsquo;d like that.&lt;/p&gt;
&lt;p&gt;This does overlap a bit with the idea of a &amp;ldquo;ToDo&amp;rdquo; list, so maybe it&amp;rsquo;s a feature creep it shouldn&amp;rsquo;t have. Espeically since the reason I wanted it was because in the process of adding test activities I added &amp;ldquo;Take out the bins&amp;rdquo; and that has to be done on Wednesday nights.&lt;/p&gt;
&lt;p&gt;Paul&amp;rsquo; has moved away from all the data being in an @State in the View to having a data model object in a separate file. It feels like only a few steps until he jumps out from behind a bush and says &amp;ldquo;You&amp;rsquo;ve been writting MVVM already!&amp;rdquo; although currently its a bit more like just MV.&lt;/p&gt;
&lt;p&gt;The list of things I&amp;rsquo;m going to come back to is growing - I also have still not finished writing the custom picker so I can match the design work I paid for on the &lt;a href="https://blog.iankulin.com/design-help/"&gt;times table app&lt;/a&gt;. Nevertheless, I&amp;rsquo;ve so far spent 120 days on the &lt;a href="https://www.hackingwithswift.com/100/swiftui"&gt;#100DaysOfSwiftUI&lt;/a&gt; and I&amp;rsquo;m only up to day 47, so time to get moving.&lt;/p&gt;</description></item><item><title>Times Tables -Day 35 Challenge</title><link>https://blog.iankulin.com/times-tables-day-35-challenge/</link><pubDate>Sat, 01 Oct 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/times-tables-day-35-challenge/</guid><description>&lt;p&gt;The challenge for &lt;a href="https://www.hackingwithswift.com/guide/ios-swiftui/3/3/challenge"&gt;Day 35&lt;/a&gt; of &lt;a href="https://www.hackingwithswift.com/100/swiftui"&gt;100 Days of Swift&lt;/a&gt; UI was to create a simple times tables drilling app. I&amp;rsquo;ve met all the requirements, so I&amp;rsquo;ll move on, but I am struck by how ugly it is. Making better looking apps needs to be added to my goals. Especially since this app is intended to appeal to children, and is at the end of a few lessons on animation, this is definitely a weakness of mine at the moment.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/ui-copy.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;I enjoyed this challenge, it had a few interesting aspects. One was the number keypad for the user to enter, and the other one was creating the dialogue shown to the user at the end of a round with the statistics. I really don&amp;rsquo;t love the iOS modal dialogue boxes, so I ZStacked a rounded rectangle with some views on top of it, and controlled the visibility with .opacity. I wasn&amp;rsquo;t sure what would happen to the user OnTap events - would they go through? The answer is that if you make it very see through they go through to the elements underneath, but if it&amp;rsquo;s reasonably solid, they stay there.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lQFDcBNAr-s?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/IanKulin/TimesTables/blob/719229d3caf80b12ddfff65032e0bee29036e1c9/TimesTables/ContentView.swift"&gt;Source&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Uwrap App</title><link>https://blog.iankulin.com/uwrap-app/</link><pubDate>Thu, 25 Aug 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/uwrap-app/</guid><description>&lt;img src="https://blog.iankulin.com/images/img_2549.png" width="269" alt=""&gt;
&lt;p&gt;Part of the &lt;a href="https://twitter.com/twostraws"&gt;@twostraws&lt;/a&gt; programmatic universe is his Swift learning app, &lt;a href="https://apps.apple.com/us/app/unwrap/id1440611372"&gt;Unwrap&lt;/a&gt; that I&amp;rsquo;ve included in my learning goals. It presents little snippets of learning with a 60 second video, and in a written version, then tests the user to check their understanding. It is slightly gamified - you get points for answers, but it&amp;rsquo;s not clear to me how that works beyond the satisfying haptics when your score runs up at the end of a section.&lt;/p&gt;
&lt;p&gt;The tests so far (I&amp;rsquo;m up to Functions) have been code examples along with a &amp;ldquo;true or false&amp;rdquo; question for the set - often &amp;ldquo;This code is valid Swift&amp;rdquo;, but sometimes things like &amp;ldquo;This code prints four messages&amp;rdquo;. At first, I didn&amp;rsquo;t love the tests as they often didn&amp;rsquo;t test the thing I&amp;rsquo;d just learned. For example in the unit about for loops, the hidden error in some code might have been an undeclared variable being used. But the effect of this has been to make me look at each example carefully to look for errors - in the process I&amp;rsquo;ve learned the Swift syntax well (which I would otherwise have relied on Xcode to help me with), and sharpened my ability to spot errors (that I would otherwise have relied on the compiler to help me with).&lt;/p&gt;
&lt;img src="https://blog.iankulin.com/images/img_2553.png" width="142" alt=""&gt;
&lt;p&gt;The screen shots here are from my SE2 iPhone - so on a sensible sized device the code may be a little easier to read (no it does not to landscape on the phone). I do value having it on the phone though - it&amp;rsquo;s perfect for making good use of tiny bites of time through the day which would be Swift learning free otherwise.&lt;/p&gt;
&lt;p&gt;Even if you&amp;rsquo;re not following one of Paul&amp;rsquo;s Hacking with Swift courses, the Unwrap app is a great way to polish your Swift knowledge.&lt;/p&gt;</description></item><item><title>Minimum Functionality for App Store</title><link>https://blog.iankulin.com/minimum-functionality-for-app-store/</link><pubDate>Fri, 15 Jul 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/minimum-functionality-for-app-store/</guid><description>&lt;p&gt;In my &lt;a href="https://blog.iankulin.com/app-idea/"&gt;post about&lt;/a&gt; my first app, EasterDay, I mentioned that it might be too trivial for an App Store submission. I&amp;rsquo;ve just been reading the App Store Review Guidelines, and there is a section on &lt;a href="https://developer.apple.com/app-store/review/guidelines/#minimum-functionality"&gt;Minimum Functionality&lt;/a&gt; that seems like it might be too pointless for acceptance.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2022-07-11-at-9.22.55-am.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll push on and build it anyway as I still need the rest of the learning experience, but may not submit it. Of course I&amp;rsquo;ve got other ideas for apps (like everyone who has ever met an iOS developer) but they are outside my expertise for the time being.&lt;/p&gt;</description></item><item><title>Playgrounds</title><link>https://blog.iankulin.com/playgrounds/</link><pubDate>Wed, 06 Jul 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/playgrounds/</guid><description>&lt;p&gt;One of the threads that&amp;rsquo;s led me to learning iOS development is last year&amp;rsquo;s release of the &lt;a href="https://developer.apple.com/swift-playgrounds/"&gt;Swift Playgrounds&lt;/a&gt; 4 app. I&amp;rsquo;ve long had a hankering for a tool to create IOS apps, and a few years ago invested a bit of time in &lt;a href="https://apps.apple.com/us/app/codea/id439571171"&gt;Codea&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Playgrounds possibly started as a little live scratchpad for code in Xcode, but now it&amp;rsquo;s big news in STEM education for getting kids started on coding. It&amp;rsquo;s possible to create (and share) Playground &amp;ldquo;books&amp;rdquo; that lead users through steps in programming. Playgrounds is supplied with one that covers the beginnings of programing - functions, loops, conditions etc and many more are downloadable. This is actually one of the methods I&amp;rsquo;m using for picking up Swift basics - I can pick it up in any spare five minutes and solve a puzzle to progress my learning.&lt;/p&gt;
&lt;p&gt;The release of Playgrounds 4 at the end of 2021 was a big step, since now it&amp;rsquo;s theoretically possible to fully develop an app and submit it to the app store from the iPad. That&amp;rsquo;s where I&amp;rsquo;ve started EasterDay. There&amp;rsquo;s also a Mac app, and the iCloud experience of moving between them is quite seamless.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/img_2681.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;I will move across to Xcode with this app soon though - I&amp;rsquo;m loving Playgrounds, but I&amp;rsquo;ve been remiss in writing unit tests and I should probably also work out how version control works in 2022.&lt;/p&gt;</description></item><item><title>App Idea</title><link>https://blog.iankulin.com/app-idea/</link><pubDate>Tue, 05 Jul 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/app-idea/</guid><description>&lt;p&gt;Here&amp;rsquo;s a rough plan for a &amp;ldquo;hello world&amp;rdquo; that&amp;rsquo;s simple enough to be achieved in the short term, but hopefully not too trivial to be accepted into the app store.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/img_2680.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;This is sketched out on GoodNotes 5. I started with the Apple Notes app, but was frustrated by not being able to mix text and drawing. Noteabilty looked great, but the once off purchase for GoodNotes was easier to swallow.&lt;/p&gt;
&lt;p&gt;Ignore the &amp;ldquo;Friday&amp;quot;s in the design above - they should be Sundays. Basically, the user selects a year, and the app says the day for the Easter Sunday that year. If the user needs the date for something, they click on it and it&amp;rsquo;s copied to the clipboard, or perhaps opens up in their calendar.&lt;/p&gt;
&lt;p&gt;I do have an accessibility concern about those scrolling number pickers - what&amp;rsquo;s the sight impaired experience? Maybe Apple&amp;rsquo;s already solved that since they seem like a common UI thing.&lt;/p&gt;</description></item></channel></rss>