<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tips | Learn C Games Programming Blog</title>
	<atom:link href="https://learncgames.com/category/tips/feed/" rel="self" type="application/rss+xml" />
	<link>https://learncgames.com</link>
	<description>A blog about C, programming games and my ebook(s).</description>
	<lastBuildDate>Thu, 29 Jan 2026 13:59:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://learncgames.com/wp-content/uploads/2020/03/cropped-favicon-32x32.png</url>
	<title>Tips | Learn C Games Programming Blog</title>
	<link>https://learncgames.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">181446779</site>	<item>
		<title>Swtching Flutter from snap to native</title>
		<link>https://learncgames.com/swtching-flutter-from-snap-to-native/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=swtching-flutter-from-snap-to-native</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Thu, 29 Jan 2026 13:56:56 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[install]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=3501</guid>

					<description><![CDATA[<p>A recent update saw Flutter compiles on Ubuntu broken due to an issue with lld. This was only on Flutter installed under snap. To fix it, I removed Flutter and reinstalled it from Git. There were a few issues after that so I&#8217;ve documented them here. This is the process. First remove Flutter sudo snap [&#8230;]</p>
The post <a href="https://learncgames.com/swtching-flutter-from-snap-to-native/">Swtching Flutter from snap to native</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" class="alignleft size-full wp-image-3506" src="https://learncgames.com/wp-content/uploads/2026/01/reinstallingFlutter.png" alt="Reinstalling Flutter on Ubuntu" width="600" height="600" srcset="https://learncgames.com/wp-content/uploads/2026/01/reinstallingFlutter.png 600w, https://learncgames.com/wp-content/uploads/2026/01/reinstallingFlutter-300x300.png 300w, https://learncgames.com/wp-content/uploads/2026/01/reinstallingFlutter-150x150.png 150w, https://learncgames.com/wp-content/uploads/2026/01/reinstallingFlutter-250x250.png 250w" sizes="(max-width: 600px) 100vw, 600px" />A recent update saw Flutter compiles on Ubuntu broken due to an issue with lld. This was only on Flutter installed under snap. To fix it, I removed Flutter and reinstalled it from Git. There were a few issues after that so I&#8217;ve documented them here. This is the process.</p>
<p>First remove Flutter</p>
<pre><span class="token">sudo</span> snap remove flutter</pre>
<p>Then install it manually</p>
<p>cd ~</p>
<pre><span class="token">git</span> clone https://github.com/flutter/flutter.git -b stable</pre>
<p>Now modify .bashrc  (I prefer gedit but nano will do)</p>
<pre>nano ~/.bashrc</pre>
<p>Add this line at the end:</p>
<pre>export PATH="$PATH:$HOME/flutter/bin"</pre>
<p>Save it then do</p>
<pre>source ~/.bashrc</pre>
<p>Test the installation</p>
<pre>flutter doctor</pre>
<p>There may be some missing bits but this should fix them</p>
<pre>sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev</pre>
<p>and repeat flutter doctor until things are ok.</p>
<h3>Now I still had some issues</h3>
<p>Flutter doctor told me I had a different Dart installed.</p>
<p>So first remove the old one</p>
<pre><span class="token">sudo</span> snap remove dart</pre>
<p>Check with</p>
<pre><span class="token">which</span> dart</pre>
<p>My configuration still had the wrong dart in it. I searched these</p>
<pre>cat /etc/environment 
cat ~/.profile 
cat ~/.bash_profile 
cat /etc/bash.bashrc 
grep -r "dart" ~/.bashrc ~/.bash_profile ~/.profile /etc/environment /etc/bash.bashrc 2</pre>
<pre>then did</pre>
<pre>echo $PATH</pre>
<p>Which showed no dart references so</p>
<pre>ls -la /usr/bin/dart
which dart
sudo apt remove dart

which dart
dart --version
flutter doctor</pre>
<p>I then found that it was trying to use a snap version of cmake</p>
<pre>cd your_project
flutter clean
rm -rf build/
rm -rf linux/build/</pre>
<p>and removed Cmake cache files</p>
<pre>rm -rf linux/flutter/ephemeral/
rm linux/CMakeCache.txt 2&gt;/dev/null</pre>
<p>Finally I regenerated the build configuration</p>
<pre>flutter pub get
flutter config --enable-linux-desktop
flutter create
</pre>
<p>and all was well and after adding the correct SDK path into the project files, it finally compiled on Linux again. Phew!</p>The post <a href="https://learncgames.com/swtching-flutter-from-snap-to-native/">Swtching Flutter from snap to native</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3501</post-id>	</item>
		<item>
		<title>Linux challenges with the Flutter game</title>
		<link>https://learncgames.com/linux-challenges-with-the-flutter-game/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux-challenges-with-the-flutter-game</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 11:11:59 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Dart]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=3482</guid>

					<description><![CDATA[<p>The architecture of this is all Flutter and Dart running on a Ubuntu Linux box. There are two pure Dart programs- one to create the game setup and one to do the processing. The first is run manually, the second by crontab. Then there&#8217;s the Flutter web app. The Flutter web app has to read [&#8230;]</p>
The post <a href="https://learncgames.com/linux-challenges-with-the-flutter-game/">Linux challenges with the Flutter game</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<figure id="attachment_3483" aria-describedby="caption-attachment-3483" style="width: 500px" class="wp-caption alignleft"><img decoding="async" class="wp-image-3483 size-full" src="https://learncgames.com/wp-content/uploads/2025/12/tuxandFlutter.png" alt="Tux and Flutter having a tussle" width="500" height="273" srcset="https://learncgames.com/wp-content/uploads/2025/12/tuxandFlutter.png 500w, https://learncgames.com/wp-content/uploads/2025/12/tuxandFlutter-300x164.png 300w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption id="caption-attachment-3483" class="wp-caption-text">Generated by Gemini</figcaption></figure>
<p>The architecture of this is all Flutter and Dart running on a Ubuntu Linux box. There are two pure Dart programs- one to create the game setup and one to do the processing. The first is run manually, the second by crontab. Then there&#8217;s the Flutter web app.</p>
<p>The Flutter web app has to read and write files from the file system which of course it can&#8217;t do directly. I&#8217;ve created a backend of sorts using PHP.  There&#8217;s an API; it works but not without issues. If you&#8217;re calling a PHP script from a Flutter app, what is the URL?  It depends.</p>
<p>Say the URL is /file?params where I&#8217;ve modified .htaccess to pass /file urls onto a PHP script.</p>
<p>If I want to test this on the box in a browser I have to call <em>localhost/file?params</em> but in a Dart program running on the box it just calls<em> /file?params</em>.</p>
<p>The next problem is where are the game files stored. The setup program doesn&#8217;t really care. Any location will do so long as it doesn&#8217;t need to run elevated.  But the web app is limited to /var/www/html &#8211; it&#8217;s running under Apache on a linux box. In the end I created a folder under /var/www/game and each game is stored under there. PHP can read mostly anywhere, not just in /var/www/html and this provide a little extra security.</p>
<p>However there&#8217;s the not-so slight issue of permissions. The setup program runs under my login &#8211; call it <em>user</em>. So files are created owned by <em>user</em> <em>user</em>. The web app runs under <em>www-data</em> so to keep things simple, I&#8217;ve set permissions to <em>user:www-data</em> so both can access it. It&#8217;s a bit of a faff.</p>
<p>Here&#8217;s a tip. If you are developing a Flutter web app, develop it on Linux and do development as a Linux app. It&#8217;s far quicker building and launching a Linux app than it is the web app.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>The post <a href="https://learncgames.com/linux-challenges-with-the-flutter-game/">Linux challenges with the Flutter game</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3482</post-id>	</item>
		<item>
		<title>So I found the fix</title>
		<link>https://learncgames.com/so-i-found-the-fix/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=so-i-found-the-fix</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sun, 23 Feb 2025 20:03:51 +0000</pubDate>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SDL]]></category>
		<category><![CDATA[Tips]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=3312</guid>

					<description><![CDATA[<p>Well actually I asked Microsoft&#8217;s CoPilot AI and it sorted it! This is what you need in the dependencies section in cargo.toml [dependencies] sdl2-sys = &#34;*&#34; sdl2 = { version = &#34;0.37&#34;, features = [&#34;image&#34;,&#34;ttf&#34;] } It compiled with no problems after saving that.</p>
The post <a href="https://learncgames.com/so-i-found-the-fix/">So I found the fix</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignleft size-full wp-image-3314" src="https://learncgames.com/wp-content/uploads/2025/02/its-fixed.png" alt="It's fixed text on a technology background" width="752" height="436" srcset="https://learncgames.com/wp-content/uploads/2025/02/its-fixed.png 752w, https://learncgames.com/wp-content/uploads/2025/02/its-fixed-300x174.png 300w" sizes="(max-width: 752px) 100vw, 752px" />Well actually I asked Microsoft&#8217;s CoPilot AI and it sorted it!</p>
<p>This is what you need in the dependencies section in cargo.toml</p>
<pre><code class="language-yaml" data-line="">[dependencies]
sdl2-sys = &quot;*&quot;
sdl2 = { version = &quot;0.37&quot;, features = [&quot;image&quot;,&quot;ttf&quot;] }</code></pre>
<p>It compiled with no problems after saving that.</p>The post <a href="https://learncgames.com/so-i-found-the-fix/">So I found the fix</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3312</post-id>	</item>
		<item>
		<title>Finding popular open source projects with libhunt</title>
		<link>https://learncgames.com/finding-popular-open-source-projects-with-libhunt/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=finding-popular-open-source-projects-with-libhunt</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Wed, 03 Mar 2021 00:00:40 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[search]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=2807</guid>

					<description><![CDATA[<p>I&#8217;m quite keen on meta-sites. Those are sites that don&#8217;t provide information about sites, applications etc. but they provide ways to find it. I suppose another way to describe this would be to say a categorised search engine for open source. A case in question is libhunt.com. It tracks mentions of open-source projects and software [&#8230;]</p>
The post <a href="https://learncgames.com/finding-popular-open-source-projects-with-libhunt/">Finding popular open source projects with libhunt</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:128,&quot;href&quot;:&quot;https:\/\/pixabay.com\/users\/lars_nissen-2780243\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2127704&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:129,&quot;href&quot;:&quot;https:\/\/pixabay.com\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2127704&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260205102120\/https:\/\/pixabay.com\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 12:10:45&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-14 19:22:53&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-18 22:09:15&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-27 11:11:36&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-07 01:19:34&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-12 10:07:08&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-03 02:34:31&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-06 10:26:29&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-09 18:14:47&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-13 02:06:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-16 17:56:01&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-20 01:47:21&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 01:47:21&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:130,&quot;href&quot;:&quot;https:\/\/www.libhunt.com&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260204233555\/https:\/\/www.libhunt.com\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 12:10:49&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-18 22:09:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-26 15:47:20&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-07 01:19:33&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-12 10:07:08&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-03 02:34:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-06 10:26:25&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-09 18:14:50&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-13 02:06:48&quot;,&quot;http_code&quot;:500},{&quot;date&quot;:&quot;2026-04-16 17:55:59&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-20 01:47:24&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 01:47:24&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:131,&quot;href&quot;:&quot;https:\/\/www.libhunt.com\/l\/c&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251113162854\/https:\/\/www.libhunt.com\/l\/c&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 12:10:51&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-14 19:22:54&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-18 22:09:17&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-27 11:11:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-07 01:19:34&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-12 10:07:09&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-03 02:34:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-06 10:26:26&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-09 18:14:48&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-13 02:06:40&quot;,&quot;http_code&quot;:500},{&quot;date&quot;:&quot;2026-04-16 17:56:00&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-20 09:45:51&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 09:45:51&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:132,&quot;href&quot;:&quot;https:\/\/www.libhunt.com\/l\/c\/t\/game&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260206121400\/https:\/\/www.libhunt.com\/l\/c\/t\/game&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 12:54:02&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-18 22:09:15&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-27 11:11:36&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-07 01:19:36&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-12 10:07:09&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-03 02:34:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-06 10:26:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-09 18:14:50&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-13 02:06:37&quot;,&quot;http_code&quot;:500},{&quot;date&quot;:&quot;2026-04-16 17:55:58&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-20 01:47:19&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 01:47:19&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'></div>
<figure id="attachment_2808" aria-describedby="caption-attachment-2808" style="width: 300px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-2808" src="https://learncgames.com/wp-content/uploads/2021/02/telescope-2127704_640-300x210.jpg" alt="Telescope" width="300" height="210" srcset="https://learncgames.com/wp-content/uploads/2021/02/telescope-2127704_640-300x210.jpg 300w, https://learncgames.com/wp-content/uploads/2021/02/telescope-2127704_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-2808" class="wp-caption-text">Image by <a href="https://pixabay.com/users/lars_nissen-2780243/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2127704">Lars_Nissen</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2127704">Pixabay</a></figcaption></figure>
<p>I&#8217;m quite keen on meta-sites. Those are sites that don&#8217;t provide information about sites, applications etc. but they provide ways to find it. I suppose another way to describe this would be to say a categorised search engine for open source.</p>
<p>A case in question is <a title="Link to libhunt.com" href="https://www.libhunt.com/" target="_blank" rel="nofollow noopener">libhunt.com</a>. It tracks mentions of open-source projects and software libraries. So for instance you might want to see the <a title="Link to LibHunt.com searching for C librariues" href="https://www.libhunt.com/l/c" target="_blank" rel="nofollow noopener">most popular C libraries</a> in the last month or even <a title="LInk to LibHunt looking for C Games links" href="https://www.libhunt.com/l/c/t/game" target="_blank" rel="nofollow noopener">games in C</a>,</p>
<p>Of course you aren&#8217;t limited to C or games; there are other open source libraries to look for, or even by the number of GitHub stars.</p>
<p>Libhunt uses the mention of the project on Reddit as it&#8217;s source for finding things. So things can change from day to day or week to week.</p>
<p>&nbsp;</p>The post <a href="https://learncgames.com/finding-popular-open-source-projects-with-libhunt/">Finding popular open source projects with libhunt</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2807</post-id>	</item>
		<item>
		<title>Configuring VS Code for C/C++</title>
		<link>https://learncgames.com/configuring-vs-code-for-c-c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configuring-vs-code-for-c-c</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sun, 13 Dec 2020 00:00:46 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Visual Studio Code]]></category>
		<category><![CDATA[configuring]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=2046</guid>

					<description><![CDATA[<p>Most of the time I&#8217;ve got by configuring VS Code but recently I wasted an hour having managed to completely mess it up. I have a Raspberry Pi version of Asteroids which adds temperature display and game pad support. It&#8217;s a useful way to check when I burn a new SD and install VS Code, [&#8230;]</p>
The post <a href="https://learncgames.com/configuring-vs-code-for-c-c/">Configuring VS Code for C/C++</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-2047" src="https://learncgames.com/wp-content/uploads/2020/12/vscode-300x231.png" alt="Visual Studio Code" width="300" height="231" srcset="https://learncgames.com/wp-content/uploads/2020/12/vscode-300x231.png 300w, https://learncgames.com/wp-content/uploads/2020/12/vscode.png 708w" sizes="auto, (max-width: 300px) 100vw, 300px" />Most of the time I&#8217;ve got by configuring VS Code but recently I wasted an hour having managed to completely mess it up. I have a Raspberry Pi version of Asteroids which adds temperature display and game pad support. It&#8217;s a useful way to check when I burn a new SD and install VS Code, clang, and all the libSDL2-dev codes that everything is there. If it&#8217;s not it won&#8217;t compile.</p>
<p>Only this time because I was doing other stuff I decided to create a Projects folder which contained the Asteroids folder and some other stuff and opened Projects as the Folder.  I copied the hidden .vscode folder into Projects/Asteroids and tried to compile. <strong>Errors. Lots of compile errors.</strong> I repeatedly edited the tasks.json file with altered paths but no joy. I spent an hour trying before closing the Folder and reopening it with Asteroids as the Folder and with the original tasks.json. It compiled perfectly.</p>
<p><strong>So the moral of the tale is</strong> just keep the level of folders down to one when you open the Folder on the files you are compiling. Do not have subfolders.</p>The post <a href="https://learncgames.com/configuring-vs-code-for-c-c/">Configuring VS Code for C/C++</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2046</post-id>	</item>
		<item>
		<title>Tutorial seven on pointers and C strings published</title>
		<link>https://learncgames.com/tutorial-seven-on-pointers-and-c-strings-published/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tutorial-seven-on-pointers-and-c-strings-published</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Mon, 09 Nov 2020 00:00:26 +0000</pubDate>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[overflow]]></category>
		<category><![CDATA[safe]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=1764</guid>

					<description><![CDATA[<p>The tutorials from About.com continue with the 7th one (of about 30) published. This is about C strings which are really just pointers to an array of characters.  Once you understand pointers strings are easy enough to understand. C is not a great programming language for string handling. To do a lot of manipulation is [&#8230;]</p>
The post <a href="https://learncgames.com/tutorial-seven-on-pointers-and-c-strings-published/">Tutorial seven on pointers and C strings published</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:397,&quot;href&quot;:&quot;https:\/\/pixabay.com\/users\/stephennorris-7555778\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3052477&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:398,&quot;href&quot;:&quot;https:\/\/pixabay.com\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3052477&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;}]'></div>
<figure id="attachment_1766" aria-describedby="caption-attachment-1766" style="width: 300px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-1766" src="https://learncgames.com/wp-content/uploads/2020/11/rope-3052477_640-300x200.jpg" alt="A different kind of sea string " width="300" height="200" srcset="https://learncgames.com/wp-content/uploads/2020/11/rope-3052477_640-300x200.jpg 300w, https://learncgames.com/wp-content/uploads/2020/11/rope-3052477_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-1766" class="wp-caption-text">Image by <a href="https://pixabay.com/users/stephennorris-7555778/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3052477">Steve Norris</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3052477">Pixabay</a></figcaption></figure>
<p>The tutorials from About.com continue with <a title="Link to tutorial seven on c strings and pointers" href="https://learncgames.com/tutorial-seven-about-pointers-and-strings/" target="_blank" rel="nofollow noopener noreferrer">the 7th one</a> (<em>of about 30</em>) published. This is about C strings which are really just pointers to an array of characters.  Once you understand pointers strings are easy enough to understand.</p>
<p>C is not a great programming language for string handling. To do a lot of manipulation is tedious and error prone. You&#8217;ll find safe versions of many of the standard functions for things like string copying and appending. The difference between the safe functions and the non-safe functions is that the safe functions include a maximum length.</p>
<p>For example <strong>strcpy()</strong> is used to copy a string. It&#8217;s definition is this:</p>
<pre><code class="language-c" data-line="">char *strcpy(char *dest, const char *src)</code></pre>
<p>That is, it copies a string pointed to by <strong>src </strong>to a string pointed by <strong>dest</strong> and confusing also returns a pointer to dest.  What a waste of a function. It could have returned an int saying how many characters were copied instead. Because it relies on <strong>src</strong> pointing to a string (char *) that terminates with a null (or 0). If the null is missing it can copy a lot more characters and that&#8217;s how buffer overflow bugs happen. So you have strncpy which is defined as this:</p>
<pre><code class="language-c" data-line="">char *strncpy(char *dest, const char *src, size_t n)</code></pre>
<p>The extra parameter is how many characters are to be copied. That way if it goes wrong, it is limited to n.</p>
<p>The picture? That&#8217;s a different kind of sea string&#8230;&lt;groan&gt;</p>The post <a href="https://learncgames.com/tutorial-seven-on-pointers-and-c-strings-published/">Tutorial seven on pointers and C strings published</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1764</post-id>	</item>
		<item>
		<title>How to extract text from an Image</title>
		<link>https://learncgames.com/how-to-extract-text-from-an-image/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-extract-text-from-an-image</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sun, 13 Sep 2020 23:00:21 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[extract text]]></category>
		<category><![CDATA[image]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=1393</guid>

					<description><![CDATA[<p>This is more of a tip, but it can be a useful thing to know. If you look at this photo you&#8217;ll see it contains a bunch of words. Now you could type them in but that&#8217;s a bit tedious. If you have Ms Office then you&#8217;ll have probably have OneNote. Take the image and [&#8230;]</p>
The post <a href="https://learncgames.com/how-to-extract-text-from-an-image/">How to extract text from an Image</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-1394" src="https://learncgames.com/wp-content/uploads/2020/09/IMG_2590-300x225.jpg" alt="Puzzle image with text" width="300" height="225" srcset="https://learncgames.com/wp-content/uploads/2020/09/IMG_2590-300x225.jpg 300w, https://learncgames.com/wp-content/uploads/2020/09/IMG_2590.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" />This is more of a tip, but it can be a useful thing to know. If you look at this photo you&#8217;ll see it contains a bunch of words. Now you could type them in but that&#8217;s a bit tedious.</p>
<p>If you have Ms Office then you&#8217;ll have probably have OneNote. Take the image and paste it into OneNote. Now right click on the image (in OneNote and in the popup menu) you should see <strong>Copy Text from Picture </strong>as the third item in the menu.</p>
<p>Just click that then paste the text in to notepad, a text editor, whatever. There&#8217;s your text.</p>
<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-1395" src="https://learncgames.com/wp-content/uploads/2020/09/onenote-300x223.png" alt="OneNote with popup menu" width="300" height="223" srcset="https://learncgames.com/wp-content/uploads/2020/09/onenote-300x223.png 300w, https://learncgames.com/wp-content/uploads/2020/09/onenote.png 598w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p>Here&#8217;s the text pasted directly from the clipboard. 100% accurate apart from a ! that it found from somewhere near the edge (just after wain)!</p>
<p>Solution to Puzzle 1<br />
ain, alb, albs, als, ani, ard, ards, arid, ars, awn, blah, blain, dhal<br />
dhals, dirl, dirls, drain, draw, drawn, fah, fain, fan, far, fard, tards,<br />
farl, farls, fars, faw, fawn, flan, flaw, flawn, fra, hain, half, halts, han,<br />
hard, hards, harl, harls, harn, harns, haw, hid, ids, infra, inward,<br />
inwards, lah, lain, lar, lard, lards, larn, larns, law, lawin, lawn, nard,<br />
nards, rah, rai, rain, ran, rani, raw, rawn, rid, rids, slain, slaw, wain, !<br />
wald, walds, wan, war, ward, wards, warn, warns, wars, wha, wharf,<br />
wharfs, whid, whids, whir, whirl, whirls, whirs, Win</p>The post <a href="https://learncgames.com/how-to-extract-text-from-an-image/">How to extract text from an Image</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1393</post-id>	</item>
		<item>
		<title>Undefined behaviour in C</title>
		<link>https://learncgames.com/undefined-behaviour-in-c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=undefined-behaviour-in-c</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sat, 12 Sep 2020 23:00:51 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Unexpected behaviour]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=1386</guid>

					<description><![CDATA[<p>One of C&#8217;s not so brilliant features is the range of Undefined Behaviour (UB). Things like using an uninitialised variable or having an int variable overflow don&#8217;t have behaviour defined; thus it is UB and you cannot accurately predict what will happen. Likewise accessing a NULL pointer can cause odd behaviour. It gets more sophisticated [&#8230;]</p>
The post <a href="https://learncgames.com/undefined-behaviour-in-c/">Undefined behaviour in C</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:523,&quot;href&quot;:&quot;https:\/\/pixabay.com\/users\/johnhain-352999\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1820492&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251119080635\/https:\/\/pixabay.com\/users\/johnhain-352999\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 15:46:14&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-17 03:19:51&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-26 15:47:26&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-05 18:13:33&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-11 14:25:57&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-22 06:52:34&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-28 19:31:30&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-02 15:24:43&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-13 23:22:13&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 11:56:04&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-21 06:35:26&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-21 06:35:26&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:524,&quot;href&quot;:&quot;https:\/\/pixabay.com\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1820492&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260205102120\/https:\/\/pixabay.com\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 15:46:16&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-17 03:19:52&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-26 15:47:22&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-05 18:13:31&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-11 14:25:56&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-22 06:52:34&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-28 19:31:31&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-02 15:24:43&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-13 23:22:13&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 11:56:00&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-21 06:35:26&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-21 06:35:26&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:525,&quot;href&quot;:&quot;https:\/\/blog.llvm.org\/posts\/2011-05-13-what-every-c-programmer-should-know&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20201207060546\/https:\/\/blog.llvm.org\/posts\/2011-05-13-what-every-c-programmer-should-know\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 15:46:18&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-02-17 03:19:52&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-05 18:13:32&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-11 14:25:57&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-22 06:52:35&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-28 19:31:31&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-02 15:24:48&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-13 23:22:13&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-19 07:30:21&quot;,&quot;http_code&quot;:404}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-19 07:30:21&quot;,&quot;http_code&quot;:404},&quot;process&quot;:&quot;done&quot;}]'></div>
<figure id="attachment_1387" aria-describedby="caption-attachment-1387" style="width: 300px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-1387" src="https://learncgames.com/wp-content/uploads/2020/09/chaos-1820492_640-300x225.jpg" alt="Unexpected" width="300" height="225" srcset="https://learncgames.com/wp-content/uploads/2020/09/chaos-1820492_640-300x225.jpg 300w, https://learncgames.com/wp-content/uploads/2020/09/chaos-1820492_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-1387" class="wp-caption-text">Image by <a href="https://pixabay.com/users/johnhain-352999/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1820492">John Hain</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1820492">Pixabay</a></figcaption></figure>
<p>One of C&#8217;s not so brilliant features is the range of Undefined Behaviour (UB). Things like using an uninitialised variable or having an int variable overflow don&#8217;t have behaviour defined; thus it is UB and you cannot accurately predict what will happen. Likewise accessing a NULL pointer can cause odd behaviour. It gets more sophisticated than that. What if you type cast an int to a float?</p>
<p>The LLVM blog have an interesting set of <a title="Link to LLVM blog on Undefined behaviour in C" href="https://blog.llvm.org/posts/2011-05-13-what-every-c-programmer-should-know/" target="_blank" rel="nofollow noopener noreferrer">posts on UB</a> and it&#8217;s definitely worth reading. I&#8217;ve done a lot of C programming, so I&#8217;m rarely surprised by my programs but its useful to know about these things. In my case, I started with assembler programming and then learnt C++ and C in that order so my perspective has always been to try and understand whats going on deep down.</p>The post <a href="https://learncgames.com/undefined-behaviour-in-c/">Undefined behaviour in C</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1386</post-id>	</item>
		<item>
		<title>Raspberry Pi 4B with 8 GB RAM on sale</title>
		<link>https://learncgames.com/raspberry-pi-4b-with-8-gb-ram-on-sale/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=raspberry-pi-4b-with-8-gb-ram-on-sale</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Tue, 02 Jun 2020 23:00:58 +0000</pubDate>
				<category><![CDATA[64-bit]]></category>
		<category><![CDATA[raspberry-pi]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[RAM]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=725</guid>

					<description><![CDATA[<p>I won&#8217;t be buying one for the moment but I mention it for another reason. 4 GB is the maximum RAM that a 32-bit OS can use, and on the PI like on Windows it&#8217;s actually 3 GB. To be fair you can have two processes each with 3 GB on the 8 GB Pi. [&#8230;]</p>
The post <a href="https://learncgames.com/raspberry-pi-4b-with-8-gb-ram-on-sale/">Raspberry Pi 4B with 8 GB RAM on sale</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:559,&quot;href&quot;:&quot;https:\/\/pixabay.com\/users\/BenjaminNelan-268798\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1719218&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251010065837\/https:\/\/pixabay.com\/users\/benjaminnelan-268798\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 16:07:51&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-09 17:00:23&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-12 22:35:49&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-17 02:13:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-26 08:26:38&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-01 15:07:29&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-06 04:00:27&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-11 15:32:45&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-17 11:47:16&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-24 15:45:53&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-30 19:12:33&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-04 03:02:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-07 07:19:48&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-12 04:23:18&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 05:32:10&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-20 13:11:15&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 13:11:15&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:560,&quot;href&quot;:&quot;https:\/\/pixabay.com\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1719218&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260205102120\/https:\/\/pixabay.com\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 16:07:53&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-09 17:00:23&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-17 02:13:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-26 08:26:38&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-01 15:07:29&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-06 04:00:27&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-11 15:32:45&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-17 11:47:16&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-24 15:45:53&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-30 19:12:33&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-04 03:02:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-07 07:19:49&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-12 04:23:19&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 05:32:09&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-20 13:11:13&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 13:11:13&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:681,&quot;href&quot;:&quot;https:\/\/www.raspberrypi.org\/blog\/8gb-raspberry-pi-4-on-sale-now-at-75&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20211005232152\/https:\/\/www.raspberrypi.org\/blog\/8gb-raspberry-pi-4-on-sale-now-at-75\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:34:24&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-02-10 06:26:36&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-17 02:13:15&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-21 19:04:09&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-26 08:26:40&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-01 15:07:27&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-06 04:00:29&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-11 15:32:45&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-17 11:47:17&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-24 08:20:45&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-30 19:12:34&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-04 03:02:37&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-07 07:19:46&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-12 04:23:20&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-15 19:34:33&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-20 11:09:48&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 11:09:48&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:697,&quot;href&quot;:&quot;https:\/\/www.raspberrypi.org\/forums\/viewtopic.php?f=117&amp;t=275370&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;https:\/\/forums.raspberrypi.com\/viewtopic.php?f=117&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:698,&quot;href&quot;:&quot;https:\/\/hackaday.com\/2020\/01\/28\/raspberry-pi-4-benchmarks-32-vs-64-bits&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251209044155\/https:\/\/hackaday.com\/2020\/01\/28\/raspberry-pi-4-benchmarks-32-vs-64-bits\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:35:25&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-17 02:13:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-26 08:26:39&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-01 15:07:30&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-06 04:00:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-11 15:32:45&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-17 11:47:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-24 15:45:54&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-30 19:12:33&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-04 03:02:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-07 07:19:48&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-04-12 04:23:19&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-17 05:32:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-20 13:11:14&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 13:11:14&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:699,&quot;href&quot;:&quot;https:\/\/dietpi.com\/phpbb\/viewtopic.php?p=23153&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20210119062023\/https:\/\/dietpi.com\/phpbb\/viewtopic.php?p=23153&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:35:30&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-10 06:26:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-17 02:13:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-26 08:26:41&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-01 15:07:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-06 04:00:30&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-11 15:32:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-17 11:47:18&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-24 15:45:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-30 19:12:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-04 03:02:39&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-09 23:05:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-14 02:53:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-17 11:55:57&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-20 13:11:17&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 13:11:17&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'></div>
<figure id="attachment_638" aria-describedby="caption-attachment-638" style="width: 300px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-638" src="https://learncgames.com/wp-content/uploads/2020/05/raspberry-pi-1719218_640-300x175.jpg" alt="Raspberry-Pi" width="300" height="175" srcset="https://learncgames.com/wp-content/uploads/2020/05/raspberry-pi-1719218_640-300x175.jpg 300w, https://learncgames.com/wp-content/uploads/2020/05/raspberry-pi-1719218_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-638" class="wp-caption-text">Image by <a href="https://pixabay.com/users/BenjaminNelan-268798/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1719218">Benjamin Nelan</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1719218">Pixabay</a></figcaption></figure>
<p>I won&#8217;t be buying one for the moment but I mention it for another reason. 4 GB is the maximum RAM that a 32-bit OS can use, and on the PI like on Windows it&#8217;s actually 3 GB. To be fair you can have two processes each with 3 GB on the 8 GB Pi.</p>
<p>The <a title="Link to RaspberryPi announcement about 8GB Pi" href="https://www.raspberrypi.org/blog/8gb-raspberry-pi-4-on-sale-now-at-75/" target="_blank" rel="nofollow noopener noreferrer">announcement</a> did mention that a beta 64-bit Raspbian OS is available for download and it&#8217;s <a title="Link to 64-bit Raspberry Pi OS (beta)" href="https://www.raspberrypi.org/forums/viewtopic.php?f=117&amp;t=275370" target="_blank" rel="noopener noreferrer">here</a>. <a title="Link to 32-bit vs 64-bit speed comparison" href="https://hackaday.com/2020/01/28/raspberry-pi-4-benchmarks-32-vs-64-bits/" target="_blank" rel="noopener noreferrer">This article</a> shows that the 64-bit Os they tested is faster on the Pi than 32-bit.  This <a title="Link to DietPi forum on enabling 64-bit" href="https://dietpi.com/phpbb/viewtopic.php?p=23153" target="_blank" rel="nofollow noopener noreferrer">link</a> to the DietPi forum tells you how to boot dietpi into 64-bit.</p>
<p>It&#8217;s to be hoped that 64-bit ARM development software will become available. Clang and gcc should be but I&#8217;m thinking of the code.headmelted.com version of Visual Studio Code.</p>
<p>As always if you are buying a Raspberry Pi 4B, I strongly suggest you get a case with a fan. They are not expensive and do make a difference. Despite running the Asteroids game, which is pretty intense, I have never got my 4B temperature above 51C. THat said I&#8217;ve ordered a touchscreen with a case for a 4B on the back and it doesn&#8217;t seem to take a fan. So it will be interesting to see what its like fanless. More on that when the touchscreen arrives.</p>
<p>&nbsp;</p>The post <a href="https://learncgames.com/raspberry-pi-4b-with-8-gb-ram-on-sale/">Raspberry Pi 4B with 8 GB RAM on sale</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">725</post-id>	</item>
		<item>
		<title>On apt vs apt-get</title>
		<link>https://learncgames.com/on-apt-vs-apt-get/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=on-apt-vs-apt-get</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Tue, 26 May 2020 23:00:21 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[apt-get]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=682</guid>

					<description><![CDATA[<p>This is the command you use to update your system, fetch and install software. Some people use apt-get, others plain apt and the two appear interchangeable but they are NOT the same. As it&#8217;s making a change to the system, you almost always have to run it via sudo. They are different? Well yes. Try [&#8230;]</p>
The post <a href="https://learncgames.com/on-apt-vs-apt-get/">On apt vs apt-get</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:708,&quot;href&quot;:&quot;https:\/\/pixabay.com\/users\/clarkdonald413-9744435\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4259595&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251126233050\/https:\/\/pixabay.com\/users\/clarkdonald413-9744435\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:44:23&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-14 12:33:02&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-24 06:29:13&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-27 11:11:37&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-05 01:30:33&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-10 06:30:12&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-14 15:02:23&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-21 22:50:02&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-26 08:44:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-30 19:12:33&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-07 07:19:47&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-11 07:55:23&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 05:32:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-20 13:11:14&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 13:11:14&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:709,&quot;href&quot;:&quot;https:\/\/pixabay.com\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4259595&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260205102120\/https:\/\/pixabay.com\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:44:24&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 06:26:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-14 12:33:02&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-24 06:29:12&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-27 11:11:37&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-05 01:30:35&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-10 06:30:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-14 15:02:21&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-21 22:50:01&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-26 08:44:13&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-30 19:12:34&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-07 07:19:46&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-11 07:55:23&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 05:32:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-20 13:11:13&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 13:11:13&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:710,&quot;href&quot;:&quot;https:\/\/itsfoss.com\/apt-vs-apt-get-difference&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251121052111\/https:\/\/itsfoss.com\/apt-vs-apt-get-difference\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:44:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-10 06:26:36&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-14 12:33:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-24 06:29:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-27 11:11:39&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-05 01:30:33&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-10 06:30:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-14 15:02:22&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-18 05:33:20&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-21 22:50:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-26 08:44:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-30 19:12:33&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-07 07:19:50&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-11 07:55:24&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-17 05:32:10&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-20 13:11:13&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 13:11:13&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'></div>
<figure id="attachment_687" aria-describedby="caption-attachment-687" style="width: 270px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-687" src="https://learncgames.com/wp-content/uploads/2020/05/linux-4259595_640-270x300.jpg" alt="Linux" width="270" height="300" srcset="https://learncgames.com/wp-content/uploads/2020/05/linux-4259595_640-270x300.jpg 270w, https://learncgames.com/wp-content/uploads/2020/05/linux-4259595_640.jpg 576w" sizes="auto, (max-width: 270px) 100vw, 270px" /><figcaption id="caption-attachment-687" class="wp-caption-text">Image by <a href="https://pixabay.com/users/clarkdonald413-9744435/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4259595">Donald Clark</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4259595">Pixabay</a></figcaption></figure>
<p>This is the command you use to update your system, fetch and install software. Some people use <strong>apt-get</strong>, others plain <strong>apt</strong> and the two appear interchangeable but they are NOT the same. As it&#8217;s making a change to the system, you almost always have to run it via sudo.</p>
<p>They are different?</p>
<p>Well yes. Try these.</p>
<pre>apt --help

apt-get --help</pre>
<p>Those give different help messages. And as for these:</p>
<pre>apt check

apt-get check</pre>
<p>It&#8217;s curious that apt-get check works, but apt check gives an invalid operation! I&#8217;m not sure why they are so similar yet subtly different. If anyone knows, drop me a line.</p>
<p>Having created this post, I subsequently did find out the differences- explained on <a href="https://itsfoss.com/apt-vs-apt-get-difference/" target="_blank" rel="noopener noreferrer">this page</a>. The simplified version is the apt is a simpler subset and also shows a progress bar when you do <strong>sudo apt upgrade</strong>. Try <strong>sudo apt-get upgrade</strong> next time to see it without the progress bar!</p>
<p>&nbsp;</p>The post <a href="https://learncgames.com/on-apt-vs-apt-get/">On apt vs apt-get</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">682</post-id>	</item>
	</channel>
</rss>
