{"id":9606,"date":"2026-08-11T19:12:59","date_gmt":"2026-08-11T17:12:59","guid":{"rendered":"https:\/\/pawsunited.ch\/?p=9606"},"modified":"2026-08-11T19:32:48","modified_gmt":"2026-08-11T17:32:48","slug":"vom-assembler-zur-ki-programmieren","status":"publish","type":"post","link":"https:\/\/pawsunited.ch\/en\/vom-assembler-zur-ki-programmieren\/","title":{"rendered":"From Assembler to AI \u2013 How Programming Has Changed for Me"},"content":{"rendered":"\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents <\/h2><nav><ul><li class=\"\"><a href=\"#paws-united-kit-und-der-wechsel-zu-observable\">PawsUnitedKit and the Switch to @Observable<\/a><\/li><li class=\"\"><a href=\"#wie-ich-das-programmieren-gelernt-habe\">How I Learned to Program<\/a><\/li><li class=\"\"><a href=\"#was-sich-seither-verandert-hat\">What Has Changed Since Then<\/a><\/li><li class=\"\"><a href=\"#trotzdem-verstehen-wollen\">Still Wanting to Understand<\/a><\/li><li class=\"\"><a href=\"#vom-assembler-zur-ki\">From Assembler to AI<\/a><\/li><li class=\"\"><a href=\"#meine-apps\">My Apps<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Some time ago, I started developing a new app: <strong>PawsUnited Walk<\/strong>. My original plan was to tidy things up a bit and move code I use across multiple projects into a dedicated framework. But it turned out to be quite a bit more than that.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Suddenly I was in the middle of a small modernization of my apps: <strong>PawsUnitedKit<\/strong> took shape, older parts were reworked, <code>ObservableObject<\/code> was replaced by <code>@Observable<\/code>, and at some point the decision was on the table to consistently target iOS 18+.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And along the way, I noticed something else\u2014how much programming has changed, and how much my own way of programming has changed too.<\/p>\n\n\n\n<h2 id=\"paws-united-kit-und-der-wechsel-zu-observable\" class=\"wp-block-heading\">PawsUnitedKit and the Switch to @Observable<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">My initial goal was simply to make code I use across multiple projects available centrally in my own PawsUnitedKit. But while extracting and cleaning things up, I kept noticing more and more opportunities for improvement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Among other things, I migrated my apps from ObservableObject to the modern <strong>Observation framework<\/strong> with <code>@Observable<\/code>. <code>ObservableObject<\/code> was long the standard way to make data changes visible in a SwiftUI app. With <code>@Observable<\/code>, things become leaner and simpler \u2014 but the switch is rarely just a single line of code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once I changed something in one place, the change rippled through multiple parts of PawsUnitedKit and eventually into the apps themselves. Along the way, I also had to take a closer look at <code>@MainActor<\/code>\u2014that is, which parts of my app need to run on the execution context reserved for the user interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That forced me to look more carefully. And that&#8217;s exactly what I enjoy about refactoring like this (even if it sometimes takes time and nerves&#8230;): a seemingly small technical change makes me stop and ask what else around it could be improved or simplified.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the very first draft, my apps still targeted older iOS versions. For various reasons, I then decided to focus on iOS 18+. That suddenly made a number of modern features much more compelling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What started as a small cleanup ended up setting quite a few things in motion.<\/p>\n\n\n\n<h2 id=\"wie-ich-das-programmieren-gelernt-habe\" class=\"wp-block-heading\">How I Learned to Program<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When I think about how I program today, I sometimes have to smile. I started out with <strong>Assembler<\/strong> at university\u2014does anyone still remember that? \ud83d\ude09 That&#8217;s now over 20 years ago\u2014and yes, there was quite a lot I had to relearn and brush up on. But I&#8217;ve always enjoyed it, so no drama. \ud83d\ude04<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Other languages followed\u2014C, C++, Java. I also gained experience with Verilog, which was something quite different again: while conventional programming languages execute instructions essentially one after another (serially), Verilog describes hardware where many things happen simultaneously (in parallel).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Back then, you had to know very precisely what was happening under the hood. Memory wasn&#8217;t something the system would just take care of. You had to think carefully about what was in memory, how data was being processed, and what your code was actually doing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The compiler was also far less helpful than it is today. Tracking down bugs could be tedious, and when you got stuck, there was really only one thing to do: reach for the manual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You looked things up, tried something, looked things up again, and slowly worked your way through.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI, in any meaningful sense, simply didn&#8217;t exist yet.<\/p>\n\n\n\n<h2 id=\"was-sich-seither-verandert-hat\" class=\"wp-block-heading\">What Has Changed Since Then<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Today, programming is a completely different experience.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The compiler helps me enormously\u2014catching errors and surfacing problems early. Modern programming languages and frameworks take care of many things I used to have to handle myself. Memory management, for instance, is something I rarely have to think about anymore.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And then, of course, there&#8217;s AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I now develop my iOS apps with modern tools and with the support of AI. I no longer have to search through manuals for every question or wade through countless forum posts. I can ask the AI, get a suggested approach, and then build on it from there.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That changes the entire development process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But a good answer isn&#8217;t automatically a correct answer.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"650\" src=\"https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Programmierumgebung-heute-1024x650.jpeg\" alt=\"Screenshot einer Programmierumgebung heute\" class=\"wp-image-9623\" title=\"\" srcset=\"https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Programmierumgebung-heute-1024x650.jpeg 1024w, https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Programmierumgebung-heute-300x190.jpeg 300w, https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Programmierumgebung-heute-768x487.jpeg 768w, https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Programmierumgebung-heute-1536x974.jpeg 1536w, https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Programmierumgebung-heute.jpeg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Today&#8217;s programming environment\u2014screenshot<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 id=\"trotzdem-verstehen-wollen\" class=\"wp-block-heading\">Still Wanting to Understand<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I think it still matters to actually understand what you&#8217;re programming.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even when an AI tool provides a solution, I look at it and try to make sense of it rather than just copying it over. Why does this code work? What does it actually do? Is there perhaps a better or simpler solution\u2014which, honestly, is sometimes the case?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Working on PawsUnitedKit in particular has shown me how important that understanding is. When I&#8217;m merging code from multiple projects or modernizing an existing structure, it&#8217;s not enough for something to simply work. I want to understand <strong>why<\/strong> it works\u2014and what effect a change in one place might have somewhere else.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s the only way I can improve\u2014and actually learn something.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a way, my role as a developer has shifted too. In the past, I had to know much more myself and implement much more myself. Today, I can hand off part of that work to tools and AI. But that means I need to be all the better at judging <strong>what<\/strong> those tools deliver\u2014and <strong>whether<\/strong> the result actually makes sense.<\/p>\n\n\n\n<h2 id=\"vom-assembler-zur-ki\" class=\"wp-block-heading\">From Assembler to AI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Looking back at the journey, the path is really quite remarkable:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Assembler \u2192 C \u2192 C++ \u2192 Java \u2192 Swift\/SwiftUI \u2192 AI<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From code where you had to think carefully about memory and hardware, to tools that can today help me build entire applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s not that one simply replaced the other\u2014rather, the new builds on the old.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The experience from those earlier years still helps me today: understanding code, recognizing connections, and knowing how to ask the AI the right questions in the first place. At the same time, modern languages, frameworks, and AI open up possibilities I couldn&#8217;t have dreamed of back then.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>For me, both belong together\u2014the experience of the past and the possibilities of today.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And perhaps that&#8217;s the most remarkable shift in programming: it&#8217;s not just the languages and tools that have changed\u2014it&#8217;s the way we work with them.<\/p>\n\n\n\n<h2 id=\"meine-apps\" class=\"wp-block-heading\">My Apps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">All of this has led to several projects of my own. If you&#8217;d like to see what I&#8217;ve made, you&#8217;re welcome to check out my apps <strong><a href=\"https:\/\/apps.apple.com\/us\/app\/pawsunited-go\/id6751143094\" target=\"_blank\" rel=\"noreferrer noopener\">PawsUnited Go!<\/a><\/strong> and <strong><a href=\"https:\/\/apps.apple.com\/us\/app\/jot-diary\/id6758016040\" target=\"_blank\" rel=\"noreferrer noopener\">Jot Diary<\/a><\/strong> on the App Store.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And the next project is already underway: <strong>PawsUnited Walk<\/strong> is meant to be all about walks with your dog\u2014a kind of on-the-go diary. More on that later. \ud83d\ude09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you program yourself, or if you&#8217;re curious about how my apps come together, I&#8217;d love to hear from you.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/pawsunited.ch\/en\/kontakt\/\" style=\"border-top-left-radius:300px;border-top-right-radius:300px;border-bottom-left-radius:300px;border-bottom-right-radius:300px\">I\u2019m happy to receive a message<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center has-nv-c-2-color has-text-color has-link-color has-medium-font-size wp-elements-b216997ca027493a59f056cd6197a9a1 wp-block-paragraph\">\u25cf<\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">And finally, a little nostalgia \ud83d\ude42\u2014my Crazy Bike. A self-driving model motorcycle that had to navigate a course using only sensors. There was quite a bit of programming involved there too, mostly on an Atmel ATmega\u2014which exact one, I honestly can&#8217;t remember anymore. \ud83d\ude04<\/p>\n\n\n<div class=\"wp-block-image is-style-rounded\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"427\" src=\"https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Crazy-Bike.jpeg\" alt=\"\" class=\"wp-image-9615\" style=\"width:640px;height:auto\" title=\"\" srcset=\"https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Crazy-Bike.jpeg 640w, https:\/\/pawsunited.ch\/wp-content\/uploads\/2026\/08\/Crazy-Bike-300x200.jpeg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Crazy Bike\u2014university days in Muttenz<\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-group is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-b0ffac9c wp-block-group-is-layout-flex\">\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Some time ago, I started developing a new app: PawsUnited Walk. My original plan was to tidy things up a bit and move code I use across multiple projects into a dedicated framework. But it turned out to be quite a bit more than that. Suddenly I was in the middle of a small modernization&hellip;&nbsp;<a href=\"https:\/\/pawsunited.ch\/en\/vom-assembler-zur-ki-programmieren\/\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">From Assembler to AI \u2013 How Programming Has Changed for Me<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9614,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","pgc_sgb_lightbox_settings":"","_themeisle_gutenberg_block_has_review":false,"iawp_total_views":37,"footnotes":""},"categories":[39],"tags":[],"class_list":["post-9606","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software"],"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/posts\/9606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/comments?post=9606"}],"version-history":[{"count":3,"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/posts\/9606\/revisions"}],"predecessor-version":[{"id":9638,"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/posts\/9606\/revisions\/9638"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/media\/9614"}],"wp:attachment":[{"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/media?parent=9606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/categories?post=9606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pawsunited.ch\/en\/wp-json\/wp\/v2\/tags?post=9606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}