<?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>Remote Debugging &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/remote-debugging/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Tue, 26 Nov 2024 19:12:36 +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>Remote Debugger: How to debug your app on any computer</title>
		<link>https://blog.xojo.com/2024/01/19/remote-debugger-how-to-debug-your-app-on-any-computer/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Fri, 19 Jan 2024 13:00:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12482</guid>

					<description><![CDATA[If only you could run your app in debug mode on a specific, remote computer. With Xojo, you can. Let's talk about Xojo's Remote Debugger. ]]></description>
										<content:encoded><![CDATA[
<p>At one time or another we all experienced it. The app you created works beautifully and your users heap praise upon it. Then, a particular user reports that some part of the app (or the entire app) doesn&#8217;t work on their computer. Other users with the same type of computer, same OS version, etc., do not experience the same issue. After scratching your head and thinking to yourself that the fault perhaps lies with the user, you create a special version of your app just for that user with MessageBox commands and/or various points in the code logged to a text file. This will give you the answer as to why your app is failing just for that one user. Alas, your digital spelunking reveals nothing. If only you could run your app in debug mode on <em>their</em> computer.</p>



<h3 class="wp-block-heading">Remote Debugger</h3>



<p>With Xojo, you can. Let&#8217;s talk about Xojo&#8217;s aptly named Remote Debugger. In the instance above, that particular user can install Xojo&#8217;s Remote Debugger app on their computer. You and your users can find the app included in the Extras folder of  the Xojo download. After your user installs, launches and sets the Options in the Remote Debugger app, you can connect to that user&#8217;s computer by adding a connection to it in the Debugging pane of the Settings dialog box in the Xojo IDE on your computer. </p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="647" src="https://blog.xojo.com/wp-content/uploads/2024/01/debugging_pane_settings_dialog-1024x647.png" alt="" class="wp-image-12483" srcset="https://blog.xojo.com/wp-content/uploads/2024/01/debugging_pane_settings_dialog-1024x647.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/01/debugging_pane_settings_dialog-300x190.png 300w, https://blog.xojo.com/wp-content/uploads/2024/01/debugging_pane_settings_dialog-768x486.png 768w, https://blog.xojo.com/wp-content/uploads/2024/01/debugging_pane_settings_dialog.png 1240w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Press the Add button, choose a name, add the user&#8217;s IP address and the password they created for the Remote Debugger app. If the user is just barely remote (on your local network for example), the Add dialog that appears will show local Remote Debuggers, making the process even easier. If this is the case, you can click on the user&#8217;s machine from the list without having to ask them for the their IP address.</p>



<p>It gets a bit complicated if you and the user are not on the same network. That&#8217;s because their router has to be configured to allow the connection to get through to their computer. That can be complex and potentially not allowed by their network administrator. The easiest solution in these cases is to use a service such as <a href="https://www.zerotier.com">ZeroTier</a> or <a href="https://tailscale.com">Tailscale</a> that creates a secure, private network which effectively puts you both on the same network making it a breeze to connect. (Both of ZeroTier and Tailscale have a service tier that is free.) </p>



<p>Once you&#8217;ve added the remote debug host, you can choose Project &gt; Run Remotely and then choose that host to begin the connection. When you do this, your computer will compile a debug version for the computer and OS running on that remote user&#8217;s computer. It will then send that build to their computer and launch it. The app will then connect back to your Xojo IDE&#8217;s Debugger! You can then debug just as you normally would. Have the user try various functions as you watch what they are doing using screen sharing of some kind. When it drops in to the Debugger, you can step through the code, look at the values of variables and properties, etc., just as you do when debugging on your local computer. In cases like this, it can take a frustrating, painful debugging experience and make it nearly stress-free. In minutes you&#8217;ll be staring at the line of code that just wasn&#8217;t expecting the user to do what they did. </p>



<p>Also, the remote computer doesn&#8217;t have to actually be remote. For example, the Remote Debugger is handy for debugging on local virtual machines or other computers on your desk. It lets you keep your project where it belongs (where you keep it on your computer) while debugging in an OS running somewhere else.</p>



<p>So the next time you wish you could just debug on another computer or virtual machine, remember Xojo&#8217;s Remote Debugger! Watch a 13 minute <a href="https://youtu.be/q0C4NhY7oRg">video</a> on Xojo&#8217;s Remote Debugger to learn more.</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://documentation.xojo.com/getting_started/debugging/remote_debugging.html" style="background-color:#84bd00" target="_blank" rel="noreferrer noopener">Learn more in the Xojo Docs</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>Creating an Android Emulator in Android Studio</title>
		<link>https://blog.xojo.com/2023/08/09/creating-an-android-emulator-in-android-studio/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Wed, 09 Aug 2023 13:30:00 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Emulator]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11702</guid>

					<description><![CDATA[In order to test the Android apps you create in Xojo, you either need to have an actual Android device (Xojo supports on-device testing/debugging) or you need to set up an Android Emulator in Android Studio. Read on or jump over to Xojo YouTube Channel to watch this process in this Creating an Android Emulator video.]]></description>
										<content:encoded><![CDATA[
<p>In order to test the Android apps you create in Xojo, you either need to have an actual Android device (Xojo supports on-device testing/debugging) or you need to set up an Android Emulator in Android Studio. Read on or jump over to Xojo YouTube Channel to watch this process in our <a href="https://youtu.be/hsmkUIHRvq8">Creating an Android Emulator</a> video.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="695" src="https://blog.xojo.com/wp-content/uploads/2023/07/CreatingAnAndroidEmulator-1024x695.png" alt="" class="wp-image-11703" srcset="https://blog.xojo.com/wp-content/uploads/2023/07/CreatingAnAndroidEmulator-1024x695.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/07/CreatingAnAndroidEmulator-300x204.png 300w, https://blog.xojo.com/wp-content/uploads/2023/07/CreatingAnAndroidEmulator-768x521.png 768w, https://blog.xojo.com/wp-content/uploads/2023/07/CreatingAnAndroidEmulator-1536x1043.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/07/CreatingAnAndroidEmulator.png 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol class="wp-block-list">
<li>If you haven&#8217;t already downloaded and installed Android Studio, do that now.</li>



<li>Launch Android Studio.</li>



<li>If you have already created a project in Android Studio, you can open that project. Otherwise, click the New Project button.</li>



<li>In the dialog box that is displayed, choose the default project type.</li>



<li>Click the Next button then click the Finish button.</li>



<li>Once you have a project open, choose Tools &gt; Device Manager. The Device Manager pane appears on the right side of the project window.</li>



<li>Click on the Create Device button. The Virtual Device Configuration dialog box appears.</li>



<li>Choose the category for the type of emulator you need. Phone is chosen by default.</li>



<li>Scroll through the list of devices to find one that suits you. We recommend choosing one that has the Google Play Store icon in the Play Store column.</li>



<li>Click the Next button.</li>



<li>On the System Image page the appropriate system image for the device you selected should be automatically selected for you. Just make sure the version of Android is at least the <a href="https://documentation.xojo.com/resources/system_requirements_for_current_release.html">minimum version supported by Xojo</a>.</li>



<li>Click the Next button.</li>



<li>On the final page you can rename the device if you&#8217;d like. If you&#8217;re going to be creating a lot of Android apps, consider increasing the storage in your emulator by clicking the Show Advanced Settings button and then scrolling the lefthand pane down a bit until you see the Internal Storage field. It defaults to 2048MB so you might want to increase that a bit.</li>



<li>Click the Finish button. Your emulator appears in the Device Manager pane.</li>



<li>Quit Android Studio and go to Xojo. Android Studio cannot be running while you use emulators in Xojo.</li>
</ol>



<p>Now you&#8217;re ready to use the emulator you created.</p>



<p>In Xojo, open an Android project, in the Navigator click on Android under Build Settings and you&#8217;ll see the Android Debugging section. If you have only created one emulator, it will be selected by default. If you&#8217;ve created several, they will all be listed.</p>



<p>The first time you use a new emulator it takes Android Studio it takes a bit longer than normal for it to launch. These emulators also sometimes stop working. When that happens, launch Android Studio, open a project or create a new one, go to Tools &gt; Device Manager to display the Device Manager pane, delete the bad emulator and create a new one.</p>



<p>Don&#8217;t forget that Xojo supports on-device debugging (<a href="https://youtu.be/8B9dLxe2asY">Video</a>: Setting Up On-Device Debugging on Your Android Device) as well so if you have an Android phone or tablet, you can run your apps directly on the device which you may find to be a better overall experience for testing and debugging.</p>



<p>Learn more about using Xojo Android in the <a href="https://blog.xojo.com/category/cross-platform/android/">Android</a> category in the Xojo Programming Blog.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Filtering the Debugger</title>
		<link>https://blog.xojo.com/2023/03/28/filtering-the-debugger/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Tue, 28 Mar 2023 11:00:00 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Code]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11405</guid>

					<description><![CDATA[Starting with Xojo 2023r1 you'll find a new feature in Xojo's Debugger panel that allows you to filter the objects and variables displayed, even between different project runs! That way you can stay focused on the more important objects and variables instead of scrolling through the list of all entries.]]></description>
										<content:encoded><![CDATA[
<p>Starting with Xojo 2023r1 you&#8217;ll find a new feature in Xojo&#8217;s Debugger panel that allows you to filter the objects and variables displayed, even between different project runs! This lets you stay focused on the more important objects and variables instead of scrolling through the list of all entries.</p>



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



<p>I&#8217;ll outline the way it works here:</p>



<ul class="wp-block-list">
<li>Start typing in the Filter field <strong>(1)</strong>. You can enter a single item or several items names using a comma.</li>



<li>As you type, the list will display the filtered matches using the default &#8220;Begins with&#8221; matching criteria. You can change the matching type using the popup menu found at the right of the Filter field <strong>(2)</strong>.</li>



<li>If you want more control of the items filtered, click on the Edit filter button <strong>(3)</strong>. Here you&#8217;ll be able to select the items to filter, clear all or select all of them. The list will be filtered based on that criteria once the dialog is closed.</li>
</ul>



<figure class="wp-block-image is-style-default"><img decoding="async" width="1024" height="643" src="https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-1024x643.png" alt="" class="wp-image-11406" srcset="https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-1024x643.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-300x188.png 300w, https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-768x482.png 768w, https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter.png 1352w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="802" height="540" src="https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit.png" alt="" class="wp-image-11407" srcset="https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit.png 802w, https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit-300x202.png 300w, https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit-768x517.png 768w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>
</div>


<p>The combination of the filter criteria and matching type for the current selected stack frame and variable/object will be remembered and automatically applied again when that same object/variable is selected in the Debugger Panel. This also applies when that same project is debugged again, even at different Xojo runs.</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="628" height="388" src="https://blog.xojo.com/wp-content/uploads/2023/03/DebugFilter.gif" alt="" class="wp-image-11408"/></figure>
</div>


<p>As you can see, this debugger filter can be very helpful when there are a lot of objects and variables displayed during the app&#8217;s debugging session. No license is required to learn, develop and test your projects in the latest Xojo release! <a href="https://xojo.com/download/">Download Xojo</a> 2023r1 today!</p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</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>
					
		
		
			</item>
		<item>
		<title>Running Xojo Web projects on Raspberry Pi 64-bit ARM boards</title>
		<link>https://blog.xojo.com/2022/12/13/running-xojo-web-projects-on-raspberry-pi-64-bit-arm-boards/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Tue, 13 Dec 2022 15:22:45 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Raspbian]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Single Board Computer]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Xojo API 2.0]]></category>
		<category><![CDATA[Xojo Forum]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11065</guid>

					<description><![CDATA[Xojo 2022r4 opens the door for running projects on 64-bit Raspberry Pi ARM boards. Console, Desktop and Web are supported.]]></description>
										<content:encoded><![CDATA[
<p>Xojo 2022r4 opens the door for running projects on 64-bit Raspberry Pi ARM boards. Console, Desktop and Web are supported.</p>



<p>Xojo Web is an excellent way to expose the features of your electronics projects without having to attach any screen to them. It&#8217;s never been easier to build a Web GUI for your smart clocks, drones, POS, domotics, robots or just some automation services. Thinking about building a solar powered server to automate your tweets? Why not!</p>



<p>If you prefer, you can just expose a Web API instead that can be remotely consumed from another device.</p>



<h2 class="wp-block-heading">What Raspberry Pi boards support ARM 64-bit Linux OS?</h2>



<ul class="wp-block-list">
<li>Raspberry Pi Zero 2</li>



<li>Raspberry Pi 3</li>



<li>Raspberry Pi 4</li>



<li>Raspberry Pi 400</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="763" src="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-1024x763.png" alt="" class="wp-image-11066" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-1024x763.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-300x224.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-768x573.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2.png 1336w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">One of my Raspberry Pi Zero 2, running a 64-bit Xojo Web application.</figcaption></figure>



<h2 class="wp-block-heading">Preparing your Raspberry Pi</h2>



<p>The easiest way to get your operating system ready is by using the <a href="https://www.raspberrypi.com/software/" data-type="URL" data-id="https://www.raspberrypi.com/software/" target="_blank" rel="noreferrer noopener">Raspberry Pi Imager</a>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="690" src="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-1024x690.png" alt="" class="wp-image-11067" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-1024x690.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-300x202.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-768x518.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager.png 1510w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Raspberry Pi Imager v1.7.3.</figcaption></figure>



<p>At the moment of writing this article, it selects the 32-bit flavor by default. If you have one of the supported boards, go ahead and try Raspberry Pi OS (64-bit) or Raspberry Pi OS Lite (64-bit). The later won&#8217;t include any desktop environment, you&#8217;ll have to access by SSH.</p>



<p>Select your SD Card storage and press on Write. Optionally, if you want to set a hostname for your board, enable SSH, or even configure your Wifi, press on the gears icon.</p>



<p>In just a few minutes you will have a ready to boot SD card for your Raspberry Pi.</p>



<h2 class="wp-block-heading">Remotely debugging your projects</h2>



<p>This is one of my favorite features of Xojo.</p>



<p>In your Xojo installation Extras folder, you will find a &#8220;Remote Debugger Console&#8221; and &#8220;Remote Debugger Desktop&#8221;, that also works for your Linux 64-bit OS.</p>



<p>Depending on which flavor of Linux you&#8217;ve selected in the previous step, send the Console or Desktop ZIP to your board, run it and configure the settings.</p>



<p>Inside Xojo, go to Preferences and press on the Debugging tab.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="599" src="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-1024x599.png" alt="" class="wp-image-11068" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-1024x599.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-300x176.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-768x449.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging.png 1480w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Xojo Debugging Preferences panel.</figcaption></figure>



<p>That&#8217;s it. Now you will be able to remotely run and debug your applications. Add a few breakpoints and the execution will stop as soon as it reaches it, allowing you to explore the current state.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="667" src="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-1024x667.png" alt="" class="wp-image-11070" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-1024x667.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-300x195.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-768x500.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-1536x1000.png 1536w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug.png 1910w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Running your project remotely, to debug.</figcaption></figure>



<h2 class="wp-block-heading">Deploying the final version</h2>



<p>Once you&#8217;re ready to build the final version of your application, all the wires attached and components soldered, the last step is to &#8220;Deploy&#8221; your application.</p>



<p>There is a tutorial covering this step in detail: <a href="https://blog.xojo.com/2021/05/28/tutorial-deploying-web-apps-on-linux/" data-type="post" data-id="8552">Deploying Web Apps on Linux</a>.</p>



<p>If you create a Raspberry Pi project, please make sure you open a <a href="https://forum.xojo.com" data-type="URL" data-id="https://forum.xojo.com" target="_blank" rel="noreferrer noopener">Forum thread</a>. The Xojo community loves seeing this kind of projects!</p>



<p>What will you build?</p>



<p><em>Ricardo has always been curious about how things work. Growing up surrounded by computers</em> he became interested in <em>web technologies in the dial-up connections era. Xojo has been his secret weapon and language of preference since 2018. When he’s not online, chances are he will be scuba diving … or crocheting amigurumis. Find Ricardo on Twitter <a href="https://web.archive.org/web/20220805000833/https://www.twitter.com/piradoiv" target="_blank" rel="noreferrer noopener">@piradoiv</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Default Values Tip</title>
		<link>https://blog.xojo.com/2020/02/20/default-values-tip/</link>
		
		<dc:creator><![CDATA[Wayne Golding]]></dc:creator>
		<pubDate>Thu, 20 Feb 2020 10:00:00 +0000</pubDate>
				<category><![CDATA[Guest Post]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=6641</guid>

					<description><![CDATA[Often when debugging an application, you’ll need to enter the same data in the same fields over &#038; over.  There is a temptation to set the value of the field to the test data.  The downside of this is that you need to remove all those defaults before deploying your application.  ]]></description>
										<content:encoded><![CDATA[
<p>Here’s a tip for defaulting TextField Values for debugging purposes only.</p>



<p>Often when debugging an application, you’ll need to enter the same data in the same fields over and over. There is a temptation to set the value of the field to the test data. The downside of this is that you need to remove all those defaults before deploying your application.  What if some of those default values gives admin access to your database?</p>



<p>I add an Open event handler for those fields and use pragmas to keep the data secure. For example, in a text field open event handler I’ll put the code:</p>



<pre class="wp-block-preformatted">Sub Open() Handles Open
 #If DebugBuild
  me.Value = "wayneg@axisdirect.nz"
 #EndIf
End Sub</pre>



<p>When building a deployable version of the application an empty event hander method will be included and my email address will be kept private. Now, I don’t need to remove private data from the project and it will still be there for the next release cycle.</p>



<p><em>Wayne Golding has been a Xojo developer since 2005 and is a Xojo MVP. He operates the IT Company <a href="http://www.axisdirect.nz">Axis Direct Ltd </a>which primarily develops applications using Xojo that integrate with Xero www.xero.com. Wayne’s hobby is robotics where he uses Xojo to build applications for his Raspberry Pi, often implementing IoT for remote control.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>2019r2 Debugger Improvements</title>
		<link>https://blog.xojo.com/2019/10/09/2019r2-debugger-improvements/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 09 Oct 2019 11:30:05 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[2019r2]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Xojo API 2.0]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=6057</guid>

					<description><![CDATA[At XDC 2019, I did a session called Avoiding Troubleshooting Troubles, which was essentially about ways to take advantage of the Xojo debugger. During the&#8230;]]></description>
										<content:encoded><![CDATA[
<p>At XDC 2019, I did a session called <em>Avoiding Troubleshooting Troubles</em>, which was essentially about ways to take advantage of the Xojo debugger. During the session, someone (I apologize, but I&#8217;ve forgotten who it was) asked if the debugger had a way to temporarily disable breakpoints to make it easier to test. The reasoning was that sometimes you want to test a fix without the debugger stopping all the time and don&#8217;t want to clear all of your carefully placed breakpoints.</p>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2019/09/image.png" alt="" class="wp-image-6058" width="192" height="215" srcset="https://blog.xojo.com/wp-content/uploads/2019/09/image.png 766w, https://blog.xojo.com/wp-content/uploads/2019/09/image-267x300.png 267w" sizes="auto, (max-width: 192px) 100vw, 192px" /><figcaption>Ignore All Breakpoints</figcaption></figure></div>



<p>At that time, Xojo did not have this feature, but I did say that I thought it sounded pretty useful.</p>



<p>I&#8217;m happy to let you know that as of 2019r2, Xojo now has this feature. We call it <strong>Ignore All Breakpoints</strong> and you can turn it on or off from the Project -&gt; Breakpoint -&gt; Ignore All menu. A checkmark appears next to this menu when Ignore breakpoints is active. And when active, Xojo will not stop at any of your breakpoints. You can turn it on or off during the debug run as needed.</p>



<p>2019r2 also has a couple other improvements to the debugger as well:</p>



<ul class="wp-block-list"><li>The debugger no longer stops at breakpoints within encrypted classes. This was not helpful and actually rather confusing since you couldn&#8217;t see the code.</li><li>Breakpoints set within a Module Class Method during a debugging session now properly break in the debugger.</li></ul>



<p>Xojo 2019 Release 2 has lots of new features and improvements, so be sure to <a href="https://www.xojo.com/download/">download</a> it today and review the full <a href="http://documentation.xojo.com/Resources:2019r2_Release_Notes">Release Notes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How Code One-Liners Can Make Debugging Harder</title>
		<link>https://blog.xojo.com/2019/02/12/how-code-one-liners-can-make-debugging-harder/</link>
		
		<dc:creator><![CDATA[Norman Palardy]]></dc:creator>
		<pubDate>Tue, 12 Feb 2019 10:00:59 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5410</guid>

					<description><![CDATA[A lot of times you'd think that a single line of code, aka a "one-liner" might not have any downside. But I'd argue that it does. You can't put a break point on the code that runs when the condition is true. Sometimes this may not matter. But when it does, like when you want to step into the method or code that IS run, you have to turn the one-liner into a multi-line if...end if statement.*]]></description>
										<content:encoded><![CDATA[<p>A lot of times you&#8217;d think that single lines of code, aka &#8220;one-liners&#8221;, like</p>
<pre>if j &gt;= 145 condition then dosomething()
</pre>
<p>or</p>
<pre>if condition then return
</pre>
<p>might not have any downsides. I would argue that they do.</p>
<p><span id="more-5410"></span></p>
<p>You can&#8217;t put a <a href="https://documentation.xojo.com/getting_started/debugging/debugger_usage.html#Breakpoint">break point</a> on the code that runs when the condition is true. And though sometimes this may not matter, when it does, like when you want to step into the method or code that <em>is</em> run, you have to turn the one-liner into a multi-line <a href="https://documentation.xojo.com/api/code_execution/if.html...Then...Else">If&#8230;End If</a> statement.<sup>*</sup></p>
<pre>if j &gt;= 145 condition then 
  dosomething()
end if
</pre>
<p>or</p>
<pre>if condition then 
  return
end if
</pre>
<p>This allows you to put the break point on the code and not on the conditional. If it is code that gets run a lot, this can be a big deal.</p>
<p>This is why, as I go through the Xojo IDE code base, I usually remove one-liners and turn them into multi-line if &#8230; end if statements. This way I can break on the code and not the conditional, and in some cases this saves many hundreds of calls and having to step through the code.</p>
<p>As always, remember that what you do today can save your sanity or break it tomorrow! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><sup>*</sup> Yes if you want to debug the called method <em>every</em> time you can put the break point in the called method. If you want to only break in this specific case, you have to rewrite the if statement so you can put a break on the method call line.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IDE changes in Xojo 2018r3 and more</title>
		<link>https://blog.xojo.com/2018/10/23/following-the-dark-path/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Tue, 23 Oct 2018 10:00:43 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[HiDPi]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Lingua]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Feedback]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5075</guid>

					<description><![CDATA[About three years ago, we added HiDPI/Retina support to our framework which was released to users as part of Xojo 2016r1 when we also shipped&#8230;]]></description>
										<content:encoded><![CDATA[<p>About three years ago, we added HiDPI/Retina support to our framework which was released to users as part of Xojo 2016r1 when we also shipped our first HiDPI IDE.</p>
<p>With Apple’s announcements at WWDC 2018 and the introduction of dark mode it was time to revisit our graphics and the overall appearance of the IDE again. Here are some things which contribute to the changes that have been made and ones that you will see in the coming months.</p>
<p><span id="more-5075"></span></p>
<h3><b>Dropping macOS 10.9</b></h3>
<p>Xojo 2018r3 drops support for macOS 10.9 and as the last version which had the skeuomorphic design elements all of our supported OS’s now have the flatter modern design. It’s not that this has held anything up per se, but it’s a good reminder that “it’s time”.<span class="Apple-converted-space"> </span></p>
<p>To that end, we have taken that opportunity to remove some of the graphics that make the IDE look out of place and doing so subtly lowers the memory footprint and accelerates drawing of the IDE itself across all platforms. We&#8217;re also using a variation of Apple&#8217;s image templates which has somewhat reduced the on-disk footprint of the IDE itself.</p>
<h3><b>macOS Dark Mode</b></h3>
<p>Apple’s addition of a darker variant of the visual “Aqua” theme in macOS means that we needed to do an audit and update of several of our base framework controls so that <i>your</i> apps would render correctly as well as ours.<span class="Apple-converted-space"> </span></p>
<h4>Events</h4>
<p>While it probably won’t be used very often (how often does one change themes while running a piece of software, besides the novelty of seeing it happen), we added an event to the App class named AppearanceChanged to notify you when the user changes from light to dark or changes their accent color. This is a good place to clear any graphic or color caches which contain theme specific UI graphics.<span class="Apple-converted-space"> </span></p>
<h4>Methods</h4>
<p>There is also a new global method called IsDarkMode(Boolean) which will return True if your app is running with the Dark Mode theme on macOS 10.14 or higher.<span class="Apple-converted-space"> If your app is running on 10.13 or lower or in light mode on 10.14, IsDarkMode will return False.</span></p>
<h4>Build Settings</h4>
<p>Enabling Dark Mode in your apps is as easy as flipping a switch in the Shared Build Settings. Unfortunately, because Apple made the assumption that most apps would “just work” versions of your apps compiled with older versions of Xojo will either need to be recompiled with Xojo 2018r3 or you’ll need to push out a new version with a plist entry to prevent macOS 10.14 from showing your app dark in Dark Mode.<span class="Apple-converted-space"> </span></p>
<h4>Testing</h4>
<p>When testing apps for use with Mojave&#8217;s dark mode, I seriously suggest that you test on a system that allows you to see the translucency effects of dark mode. Virtual Machines are usually really handy for testing, but in this case, Parallels Desktop 14, VirtualBox 5.2 and VMWare Fusion 11 do not show the subtleties of dark mode.</p>
<h4>Colors</h4>
<p>One of our goals at Xojo is to remove some of the headaches involved with the minutiae of each OS that you deploy for and to that end, we wanted to make drawing custom controls easier too. What this means is that the built-in global colors are largely theme aware now and will change depending on whether your app is running in light or dark mode on macOS. This affects things like TextColor, FillColor, FrameColor, HighlightColor, etc, so if you use those methods when drawing in pictures and canvases, you will want to audit that code. If you want a specific color, you should use a color constant. For instance, use &amp;c000000 if you want black because TextColor will now return white in Dark Mode.<span class="Apple-converted-space"> </span></p>
<p>In terms of the framework controls themselves, we are taking this opportunity to make some changes to make your apps appear better in the macOS 10.10+ ecosystem. Ever notice that a Label control and the text portion of a CheckBox or RadioButton control are not exactly the same color? Going forward, the default colors of controls which <i>should</i> automatically change between Light and Dark modes <i>will</i> do that. So if you have a Label using the default color of &amp;c00000000 (Black with Transparency = 0), the color that is actually used is what Apple calls labelColor. It’s still black, but is a tiny bit translucent. TextFields and TextAreas will automatically change text, placeholder, selection and background colors to match the Apple prescribed colors for automatic Light/Dark compatibly. We think you’ll find that building your apps with 2018r3 will largely make them just behave and appear the way you expected them to.</p>
<p>IMPORTANT NOTE: These color and framework changes affect how your apps draw on <i>all</i> versions of macOS, so make sure you try them out on your 10.10 through 10.14 VMs before shipping!</p>
<h4>Eating our own dog food</h4>
<p>One thing we hear from users every so often is the desire for Xojo to use our own products for building apps. As most of you know the IDE itself is written in Xojo, but we also have several other apps (big and small) that are written in Xojo.</p>
<ul>
<li>Feedback &#8211; Our bug reporting system</li>
<li>Xorders &#8211; Our internal order system</li>
<li>Lingua &#8211; The Xojo localization app</li>
<li>Remote Debugger &#8211; The remote debugger stubs for desktop and console</li>
</ul>
<p>While the 2018r3 cycle was in progress, all four of these projects got updated for Mojave&#8217;s Dark Mode and definitely helped us find framework rendering bugs early on in the pre-release process.</p>
<h4><b>What about Windows and Linux?</b></h4>
<p>The TL;DR version is that we’re still looking into it.<span class="Apple-converted-space"> </span></p>
<p>Currently there are several different ways to change Windows 7, 8 and 10 to use a dark interface, not all of which are compatible with the Xojo Framework controls and the Windows 10 2018 Fall Update promised yet another way but that ended up only being for UWP. We are looking into which method gets you the most “bang for the buck” so to speak.<span class="Apple-converted-space"> </span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Test Your Apps on Windows for Free</title>
		<link>https://blog.xojo.com/2017/05/22/test-your-apps-on-windows-for-free/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Mon, 22 May 2017 08:50:41 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[Windows 10]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2773</guid>

					<description><![CDATA[If you are a Mac or Linux developer, one of the easiest ways to test your apps on Windows is to use a virtual machine. And you can test Windows in a VM completely for free by using the test VMs provided by Microsoft.]]></description>
										<content:encoded><![CDATA[<p>If you are a Mac or Linux web or cross-platform developer, one of the easiest ways to test your apps on Windows is to use a virtual machine. And you can test Windows in a VM completely for free by using the test VMs provided by Microsoft.</p>
<p><span id="more-2773"></span></p>
<p>First you&#8217;ll need Virtual Machine software. I prefer VMware Fusion, but the free VirtualBox can be used instead. You can download VirtualBox from here:</p>
<p><a href="https://www.virtualbox.org">https://www.virtualbox.org</a></p>
<p>When VirtualBox is installed, you can head on over to the Microsoft site to get a test copy of Windows pre-configured for VirtualBox:</p>
<p><a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/">https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/</a></p>
<p>Microsoft provides versions of Windows 7, 8.1 and 10 that you can use for testing purposes. Simply download the ones you want and add them to VirtualBox.</p>
<p>You can install the <a href="http://developer.xojo.com/userguide/remote-debugging">Xojo Remote Debugger</a> and use these test versions to test your Xojo apps for Windows. Or you can use these to run Windows-specific web browsers for testing your web apps. Keep in mind that these Windows VMs expire after 90 days, so you&#8217;ll have to re-download periodically.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Programming the Raspberry Pi with Xojo Book</title>
		<link>https://blog.xojo.com/2017/04/06/programming-the-raspberry-pi-with-xojo-book/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 06 Apr 2017 06:13:38 +0000</pubDate>
				<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Intro to Xojo Programming Textbook]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2495</guid>

					<description><![CDATA[Xojo's new remote debugger for the Raspberry Pi  and book "Programming the Raspberry Pi with Xojo". Learn and develop for RPi for free with Xojo. Xojo Pi lets you develop, debug and build console and desktop apps for the Pi using Xojo 2019r1 or later (download)!]]></description>
										<content:encoded><![CDATA[<p>Just in time for Xojo 2017 Release 1 and its <a href="http://blog.xojo.com/2017/03/28/raspberry-pi-remote-debugging/">Remote Debugger for the Raspberry Pi</a>, we released a new book &#8220;Programming the Raspberry Pi with Xojo&#8221;. The book contains 19 chapters that introduce you to the Raspberry Pi, take you through setting it up and covers learning about Xojo programming for the Pi. Develop and build console and desktop apps for the Pi using Xojo 2019r1 or later for free (<a href="https://www.xojo.com/download/">download</a>)!</p>
<p>The book includes 8 step-by-step projects for creating a variety of Xojo apps for the Raspberry Pi, including: a text adventure, a music player, a game, Internet access, a web app, plus hardware projects.</p>
<p><span id="more-2495"></span></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2549" src="https://blog.xojo.com/wp-content/uploads/2017/03/Screen-Shot-2017-04-05-at-8.29.31-AM.png" width="500" height="333" /></p>
<p>Raspberry Pi + Xojo is a great way for anyone to learn about computers and how to be a programmer. Check out the table of contents:</p>
<ol>
<li>About Raspberry Pi</li>
<li>Setting Up Your Raspberry Pi</li>
<li>Xojo Overview</li>
<li>Remote Debugging</li>
<li>Xojo Programming</li>
<li>Program Structure</li>
<li>OOP with Classes</li>
<li>Project: Find Seltzer Text Adventure</li>
<li>Files</li>
<li>Graphical User Interfaces</li>
<li>Project: Music Player</li>
<li>Internet Access</li>
<li>Project: Cat Pictures</li>
<li>Project: Catch Xojo Game</li>
<li>Web Project: Family Notes</li>
<li>Interfacing Hardware with GPIO</li>
<li>GPIO Project: Blinking LED</li>
<li>GPIO Project: Digital Clock</li>
<li>What&#8217;s Next</li>
</ol>
<p>Read the book online at the Xojo Dev Center or download a PDF.</p>
<ul>
<li><a href="http://developer.xojo.com/pibook">Programming the Raspberry Pi with Xojo</a> (Dev Center)</li>
<li><a href="http://files.xojo.com/Documentation/XojoPiBook.zip">Programming the Raspberry Pi with Xojo</a> (PDF)</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Raspberry Pi Remote Debugging</title>
		<link>https://blog.xojo.com/2017/03/28/raspberry-pi-remote-debugging/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 28 Mar 2017 10:30:22 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[RPi]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2485</guid>

					<description><![CDATA[Using the Remote Debugger means that you can run Xojo apps on the Pi for testing and development without have to first purchase a Xojo license.]]></description>
										<content:encoded><![CDATA[<p>With Xojo 2017 Release 1 you can now use the Remote Debugger to easily debug and test your Xojo apps on a Raspberry Pi (Raspberry Pi 2, 3+ are supported by Xojo).</p>
<p>Using the Remote Debugger means that you can now run Xojo apps on the Pi for testing and development without having to first purchase a Xojo license.</p>
<p>We&#8217;ve put together a short video to quickly walk you through how to set up and use the Remote Debugger:</p>
<p><iframe loading="lazy" title="Hello Xojo! Raspberry Pi App" width="500" height="281" src="https://www.youtube.com/embed/C7ZelqOyVIQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>For more information about using Raspberry Pi with the Remote Debugger, refer to this topic in the Dev Center:</p>
<ul>
<li><a href="https://documentation.xojo.com/topics/raspberry_pi/remote_debugging.html">Raspberry Pi Remote Debugging</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Avoid this Remote Debugging Gotcha</title>
		<link>https://blog.xojo.com/2016/07/19/remote-debugging-gotcha/</link>
		
		<dc:creator><![CDATA[Norman Palardy]]></dc:creator>
		<pubDate>Tue, 19 Jul 2016 06:59:35 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=1125</guid>

					<description><![CDATA[An interesting thread on the forums turned up something that more of us should consider when working in any cross-platform tool, Xojo included. What was discovered was perhaps&#8230;]]></description>
										<content:encoded><![CDATA[<p>An <a href="https://forum.xojo.com/33582-the-max-dll-issue-on-windows/p2#p274932">interesting thread on the forums</a> turned up something that more of us should consider when working in any cross-platform tool, Xojo included.</p>
<p>What was discovered was perhaps something obvious: that a legal filename on OS X may not work when you try to remote debug to Windows.</p>
<p>What occurs is:</p>
<ul>
<li>the application gets built as it should on OS X for Windows (a Windows exe + dll&#8217;s etc) into a <a href="https://en.wikipedia.org/wiki/Tar_(computing)">tar file</a></li>
<li>the copy files step executes and inserts the files into the tar file</li>
<li>the tar file is transmitted to the Windows Remote Debugger Stub</li>
<li>the tar file is then un-tarred</li>
</ul>
<p>It is this last step is where things fail.</p>
<p>OS X has no trouble with a filenames that contain characters that are <a href="https://msdn.microsoft.com/en-ca/library/windows/desktop/aa365247(v=vs.85).aspx">illegal on Windows</a>. In particular, a &#8220;:&#8221; is allowed on OS X, but not on Windows. The reverse is also true if you work on Windows and remote debug to OS X, as there are characters that OS X won&#8217;t accept that are legal on Windows. Apple has a great guideline for <a href="https://support.apple.com/en-us/HT202808">cross-platform filename best practices and conventions</a>.</p>
<p>So the copy file step can copy in a file that has an illegal name as far as Windows is concerned, but not OS X. When the un-tarring fails to create this file it also (currently) <a href="feedback://showreport?report_id=44452">fails to let you know</a> it failed. So the remote stub will still try and launch the application which fails because necessary items are now missing. Check for this situation if you&#8217;re having odd problems remote debugging. An update to the remote stub is in development that fixes this problem.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How I learned to stop worrying and love the debugger</title>
		<link>https://blog.xojo.com/2015/09/08/how-i-learned-to-stop-worrying-and-love-the-debugger/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Tue, 08 Sep 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/09/08/how-i-learned-to-stop-worrying-and-love-the-debugger/</guid>

					<description><![CDATA[Learn to use the Debugger to find code errors quickly and easily.]]></description>
										<content:encoded><![CDATA[<p>Since we are all good programmers we never make mistakes, right ? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>But for those times when you write some code and you just can&#8217;t figure out why its not behaving, there is always the Debugger!</p>
<p>The best part is the Debugger is very easy to use and it can help you sort out a lot of common issues. Its covered in the Xojo <a href="http://developer.xojo.com/user-guide" target="_blank" rel="noopener">User&#8217;s Guide,</a> specifically see the <a href="http://developer.xojo.com/userguide/using-the-debugger">Using the Debugger</a> section.</p>
<p><span id="more-287"></span></p>
<p>Let&#8217;s suppose you have an application and you have some code in the action event of a button that is giving you trouble. Open that event handler:</p>
<p><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2015/09/shot1.pngt1466486449161ampwidth578ampheight349" sizes="auto, (max-width: 578px) 100vw, 578px" width="578" height="349" /></p>
<p>Now, set a breakpoint or a spot where your code will stop.</p>
<p>To do this, click in the left hand gutter on the dash or put the insertion point on the line you want a break point on and select Project &gt; Breakpoint &gt; Turn On.</p>
<p><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2015/09/shot2.pngt1466486449161ampwidth578ampheight347" sizes="auto, (max-width: 578px) 100vw, 578px" width="578" height="347" /></p>
<p>The red dot indicates you have an active breakpoint on this line.</p>
<p>Now, when you run your application and press the button the code will execute and stop on the line marked. Note that it stops on this line BEFORE executing the line.<img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2015/09/shot3.pngt1466486449161ampwidth578ampheight352" sizes="auto, (max-width: 578px) 100vw, 578px" width="578" height="352" /></p>
<p>Now each time you press the Step button <img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2015/09/step.pngt1466486449161ampwidth84ampheight88" sizes="auto, (max-width: 84px) 100vw, 84px" width="84" height="88" />, the line of code will be executed and the program will stop BEFORE executing the next line.</p>
<p><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2015/09/shot4.pngt1466486449161ampwidth578ampheight350" sizes="auto, (max-width: 578px) 100vw, 578px" width="578" height="350" /></p>
<p>And at each step you can see the values of the variables in the lower right hand variable viewer pane. If your calculation is having problems, you can step through it line by line and examine the values to see where things have gone awry.</p>
<p>Now you might think all this is well and good but there is no line after the one that sets returnpcnt.Text. What is the debugger going to do in that case? Well if you press step you&#8217;ll see that the debugger stops BEFORE exiting your code so you can indeed examine the values from the last line of code just as easily.</p>
<p><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2015/09/shot5.pngt1466486449161ampwidth578ampheight352" sizes="auto, (max-width: 578px) 100vw, 578px" width="578" height="352" /></p>
<p>Learn to use the debugger. It will make life a whole lot easier for you. Of course in a short blog post I can only cover so much so visit the <a href="http://developer.xojo.com/userguide/using-the-debugger">Xojo Dev Center</a> to learn more.</p>
<p>Have fun.<span id="hs-cta-wrapper-05b821da-182e-4ab3-8182-c6cc64b8f8dc" class="hs-cta-wrapper"><span id="hs-cta-05b821da-182e-4ab3-8182-c6cc64b8f8dc" class="hs-cta-node hs-cta-05b821da-182e-4ab3-8182-c6cc64b8f8dc"><br />
</span></span> <!-- end HubSpot Call-to-Action Code --></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
