{"id":36,"date":"2022-04-21T08:28:33","date_gmt":"2022-04-21T08:28:33","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/encode\/?p=36"},"modified":"2022-04-21T08:28:33","modified_gmt":"2022-04-21T08:28:33","slug":"python-to-xcode-learnings","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/encode\/2022\/04\/21\/python-to-xcode-learnings\/","title":{"rendered":"Python to &#8230; Xcode Learnings"},"content":{"rendered":"\n<p>This week, was full of a non trivial number of learnings surrounding how to create an MVP app in Python&#8230; that can be later deployed \/ packed into an Xcode project i.e. iOS app. <\/p>\n\n\n\n<p>While going through the process of developing my final Capstone project (a satellite tracking app), I asked an iOS engineer if he felt learning Swift &amp; using ARKit to develop this MVP app within 3 months was the best way to go &#8211; humbly caveating I have never used Swift before, acknowledging that learning curve would be huge. The engineer shared in his opinion, it would be a better learning experience to use Python and a framework that converts a Python project to Swift. <\/p>\n\n\n\n<p>This sent me down a research path wherein I <strong>reviewed Python to Xcode framework options, followed tutorials and down selected <a href=\"https:\/\/kivy.org\/#home\">Kivy<\/a>, <\/strong>an Open source Python framework for rapid app development. My goal this week was to\u00a0<em>validate a Python framework + iOS export option would work<\/em>\u00a0for a general purpose iOS app before spending time adding custom features pulling in satellite uplink and downlink information, IMU, and accelerometer etc data.<\/p>\n\n\n\n<p>In conclusion, I spent many hours just getting familiar with the Kivy framework,\u00a0becoming familiar with the creation &amp; deployment of Python virtual environments for use with Kivy projects, and creating an MVP basic Kivy app (calculator to test basic functionality using the Kivy syntax + Python). <\/p>\n\n\n\n<p>As of this moment I&#8217;m blocked on<strong>  rsync errors preventing my Kivy Python project (which works natively) to work as an Xcodeproj.\u00a0<\/strong>I debugged numerous openGLES vs Metal &amp; MobileCoreServices framework errors, but am continuing to chip away at the former. <\/p>\n\n\n\n<p>As goes the saying, <strong>&#8221; 110 bugs in the code.. take one down, patch it up, 119 bugs in the code. =)&#8221;<\/strong><\/p>\n\n\n\n<p>Onwards and upwards!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"650\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5574\/files\/2022\/04\/18R-XmPn8hEjZ2Hil84D4JA-1024x650.png\" alt=\"\" class=\"wp-image-37\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5574\/files\/2022\/04\/18R-XmPn8hEjZ2Hil84D4JA-1024x650.png 1024w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5574\/files\/2022\/04\/18R-XmPn8hEjZ2Hil84D4JA-300x190.png 300w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5574\/files\/2022\/04\/18R-XmPn8hEjZ2Hil84D4JA-768x487.png 768w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5574\/files\/2022\/04\/18R-XmPn8hEjZ2Hil84D4JA.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This week, was full of a non trivial number of learnings surrounding how to create an MVP app in Python&#8230; that can be later deployed \/ packed into an Xcode project i.e. iOS app. While going through the process of developing my final Capstone project (a satellite tracking app), I asked an iOS engineer if [&hellip;]<\/p>\n","protected":false},"author":12406,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/posts\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/users\/12406"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":1,"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/posts\/36\/revisions"}],"predecessor-version":[{"id":38,"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/posts\/36\/revisions\/38"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/media?parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/categories?post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/encode\/wp-json\/wp\/v2\/tags?post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}