<?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>Forem: apchapcomputing</title>
    <description>The latest articles on Forem by apchapcomputing (@apchapcomputing).</description>
    <link>https://forem.com/apchapcomputing</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%2F1337131%2Fe6722220-e0dd-4659-a12c-54374530a2ee.jpeg</url>
      <title>Forem: apchapcomputing</title>
      <link>https://forem.com/apchapcomputing</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/apchapcomputing"/>
    <language>en</language>
    <item>
      <title>Who is going to make Vision Pro apps with Unity?</title>
      <dc:creator>apchapcomputing</dc:creator>
      <pubDate>Fri, 19 Apr 2024 13:45:21 +0000</pubDate>
      <link>https://forem.com/apchapcomputing/who-is-going-to-make-vision-pro-apps-with-unity-23mh</link>
      <guid>https://forem.com/apchapcomputing/who-is-going-to-make-vision-pro-apps-with-unity-23mh</guid>
      <description>&lt;p&gt;I fear for the VisionOS developer ecosystem.&lt;/p&gt;

&lt;p&gt;The Apple Vision Pro relies on new immersive apps for its success.&lt;/p&gt;

&lt;p&gt;But Apple partners with Unity, so developers access VisionOS tools directly within Unity.&lt;/p&gt;

&lt;p&gt;This is a big deal to me because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Developers hate Unity.&lt;/strong&gt; Unity raised prices to force developers pay per game install (even retroactively). Due to intense backlash, Unity walked back this change. Still, many game devs swear to abandon the game engine for all new development.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You'd think Apple would partner with the other big game engine, Unreal, to keep developers happy.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Epic makes Unreal (and Fortnite). &lt;strong&gt;Epic and Apple are NOT friends.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Epic and Apple have been feuding in lawsuits since 2020. Epic doesn't want to pay Apple's 30% platform fee for every transaction on Fortnite mobile. Epic thinks Apple is a monopoly while outright ignoring Apple's terms of service.&lt;/p&gt;

&lt;p&gt;Epic's animosity towards Apple puts Apple in a tough spot.&lt;/p&gt;

&lt;p&gt;Apple is not going to give up the 30% platform fee to Epic. It'd completely break their revenue share from all iOS apps.&lt;/p&gt;

&lt;p&gt;Instead Apple teams up with Unity, who the entire gaming community despises.&lt;/p&gt;

&lt;p&gt;I don't see game developers willingly working with Unity after the stunt the company pulled.&lt;/p&gt;

&lt;p&gt;I have serious questions about the development ecosystem for VisionOS and VR.&lt;/p&gt;

&lt;p&gt;Apple Vision Pro was cool, but it's nothing without more apps. It's a platform. It needs developers to bring it to life.&lt;/p&gt;

&lt;p&gt;Apple does incentivize new development if it's asking developers to work with Unity.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>unity3d</category>
    </item>
    <item>
      <title>The best SWEs need SCA</title>
      <dc:creator>apchapcomputing</dc:creator>
      <pubDate>Tue, 16 Apr 2024 02:35:35 +0000</pubDate>
      <link>https://forem.com/apchapcomputing/the-best-swes-need-sca-87k</link>
      <guid>https://forem.com/apchapcomputing/the-best-swes-need-sca-87k</guid>
      <description>&lt;p&gt;The best developers work smarter, not harder. They are lazy.&lt;/p&gt;

&lt;p&gt;They don't build a tool from scratch when it already exists. They don't duplicate coding efforts.&lt;/p&gt;

&lt;p&gt;Instead, the best software engineers use third-party packages, libraries, frameworks, and tools.&lt;/p&gt;

&lt;p&gt;Yet, they don't blindly trust these third-party tools. Someone else wrote it. Something could be wrong with it. Open-source doesn't mean secure--consider the log4j vulnerability. The best engineers double-check the open-source tool is secure and maintained before they develop and deploy their app.&lt;/p&gt;

&lt;p&gt;How do they know if the open-source package they want to use is secure? They use a SCA (software composition analysis) tool to check. SCA is an automated way to ensure any code you use that someone else wrote is okay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's cook
&lt;/h2&gt;

&lt;p&gt;Imagine you are a chef at a restaurant.&lt;/p&gt;

&lt;p&gt;You need to know what ingredients to order, where they come from, and if they are safe to eat. Also, you can't rip off all the recipes from the last restaurant you worked at.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;Contaminated ingredients make people sick. Although I don't know anyone who actually got salmonella from eating bad eggs.&lt;/p&gt;

&lt;p&gt;Software can also have contamination--weaknesses, vulnerabilities. A misconfigured network. A direct insert into the database from a user form.&lt;/p&gt;

&lt;h3&gt;
  
  
  Licenses
&lt;/h3&gt;

&lt;p&gt;Upon writing I discovered you can't copyright a recipe. But if you opened a restaurant and took all the recipes from the last place you worked, your boss could sue you. You infringed on trade secrets. You don't have permission to cook their food.&lt;/p&gt;

&lt;p&gt;You must also make sure you have the proper license to use the open-source tool. Sometimes open-source tools are free for individuals but an expense for enterprises. Open-source maintainers deserve to eat too.&lt;/p&gt;

&lt;h3&gt;
  
  
  Outdated
&lt;/h3&gt;

&lt;p&gt;Ingredients rot. Bananas go brown. Avocados get squishy.&lt;/p&gt;

&lt;p&gt;Software can also become obsolete. The people who developed the tool no longer work on it or maintain it. They have other priorities.&lt;/p&gt;

&lt;p&gt;Unmaintained dependencies makes it harder for you to maintain your own app. You never know what introduces a breaking change. What seems like a small upgrades breaks the whole app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shift Left
&lt;/h2&gt;

&lt;p&gt;So you've heard of DevOps. Developers are taking more responsibility for how their code operates in production.&lt;/p&gt;

&lt;p&gt;Developers secure their applications as they write code by using only secure tools. Why wait until production to find out your application has a vulnerability?&lt;/p&gt;

&lt;p&gt;Automated security tooling, such as SCA, enables developers to address security concerns sooner. Some tools include Black Duck by Synopsis and Syft.&lt;/p&gt;

&lt;p&gt;SCA tools identify known vulnerabilities in the tools you use. It even suggests which version to upgrade your insecure package to.&lt;/p&gt;

&lt;h2&gt;
  
  
  CVE
&lt;/h2&gt;

&lt;p&gt;CVEs are common vulnerabilities and exposures. It's a huge list of known vulnerabilities that the SCA tool checks your dependencies against.&lt;/p&gt;

&lt;h2&gt;
  
  
  That's all, folks
&lt;/h2&gt;

&lt;p&gt;Completing a SCA scan is common in massive enterprises to ensure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The company stays compliant with their licenses&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The tools used are actively maintained&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Developers don't introduce known vulnerabilities into a production app&lt;/p&gt;

&lt;p&gt;Bad actors check for these to exploit&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are using code someone else wrote, you should scan it.&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>opensource</category>
      <category>learning</category>
    </item>
    <item>
      <title>What is a search problem?</title>
      <dc:creator>apchapcomputing</dc:creator>
      <pubDate>Wed, 10 Apr 2024 13:14:29 +0000</pubDate>
      <link>https://forem.com/apchapcomputing/what-is-a-search-problem-aco</link>
      <guid>https://forem.com/apchapcomputing/what-is-a-search-problem-aco</guid>
      <description>&lt;p&gt;Bad news! Within the last 2 days, someone stole your bike.&lt;/p&gt;

&lt;p&gt;You want to find out when.&lt;/p&gt;

&lt;p&gt;If you can find the timestamp, you can identify the thief (and maybe the police can arrest them). However, there are 2 days worth of CCTV film to watch to pinpoint the time of the theft. &lt;sup id="fnref1"&gt;1&lt;/sup&gt; &lt;sup id="fnref2"&gt;2&lt;/sup&gt; &lt;/p&gt;

&lt;p&gt;That's your search problem -- you need to find 1 thing in an ocean of data.&lt;/p&gt;

&lt;p&gt;Instead of watching every minute of CCTV recording, you use a search algorithm to find the time the thief struck. &lt;/p&gt;

&lt;p&gt;You pull up the halfway point in the recording. Is the bike still there? Was it stolen yet?&lt;/p&gt;

&lt;p&gt;No, your bike is gone.&lt;/p&gt;

&lt;p&gt;Now you know that your bike was stolen within the first day of CCTV footage. There is no point in looking for the thief in the second half of the recording. The theft already happened. The thief isn't coming back.&lt;/p&gt;

&lt;p&gt;In one simple check, you halved the amount of information we had to search through. You started with 2 days (48 hours) of film, and now know you only need to look through the first 24 hours.&lt;/p&gt;

&lt;p&gt;Let's repeat that search technique.&lt;/p&gt;

&lt;p&gt;You know the bike was stolen in the first 24 hours of the recording. You jump to the 12 hour mark in the recording. The bike is where you left it. The theft hadn't occurred yet.&lt;/p&gt;

&lt;p&gt;The thief stole your bike between the 12th and 24th hour in the CCTV footage. &lt;/p&gt;

&lt;p&gt;In 2 steps, you quartered the amount of time you had to search. You repeatedly check the halfway point in the possible period of the theft. Quickly, you discover when the thief stole your bike.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqhfjmfvhc3cdlmfz545.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqhfjmfvhc3cdlmfz545.png" alt="visual of how the search states halves with each step" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, you see the binary search algorithm in action to crack the search problem.&lt;/p&gt;

&lt;p&gt;Here's what you need to know to address a search problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;set of states&lt;/li&gt;
&lt;li&gt;the start state&lt;/li&gt;
&lt;li&gt;the goal state&lt;/li&gt;
&lt;li&gt;how to get to the next state (a function)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When searching for your bike, you know the bike could either be:&lt;br&gt;
1) where you left it&lt;br&gt;
2) actively being stolen&lt;br&gt;
3) missing&lt;br&gt;
You are starting with your bike missing and what to find the start, the time, when the thief stole your bike. You use the binary search algorithm to move through the film recording to find a change in the bike's state.&lt;/p&gt;

&lt;p&gt;Search problems are unique because you often have heaps of information, but don't know how to sift through it.&lt;/p&gt;

&lt;p&gt;You know all the possible states you could end up in. You know which of those possible states you want. The problem is you don't know how to get there. &lt;/p&gt;

&lt;p&gt;What steps should you take? How do you pick what step is best when you have many options?&lt;/p&gt;

&lt;p&gt;In many problems, you might not know what end state you desire? You don't know what you are pursuing. The challenge here instead is knowing what path to take.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simply: a search problem is how to find Y in X &lt;sup id="fnref3"&gt;3&lt;/sup&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Other interesting examples of search problems:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;six degrees of separation&lt;/code&gt;: everyone human on this planet is 6 or fewer social connections away from any other person on the planet&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wikipedia game&lt;/code&gt;: how can we get from one wikipedia page to another seemingly unrelated page in as few steps as possible?

&lt;ul&gt;
&lt;li&gt;ex: if you start at Obi-Wan Kenobi's page, how many links do you need to click to get to Search Problem?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Obi-Wan_Kenobi"&gt;Obi Wan Kenobi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Computer-generated_imagery"&gt;Computer-generated imagery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Algorithm"&gt;Algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Optimization_problem"&gt;Optimization problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Search_problem"&gt;Search problem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Resources &amp;amp; References
&lt;/h2&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://x.com/AlecStapp/status/1728953538301345889?s=20"&gt;tweet about bike theft&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://www.iflscience.com/computer-scientist-attempts-to-get-the-police-to-find-his-stolen-bike-using-math-67260"&gt;article about bike theft&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Search_problem"&gt;wikipedia&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>algorithms</category>
      <category>computerscience</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
