<?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>GitHub &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/github/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Wed, 07 Jan 2026 16:01:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Year of Code 2025: October Project &#8211; Multi-Platform Communication</title>
		<link>https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/</link>
		
		<dc:creator><![CDATA[Gabriel Ludosanu]]></dc:creator>
		<pubDate>Mon, 13 Oct 2025 19:01:53 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Lan]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[UDPSocket]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=15461</guid>

					<description><![CDATA[For October&#8217;s Xojo Year of Code 2025, I built MPACSocket, a tiny, reusable UDPSocket subclass that enables zero-config, local-network presence and chat across platforms. It&#8230;]]></description>
										<content:encoded><![CDATA[
<p>For October&#8217;s Xojo Year of Code 2025, I built MPACSocket, a tiny, reusable UDPSocket subclass that enables zero-config, local-network presence and chat across platforms. It wraps binding, broadcast, presence beacons, peer tracking, and JSON parsing into a single class with a clean event-based API. Drop it into Desktop projects and you’ve got instant LAN discovery and messaging.</p>



<h2 class="wp-block-heading">What this project includes</h2>



<ul class="wp-block-list">
<li>A self-contained UDPSocket subclass (MPACSocket) that handles bind, presence broadcasting, peer pruning, and chat envelopes with versioned JSON (good for further updates to the protocol).</li>



<li>Simple API: Start(port), Stop(), Rename(name), SendChat(text). Everything else comes through events like Bound, ChatReceived, PeerOnline/PeerOffline, PeerUpdated, StatusChanged, and SocketError.</li>



<li>A sample DesktopWindow (wndMPAC) that wires MPACSocket to a transcript area and peers list.</li>
</ul>



<h2 class="wp-block-heading">How to use</h2>



<ul class="wp-block-list">
<li>Add MPACSocket to your project, drop it onto a DesktopWindow or instantiate in code.</li>



<li>Set DisplayName, call Start(62636), and listen to events to update your UI or console output.</li>



<li>Use SendChat to broadcast a message; presence beacons and peer tracking happen automatically.</li>
</ul>



<h2 class="wp-block-heading">Download</h2>



<p>You can download the entire Xojo project from <a href="https://github.com/xolabsro/Multi-Platform-App-Communication" target="_blank" rel="noreferrer noopener">GitHub</a></p>



<p>This project shows how a small, well-scoped class can turn low-level UDP into a friendly, cross-platform building block. Feel free to adapt the events or JSON schema for your own protocols.</p>



<p><em>Gabriel is a digital marketing enthusiast who loves coding with Xojo to create cool software tools for any platform. He is always eager to learn and share new ideas!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: September Project, Games</title>
		<link>https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Mon, 08 Sep 2025 17:57:38 +0000</pubDate>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GitLab]]></category>
		<category><![CDATA[Year of Code]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=15311</guid>

					<description><![CDATA[I&#8217;m a bit of a retro computing and gaming guy and I enjoy making versions of retro games using Xojo. Although Xojo is not really&#8230;]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m a bit of a <a href="https://www.goto10retro.com">retro computing and gaming guy</a> and I enjoy making versions of retro games using Xojo. Although Xojo is not really designed for making games, its <a href="https://documentation.xojo.com/api/user_interface/desktop/desktopcanvas.html#desktopcanvas">Canvas</a> class works well for many kinds of simple games. That means our theme for the Year of Code for September is Games!</p>



<p>One of the first games I made using Xojo was a clone of Atari Tank (based on the version included with the Combat Atari 2600 cartridge).</p>



<p>The core of Tank served as the basis for the <a href="https://github.com/xojo/XojoWars">XojoWars game contest</a>, where it was re-imagined as a space battle.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="400" height="308" src="https://blog.xojo.com/wp-content/uploads/2025/08/image-1.png" alt="" class="wp-image-15314" srcset="https://blog.xojo.com/wp-content/uploads/2025/08/image-1.png 400w, https://blog.xojo.com/wp-content/uploads/2025/08/image-1-300x231.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></figure>



<p>Tank is a rather simple game and really needs to be two-players, which is why I added the ability for two people to play it over the network using UDPSocket. This version, which I called <a href="https://blog.xojo.com/2018/08/24/justcode-challenge-week-10-nettank/">NetTank</a>, is <a href="https://gitlab.com/xojo/NetTank">available on GitLab</a>.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="367" src="https://blog.xojo.com/wp-content/uploads/2025/08/image-1024x367.png" alt="" class="wp-image-15313" srcset="https://blog.xojo.com/wp-content/uploads/2025/08/image-1024x367.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/08/image-300x107.png 300w, https://blog.xojo.com/wp-content/uploads/2025/08/image-768x275.png 768w, https://blog.xojo.com/wp-content/uploads/2025/08/image.png 1220w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>On the mobile side, I&#8217;ve made a 2048 sliding-tiles game and Turtle, which I suppose is kind of an infinite version of Frogger.</p>



<p>However, I&#8217;ve had the most fun making clones of Asteroids and Space Invaders. I wrote some about Invaders in <a href="https://www.xdevmag.com">xDev Magazine</a> last year, but at some point I&#8217;ll get it enhanced enough to share in a blog post.</p>



<p>With that lengthy pre-amble I can now share my game for this month&#8217;s project, which is a clone of Asteroids that I uncreatively call Space Rocks. Although an older version of this game has been included with the Xojo examples for several years, this is an updated version with some new features:</p>



<ul class="wp-block-list">
<li>Smaller ship to better match proportions of the rocks.</li>



<li>Improved &#8216;heartbeat&#8217; sound.</li>



<li>High Score is saved and restored.</li>



<li>Level increases as you clear all the rocks, which adds even more rocks that also move faster.</li>



<li>Command or Shift key now work for firing missiles.</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="850" src="https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.21.38@2x-1024x850.png" alt="" class="wp-image-15316" srcset="https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.21.38@2x-1024x850.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.21.38@2x-300x249.png 300w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.21.38@2x-768x637.png 768w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.21.38@2x-1536x1275.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.21.38@2x.png 2024w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="850" src="https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.23.20@2x-1024x850.png" alt="" class="wp-image-15315" srcset="https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.23.20@2x-1024x850.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.23.20@2x-300x249.png 300w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.23.20@2x-768x637.png 768w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.23.20@2x-1536x1275.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/08/CleanShot-2025-08-25-at-14.23.20@2x.png 2024w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Yes, 14340 is my high score. So far. I dare you to beat it!</p>



<p>The full project is on GitHub: <a href="https://github.com/paullefebvre/SpaceRocks">https://github.com/paullefebvre/SpaceRocks</a></p>



<p>Keep in mind that you don&#8217;t have to make an arcade-style game. Strategy and turn-based games are a lot of fun and also  great candidates for Xojo. For reference, take a look at the <a href="https://blog.xojo.com/2024/09/17/cosmic-trader-a-game-built-with-xojo-web/">web-based Cosmic Trader game</a> that Ricardo made last year. A platform-style or maze game might also be interesting. I can&#8217;t wait to see (and play) what you make!</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: August Project, Console Apps</title>
		<link>https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/</link>
					<comments>https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/#comments</comments>
		
		<dc:creator><![CDATA[Gabriel Ludosanu]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 13:30:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[GitHub]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=15219</guid>

					<description><![CDATA[Welcome back to the Year of Code 2025 series! For August, I built a minimalist and fun Console Task App that allows users to add,&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Welcome back to the Year of Code 2025 series! For August, I built a minimalist and fun Console Task App that allows users to add, remove, and list tasks interactively in the terminal. No graphical interface, just pure console magic that demonstrates the power of Xojo for CLI apps.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="577" src="https://blog.xojo.com/wp-content/uploads/2025/08/August-Project-Console-Apps-1024x577.jpg" alt="August Project, Xojo Console Apps" class="wp-image-15286" srcset="https://blog.xojo.com/wp-content/uploads/2025/08/August-Project-Console-Apps-1024x577.jpg 1024w, https://blog.xojo.com/wp-content/uploads/2025/08/August-Project-Console-Apps-300x169.jpg 300w, https://blog.xojo.com/wp-content/uploads/2025/08/August-Project-Console-Apps-768x433.jpg 768w, https://blog.xojo.com/wp-content/uploads/2025/08/August-Project-Console-Apps.jpg 1115w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">What this project includes:</h3>



<ul class="wp-block-list">
<li>Interactive command-line interface to manage tasks</li>



<li>Commands to add new tasks, mark tasks complete, list all tasks, and remove tasks</li>



<li>Simple file saving/loading to keep your tasks persistent between sessions</li>



<li>Clean and modular code architecture for easy customization or extension</li>
</ul>



<p>This project highlights how Xojo can be used beyond GUI applications, making it ideal for automation scripts, tooling, or quick utilities you want to run directly in the console (Mac, any Linux flavor, Windows) without the overhead of a full UI.</p>



<p>You can check out the full source code and try it out yourself at&nbsp;<a href="https://github.com/xolabsro/Xojo-Console-Tasks" target="_blank" rel="noreferrer noopener">GitHub: Xojo-Console-Tasks</a>.</p>



<p>Give it a spin, modify it to suit your needs, and share your enhancements or questions with the <a href="https://forum.xojo.com/" data-type="link" data-id="https://forum.xojo.com/" target="_blank" rel="noreferrer noopener">Xojo community</a>. This is a great way to get comfortable with console application design in Xojo and to stretch your coding skills in a new context.</p>



<p>Stay tuned for next month’s project as we continue our journey deep into the many facets of coding with Xojo!</p>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>



<p><em>Gabriel is a digital marketing enthusiast who loves coding with Xojo to create cool software tools for any platform. He is always eager to learn and share new ideas!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Year of Code 2025: June Project, Cross-Platform Code Class</title>
		<link>https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/</link>
		
		<dc:creator><![CDATA[Gabriel Ludosanu]]></dc:creator>
		<pubDate>Tue, 10 Jun 2025 18:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14963</guid>

					<description><![CDATA[June’s Year of Code theme is about writing code that works in any type of Xojo project. To demonstrate Xojo’s powerful multi-platform capabilities, this month&#8230;]]></description>
										<content:encoded><![CDATA[
<p>June’s Year of Code theme is about writing code that works in any type of Xojo project. To demonstrate Xojo’s powerful multi-platform capabilities, this month I’m sharing a practical example: a single <em>data loader and search class</em> you can use—without modification—on <strong>Linux, Mac, Windows, Web, Console, iOS, Android or Raspberry Pi</strong>!</p>



<h2 class="wp-block-heading" id="introducing--dataclass-universal-data-fetching-for-xojo">Introducing&nbsp;<code>dataClass</code>: Universal Data Fetching for Xojo</h2>



<p>Do you ever wish you could just grab some remote JSON data,&nbsp;search through it, and use it in your app, no matter what kind of project you’re building? That’s exactly what this little, pure-Xojo&nbsp;<code>dataClass</code>&nbsp;allows!</p>



<p>Here’s what it does:</p>



<ul class="wp-block-list">
<li>Loads a list of posts&nbsp;from a web API (using standard&nbsp;<code>URLConnection</code>&nbsp;and Xojo’s built-in&nbsp;<code>JSONItem</code>).</li>



<li>Lets you search&nbsp;by any term within the post’s title or body &#8211; case-insensitive.</li>



<li>Works&nbsp;unchanged in all Xojo project types&nbsp;&#8211; all of them!</li>
</ul>



<h2 class="wp-block-heading" id="why-is-this-cool">Why is This Cool?</h2>



<p>By using only built-in classes and avoiding platform-specific quirks, you can build business logic and utility classes that drop straight into your app, whatever the deployment target.</p>



<h2 class="wp-block-heading" id="the-complete-source-code">The Complete Source Code</h2>



<p>You can copy the full&nbsp;<code>dataClass</code>&nbsp;source from&nbsp;<a href="https://github.com/xolabsro/XojoCrossPlatformCode" target="_blank" rel="noreferrer noopener">this GitHub repository</a>.</p>



<h2 class="wp-block-heading" id="what-will--you--build">What Will&nbsp;<em>You</em>&nbsp;Build?</h2>



<p>Have a favorite cross-platform Xojo technique, class or code module? Show us your own! Share in this month’s <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Year of Code forum thread</a>.</p>



<p>Stay tuned for more Year of Code 2025 examples, and happy coding!</p>



<p><em>Gabriel is a digital marketing enthusiast who loves coding with Xojo to create cool software tools for any platform. He is always eager to learn and share new ideas!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: May Project, Mobile Apps</title>
		<link>https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:00:00 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14805</guid>

					<description><![CDATA[One of the most common things I love to use my phone for is sharing pictures of my pets with others. We have two cats&#8230;]]></description>
										<content:encoded><![CDATA[
<p>One of the most common things I love to use my phone for is sharing pictures of my pets with others. We have two cats and a dog: Shawmut, Christofur and Lucy. To be honest, I’m not much a cat person as I find that cats are almost all <a href="https://24hrtees.net/shop/dont-be-a-richard/">Richards</a>, constantly causing and getting into trouble. I’m 100% a dog person.</p>



<p>But even though I have my own pets, I do love looking at pet pictures. It&#8217;s a simple pleasure, but there&#8217;s not much that I find more calming.</p>



<p>Years ago I made a Xojo app (CatsUp) that displayed random cat pictures and it was a lot of fun. And one thing that Xojo excels at is making it fun to create software! That’s what the Year of Code is all about, after all.</p>



<p>Speaking of that, here is the Year of Code topic for May: <strong>Mobile Apps</strong>.</p>



<p>You can already find CatsUp for iOS and Android included in the Xojo examples, but why stop at just cats? Being a dog guy, I want to see some dogs. All the dogs.</p>



<p>Since I’m not here to start a cats vs. dogs war, I thought, why not both? It turns out I’m not the only one that thinks this as there are actually public web services that serve up pictures of cats and dogs. Web services and mobile apps go together like peanuts butter and chocolate.</p>



<p>The web service for cats that I’ve previously used is called TheCatAPI and is available here: <a href="https://thecatapi.com">https://thecatapi.com</a></p>



<p>There is an equivalent dog one called, unsurprisingly, TheDogAPI: <a href="https://www.thedogapi.com">https://www.thedogapi.com</a></p>



<p>For my mobile app this month, I’ve created an all-new app that can show pictures of cats, dogs or both! I call it Pawz.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://blog.xojo.com/wp-content/uploads/2025/04/Pawz.png" alt="" class="wp-image-14806" style="width:344px;height:auto" srcset="https://blog.xojo.com/wp-content/uploads/2025/04/Pawz.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/04/Pawz-300x300.png 300w, https://blog.xojo.com/wp-content/uploads/2025/04/Pawz-150x150.png 150w, https://blog.xojo.com/wp-content/uploads/2025/04/Pawz-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Pawz app icon</figcaption></figure>



<p>Actually, it&#8217;s two apps since I made versions for iOS and Android. Here’s a look:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="497" height="1024" src="https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.44.54@2x-497x1024.png" alt="" class="wp-image-14810" style="width:309px;height:auto" srcset="https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.44.54@2x-497x1024.png 497w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.44.54@2x-145x300.png 145w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.44.54@2x-768x1584.png 768w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.44.54@2x-745x1536.png 745w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.44.54@2x.png 867w" sizes="auto, (max-width: 497px) 100vw, 497px" /><figcaption class="wp-element-caption">Pawz on iOS</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="480" height="1024" src="https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.41.34@2x-480x1024.png" alt="" class="wp-image-14809" style="width:298px;height:auto" srcset="https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.41.34@2x-480x1024.png 480w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.41.34@2x-141x300.png 141w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.41.34@2x-768x1637.png 768w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.41.34@2x-721x1536.png 721w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.41.34@2x.png 915w" sizes="auto, (max-width: 480px) 100vw, 480px" /><figcaption class="wp-element-caption">Pawz on Android</figcaption></figure>
</div>
</div>



<p>Although they are separate projects, both use basically the same code. In fact there is only about 50 lines of code in each project! The UI itself is just a big ImageViewer that is used to show the picture and several toolbar buttons.</p>



<p>There are three buttons to request a cat picture, dog picture or a surprise picture that could be either. There is also an extra button that lets you share the picture, if you really like it.</p>



<p>You can find the source for the iOS and Android versions of Pawz on GitHub here:</p>



<p><a href="https://github.com/paullefebvre/pawz">https://github.com/paullefebvre/pawz</a></p>



<p>Year of Code is all about having some fun making an app. As you can see with Pawz, it doesn&#8217;t have to be anything extravagant. Even fun apps can be made quickly with very little code!</p>



<p>I can&#8217;t wait to see what great mobile apps you all create this month. <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Share your creations in the Forum topic</a>.</p>



<h2 class="wp-block-heading"><strong>One More Thing</strong></h2>



<p>Although phones and tablets are what we usually think of when talking about Mobile Apps, you know what else is rather mobile? A vehicle! And it just so happens that many vehicle manufacturers, such as  Cadillac, Chevy, Ford, Honda, Polestar, Renault and Volvo are now using Android to run their infotainment systems. Technically it&#8217;s Android Automotive OS (AAOS), but it is very similar to regular Android.</p>



<p>Because Xojo builds standard Android Runtime (ART) apps, Xojo Android apps also work on Android Automotive OS as a &#8220;parked app&#8221;. You can test with this by using Android Studio to install an Android Automotive VM for the Emulator. Once you’ve added that you can run your Xojo Android projects on it just like any other device. Pawz works fine in an AAOS Emulator.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1008" src="https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.55.26@2x-1024x1008.png" alt="" class="wp-image-14813" srcset="https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.55.26@2x-1024x1008.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.55.26@2x-300x295.png 300w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.55.26@2x-768x756.png 768w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.55.26@2x-1536x1512.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/04/CleanShot-2025-04-16-at-13.55.26@2x-2048x2016.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Why do I bring this up? No reason, although I believe Xojo 2025 Release 2 pre-release testing might be starting soon&#8230;</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: April Project, User Interface</title>
		<link>https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/</link>
		
		<dc:creator><![CDATA[Gabriel Ludosanu]]></dc:creator>
		<pubDate>Tue, 08 Apr 2025 15:30:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Listbox]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UI-Design]]></category>
		<category><![CDATA[User Interface]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14788</guid>

					<description><![CDATA[April&#8217;s Year of Code theme is all about a great User Interface, I decided to focus on refining the user experience of an existing application.&#8230;]]></description>
										<content:encoded><![CDATA[
<p>April&#8217;s Year of Code theme is all about a great User Interface, I decided to focus on refining the user experience of an existing application. My project involves a user interface revamp of the familiar built-in ToDo desktop app example provided with Xojo.</p>



<p>The goal wasn&#8217;t to add new features but to explore how applying thoughtful UI design principles can significantly enhance the look and feel of an application, making it more visually appealing and cohesive.</p>



<p>Here are some of the key aspects of the UI revamp:</p>



<ul class="wp-block-list">
<li><strong>Design System Foundation:</strong>&nbsp;I started by establishing a basic design system. This involved defining core visual elements to ensure consistency across the entire application interface.</li>



<li><strong>Typography Definition:</strong>&nbsp;Specific styles were defined for how titles and standard text should appear. This helps create a clear visual hierarchy and improves readability.</li>



<li><strong>Consistent Color Palette:</strong>&nbsp;A specific set of colors (Light &amp; Dark mode) was chosen and implemented throughout the project, contributing to a unified and more polished look.</li>



<li><strong>Refined ListBox Appearance:</strong>&nbsp;The standard&nbsp;DesktopListBox&nbsp;control received some visual tweaks to better align with the overall updated aesthetic.</li>
</ul>



<p>The aim was to demonstrate how focusing on UI details can elevate even a simple example application.</p>



<p>Here’s a glimpse of the revamped ToDo app:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="602" height="452" data-id="14792" src="https://blog.xojo.com/wp-content/uploads/2025/04/ToDoOrig-1.jpg" alt="" class="wp-image-14792" srcset="https://blog.xojo.com/wp-content/uploads/2025/04/ToDoOrig-1.jpg 602w, https://blog.xojo.com/wp-content/uploads/2025/04/ToDoOrig-1-300x225.jpg 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="602" height="584" data-id="14793" src="https://blog.xojo.com/wp-content/uploads/2025/04/ToDoFresh-1.jpg" alt="" class="wp-image-14793" srcset="https://blog.xojo.com/wp-content/uploads/2025/04/ToDoFresh-1.jpg 602w, https://blog.xojo.com/wp-content/uploads/2025/04/ToDoFresh-1-300x291.jpg 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>
</figure>



<p>You can find the complete source code for this UI-enhanced <a href="https://github.com/xolabsro/ToDoFresh" data-type="link" data-id="https://github.com/xolabsro/ToDoFresh" target="_blank" rel="noreferrer noopener">ToDo app project on GitHub</a>. </p>



<p>Stay tuned for more exciting projects as we continue our Year of Code 2025 journey!</p>



<p><em>Gabriel is a digital marketing enthusiast who loves coding with Xojo to create cool software tools for any platform. He is always eager to learn and share new ideas!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: March Project, Web Apps</title>
		<link>https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/</link>
		
		<dc:creator><![CDATA[Gabriel Ludosanu]]></dc:creator>
		<pubDate>Wed, 05 Mar 2025 15:04:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14588</guid>

					<description><![CDATA[March’s topic is Web Apps and I’m excited to introduce my project: Quiziverse, a complete quiz and trivia web application. Quiziverse is designed to engage&#8230;]]></description>
										<content:encoded><![CDATA[
<p>March’s topic is Web Apps and I’m excited to introduce my project: Quiziverse, a complete quiz and trivia web application.</p>



<p>Quiziverse is designed to engage users with time-limited questions across various categories, making it a fun and interactive way to test knowledge. The application leverages a SQLite database as the backend for all data storage.</p>



<p>Here are some of the key features of Quiziverse:</p>



<ul class="wp-block-list">
<li><strong>Admin Area:</strong> The app includes a secure admin area, allowing administrators to manage categories and questions easily. Admins can add, edit, or delete questions and categories to keep the trivia fresh and exciting.</li>



<li><strong>Scoreboard:</strong> A dynamic scoreboard keeps track of player scores in real-time, fostering a competitive spirit among users. Players can see how they stack up against others, adding an element of fun to the experience.</li>



<li><strong>Time-Limited Questions:</strong> Each question comes with a timer, challenging players to think quickly and answer before time runs out. This feature adds to the intensity of the game and keeps players on their toes.</li>



<li><strong>Import JSON Files:</strong> To make it easy for admins to add new content, Quiziverse includes a function to import JSON files containing new categories and questions. This feature simplifies content management and allows for quick updates.</li>



<li><strong>Mobile Optimized Design:</strong> Understanding the importance of accessibility, Quiziverse is designed to be mobile-friendly. Players can join the trivia challenge from their smartphones or tablets for a seamless experience.</li>
</ul>



<p>Here’s a sneak peek of the Quiziverse interface:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="487" src="https://blog.xojo.com/wp-content/uploads/2025/03/image-1-1024x487.png" alt="Quiziverse Start Page" class="wp-image-14593" srcset="https://blog.xojo.com/wp-content/uploads/2025/03/image-1-1024x487.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/03/image-1-300x143.png 300w, https://blog.xojo.com/wp-content/uploads/2025/03/image-1-768x365.png 768w, https://blog.xojo.com/wp-content/uploads/2025/03/image-1-1536x731.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/03/image-1.png 1583w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="479" src="https://blog.xojo.com/wp-content/uploads/2025/03/image-1024x479.png" alt="Quiziverse Trivia Page" class="wp-image-14592" srcset="https://blog.xojo.com/wp-content/uploads/2025/03/image-1024x479.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/03/image-300x140.png 300w, https://blog.xojo.com/wp-content/uploads/2025/03/image-768x359.png 768w, https://blog.xojo.com/wp-content/uploads/2025/03/image-1536x719.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/03/image.png 1599w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="485" src="https://blog.xojo.com/wp-content/uploads/2025/03/image-2-1024x485.png" alt="Quiziverse Admin General Settings" class="wp-image-14594" srcset="https://blog.xojo.com/wp-content/uploads/2025/03/image-2-1024x485.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/03/image-2-300x142.png 300w, https://blog.xojo.com/wp-content/uploads/2025/03/image-2-768x364.png 768w, https://blog.xojo.com/wp-content/uploads/2025/03/image-2-1536x727.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/03/image-2.png 1588w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="483" src="https://blog.xojo.com/wp-content/uploads/2025/03/image-3-1024x483.png" alt="Quiziverse Admin Categories" class="wp-image-14595" srcset="https://blog.xojo.com/wp-content/uploads/2025/03/image-3-1024x483.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/03/image-3-300x141.png 300w, https://blog.xojo.com/wp-content/uploads/2025/03/image-3-768x362.png 768w, https://blog.xojo.com/wp-content/uploads/2025/03/image-3-1536x724.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/03/image-3.png 1580w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="483" src="https://blog.xojo.com/wp-content/uploads/2025/03/image-4-1024x483.png" alt="Quiziverse Admin Questions" class="wp-image-14596" srcset="https://blog.xojo.com/wp-content/uploads/2025/03/image-4-1024x483.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/03/image-4-300x141.png 300w, https://blog.xojo.com/wp-content/uploads/2025/03/image-4-768x362.png 768w, https://blog.xojo.com/wp-content/uploads/2025/03/image-4-1536x724.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/03/image-4.png 1584w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can find the complete source code for <a href="https://github.com/xolabsro/Quiziverse" data-type="link" data-id="https://github.com/xolabsro/Quiziverse" target="_blank" rel="noreferrer noopener">Quiziverse on GitHub</a>, along with detailed documentation to help you get started.</p>



<p>Stay tuned for more exciting projects as we continue our Year of Code 2025 journey!</p>



<p><em>Gabriel is a digital marketing enthusiast who loves coding with Xojo to create cool software tools for any platform. He is always eager to learn and share new ideas!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Build a Xojo Plugin with GitHub Actions</title>
		<link>https://blog.xojo.com/2025/02/25/build-a-xojo-plugin-with-github-actions/</link>
		
		<dc:creator><![CDATA[Jürg Otter]]></dc:creator>
		<pubDate>Tue, 25 Feb 2025 22:30:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Guest Post]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[cubeSQL]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Year of Code]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14509</guid>

					<description><![CDATA[As part of Xojo&#8217;s 2025 Year of Code initiative, February&#8217;s theme is databases—a perfect fit for my recent work on the Open Source CubeSQLPlugin. This&#8230;]]></description>
										<content:encoded><![CDATA[
<p>As part of <a href="https://forum.xojo.com/t/2025-year-of-code-february/" target="_blank" rel="noreferrer noopener">Xojo&#8217;s 2025 Year of Code</a> initiative, <a href="https://forum.xojo.com/t/2025-year-of-code-february/" target="_blank" rel="noreferrer noopener">February&#8217;s theme is databases</a>—a perfect fit for my recent work on the <a href="https://github.com/marcobambini/cubesqlplugin" target="_blank" rel="noreferrer noopener">Open Source CubeSQLPlugin</a>. This article shares insights into automating its build process with <a href="https://docs.github.com/en/actions/writing-workflows" target="_blank" rel="noreferrer noopener">GitHub Actions Workflows</a>.</p>



<p>Xojo plugins are add-ons that extend the functionality of the Xojo development environment, allowing developers to add additional features, integrate third-party libraries, and much more.</p>



<h2 class="wp-block-heading">Write a Xojo Plugin</h2>



<p>This article assumes familiarity with the <a href="https://documentation.xojo.com/topics/custom_controls/plugins_sdk.html" target="_blank" rel="noreferrer noopener">Xojo Plugin SDK</a> and focuses on automating plugin builds. If you&#8217;re new to plugin development, check out the resources in Xojo’s &#8220;Extras&#8221; folder, YouTube tutorials, and the Xojo Forum.</p>



<p>It builds on my previous blog post <a href="https://blog.xojo.com/2022/10/19/xojo-github-actions/" target="_blank" rel="noreferrer noopener">Xojo Github Actions</a> and involves <a href="https://www.docker.com/" target="_blank" rel="noreferrer noopener">Docker</a>, which has also been a part of a previous blog posts (<a href="https://blog.xojo.com/2024/06/03/docker-database-servers-and-xojo/" target="_blank" rel="noreferrer noopener">Docker, Database Servers and Xojo</a>, <a href="https://blog.xojo.com/2021/05/17/running-xojo-web-applications-in-docker/" target="_blank" rel="noreferrer noopener">Running Xojo Web Applications in Docker</a>). So read up there on what a <a href="https://docs.github.com/en/actions/writing-workflows" target="_blank" rel="noreferrer noopener">GitHub Actions workflow</a> is, what the <code>.yaml</code> files in the Folder <code>.github/workflows</code> are used for.</p>



<h2 class="wp-block-heading"><strong>Build a Xojo Plugin</strong></h2>



<p>Since Xojo is a cross platform development environment, a Xojo plugin needs to be built for all the supported platforms <em>(Windows, macOS, Linux)</em> and all their architectures <em>(Intel/ARM, 32/64Bit)</em>.</p>



<p>All the plugin parts (the Windows <code>.dll</code>&#8216;s, .macOS <code>.dylib</code>&#8216;s and Linux <code>.so</code>&#8216;s) are being packaged into a <code>.xojo_plugin</code> file.</p>



<p>One of the challenges is to have an environment to build all that. At the first glance it seems that one would need a Mac, a Windows machine &#8211; as well as some Linux environment <em>(any of which could also just be a virtual machine)</em>. And one would first think that there will be a lot of manual steps involved &#8211; building the plugin source on various machines, copying all the built plugin parts together to finally assemble the resulting <code>.xojo_plugin</code>.</p>



<p>However &#8211; all that is not required. You can build a Xojo plugin without your own machine being involved, fully automated. GitHub Actions provides all we need.</p>



<h2 class="wp-block-heading"><strong>Example: CubeSQLPlugin</strong></h2>



<p>Let us have a look at this existing <a href="https://github.com/marcobambini/cubesqlplugin" target="_blank" rel="noreferrer noopener">Open Source Plugin</a>.</p>



<p><a href="https://github.com/marcobambini/cubesqlplugin" target="_blank" rel="noreferrer noopener"><em>CubeSQLPlugin</em></a><em> is an extension for the Xojo programming environment that allows developers to use </em><a href="https://sqlabs.com/cubesql" target="_blank" rel="noreferrer noopener"><em>CubeSQL</em></a><em>, a fully featured and high performance relational database management system built on top of the SQLite database engine.</em></p>



<p>The plugin is being used in the Open Sourced Administrations Tools for CubeSQL, which are both written in Xojo: <a href="https://github.com/cubesql/webadmin" target="_blank" rel="noreferrer noopener">CubeSQL Web Admin</a> and <a href="https://github.com/cubesql/cubeSQLAdmin" target="_blank" rel="noreferrer noopener">CubeSQL (Desktop) Admin</a>.</p>



<p>Internally the plugin uses <a href="https://www.libressl.org" target="_blank" rel="noreferrer noopener">LibreSSL</a> for TLS Connections of Database Clients to CubeSQL Server. This means that first the LibreSSL libs need to be built for all build targets. Only then can the plugin source be built again for all build targets. And finally, all the plugin parts need to be assembled into the Xojo plugin structure for the final <code>.xojo_plugin</code>.</p>



<p>We have automated the whole build process of the plugin using <a href="https://docs.github.com/de/actions" target="_blank" rel="noreferrer noopener">GitHub Actions</a> by having created three workflows. You&#8217;ll find their source in the folder <a href="https://github.com/marcobambini/cubesqlplugin/tree/master/.github/workflows" target="_blank" rel="noreferrer noopener">.github/workflows</a>. All workflow executions you&#8217;ll find on GitHub in the tab named <a href="https://github.com/marcobambini/cubesqlplugin/actions" target="_blank" rel="noreferrer noopener">Actions</a> <em>(as long as they have not been deleted or removed)</em>.</p>



<p><strong>LibreSSL</strong><br>This workflow will download the <a href="https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/" target="_blank" rel="noreferrer noopener">LibreSSL Source</a>, and build it for all needed build targets. It needs to be run only once, e.g. if a new <a href="https://www.libressl.org" target="_blank" rel="noreferrer noopener">LibreSSL</a> version is available that should be included for the next plugin build. That&#8217;s why it&#8217;s a workflow that can be run manually. It asks which LibreSSL version should be built and whether the built libraries should be committed and pushed to the repository.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="367" src="https://blog.xojo.com/wp-content/uploads/2025/02/01_Workflow_LibreSSL-1024x367.png" alt="" class="wp-image-14514" srcset="https://blog.xojo.com/wp-content/uploads/2025/02/01_Workflow_LibreSSL-1024x367.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/02/01_Workflow_LibreSSL-300x108.png 300w, https://blog.xojo.com/wp-content/uploads/2025/02/01_Workflow_LibreSSL-768x276.png 768w, https://blog.xojo.com/wp-content/uploads/2025/02/01_Workflow_LibreSSL-1536x551.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/02/01_Workflow_LibreSSL-2048x735.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>CubeSQLPlugin</strong><br>This workflow will build the <a href="https://github.com/marcobambini/cubesqlplugin" target="_blank" rel="noreferrer noopener">CubeSQL Xojo Plugin</a> for all build targets using the currently committed LibreSSL libs in the repository. It will commit and push all the built <code>.dll</code>&#8216;s, .<code>dylib</code>&#8216;s and <code>.so</code>&#8216;s to the repository.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="496" src="https://blog.xojo.com/wp-content/uploads/2025/02/02_Workflow-Plugin-1024x496.png" alt="" class="wp-image-14515" srcset="https://blog.xojo.com/wp-content/uploads/2025/02/02_Workflow-Plugin-1024x496.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/02/02_Workflow-Plugin-300x145.png 300w, https://blog.xojo.com/wp-content/uploads/2025/02/02_Workflow-Plugin-768x372.png 768w, https://blog.xojo.com/wp-content/uploads/2025/02/02_Workflow-Plugin-1536x744.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/02/02_Workflow-Plugin-2048x992.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Create Release</strong><br>That one is pretty obvious, right? It builds the structure of the final <code>.xojo_plugin</code> and creates a new <a href="https://github.com/marcobambini/cubesqlplugin/releases" target="_blank" rel="noreferrer noopener">Release</a> in the repository with the final Xojo plugin &#8211; ready to be downloaded.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="535" src="https://blog.xojo.com/wp-content/uploads/2025/02/03_Plugin-Release-1024x535.png" alt="" class="wp-image-14516" srcset="https://blog.xojo.com/wp-content/uploads/2025/02/03_Plugin-Release-1024x535.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/02/03_Plugin-Release-300x157.png 300w, https://blog.xojo.com/wp-content/uploads/2025/02/03_Plugin-Release-768x401.png 768w, https://blog.xojo.com/wp-content/uploads/2025/02/03_Plugin-Release-1536x802.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/02/03_Plugin-Release-2048x1069.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><strong>Build for all Platforms and Architectures</strong></h3>



<p>The two workflows &#8220;LibreSSL&#8221; and &#8220;CubeSQLPlugin&#8221; are similar in their approach to building for all the supported platforms <em>(Windows, macOS, Linux)</em> and all their architectures <em>(Intel/ARM, 32/64Bit)</em>.</p>



<p>GitHub offers hosted <a href="https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners" target="_blank" rel="noreferrer noopener">virtual machines to run workflows</a>. All virtual machines contain an environment of tools, packages, and settings available for <a href="https://docs.github.com/en/actions/writing-workflows" target="_blank" rel="noreferrer noopener">GitHub Actions workflows</a> to use.</p>



<p>So our workflows can simply use these environments. The workflows consist of several steps, each of which can be executed on a different runner. Remember that I&#8217;ve written: &#8220;You can build a Xojo plugin without your own machine involved&#8221;?</p>



<p>In the following ScreenShot we&#8217;re seeing that the Linux-ARM64 plugin part is being created on a Ubuntu 24.04.1 ARM machine.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="475" src="https://blog.xojo.com/wp-content/uploads/2025/02/04_Build-Linux-ARM64-1024x475.png" alt="" class="wp-image-14517" srcset="https://blog.xojo.com/wp-content/uploads/2025/02/04_Build-Linux-ARM64-1024x475.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/02/04_Build-Linux-ARM64-300x139.png 300w, https://blog.xojo.com/wp-content/uploads/2025/02/04_Build-Linux-ARM64-768x356.png 768w, https://blog.xojo.com/wp-content/uploads/2025/02/04_Build-Linux-ARM64-1536x712.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/02/04_Build-Linux-ARM64-2048x949.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading"><strong>macOS</strong></h4>



<ul class="wp-block-list">
<li>Runs on a GitHub macOS virtual machine.</li>



<li>Uses the preinstalled Xcode command line tools to build &#8220;Intel x86_64&#8221; and &#8220;ARM64&#8221; and combine the two to a universal binary.</li>



<li>CodeSigns with credentials added as repository secrets.</li>
</ul>



<h4 class="wp-block-heading"><strong>Linux</strong></h4>



<ul class="wp-block-list">
<li>ARM32, ARM64
<ul class="wp-block-list">
<li>Runs on a GitHub Linux virtual ARM machine.</li>



<li>To always have exactly the same build toolset <em>(e.g. so that it doesn&#8217;t matter if GitHub updates to a newer Ubuntu version)</em> it leverages a Docker container (e.g. <a href="https://hub.docker.com/r/arm64v8/gcc/" target="_blank" rel="noreferrer noopener">arm64v8/gcc</a>) &#8211; and actually builds the source inside the Docker container.</li>
</ul>
</li>



<li>i386, x86_64
<ul class="wp-block-list">
<li>Runs on a GitHub Linux virtual Intel machine.</li>



<li>Also uses a <a href="https://hub.docker.com/_/gcc" target="_blank" rel="noreferrer noopener">gcc Docker Image</a> to build the source.</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading"><strong>Windows</strong></h4>



<ul class="wp-block-list">
<li>Runs on a GitHub Windows virtual machine.</li>



<li>Uses the preinstalled Visual Studio environment to build all &#8220;win32&#8221;, &#8220;x64&#8221; and &#8220;ARM64&#8221;.</li>
</ul>



<h2 class="wp-block-heading"><strong>How to Build your Xojo Plugin</strong></h2>



<p>I&#8217;m very well aware that this article can&#8217;t help you build your plugin. Each one is individual and needs its own steps and processes.</p>



<p>However, should you consider automating your plugin build process. You might want to look in more detail in the open-source plugin source and the <a href="https://github.com/marcobambini/cubesqlplugin/tree/master/.github/workflows" target="_blank" rel="noreferrer noopener">workflows</a> which are building <a href="https://github.com/marcobambini/cubesqlplugin" target="_blank" rel="noreferrer noopener">CubeSQLPlugin</a> for all required targets and architectures.</p>



<h2 class="wp-block-heading"><strong>How to Transition from Manual to Automated</strong></h2>



<p>While creating a plugin, one doesn&#8217;t think of its build process in the early stages, maybe not even for the first few released versions.&nbsp;</p>



<p>Plugin building is usually a manual process, requiring manual execution of a lot of steps and commands on various machines. It is tedious and prone to errors. It takes time, which adds up the more you build. There&#8217;s a point when one should think about streamlining and automate the process, allowing for building new versions without too much effort.<br>In addition, it&#8217;s certainly a good idea to have a consistent build environment other than your own development machine as you could install and change things on there which could impact the builds. That&#8217;s why building inside a Docker container is an interesting approach &#8211; it will remain exactly the same each and every time, even if the host machine is changed <em>(e.g. by being updated to a new operating system version)</em>.</p>



<p>All that used to be like that before having written the GitHub workflow.</p>



<p>How can you transition from a manual to an automated process for your own project? I won&#8217;t be able to provide all answers. But, I&#8217;d like to give a few ideas of possible steps, with no intention of them being complete or the best choice for your project.</p>



<ul class="wp-block-list">
<li>Use a version control system.
<ul class="wp-block-list">
<li>Git and GitHub are (for many use cases) free.</li>



<li>Using a Cloud solution serves as a backup should something happen to your machines.</li>



<li>You can additionally benefit from other services such as the GitHub Actions workflows mentioned in this article.</li>
</ul>
</li>



<li>Everything that is only in your head should go into some written form. Once you don&#8217;t need to do something for some time, you might forget or miss something.
<ul class="wp-block-list">
<li>Start with documenting all steps, commands, and actions.</li>
</ul>
</li>



<li>Try to get rid of manual steps. Are you copy-and-pasting several commands to a terminal each and every time?
<ul class="wp-block-list">
<li>Put them in a shell script, so that you only need to run one command.</li>



<li>You can use these scripts later when going to a fully-automated system.</li>
</ul>
</li>



<li>When initial development is finished and you&#8217;re ready to release:
<ul class="wp-block-list">
<li>Don&#8217;t do releases from your development machine. It might be defunct, broken, stolen, or you&#8217;re installing some new cool stuff and suddenly notice issues with other projects. Having a dedicated build machine is one idea. </li>



<li>Another is going the &#8220;GitHub Actions&#8221; way which also has its benefits.
<ul class="wp-block-list">
<li>Runners are virtual machines that are provisioned and &#8220;fresh&#8221; every time. It&#8217;s always the very same environment to start with for each build, no matter what you&#8217;re doing during a build.</li>



<li>You don&#8217;t need to maintain many different build machines yourself. This can even solve some security issues, as it&#8217;s probably not your main interest of keeping everything up to date. I prefer to focus on programming and not on system maintenance.</li>



<li>However, the runners might be outdated in a few years &#8211; and new runners (with newer operating systems) will be available.
<ul class="wp-block-list">
<li>That&#8217;s usually not a very big issue on macOS and Windows since their build tools are usually backwards compatible for quite a long time.</li>



<li>Especially for Linux we have decided not to rely on the provided host but use a Docker Image and run the builds inside a Docker container. So you can, for example, use a Docker container with an image that perfectly fits your lowest compatibility needs, while the host itself might only have (too) new libraries installed.</li>
</ul>
</li>
</ul>
</li>



<li>Start putting all your steps and scripts into a workflow &#8211; be it just on your dedicated build environment, or using GitHub Actions.
<ul class="wp-block-list">
<li>Certainly separate them per required host (macOS / Windows / Linux).</li>



<li>Split a long script into smaller parts, e.g: Download LibreSSL, Build x86_64, Build arm64, Build Universal.
<ul class="wp-block-list">
<li>In case of an error, it&#8217;s easier to see that &#8220;macOS: Build arm64 has failed&#8221;, compared to &#8220;Build for macOS has failed&#8221; (because it&#8217;s all in a lengthy script).</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>Running the workflows manually is great and likely more than good enough.<br>Once the project activity grows (e.g. you&#8217;re receiving a lot of pull request or have many developers working on it):
<ul class="wp-block-list">
<li>Ensure that the build and test workflows are running on each pull request, require them to complete successfully before being able to merge. That by the way has been explained in the previous blog post <a href="https://blog.xojo.com/2022/10/19/xojo-github-actions/">Xojo GitHub Actions</a>. After all, no one wants to find out after many commits that the build is no longer working, and then have to search the history for what might have caused the problem.</li>
</ul>
</li>



<li>You&#8217;ll notice that once it&#8217;s all automated you no longer miss it. It causes no additional effort for you, instead bringing a lot of benefits <em>(such as noticing early when code changes cause oddities in tests and builds)</em>.</li>
</ul>



<h3 class="wp-block-heading"><strong>A Fun Fact</strong></h3>



<p>In the early days a build of the CubeSQLPlugin often took a couple of hours &#8211; and with personal attention needed so that one couldn&#8217;t work on much else during that time.</p>



<p>The first iteration of the workflows reduced the entire build (LibreSSL + Plugin) to about 25 minutes. With no attention and manual interaction needed &#8211; which means more time for other work. What took the longest was the LibreSSL ARM builds &#8211; they have been run on Intel hardware with QEMU for ARM emulation.</p>



<p>Back to the beginning of this article and <a href="https://forum.xojo.com/t/2025-year-of-code-february/" target="_blank" rel="noreferrer noopener">Xojo&#8217;s 2025 Year of Code</a> initiative &#8211; in February I have improved the workflows to use the newly available GitHub Actions runners that run on ARM hardware. Which means that no more emulation is required &#8211; and the build time has now come down to about 4 minutes for LibreSSL Libs <em>(required only once per new LibreSSL version)</em> and 2.5 minutes for the Xojo database plugin for all its supported platforms and architectures!</p>



<h2 class="wp-block-heading"><strong>That&#8217;s All Folks!</strong></h2>



<p>I hope this brief introduction of how to use <a href="https://docs.github.com/en/actions/writing-workflows" target="_blank" rel="noreferrer noopener">GitHub Actions workflows</a> and <a href="https://www.docker.com" target="_blank" rel="noreferrer noopener">Docker</a> to build a <a href="https://documentation.xojo.com/topics/custom_controls/plugins_sdk.html" target="_blank" rel="noreferrer noopener">Xojo plugin</a> has been helpful to some, food for thought to others.</p>



<p><em><em>Jürg Otter is a long term user of Xojo and working for </em><a href="https://www.cmiag.ch/"><em>CM Informatik AG</em></a><em>. Their Application </em><a href="https://cmi-bildung.ch/"><em>CMI LehrerOffice</em></a><em> is a Xojo Design Award Winner 2018. In his leisure time Jürg provides some </em><a href="https://www.jo-tools.ch/xojo/"><em>bits and pieces for Xojo Developers</em></a><em>.</em></em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: February Project, Database Apps</title>
		<link>https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 11 Feb 2025 16:48:26 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Database Applications]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14441</guid>

					<description><![CDATA[February&#8217;s&#160;Year of Code 2025&#160;topic is Databases and my project is a SQLite object-relation mapping library that I call Storm. I first created Storm in 2008&#8230;]]></description>
										<content:encoded><![CDATA[
<p>February&#8217;s&nbsp;<a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/" target="_blank" rel="noreferrer noopener">Year of Code 2025</a>&nbsp;topic is Databases and my project is a SQLite object-relation mapping library that I call Storm.</p>



<p>I first created Storm in 2008 when I was working on consulting projects as a way to more rapidly create database apps for clients. It has been updated over the years and the latest version is available on GitHub:</p>



<p><a href="https://github.com/paullefebvre/storm">Storm</a></p>



<p>An ORM lets you write code like this to set database column values and save them:</p>



<pre class="wp-block-code"><code>Var dodgers As New Team
dodgers.Name = "LA Dodgers"
dodgers.Coach = "Dave Roberts"
dodgers.Save</code></pre>



<p>Team is a table in the database with a corresponding class in Xojo that inherits from Storm.DBObject.</p>



<p>The included demo projects shows how you can implement a simple UI for a database with Team and Player tables.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="851" src="https://blog.xojo.com/wp-content/uploads/2025/02/CleanShot-2025-02-04-at-16.45.54@2x-1024x851.png" alt="" class="wp-image-14445" style="width:550px;height:auto" srcset="https://blog.xojo.com/wp-content/uploads/2025/02/CleanShot-2025-02-04-at-16.45.54@2x-1024x851.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/02/CleanShot-2025-02-04-at-16.45.54@2x-300x249.png 300w, https://blog.xojo.com/wp-content/uploads/2025/02/CleanShot-2025-02-04-at-16.45.54@2x-768x639.png 768w, https://blog.xojo.com/wp-content/uploads/2025/02/CleanShot-2025-02-04-at-16.45.54@2x.png 1424w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The docs for Storm are contained within its <a href="https://github.com/paullefebvre/storm/wiki">Github repository wiki</a>.</p>



<p>In addition to accessing the full repository on GitHub, you can also download <a href="https://github.com/paullefebvre/storm/archive/refs/tags/v1.2.1.zip">Storm as a ZIP</a>.</p>



<p>I’ve created a&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february/84239">forum topic</a>&nbsp;for you to start sharing your Year of Code projects and I’ll also be sure to include this one as well. Remember, <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">participants can win a $100</a> to use in the Xojo Store!</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: January Project, Desktop Apps</title>
		<link>https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 15 Jan 2025 19:26:16 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14380</guid>

					<description><![CDATA[January&#8217;s Year of Code 2025 topic is Desktop apps and my project is XojoText. XojoText is a simple text editor that lets you edit multiple&#8230;]]></description>
										<content:encoded><![CDATA[
<p>January&#8217;s <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/" target="_blank" rel="noreferrer noopener">Year of Code 2025</a> topic is Desktop apps and my project is XojoText.</p>



<p>XojoText is a simple text editor that lets you edit multiple files in one window with a list of files in the left sidebar. You can create new blank documents, documents from a selection in another document or from the clipboard.</p>



<p>It is based on the XojoText example that is included with Xojo, but enhanced in these ways:</p>



<ul class="wp-block-list">
<li>Word, character, line counts shown at bottom of editing area.</li>



<li>Recent Items menu.</li>



<li>Window menu.</li>



<li>Saves window position.</li>



<li>Prompts to sae changes.</li>



<li>Contextual menu on files in the sidebar.</li>



<li>Click “x” to close files in the sidebar.</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="783" src="https://blog.xojo.com/wp-content/uploads/2025/01/image-6-1024x783.png" alt="" class="wp-image-14381" srcset="https://blog.xojo.com/wp-content/uploads/2025/01/image-6-1024x783.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/01/image-6-300x230.png 300w, https://blog.xojo.com/wp-content/uploads/2025/01/image-6-768x588.png 768w, https://blog.xojo.com/wp-content/uploads/2025/01/image-6-1536x1175.png 1536w, https://blog.xojo.com/wp-content/uploads/2025/01/image-6.png 1694w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Suggestions for improvements and things to add:</p>



<ul class="wp-block-list">
<li>Find/Replace capability.</li>



<li>Printing.</li>



<li>PDF generation.</li>
</ul>



<p>I&#8217;ve created a <a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">forum topic</a> for you to start sharing your Year of Code projects and I&#8217;ll also be sure to include this one as well.</p>



<p>You can download the XojoText project from GitHub here: <a href="https://github.com/paullefebvre/XojoText" target="_blank" rel="noreferrer noopener">https://github.com/paullefebvre/XojoText</a></p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Year of Code 2025: Kickoff</title>
		<link>https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 09 Jan 2025 16:30:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Year of Code]]></category>
		<category><![CDATA[#JustCode]]></category>
		<category><![CDATA[#YearofCode]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Educational]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14122</guid>

					<description><![CDATA[Xojo is kicking off 2025 with something for everyone in the Xojo community, an event that will help new users grow their Xojo coding skills&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Xojo is kicking off 2025 with something for everyone in the Xojo community, an event that will help new users grow their Xojo coding skills and existing users polish theirs. Back in 2018, we did a &#8220;<a href="https://blog.xojo.com/2018/06/18/jump-right-in-just-code-challenge/" target="_blank" rel="noreferrer noopener">Summer of Code</a>&#8221; contest that challenged people to create one project a week through the summer. This was a lot of fun and many interesting apps were made that summer. For 2025, we have expanded that idea out to the entire year! However, instead of one app a week, we will make one app a month from January to November 2025. In December we will give away a grand prize!</p>



<h3 class="wp-block-heading">The Idea </h3>



<p>Early each month we will share a blog post that introduces an app &#8220;theme&#8221; and recaps the prior month. A week or so later, we will create a Forum topic and post an example project created by one of the Xojo team. To participate in the Year of Code, make a Xojo project that that demonstrates the theme in some way, share it on GitHub to make it easily accessible to everyone and then add a post about it (with your GitHub link) to the Forum topic.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If you have not used GitHub before, here is a <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/" target="_blank" rel="noreferrer noopener">blog post on how to share a Xojo project on GitHub</a>.</p>
</blockquote>



<p>Ideally, these will be small, focused apps that can be made in a few days. The idea is to have fun creating something that others might learn from. But I guarantee you&#8217;ll learn something as well. After all, the best way to get better at coding is to always be coding.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="640" src="https://blog.xojo.com/wp-content/uploads/2025/01/image-1.png" alt="" class="wp-image-14306" srcset="https://blog.xojo.com/wp-content/uploads/2025/01/image-1.png 1024w, https://blog.xojo.com/wp-content/uploads/2025/01/image-1-300x188.png 300w, https://blog.xojo.com/wp-content/uploads/2025/01/image-1-768x480.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="participate">How To Participate</h3>



<p>Each month Xojo will announce a new theme and share an example project. Share your own projects in the Xojo Forum thread for that month via GitHub, preferably. Projects with code shared at other sites can be eligible as long as the code is accessible to everyone. Learn how to use&nbsp;<a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<h3 class="wp-block-heading" id="prizes">The Prizes</h3>



<p>And yes, there will be prizes for those that participate. Each month all participants (everyone who shares a project that month) will be entered for a chance to win a monthly prize of $100 at the Xojo Store plus a 25% off coupon for GraffitiSuite.<sup data-fn="475ca43b-7f55-4b9d-8f49-dc8378c3dec1" class="fn"><a href="#475ca43b-7f55-4b9d-8f49-dc8378c3dec1" id="475ca43b-7f55-4b9d-8f49-dc8378c3dec1-link">1</a></sup> The $100 can be applied to any Xojo license purchase or Extras Store item. At the end of 2025, all participants from the year will be entered to win the grand prize of a Xojo Pro license, $250 cash and a free year of GraffitiSuite. The more months in which you participate throughout the year, the more chances you&#8217;ll have to win the grand prize.</p>



<h3 class="wp-block-heading">January&#8217;s Theme</h3>



<p>Now that it is January (Happy New Year, everyone), the 2025 Year of Code kicks off with this theme: <strong>Desktop apps</strong>. People have used Xojo to make wonderful desktop apps since its inception in 1998 so this is an ideal first theme that is broad enough to allow anyone to participate. Look for a post next week announcing this months&#8217; project details. Once it is posted, I will start a forum topic for others to share GitHub links to their projects and apps. In early February we will do a blog post that highlights what people made this month and introduce February&#8217;s theme.</p>



<p>I hope you will join us for the 2025 Year of Code and I look forward to seeing what you make with Xojo!</p>



<p>#2025YearOfCode</p>


<ol class="wp-block-footnotes"><li id="475ca43b-7f55-4b9d-8f49-dc8378c3dec1">Monthly winners are excluded from future <em>monthly</em> prizes but each monthly participant earns an additional entry into the grand prize drawing. <a href="#475ca43b-7f55-4b9d-8f49-dc8378c3dec1-link" aria-label="Jump to footnote reference 1"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li></ol>


<p><strong>Year of Code Project</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/">Year of Code: Kickoff</a></li>



<li><a href="https://blog.xojo.com/2025/01/15/year-of-code-2025-january-project/" target="_blank" rel="noreferrer noopener">January Project: Desktop Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/year-of-code-2025-january-project-sharing/83927" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/02/11/year-of-code-2025-february-project/">February Project: Database Apps</a>&nbsp;|&nbsp;<a href="https://forum.xojo.com/t/2025-year-of-code-february" target="_blank" rel="noreferrer noopener">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/03/05/year-of-code-2025-march-project-web-apps/">March Project: Web Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-march/84474?u=alyssa_foley">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/04/08/year-of-code-2025-april-project-user-interface/">April Project: User Interface</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-april-user-interface/84926">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/05/07/year-of-code-2025-may-project-mobile-apps/">May Project: Mobile Apps</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-may-is-mobile/85272">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/06/10/year-of-code-2025-june-project-cross-platform-code-class/">June Project: Code Sharing</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-june-is-code-sharing/85612">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/07/10/year-of-code-2025-july-project-charting/">July Project: Charting</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-july-is-charting/85896">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/08/07/year-of-code-2025-august-project-console-apps/">August Project: Console Apps</a> | <a href="https://forum.xojo.com/t/august-2025-year-of-code-console-apps/86203">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/09/08/year-of-code-2025-september-project-games/">September Project: Games</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-septgamer">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/10/13/year-of-code-2025-october-project-multi-platform-communication/">October Project: Multi-Platform</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-october-multi-platform-communication/86717">Forum Discussion</a></li>



<li><a href="https://blog.xojo.com/2025/11/10/year-of-code-2025-november-project-pdf-postcard-generator/">November Project: PDF</a> | <a href="https://forum.xojo.com/t/2025-year-of-code-november-pdf/86969">Forum Discussion</a></li>
</ul>



<p><strong>How to Play:</strong></p>



<p>Each month we&#8217;ll announce a new theme and share an example project of our own. Share your projects to the Xojo Forum thread for that month via GitHub (all the links you need are posted above ↑ ). Learn how to use <a href="https://blog.xojo.com/2024/04/02/using-xojo-and-github/">Xojo and GitHub</a>.</p>



<p><strong>The Prizes:</strong></p>



<p>Monthly winners get $100 at the Xojo store. Every month you submit a project is another chance to win the grand prize. The grand prize is $250 cash plus a Xojo Pro license and a year of GraffitiSuite and will be announce in December. Learn more about the <a href="https://blog.xojo.com/2025/01/09/year-of-code-2025-kickoff/#prizes">prizes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using Xojo and GitHub</title>
		<link>https://blog.xojo.com/2024/04/02/using-xojo-and-github/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 17:26:24 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12833</guid>

					<description><![CDATA[Now that Xojo Lite includes support for saving projects in version control format, it seems like a good time to revisit how you can use Xojo with GitHub, the popular online Git hosting service.]]></description>
										<content:encoded><![CDATA[
<p>Now that Xojo Lite includes support for saving projects in version control format, it seems like a good time to revisit how you can use Xojo with <a href="https://github.com">GitHub</a>, the popular online Git hosting service.</p>



<h2 class="wp-block-heading">What are Git and GitHub?</h2>



<p><a href="https://en.wikipedia.org/wiki/Git">Git</a> is an open-source version control system, also known as a source control system. Created by Linus Torvalds in 2005, it is now the most popular version control system, supplanting <a href="https://en.wikipedia.org/wiki/Apache_Subversion">Subversion</a> a while ago.</p>



<p>GitHub is an online Git hosting service, now owned by Microsoft. GitHub provides additional features beyond just Git hosting, but for this post we will focus on its Git hosting. GitHub is free to use for both public and private repositories.</p>



<p>A repository is essentially a place to store a project. Public repositories are great ways to share open-source projects. Others can view and download the source code. Private repositories are only visible to you and are great for your own internal projects.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Git is a distributed version control system, which just means that the source code can be versioned locally and on the server, only synchronizing when necessary. For simplicity it is common to keep both in sync, however. Older version control systems such as Subversion were server-based and versions were only ever kept on the server. A distributed version control system is slightly more complex, but it does have the advantage of making it easier to work offline.</p>
</blockquote>



<p>A version control system tracks changes made to text files, something that is incredibly useful when it comes to source code. Tracking changes is a very common task that is needed while programming. You may have seen people save their projects as MyProject1, MyProject2, MyProjectNewVersion, etc. That is a rudimentary way of trying to ensure you don&#8217;t lose changes as you update your code. With version control and the Xojo version control project file format you get a much more flexible technique.</p>



<p>When you save your project using the Xojo version control project file format (called Xojo Project) in the file selector, each project item is saved as its own file on the drive. And each of these files is plain text &#8212; you could view them using a text editor if you wanted.</p>



<p>You might be thinking: &#8220;I&#8217;m just a single developer, I don&#8217;t need this extra complexity.&#8221; But version control systems are not just for multi-person teams. Sure, version control is a great way to make sure that different team members don&#8217;t make different changes to the same code.  But version tracking is useful to everyone. Even as a single developer, being able to review previous changes, and revert changes if they don&#8217;t work out can be a lifesaver. It removes any &#8220;fear of breaking things&#8221; from your workflow. Plus, having your source code on a remote server (GitHub) can also function as one of your source code backups.</p>



<h2 class="wp-block-heading">A Quick Example</h2>



<p>To give you an example of how this works, consider a single text file that exists in Git: ReadMe.txt</p>



<p>Initially it contains just this text:</p>



<pre class="wp-block-code"><code>Hello!</code></pre>



<p>You pull down the file to your computer (I&#8217;ll define Git terms like these below) to work on it. Opening the file in a text editor, you change its text to this and save:</p>



<pre class="wp-block-code"><code>Hello, Xojo!</code></pre>



<p>Now the file on your computer contains that text. This is called the working copy. The file in the repository still has the text &#8220;Hello!&#8221;. Now you can do a couple useful things.</p>



<p>You can ask to see the differences between the file in the repository and the one in the working copy. When doing so, most tools will highlight the line that changed, showing the repository contents on the left and the working copy contents on the right. This is a wonderful way to review changes made to code.</p>



<p>The other thing you can do is commit the change to the repository. This adds this file to the repository and makes it the latest version. In Git you&#8217;ll then be able to see that this file has two versions and you&#8217;ll be able to see what the file looked like for each version.</p>



<p>These two things mean that you will never again lose any work. Anytime you make a change to your code that you want to save as a version in the repository, you commit it. You don&#8217;t want to commit after every change as that is too granular and will be hard to manage, but it means you can safely make a bunch of big changes to something and still be able to go back and review what the code looked like previously.</p>



<p>The other useful thing you can do is revert changes. If, after saving the file with &#8220;Hello, Xojo!&#8221; you realize that was a mistake, you can go back to the previous version by choosing to revert the file. This discards the local working copy and pulls down the most recent revision from the repository.</p>



<p>I realize that this might all seem rather different and confusing, but once you do this on a couple small projects you&#8217;ll get the hang of it and you will never want to go back to using MyProject1, MyProject2 again!</p>



<h2 class="wp-block-heading">Terminology</h2>



<p><strong>Repository</strong>: This is essentially a place to store a group of files, which for our purposes will be a Xojo project saved in the version control file format (Xojo Project).</p>



<p><strong>Clone</strong>: Copies the repository to your computer so you can work on it</p>



<p><strong>Fetch</strong>: Updates the local repository with any changes that are stored on the server</p>



<p><strong>Pull</strong>: Similar to fetch, except that it also copies the changes into the working copy</p>



<p><strong>Commit</strong>: Add the changed file to the repository as a new version</p>



<p><strong>Push</strong>: Pushes the committed file to the server (GitHub). Often this is done as a single step: Commit and Push.</p>



<p><strong>Working Copy</strong>: Your local copy of the repository and the file</p>



<h2 class="wp-block-heading">General GitHub Usage</h2>



<p>With Xojo, the general workflow you will use is:</p>



<ol class="wp-block-list">
<li>Create repository on GitHub for the project.</li>



<li>Pull it down to a folder on your computer.</li>



<li>Create a Xojo project.</li>



<li>Save it in Xojo Project (text) format into the above folder.</li>



<li>Commit and Push it to GitHub.</li>



<li>Make additional changes to the Xojo project.</li>



<li>Commit and Push to GitHub as necessary.</li>
</ol>



<h2 class="wp-block-heading">Create a GitHub Account</h2>



<p>If you don’t already have a GitHub account, you’ll need to create one. Head on over to the <a href="https://github.com/signup">sign up page</a> to start the process:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="346" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-2-1024x346.png" alt="" class="wp-image-12838" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-2-1024x346.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-2-300x101.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-2-768x259.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-2.png 1292w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Create a Repository</h2>



<p>Now that you have a GitHub account, you’ll want to go to your GitHub home page and click the “New Repository” button.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="156" height="80" src="https://blog.xojo.com/wp-content/uploads/2024/03/CleanShot-2024-03-28-at-12.59.10@2x.png" alt="" class="wp-image-12839"/></figure>



<p>As mentioned above, a repository is essentially where your project is stored. You’ll typically want a separate repository for each project. This is what the new repository form looks like:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="860" height="1024" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-4-860x1024.png" alt="" class="wp-image-12841" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-4-860x1024.png 860w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4-252x300.png 252w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4-768x914.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4-1291x1536.png 1291w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4.png 1504w" sizes="auto, (max-width: 860px) 100vw, 860px" /></figure>



<p>For open-source projects you&#8217;ll want to make sure &#8220;Public&#8221; is selected as it&#8217;s not really open-source if it is not public. For a public repository, be sure to come up with a catchy “repository name” and always include a description. Choose &#8220;Private&#8221; for internal projects.</p>



<p>I always check “Add a README file”, which adds an empty README file to the repository. You can update it later, but it is where you’ll briefly describe the project and how to use it (using <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a>). The README is shown by default when you go to the repository in a web browser.</p>



<p>You should also select “Xojo” for the gitignore template (click the dropdown and type &#8220;xojo&#8221;). This identifies the project as using the Xojo programming language, which helps with searches and also marks the “uistate” file (which contains user-specific UI settings, such as window sizes and positions) so that it is not included in the project.</p>



<p>Last is the license. For most public open-source projects, I recommend the <a href="https://en.wikipedia.org/wiki/MIT_License">MIT License</a>, which essentially allows anyone to use your code however they want. For private projects, you can leave it at &#8220;None&#8221;.</p>



<p>Click the Create Repository button to create the repository.</p>



<h2 class="wp-block-heading">Clone the Repository to your Computer</h2>



<p>With the repository created, you can view it on the GitHub website for you account:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="480" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-5-1024x480.png" alt="" class="wp-image-12842" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-5-1024x480.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-300x141.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-768x360.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-1536x720.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-2048x960.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>From here you&#8217;ll be able to see the files in the repository, along with other information.</p>



<p>You are now ready to &#8220;clone&#8221; the repository to your computer. This copies the repository files to a folder on your computer so you can modify its files. Of course, the only files in the repository will be LICENSE and the empty README.md, but it is still necessary to do the clone so that you can create the folder where you will then add your Xojo code.</p>



<p>In order to clone, you’ll want to use a Git client application. There are many to choose from, but two free ones are the official&nbsp;<a href="https://desktop.github.com">GitHub Desktop</a>&nbsp;and&nbsp;<a href="https://www.sourcetreeapp.com">Atlassian&nbsp;SourceTree</a>. GitHub Desktop is simpler so that is the one I’ll show here.</p>



<p>Download GitHub Desktop:&nbsp;<a href="https://desktop.github.com">https://desktop.github.com</a></p>



<p>Start GitHub Desktop and click “Sign into GitHub.com”.</p>



<p>On the Configure Git page, enter the name and email you want to use to identify your commits.</p>



<p>Click Finish on the next page to show the main screen where you have the option of creating new repositories or cloning a repository. Since we already created a repository online in the previous section, you want to select “Clone a Repository” (you can also choose this from the File menu). In the list, choose the repository you created above, choose your local folder location (Choose…) and click Clone.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="988" height="976" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-8.png" alt="" class="wp-image-12845" style="width:437px;height:auto" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-8.png 988w, https://blog.xojo.com/wp-content/uploads/2024/03/image-8-300x296.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-8-768x759.png 768w" sizes="auto, (max-width: 988px) 100vw, 988px" /></figure>



<p>You now have a folder on your disk where you can add your Xojo project. This is what the repository looks like in GitHub Desktop:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-9-1024x716.png" alt="" class="wp-image-12846" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-9-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><em>Note: If you are using another Git client, you will choose its “clone a repository from URL” feature and then provide the URL shown in the “Clone or Download” button on the repository page.</em></p>



<h2 class="wp-block-heading">Add Your Xojo Project Code</h2>



<p>Start Xojo and open the project you want for the repository you cloned (or you can just create a new project). Click “Save As”, make sure the Format is “Xojo Project” and choose the folder you created when you cloned the repository.</p>



<p>Go back to GitHub Desktop and you’ll now see all the Xojo files appearing in the list as “changed files”. (For this test I used a Xojo SQLiteExample.)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-11-1024x716.png" alt="" class="wp-image-12848" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-11-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You now need to “Commit” these changes. By default they are all selected/checked in GitHub Desktop so you can enter a brief summary and description (for the first commit, often “Initial commit.” is used, but I used &#8220;Initial Xojo commit.&#8221;) and then click the “Commit to main” button.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Each time you commit you want to be sure to type a clear summary and description of the changes. This will be helpful later when you are reviewing prior commits.</p>
</blockquote>



<p>This marked the files as committed in your local repository, which is needed before you can push the changes up to the online repository. Generally speaking you want to commit things after you have made changes that you want to track. You don’t need to immediately push the changes up to the server (online repository) each time, however, people often do as it is simpler. Some Git clients even offer a single button or command to commit and push in one step.</p>



<p>For this initial commit you definitely want to push the commit to the server, so click the button in the toolbar that says “Push origin”. This pushes the commit to the origin, which is the GitHub repository in this case.</p>



<p>If you now go back to the GitHub repository online and refresh the page you’ll now see the files have been committed:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="663" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-12-1024x663.png" alt="" class="wp-image-12849" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-12-1024x663.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-300x194.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-768x497.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-1536x994.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-2048x1325.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Sharing Your Public Project</h2>



<p>If you created a public repository then it is now available on GitHub for anyone to use. People can find it by searching or you can share the URL (perhaps in the <a href="https://forum.xojo.com">Xojo Forum</a>).</p>



<p>Since I <a href="https://github.com/xojo/MyTestProject">published a public project</a>, anyone can use it. This means that they can clone it and push changes to your project as &#8220;pull requests&#8221;. A pull request is a change that a user has made that they would also like you to apply to your project. Since this is your project, others cannot directly change it without you adding them as contributors. However, you can review these pull requests and choose to pull and merge the change into your project if you want. Or you can reject the pull request &#8212; it&#8217;s all up to you since it&#8217;s your project.</p>



<h2 class="wp-block-heading">Changing and Updating Your Project</h2>



<p>You’ll likely be continuing to change your project to fix bugs and add features. Each change you make shows up in GitHub Desktop where you can commit it and then push it to the server.</p>



<p>As an example, go back to Xojo and make a change to the project. I added some comments to the AddTeamRow method. After saving, the changes are now visible in GitHub Desktop:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-14-1024x716.png" alt="" class="wp-image-12851" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-14-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can see the one file that was changed, SQLiteWindow, and the changes (or diff) is shown in the viewer. Here you can see the changes by the blue highlighted lines in the gutter. The first change indicates that line 386 was removed and replaced, with the change noting that &#8220;Please&#8221; was added.</p>



<p>The next two changes indicate that new lines were added to the code.</p>



<p>It&#8217;s always good to review code like this before you commit it to make sure the changes are what you expect.</p>



<p>You can now Commit this change (always add Summary and Description text so you know the reason for the change!) and then Push it to the server (Push origin).</p>



<h2 class="wp-block-heading">Discarding Changes</h2>



<p>Say you&#8217;ve made changes to your Xojo project, but realize you&#8217;ve really messed things up and want to go back to the way the code was. For example, say I&#8217;ve accidentally deleted a bunch of code in the ShowData method and saved the project. In GitHub Desktop, it would look like this:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-15-1024x716.png" alt="" class="wp-image-12852" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-15-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can see the big red area indicating the code that was removed.</p>



<p>To discard this change, I can right-click on SQLiteWindow in GitHub Desktop and select Discard Changes. This pops up a confirmation dialog and clicking Discard Changes will restore the file to its previous version, which is the version of the file that was last committed to the repository.</p>



<p>After doing this, you will need to close the project in Xojo and then re-open it so that it can refresh its internal project structures to reflect the discarded changes. After doing that, you can go back to the ShowData method to see that the code is restored.</p>



<p>This capability is a big reason why version control is also incredibly useful for solo developers.</p>



<h2 class="wp-block-heading">Using or Cloning Other Repositories</h2>



<p>Don’t forget that you can also use other people’s public repositories. To do so you’ll want to click the “Clone or Download” button on the repository page.</p>



<p>For simple usage, where you just want to grab the current version of the repository because you don&#8217;t intend to change anything, you can then click the Download ZIP button. Once downloaded, unzip the file and then open the project in Xojo where you can use it or copy/paste it into your own projects (review the license agreement before you use projects, of course).</p>



<p>You’ll want to clone a project when you want to manage it using GitHub Desktop (or your GitHub client of choice). This allows you to fetch/pull updates from the online repository and also allows you to make your own changes and push them up to the server where the repository owner will get them as pull requests, as described above.</p>



<h2 class="wp-block-heading">Change Your Default Project Format</h2>



<p>You might find it worthwhile to change your default project format to be the version control format. This way it will always be selected by default when you save. You can change this in Xojo&#8217;s General Settings:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="656" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-16-1024x656.png" alt="" class="wp-image-12853" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-16-1024x656.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16-300x192.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16-768x492.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16-1536x984.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16.png 1624w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Pro Tip: When saving a project for the first time in version control format, it is always a good idea to save into a newly created folder. This ensures that all your files will be neatly contained in one place and won&#8217;t accidentally override something else that may have been in the folder.</p>
</blockquote>



<h2 class="wp-block-heading">Git Going</h2>



<p>If you&#8217;ve created Xojo projects in public repositories on GitHub, be sure to share them in the <a href="https://forum.xojo.com/">forum</a>!</p>



<p>This post just scratches the surface of what GitHub does and also only touches lightly on Git and the concept of source control in general. If you’d like to use Git for source control, but would prefer an alternative to GitHub you might also want to check out&nbsp;<a href="https://bitbucket.org">Atlassian BitBucket</a>&nbsp;which also offers free Git hosting for both private and public repositories.</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Free Xojo Linux and Raspberry Pi for Everyone</title>
		<link>https://blog.xojo.com/2024/03/26/free-linux-builds/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Tue, 26 Mar 2024 15:26:18 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[2024r1]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Binary]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GitLab]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12631</guid>

					<description><![CDATA[Now with Xojo 2024r1 you can use Xojo's free IDE to build Linux desktop and console apps from Linux, macOS, or Windows, no license required.]]></description>
										<content:encoded><![CDATA[
<p>Beginning with Xojo 2024r1 you can use Xojo&#8217;s free IDE to build Linux desktop and console apps from Linux, macOS, or Windows, no license required.</p>



<h2 class="wp-block-heading" id="free-linux">Xojo Linux is Free</h2>



<p>We have made building for Linux free and included in the Xojo IDE! This means that on Linux you get a version control ready IDE, along with the ability to build desktop and console Linux apps (including Raspberry Pi), all for free. Launch Xojo 2024r1 (or any later release of <a href="https://xojo.com/download/" target="_blank" rel="noreferrer noopener">Xojo</a>) and open any desktop or console project, go to Build Settings, select Linux and in the Inspector choose the appropriate Architecture that matches the Linux OS you want your app to work on, either ARM or x86. Click Build to compile your project to a standalone app that you can then run on Linux &#8211; no license required.</p>



<h2 class="wp-block-heading">Wrapping Up</h2>



<p>All these changes were made based on feedback from the Xojo community and to better match the changing ways that people develop and share software projects. With this change Xojo continues its dedication to supporting Linux.</p>



<p><a href="https://xojo.com/download/">Download Xojo</a> to get started.</p>



<p>Edited 07/2025 to reflect changes to licensing. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo for Students</title>
		<link>https://blog.xojo.com/2024/01/25/xojo-for-students/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Thu, 25 Jan 2024 13:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Educational]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GitHub Student Developer Pack]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Student]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11561</guid>

					<description><![CDATA[Students looking to begin their journey into programming look to Xojo for its ease of use and dedication to cross-platform development. Plus, Xojo is true rapid app development and is ideal for building prototypes and mockups really fast. All of these features benefit from Xojo's OOP-focus. Xojo also has a vibrant and helpful community and years worth of free, on-line resources. ]]></description>
										<content:encoded><![CDATA[
<p>Xojo is a programming language and development environment for creating cross-platform applications for macOS, Windows and Linux from whatever computer you use &#8211; Mac, Windows or Linux. You can also create web, iOS, Android and Raspberry Pi apps with Xojo. To empower students, Xojo has partnered with GitHub to offer Xojo Pro to all students in the <a href="https://education.github.com/pack">GitHub Student Developer Pack</a>. In addition to Xojo, the Pack includes tons of free tools to help students expand their technical knowledge and learn new skills. </p>



<p>Students looking to begin their journey into programming choose Xojo for its <strong>ease of use</strong> and dedication to <strong>cross-platform</strong> development. Plus, Xojo is true rapid app development and is ideal for building <strong>prototypes and mockups</strong> really fast. All of these features benefit from Xojo&#8217;s <strong>OOP</strong>-focus. Xojo also has an active and helpful <strong>community</strong> and years worth of free, on-line <strong>resources</strong>. </p>



<span id="more-11561"></span>



<h3 class="wp-block-heading"><strong>Ease of Use from App Design to Build</strong></h3>



<p>Xojo is known for its user-friendly and visual development environment. It employs a drag-and-drop interface, which can be helpful for students who are new to programming and those who want to rapidly prototype software without delving into complex coding. Xojo is efficient, featuring a streamlined development process and extensive feature set, you can create applications fast without sacrificing quality or functionality. Xojo is based on object-oriented programming principles. <a href="https://documentation.xojo.com/getting_started/object-oriented_programming/index.html">Learning OOP</a> through Xojo can provide students with a solid foundation in programming concepts that are widely applicable in the software development industry.</p>



<h3 class="wp-block-heading"><strong>Multiplatform Development for Windows, macOS, Linux, mobile, &amp; web</strong></h3>



<p>Xojo is incredibly versatile. Whether you&#8217;re interested in desktop, mobile, or web application development, you can built it with Xojo. With its cross-platform capabilities, you can even build applications that run on multiple platforms from a single code-base. This can be particularly valuable for students working on a MacBook but needing app for a Windows machine or vice-versa. Write your app once and compile it for macOS, Windows and Linux.</p>



<h3 class="wp-block-heading"><strong>Rapid Application Development for Prototypes and Mockups</strong></h3>



<p>Xojo is designed for rapid application development (RAD), making it an ideal choice for students who need to create functional applications quickly. Students can use Xojo to build practical, real-world applications. This hands-on experience can be valuable for learning and demonstrating software development skills, especially for those working on the design and usability aspects of software development. </p>



<h3 class="wp-block-heading"><strong>Community and Resources</strong></h3>



<p>Xojo has an active community and offers resources, including documentation, tutorials, and forums. Students can benefit from this support when learning and troubleshooting. With an active and friendly community of developers, top-notch support team and extensive documentation and tutorials, you&#8217;ll always have the help and resources you need to succeed. Learn at your own pace, and have access to the support you need to overcome challenges along the way.</p>



<p>No matter why you choose Xojo, whether for its simplicity, cross-platform capabilities, rapid development or community and resources, Xojo is a valuable tool for learning programming and software development concepts. Xojo is a great place to start when building or looking to expand your development toolkit.</p>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-white-color has-text-color has-background has-link-color wp-element-button" href="https://xojo.com/download/" style="background-color:#84bd00">Download Xojo</a></div>
</div>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo GitHub Actions</title>
		<link>https://blog.xojo.com/2022/10/19/xojo-github-actions/</link>
		
		<dc:creator><![CDATA[Jürg Otter]]></dc:creator>
		<pubDate>Wed, 19 Oct 2022 12:30:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Guest Post]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Build Automation]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=10874</guid>

					<description><![CDATA[Would you like to automate the build processes of Xojo built applications with GitHub Actions? With no user interaction the whole process can be performed:&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Would you like to automate the build processes of Xojo built applications with GitHub Actions? With no user interaction the whole process can be performed: Build all Targets, CodeSign Windows executables, create and sign the installers, package the macOS app in a .dmg and notarize the app, and for Linux create a .tgz package.</p>



<figure class="wp-block-image size-full is-style-default"><img loading="lazy" decoding="async" width="1200" height="705" src="https://blog.xojo.com/wp-content/uploads/2022/10/1_Beta-Build.gif" alt="beta build GitHub actions with xojo" class="wp-image-10886"/></figure>



<h2 class="wp-block-heading">What are GitHub Actions?</h2>



<p>If you want to read all about it &#8211; head over to their <a href="https://docs.github.com/en/actions">documentation</a>. To get started, you should at least know about the following terms:</p>



<h3 class="wp-block-heading"><strong>Workflow</strong></h3>



<p>A workflow is a configurable automated process that will run one or more jobs. Workflows are defined by a YAML file checked in to your repository.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Job</strong></h3>



<p>A job is a set of steps in a workflow that execute on the same runner. Each step is either a shell script that will be executed, or an action that will be run.</p>



<h3 class="wp-block-heading"><strong>Runner</strong></h3>



<p>A runner is a machine that runs your workflows when they&#8217;re triggered. GitHub provides <a href="https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources">ready to use runners</a> as preconfigured virtual machines. And of course you can <a href="https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners">host your own runners</a>.</p>



<p>A GitHub Actions workflow can be configured to be triggered when an event occurs in the repository. So how to leverage that? Let&#8217;s talk about the Git Branching strategy that I&#8217;m going to use in this example first.</p>



<h2 class="wp-block-heading">Git Branching Strategy</h2>



<p>Using GitHub obviously means the one is using Git as Source Control. There are quite a few common strategies and workflows to use Git. For this example I&#8217;ll be using the following:</p>



<ul class="wp-block-list"><li>Default Branch: main<br>I want to make sure that all code in the main branch can be compiled at all times. Every push (or Pull Request against the main branch) should automatically build a Beta Version of the app.<br>At some time I want to use the latest commit to build a final version of the application.</li><li>Feature branches: feature/xyz<br>To start working on a new feature or bug fix, I&#8217;ll create a feature branch. As I often commit I don&#8217;t want to build every single commit. There might be commits with &#8220;work in progress&#8221; which won&#8217;t even compile.<br>Once ready: I create a Pull Request against the main branch.</li><li>Pull Request <em>(against main branch)</em><br>This means a feature or bug fix is ready. So a GitHub Action should kick in and build the app. If that fails it simply means the feature isn&#8217;t ready for the main branch. The built Beta Version can be downloaded to do some more manual tests before merging into the main branch.<br>Once the Pull Request is merged <em>(always using a squash commit)</em>, this will result in a single commit to the main branch (of the whole new feature). Same procedure: a Beta of the app is automatically built and ready for to download and test.</li><li>Release a Final Build<br>After adding couple of new features and bug fixes I want to release a final version.<br>Whenever I feel ready, a GitHub Actions Workflow can be started manually. That will build a Final Version, create a Release in the GitHub Repository and upload all Builds to the Release as Assets.</li></ul>



<p>A bit of information before starting to write the <a href="https://docs.github.com/en/actions/using-workflows">GitHub Actions Workflows</a>:</p>



<h2 class="wp-block-heading"><strong>About Workflows</strong></h2>



<p>Workflows are defined by a YAML file checked in to the repository in the .github/workflows directory.</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="234" src="https://blog.xojo.com/wp-content/uploads/2022/10/2_Workflows-yaml-1024x234.png" alt="" class="wp-image-10879" srcset="https://blog.xojo.com/wp-content/uploads/2022/10/2_Workflows-yaml-1024x234.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/10/2_Workflows-yaml-300x69.png 300w, https://blog.xojo.com/wp-content/uploads/2022/10/2_Workflows-yaml-768x176.png 768w, https://blog.xojo.com/wp-content/uploads/2022/10/2_Workflows-yaml-1536x351.png 1536w, https://blog.xojo.com/wp-content/uploads/2022/10/2_Workflows-yaml-2048x469.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><strong>YAML files</strong></h3>



<p>A word of precaution when writing and editing YAML files:</p>



<ul class="wp-block-list"><li>Indentation is done by spaces (not by tabs!)</li><li>Indentation has to be exact, or expect to get syntax errors</li></ul>



<h2 class="wp-block-heading"><strong>Xojo GitHub Actions Workflows</strong></h2>



<p>According to the Git Branching Strategy I want to build Beta Releases <em>(on Pull Requests and on Push to the main branch)</em>, and I want to manually create a Release with a Final Build.</p>



<p>This means that there will be two Workflows:</p>



<ul class="wp-block-list"><li><strong>Beta Build</strong></li><li><strong>Create Release</strong></li></ul>



<p>They have something in common. Both need to build the Xojo project and execute the postbuild steps. To avoid duplication I&#8217;m going to write a <a href="https://docs.github.com/en/actions/using-workflows/reusing-workflows">reusable workflow</a>:</p>



<ul class="wp-block-list"><li><strong>Xojo</strong> <em>(Build and PostBuild)</em></li></ul>



<p>A workflow <em>(Beta Build | Create Release)</em> that uses another workflow <em>(Xojo Build and PostBuild)</em> is referred to as a &#8220;caller&#8221; workflow. The reusable workflow is a &#8220;called&#8221; workflow.</p>



<p>This ScreenShot shows the Beta Build workflow which calls the reusable Xojo workflow:</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="403" src="https://blog.xojo.com/wp-content/uploads/2022/10/3_Workflow-Run-1024x403.png" alt="" class="wp-image-10880" srcset="https://blog.xojo.com/wp-content/uploads/2022/10/3_Workflow-Run-1024x403.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/10/3_Workflow-Run-300x118.png 300w, https://blog.xojo.com/wp-content/uploads/2022/10/3_Workflow-Run-768x302.png 768w, https://blog.xojo.com/wp-content/uploads/2022/10/3_Workflow-Run-1536x605.png 1536w, https://blog.xojo.com/wp-content/uploads/2022/10/3_Workflow-Run-2048x806.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The Create Release workflow looks similar during it&#8217;s run. It can be started manually on GitHub.</p>



<figure class="wp-block-image size-full is-style-default"><img loading="lazy" decoding="async" width="1200" height="694" src="https://blog.xojo.com/wp-content/uploads/2022/10/4_Create-Release.gif" alt="create release with GitHub actions and xojo" class="wp-image-10894"/></figure>



<p>Once finished, a new Release is available in the GitHub repository:</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="547" src="https://blog.xojo.com/wp-content/uploads/2022/10/5_CreateRelease-Final-1024x547.png" alt="" class="wp-image-10881" srcset="https://blog.xojo.com/wp-content/uploads/2022/10/5_CreateRelease-Final-1024x547.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/10/5_CreateRelease-Final-300x160.png 300w, https://blog.xojo.com/wp-content/uploads/2022/10/5_CreateRelease-Final-768x410.png 768w, https://blog.xojo.com/wp-content/uploads/2022/10/5_CreateRelease-Final-1536x820.png 1536w, https://blog.xojo.com/wp-content/uploads/2022/10/5_CreateRelease-Final-2048x1093.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">The Set Up</h2>



<p>There is quite a bit to do:</p>



<ul class="wp-block-list"><li>Set up a <strong>Build Mac</strong><br>A Mac of our own is needed. The reason for that is that Xojo isn&#8217;t set up on GitHub&#8217;s virtual macOS machines <em>(one would need to download and install it every single time)</em>. And even if it were, we would need to setup and register Xojo with a License. And Xojo Licenses take a seat on every machine &#8211; so no good idea for a fresh virtual machine on every build.</li><li>Create a <strong>Xojo IDE Communicator</strong><br>Build Automation with Xojo requires to communicate with the Xojo IDE. I&#8217;m going to use the project that Xojo ships in the examples, but modify it a bit.</li><li>Configure the <strong>GitHub Repository Settings</strong><br>There are settings to enforce the chosen Git Branching Strategy. And there are some settings for GitHub Actions that need to be set up.</li><li>Set up a <strong>self-hosted GitHub runner</strong><br>Install the GitHub runner on the Build Mac and link it to the repository.</li><li><strong>Xojo Project</strong> and <strong>Post Build Scripts</strong><br>I&#8217;m going to add a PreBuild Xojo Script. And of course all Post Build Scripts regarding CodeSigning, Installer creation, packaging, Notarization.</li><li>GitHub Actions: <strong>Secrets</strong><br>CodeSigning means certificates and passwords. They get their safe place in the repository Secrets.</li><li>GitHub Actions: <strong>Workflows</strong><br>Once everything is in place&#8230; one can finally start writing the actual workflows.</li></ul>



<p>As you can imagine, guiding you through all these steps is going to be quite a lengthy article.</p>



<h2 class="wp-block-heading"><strong>Source Code &amp; Documentation</strong></h2>



<p>Should you consider using GitHub Actions with your own Xojo projects, then have a look at this repository: <a href="https://github.com/jo-tools/xojo-github-actions">GitHub: jo-tools/xojo-github-actions</a></p>



<p>It contains the full documentation, the source of the modified Xojo IDE Communicator, an Example Xojo Project &#8211; and of course all the GitHub Actions Workflows.</p>



<p>I hope this gives you a lot of helpful hints, ideas and approaches so that you get a head start to get your Xojo Projects built using GitHub Actions Workflows.</p>



<h2 class="wp-block-heading"><strong>That&#8217;s all Folks!</strong></h2>



<p>I hope this brief introduction of how Build Automation for Xojo built Application can be used with GitHub Actions Workflows has been helpful to some, food for thought to others.</p>



<p><em>Jürg Otter is a long term user of Xojo and working for </em><a href="https://www.cmiag.ch/"><em>CM Informatik AG</em></a><em>. Their Application </em><a href="https://cmi-bildung.ch/"><em>CMI LehrerOffice</em></a><em> is a Xojo Design Award Winner 2018. In his leisure time Jürg provides some </em><a href="https://www.jo-tools.ch/xojo/"><em>bits and pieces for Xojo Developers</em></a><em>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>August is Bug Bash Month at Xojo</title>
		<link>https://blog.xojo.com/2022/07/13/august-is-bug-bash-month-at-xojo/</link>
					<comments>https://blog.xojo.com/2022/07/13/august-is-bug-bash-month-at-xojo/#comments</comments>
		
		<dc:creator><![CDATA[Dana Brown]]></dc:creator>
		<pubDate>Wed, 13 Jul 2022 13:46:21 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Bug Bash]]></category>
		<category><![CDATA[Bug Report]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Issues]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo MVP]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=10567</guid>

					<description><![CDATA[We are excited to announce that during the entire month of August the majority of our engineering team will be focusing on a Bug Bash! ]]></description>
										<content:encoded><![CDATA[
<p>We are excited to announce that during the entire month of August the majority of our engineering team will be focusing on a Bug Bash! </p>



<p>The Xojo <a rel="noreferrer noopener" href="https://xojo.com/mvp/" target="_blank">MVPs</a> give us regular feedback on issues affecting the community at large &#8211; sometimes that is about a new feature, early testing of a release or more general matters. Recently the MVPs emphasized to us that bugs that don&#8217;t affect a lot of users, but can be really annoying to a small group of users, don&#8217;t get much attention. We talked about how to best address some of these issues and since we haven&#8217;t done a Bug Bash in a while, we decided it was time to do one.</p>



<h3 class="wp-block-heading">Nominating a Bug for the Bug Bash</h3>



<p>Starting now, each user can nominate <strong>up to 10 bugs</strong> to be fixed during the Bug Bash. You don&#8217;t have to nominate them all at once, we will accept nominations through August 31st. To nominate a bug, post this exact language as a comment on the case(s) you wish to nominate in <a rel="noreferrer noopener" href="https://xojo.com/issues" target="_blank">Issues</a>: <strong>[BugBash2022Nominee]</strong>. Starting in August, our system will add a Bug Bash label to make it easy to find them.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="301" src="https://blog.xojo.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-12-at-10.01.27-AM-1024x301.png" alt="" class="wp-image-10575" srcset="https://blog.xojo.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-12-at-10.01.27-AM-1024x301.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-12-at-10.01.27-AM-300x88.png 300w, https://blog.xojo.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-12-at-10.01.27-AM-768x226.png 768w, https://blog.xojo.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-12-at-10.01.27-AM.png 1512w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If you find that a case is already nominated with the Bug Bash label, do not add it again. Per usual, if the case affects you, add a &#8220;thumbs up&#8221; so we have some idea of how many users are affected by a particular bug. Please note that Feature Requests will not be considered for the Bug Bash.</p>



<p>Not every case that is nominated will be fixed. There are a multitude of reasons for this, but each case nominated will be evaluated and we&#8217;ll let you know the outcome.</p>



<p>We hope you&#8217;ll participate in the Bug Bash. No case is too old, too small or too esoteric! Submit your nominations today!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.xojo.com/2022/07/13/august-is-bug-bash-month-at-xojo/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Xojo Educational Licenses for Teachers</title>
		<link>https://blog.xojo.com/2021/09/01/xojo-educational-licenses-for-teachers/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Wed, 01 Sep 2021 18:12:20 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Educational]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Intro to Xojo Programming Textbook]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=9094</guid>

					<description><![CDATA[Educators can download Xojo to a classroom of computers and activate the Xojo Educational license on a build machine. Whether your classroom is Windows, Mac or Linux, the Xojo IDE is cross-platform and free to download. Though you may only be teaching desktop development, your students can stretch their skills and use Xojo's free IDE to develop web, mobile or Raspberry Pi apps. ]]></description>
										<content:encoded><![CDATA[
<p>Xojo is the the best kept secret of developers around the world and now we&#8217;re making it easier for teachers with the free Xojo Educational license. Xojo is an integrated development environment (IDE) and an object-oriented programming language and it makes an excellent introduction to programming. We&#8217;re offering this license to empower educators of all kinds, whether they teach in a traditional classrooms, adult education programs or clubs. Teach universal programming concepts that apply to Xojo and nearly all programming languages. Create a <a href="https://xojo.com/account/create/">Xojo account</a> using your .edu (or other) educational email address and <a href="mailto:hello@xojo.com" data-type="mailto" data-id="mailto:hello@xojo.com" target="_blank" rel="noreferrer noopener">reach out</a> to request your free Xojo Educational license today!</p>



<p>Xojo is free to download and free for development and learning, for everyone. Teachers and students can <a href="https://xojo.com/download/">download Xojo</a> to as many computers as they want. Teachers can activate their license on 3 computers in order to build apps, while students can use the free Xojo IDE to develop, run and debug their projects. Whether you teach on Windows, Mac or Linux, the Xojo IDE is cross-platform so you can code on your platform of choice, and so can your students. If you are teaching Desktop development, your students can stretch their skills and use Xojo to learn to make Web, Mobile or Raspberry Pi apps. Xojo is all about making developing for different platforms and devices easier with one cross-platform, object-oriented language, in fact, that&#8217;s how Xojo got its name. </p>


<div class="wp-block-image">
<figure class="aligncenter size-medium is-resized"><img loading="lazy" decoding="async" width="300" height="216" src="https://blog.xojo.com/wp-content/uploads/2021/09/651B3FFD-6CAB-4EFA-9298-A3BD78DD0008-300x216.jpg" alt="" class="wp-image-9102" style="width:205px;height:148px" srcset="https://blog.xojo.com/wp-content/uploads/2021/09/651B3FFD-6CAB-4EFA-9298-A3BD78DD0008-300x216.jpg 300w, https://blog.xojo.com/wp-content/uploads/2021/09/651B3FFD-6CAB-4EFA-9298-A3BD78DD0008.jpg 584w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>
</div>


<p>A Xojo Educational license makes apps for all supported platforms (Desktop, Web, Mobile, Console &amp; RPi). Students can create native user interfaces quickly and intuitively with drag and drop from Xojo&#8217;s library of built-in controls. Xojo includes modern support for inheritance, interfaces, polymorphism, graphics, internet protocols and more. Xojo comes bundled with SQLite and works with databases like PostgreSQL, MySQL and Microsoft SQL Server. Free technical support via email is included with the Educational license and access to the <a href="https://forum.xojo.com">Xojo Forum</a> is free for everyone. Apps compiled with Xojo are native, stand-alone and yours forever.</p>



<h3 class="wp-block-heading">The More You Know </h3>



<ul class="wp-block-list">
<li>Xojo <a href="https://documentation.xojo.com/Home">documentation</a>, example projects, tutorials, <a href="https://www.youtube.com/c/XojoInc">YouTube</a> channel and <em>Intro to Xojo Programming</em> <a href="https://www.xojo.com/resources/learn.php">Textbook and Teacher&#8217;s Guide</a> are all free.</li>



<li><a href="https://youtu.be/0MRcSRtlGq4">Video</a>: Success With Xojo In Improving Student Retention In Intro to Programming Classes, Dr Ed Lindoo, Regis University</li>



<li><a href="https://www.xojo.com/raspberrypi/">Xojo Pi</a> for building Raspberry Pi apps (Linux 32-bit ARM apps) is free.</li>



<li>Students can get Xojo and tons of other free programming tools in the <a href="https://www.xojo.com/githubstudent/">GitHub Student Developer Pack.</a></li>



<li>Xojo is celebrating <a href="https://blog.xojo.com/2021/04/01/suddenly-it-was-25-years-ago/">25 years</a> as a development tool and programming language in 2021!</li>



<li>Still not sure Xojo is right for your classroom? Email Xojo directly with any questions at hello@xojo.com.</li>
</ul>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
