<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ios-Dev on blog.iankulin.com</title><link>https://blog.iankulin.com/tags/ios-dev/</link><description>Recent content in Ios-Dev on blog.iankulin.com</description><generator>Hugo</generator><language>en-AU</language><lastBuildDate>Fri, 19 Jan 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.iankulin.com/tags/ios-dev/index.xml" rel="self" type="application/rss+xml"/><item><title>What's unfinished in your Udemy?</title><link>https://blog.iankulin.com/whats-unfinished-in-your-udemy/</link><pubDate>Fri, 19 Jan 2024 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/whats-unfinished-in-your-udemy/</guid><description>&lt;p&gt;If you work or study in tech, I always feel a good getting-to-know-you question is &amp;ldquo;what courses or tutorials did you start, but not finish?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;My Udemy doesn&amp;rsquo;t look &lt;em&gt;too&lt;/em&gt; bad:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2023-12-29-at-1.30.02-pm.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;The ZTM course was good, but I got stuck on an AI API exercise. I think it&amp;rsquo;s a common sticking point for students since Andrei includes a little rant about how it definitely does work - but I downloaded his repo with the solution and it was having the same errors I was and I gave up in frustration. I probably should have just skipped that one.&lt;/p&gt;
&lt;p&gt;The Linux one was really good - I learned a heap of basic little things (although I struggled with the guy&amp;rsquo;s accent a little) - things like tab for CLI completion. I guess you would learn this stuff from work colleagues, but if you&amp;rsquo;re self taught someone else needs to show you. This isn&amp;rsquo;t the highly recommended Linux basics course I wanted to do (&lt;a href="https://www.udemy.com/course/learn-linux-in-5-days/"&gt;Learn Linux in 5 days&lt;/a&gt;), but it was a lot cheaper.&lt;/p&gt;
&lt;h2 id="what-else"&gt;What else?&lt;/h2&gt;
&lt;p&gt;So that&amp;rsquo;s my Udemy, what else haven&amp;rsquo;t I finished?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.hackingwithswift.com/100/swiftui"&gt;100 Days of Swift UI&lt;/a&gt; (47/100) - This is the free Paul Hudson course. I so highly recommend it for budding iOS developers I paid to join his super club or whatever that&amp;rsquo;s called although you don&amp;rsquo;t really need to. I got up to day 47 before deciding I wanted to work on web dev rather than iOS. I still use these skills occasionally for writing little MacOS apps.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://missing.csail.mit.edu/"&gt;Missing Semester Lectures&lt;/a&gt; (6/11) - Some CS lecturers at MIT realised there was some mechanics of day-to-day development missing from their courses (such as source control) so they put these together. They are great. Some of it falls into the &amp;lsquo;didn&amp;rsquo;t know you needed to know&amp;rsquo; so I plan to come back to these and finish one day.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cs193p.sites.stanford.edu/2021-0"&gt;CS193p&lt;/a&gt; (4/16) - These iOS development lectures are high quality and enjoyable, but if you run into issues (and are not enrolled in this unit at Stanford) you can get stuck - my best source of assistance was searching on github and finding others who had been through it. I gave up on these to focus on the Paul Hudson ones that were in more digestible chunks, and with some assistance (if you cared to pay for it).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also completed numerous little free courses and stand-alone videos from YouTube - names that spring to mind are Jay from &lt;a href="https://www.youtube.com/@LearnLinuxTV"&gt;Learn Linux TV&lt;/a&gt;, &lt;a href="https://www.youtube.com/@WebDevSimplified"&gt;Web Dev Simplified&lt;/a&gt;, &lt;a href="https://www.youtube.com/@Fireship"&gt;Fireship&lt;/a&gt;, the &lt;a href="https://www.youtube.com/@NetNinja"&gt;Net Ninja&lt;/a&gt;, &lt;a href="https://www.youtube.com/@programmingwithmosh"&gt;Mosh&lt;/a&gt;, &lt;a href="https://www.youtube.com/@t3dotgg"&gt;Theo&lt;/a&gt;, &lt;a href="https://www.youtube.com/@NetworkChuck"&gt;Network Chuck&lt;/a&gt;, &lt;a href="https://www.youtube.com/@JamesQQuick"&gt;James Quick&lt;/a&gt;, and &lt;a href="https://www.youtube.com/@apalrdsadventures"&gt;Apalrd&amp;rsquo;s Adventures&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mosh - I&amp;rsquo;ve paid for a month with the intention of doing his React 18 course in that time. I&amp;rsquo;m optimistic I will.&lt;/p&gt;
&lt;h3 id="whats-better-than-finishing-a-course"&gt;What&amp;rsquo;s better than finishing a course?&lt;/h3&gt;
&lt;p&gt;In most cases, what&amp;rsquo;s prevented me from finishing these courses, is that I&amp;rsquo;ve invested the time into writing code or doing projects that use the skills instead. I don&amp;rsquo;t feel bad about this, and in fact I&amp;rsquo;d recommend it. The only benefit of a course over just building projects is that they can teach you the things you didn&amp;rsquo;t know you needed. I listen to industry podcasts, and follow a lot of webdev people on Masterdon to try and help with that sort of discovery.&lt;/p&gt;
&lt;p&gt;For example, I&amp;rsquo;ve never used Zod, NextJS or Tailwind. But I know what they are, and where they would be useful to me because I&amp;rsquo;m tuned in to developer chatter about things.&lt;/p&gt;</description></item><item><title>Digital Color Meter</title><link>https://blog.iankulin.com/digital-color-meter/</link><pubDate>Wed, 18 Jan 2023 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/digital-color-meter/</guid><description>&lt;p&gt;For the Calculator project, I needed to know the exact RGB values for the colours on the iOS calculator buttons so I could reproduce them. Assuming a tool for reading colours from the screen exisited, I googled it, and was surprised to find this exact tool is already installed by default on MacOS.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s called Digital Color Meter and just shows the RGB values for anything on the screen under the cursor.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2023-01-08-at-2.26.12-pm.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;In order to copy the values, hit &lt;code&gt;Command|L&lt;/code&gt; to freeze the current colour, then copy them from the Colour menu. Also in that menu you can choose to have the values shown as hex.&lt;/p&gt;
&lt;h4 id="cursor-in-screenshots"&gt;Cursor in screenshots&lt;/h4&gt;
&lt;p&gt;While I&amp;rsquo;m doing tips and tricks, to have the cursor showing in a Mac screenshot (which I needed for the image above), do &lt;code&gt;shift|command|5&lt;/code&gt; (which is the time delay whole screenshot) then turn it on in the option bar that appears before starting the timer.&lt;/p&gt;</description></item><item><title>99 CSS Layout Feedback</title><link>https://blog.iankulin.com/99-css-layout-feedback/</link><pubDate>Sun, 25 Dec 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/99-css-layout-feedback/</guid><description>&lt;p&gt;I&amp;rsquo;ve been in the swing with the &lt;a href="https://www.hackingwithswift.com/100/swiftui"&gt;#100DaysOfSwiftUI&lt;/a&gt; course of having frequent assignments to test my understanding of the course content up to that point, then watching the feedback video and reflecting on it here. So far, in the &lt;a href="https://www.udemy.com/course/the-complete-web-developer-zero-to-mastery/"&gt;Complete Web Developer&lt;/a&gt; I&amp;rsquo;ve only had this single CSS assignment, so I was excited to see how I got on.&lt;/p&gt;
&lt;p&gt;I was a bit chuffed that one of Andrei&amp;rsquo;s first actions was to edit the html to make it more semantic - I&amp;rsquo;d used &lt;header&gt; for the top bit, he used &lt;nav&gt; which is probably better, and then I could have recycled &lt;header&gt; for the cover. Although in general, there was a lot of use of classes, where I had just used selectors carefully. I guess my thinking here was that the html should be free of information about how to display it - and we break that if we say add &lt;code&gt;class=&amp;quot;sticky&amp;quot;&lt;/code&gt; to the nav bar. The argument could be made the other way though - with my system I&amp;rsquo;m building dependency on a particular page structure into the CSS if I use a selector to pick out the last child in a list to apply a style to it.&lt;/p&gt;
&lt;p&gt;Andrei also used an unordered list for his links - I saw this in a CSS video so it might be a common idea. He used a flexbox, and an auto left-margin to move the last link to the right edge of the screen which was neater than the fiddling around I did - but I think that&amp;rsquo;s down to me as I could probably have done the equivalent trick i grid.&lt;/p&gt;
&lt;p&gt;There were a couple of new things introduced in the solution, which felt a bit unfair, although its a valid teaching approach I guess. One was vh units, and the other was using @media queries to change things based on the screen size. It wouldn&amp;rsquo;t have been possible for me to have used either since I hadn&amp;rsquo;t been taught them yet, but both were good in this context.&lt;/p&gt;
&lt;p&gt;Same with the sticky nav bar, I&amp;rsquo;d actually considered this in my design, but hadn&amp;rsquo;t figured out how to do it. It was done with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nav {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; position: fixed;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; top: 0;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; width: 100%;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But when I tried it in my page, I&amp;rsquo;d lost the vertical centering in the div below, so obviously I needed to do something to that to make it start at the bottom of the newly sticky nav bar which had been happening without any intervention before.&lt;/p&gt;</description></item></channel></rss>