<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Michael Banzon</title><link>https://michaelbanzon.com/</link><description>Recent content on Michael Banzon</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 10 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://michaelbanzon.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Kicking Off My Indie Game Dev Journey with Godot</title><link>https://michaelbanzon.com/blogposts/starting-game-development/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/starting-game-development/</guid><description>&lt;p&gt;I&amp;rsquo;ve always dreamed of creating my own video game — and now I&amp;rsquo;m finally doing it. This blog will follow my journey from zero to (hopefully) hero in the world of game development.&lt;/p&gt;
&lt;p&gt;While I have a decent background in software development, game dev is a completely new territory for me. After some research and lots of recommendations, I’ve decided to go with the Godot engine. It’s open-source, growing in popularity, and supported by a strong community — which makes it a great starting point.&lt;/p&gt;</description></item><item><title>So… I made this app!</title><link>https://michaelbanzon.com/blogposts/i-made-this-app/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/i-made-this-app/</guid><description>&lt;p&gt;In a single crazy evening, half vibe coding, half annoyed by the need, I made an app.&lt;/p&gt;
&lt;h2 id="what-is-it"&gt;What is it?&lt;/h2&gt;
&lt;p&gt;The app is for making a slideshow of images.&lt;/p&gt;
&lt;p&gt;Plain and simple.&lt;/p&gt;
&lt;p&gt;You load the page, you drag images and folders of images to the field on the screen, you click “Start” and then you watch your beautiful images.&lt;/p&gt;
&lt;p&gt;You can set the order to be randomized. You can set the interval between the images. You can start, stop, pause, resume and step forwards and backwards. All pretty useful but simple stuff.&lt;/p&gt;</description></item><item><title>Steam Deck: My Initial Thoughts</title><link>https://michaelbanzon.com/blogposts/my-initial-thoughts-on-the-steam-deck/</link><pubDate>Sun, 03 Aug 2025 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/my-initial-thoughts-on-the-steam-deck/</guid><description>&lt;p&gt;I just bought a &lt;a href="https://store.steampowered.com/steamdeck"&gt;Steam Deck&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s awesome!&lt;/p&gt;
&lt;h2 id="my-steam-library"&gt;My Steam Library&lt;/h2&gt;
&lt;p&gt;I have over 300 games on Steam and no time to play them!&lt;/p&gt;
&lt;p&gt;And I don&amp;rsquo;t even have a Windows PC anymore!&lt;/p&gt;
&lt;p&gt;I have been playing games on my macOS machine(s) for a while now but not all my games are macOS compatible.&lt;/p&gt;
&lt;p&gt;But it turns out that most of them are Steam OS compatible! 🤘&lt;/p&gt;
&lt;h2 id="the-machine"&gt;The machine&lt;/h2&gt;
&lt;p&gt;A small handheld Arm powered machine with a nice OLED screen and way-better-than-expected battery life - what&amp;rsquo;s not to like?!&lt;/p&gt;</description></item><item><title>My first talk with Ollama</title><link>https://michaelbanzon.com/blogposts/ollama-testing/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/ollama-testing/</guid><description>&lt;p&gt;I installed &lt;a href="https://ollama.com"&gt;Ollama&lt;/a&gt; on my Raspberry Pi 4.&lt;/p&gt;
&lt;p&gt;Everything is slow, because the Pi only have 2 MB RAM - I would not recommend this to anyone! Swap is enabled, but speed is lacking!&lt;/p&gt;
&lt;p&gt;The following is my first conversation. I did &lt;em&gt;shoot myself in the foot&lt;/em&gt; as I used the &lt;a href="https://ollama.com/library/deepseek-r1"&gt;deepseek-r1:1.5b model&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have no idea why it struggled this hard with &lt;em&gt;hello world&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;You can judge the conversation yourself.&lt;/p&gt;
&lt;h2 id="the-conversation"&gt;The conversation&lt;/h2&gt;
&lt;p&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;em&gt;What model are you?&lt;/em&gt;&lt;/p&gt;</description></item><item><title>About Calendars in Apps</title><link>https://michaelbanzon.com/blogposts/about-calendars-in-apps/</link><pubDate>Mon, 03 Feb 2025 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/about-calendars-in-apps/</guid><description>&lt;p&gt;We all use calendars - but I fear we don&amp;rsquo;t use them enough, and that we use
them for the wrong things!&lt;/p&gt;
&lt;p&gt;I imagine that most of us use a calendar to guide our daily activitites. It
might be a calendar on our computer/phone, on paper, or even in our mind.&lt;/p&gt;
&lt;h2 id="what-is-a-calendar"&gt;What is a calendar?&lt;/h2&gt;
&lt;p&gt;In my opinion a calendar should be used to mark events that are &lt;em&gt;locked in time&lt;/em&gt;. That
means that if I have an event in my calendar on Saturday between 13:30 and 15:00 I am
(somewhat) busy in the period of time, doing whatever that event is.&lt;/p&gt;</description></item><item><title>How to gracefully shut down a Go server</title><link>https://michaelbanzon.com/blogposts/gracefully-shutdown-go-server/</link><pubDate>Fri, 27 Dec 2024 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/gracefully-shutdown-go-server/</guid><description>&lt;p&gt;When doing an HTTP server in Go the call to &lt;code&gt;http.ListenAndServe(...)&lt;/code&gt; will block until
the server stops. But it shouldn&amp;rsquo;t stop. Ever.&lt;/p&gt;
&lt;p&gt;That leaves us with a problem - we might want to stop the server!&lt;/p&gt;
&lt;p&gt;There might be various reasons. Maybe we want to replace the binary with an updated version.
Maybe we just want it to not run.&lt;/p&gt;
&lt;p&gt;Fortunately instead of using the default &lt;code&gt;.ListenAndServe(...)&lt;/code&gt; we can create our own
&lt;code&gt;http.Server&lt;/code&gt; like this:&lt;/p&gt;</description></item><item><title>End tags in PHP</title><link>https://michaelbanzon.com/blogposts/php-end-tag/</link><pubDate>Sat, 11 Jan 2020 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/php-end-tag/</guid><description>&lt;p&gt;I&amp;rsquo;m getting back into PHP.&lt;/p&gt;
&lt;p&gt;This is a good thing (but more on that later!).&lt;/p&gt;
&lt;p&gt;It has been years since I&amp;rsquo;ve been programming PHP and therefore this might seem as old news to everybody else that is doing just a little PHP programming every now and then:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;You don&amp;rsquo;t have to close your PHP start tag!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Normally I&amp;rsquo;d have a file like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;Hello world!&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;hellip; and this works perfectly well.&lt;/p&gt;</description></item><item><title>Programming the Raspberry Pi with Go</title><link>https://michaelbanzon.com/blogposts/programming-go-on-raspberry-pi/</link><pubDate>Tue, 04 Jun 2019 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/programming-go-on-raspberry-pi/</guid><description>&lt;p&gt;I have a couple of &lt;a href="https://www.raspberrypi.org"&gt;&lt;em&gt;Raspberry Pis&lt;/em&gt;&lt;/a&gt; in the house. They are used for various tasks - from hardware experiments to server tasks.&lt;/p&gt;
&lt;p&gt;One of the big advantages of writing &lt;a href="https://golang.org/"&gt;Go&lt;/a&gt; is the ability to cross compile code to other platforms than the one you are using the compiler/toolchain on. Anyone who has tried cross compiling code in C eg. will know how annoyingly difficult this is! With Go you have two environment variables that control the output of the compiler - &lt;code&gt;GOOS&lt;/code&gt; will control the target operating system and &lt;code&gt;GOARCH&lt;/code&gt; will control the target architecture.&lt;/p&gt;</description></item><item><title>Embracing the facts - software have errors</title><link>https://michaelbanzon.com/blogposts/embracing-the-facts/</link><pubDate>Mon, 01 Jan 2018 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/embracing-the-facts/</guid><description>&lt;p&gt;Errors in software is one of those things that can be frustrating and it can lead to trouble - both internally and externally - for software development teams. Getting in control is key to success - both for the team and the users!&lt;/p&gt;</description></item><item><title>Scaling Web Applications</title><link>https://michaelbanzon.com/blogposts/scaling-web-applications/</link><pubDate>Mon, 08 May 2017 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/scaling-web-applications/</guid><description>&lt;p&gt;Scaling web applications is not trivial.&lt;/p&gt;
&lt;p&gt;But what are the reasons to scale? How can you scale?&lt;/p&gt;
&lt;p&gt;This article will describe some reasons for scaling along with scaling strategies.&lt;/p&gt;</description></item><item><title>Generating random numbers</title><link>https://michaelbanzon.com/blogposts/generating-random-numbers/</link><pubDate>Mon, 06 Feb 2017 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/generating-random-numbers/</guid><description>&lt;p&gt;Let&amp;rsquo;s go crazy and generate some random numbers!&lt;/p&gt;
&lt;p&gt;But are they truly random? And why are we generating them?!&lt;/p&gt;</description></item><item><title>Changelogs</title><link>https://michaelbanzon.com/blogposts/changelogs/</link><pubDate>Thu, 19 Jan 2017 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/changelogs/</guid><description>&lt;p&gt;What is a changelog and why is it good to have? I mean - you have your commit comments and they should cover all the details about changes to the code, right?&lt;/p&gt;</description></item><item><title>Writing Comments in Code</title><link>https://michaelbanzon.com/blogposts/writing-comments-in-code/</link><pubDate>Mon, 16 Jan 2017 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/writing-comments-in-code/</guid><description>&lt;p&gt;When programming you write code - possibly a lot. It&amp;rsquo;s a safe bet that much of the code you write is in fact the product of your brilliant mind and that it makes perfect sense - to you!&lt;/p&gt;</description></item><item><title>About User Privileges</title><link>https://michaelbanzon.com/blogposts/user-privileges/</link><pubDate>Thu, 28 Jul 2016 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/user-privileges/</guid><description>&lt;p&gt;Web applications and other multi-user systems need to authenticate users. When users are authenticated they have access to selected resources - in some systems access is granted to &lt;em&gt;everything&lt;/em&gt; but in most systems access in only granted to &lt;em&gt;selected&lt;/em&gt; stuff.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s discuss two methods to distinguish user privileges in multi-user systems.&lt;/p&gt;</description></item><item><title>Push? Pull? Websockets?</title><link>https://michaelbanzon.com/blogposts/push-pull-websockets/</link><pubDate>Wed, 20 Jul 2016 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/push-pull-websockets/</guid><description>&lt;p&gt;Communicating with a backend - the communication between a server and a client - needs to be optimized to meet the users expectations of the application. This might seem rather vague but any application is met with a set of expectations specific to its user base and circumstances surrounding the typical use.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll go over some possible solutions here.&lt;/p&gt;</description></item><item><title>Is your server even running?</title><link>https://michaelbanzon.com/blogposts/monitoring-with-datadog/</link><pubDate>Tue, 22 Mar 2016 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/monitoring-with-datadog/</guid><description>&lt;p&gt;In this article I will describe how to set up some basic server monitoring and some very useful alarming using Datadog. This comes in many variants - but I&amp;rsquo;ll show how to do this on a Ubuntu Linux server.&lt;/p&gt;</description></item><item><title>Choosing a platform</title><link>https://michaelbanzon.com/blogposts/choosing-a-platform/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/choosing-a-platform/</guid><description>&lt;p&gt;Choosing the right development platform is important. Very important!&lt;/p&gt;
&lt;p&gt;Think of the &lt;em&gt;platform&lt;/em&gt; as the language and library choices along with
the environment where the solution is to be deployed - &lt;em&gt;the full stack&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In this article I&amp;rsquo;ll go over some of the choices for platform I have
made and why.&lt;/p&gt;</description></item><item><title>How to: Manage swap space</title><link>https://michaelbanzon.com/blogposts/managing-swap-space/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://michaelbanzon.com/blogposts/managing-swap-space/</guid><description>&lt;p&gt;A default cloud server at both Digital Ocean and Rackspace does not have any swap space allocated. This might cause your applications to fail when you run out of physical memory on the machine.&lt;/p&gt;</description></item></channel></rss>