<?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>Xojo IDE &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/xojo-ide/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Mon, 18 Aug 2025 20:40:55 +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>Xojo Web Improvements in 2024r4</title>
		<link>https://blog.xojo.com/2024/12/10/xojo-web-improvements-in-2024r4/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Tue, 10 Dec 2024 16:36:35 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[2024r4]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14138</guid>

					<description><![CDATA[Making the Web Framework more robust is something we&#8217;ve been working on for years. This release doesn&#8217;t brings too many shiny new toys to play&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Making the Web Framework more robust is something we&#8217;ve been working on for years. This release doesn&#8217;t brings too many shiny new toys to play with, it comes with bug fixes instead that were tricky to fix. Here are some highlights.</p>



<h2 class="wp-block-heading"><strong>Using a WebPopupMenu with a Keyboard</strong></h2>



<p>2024r4 comes with keyboard full support for <a href="https://documentation.xojo.com/api/user_interface/web/webpopupmenu.html#webpopupmenu">WebPopupMenu</a>. We&#8217;ve been gradually improving this control to allow your users to select a field using the arrow keys, for example. What&#8217;s new is being able to go directly to one of the item just by starting to type its name.</p>



<figure class="wp-block-video"><video height="1250" style="aspect-ratio: 1376 / 1250;" width="1376" controls src="https://blog.xojo.com/wp-content/uploads/2024/12/WebPopupMenu-with-keyboard.mp4"></video></figure>



<h2 class="wp-block-heading"><strong>Memory Usage Improvements</strong></h2>



<p>Everyone does their best to avoid leaking memory but, sometimes, that&#8217;s just not enough.</p>



<p><a href="https://blog.xojo.com/2022/12/06/the-versatility-of-xojo/">Jérémie Leroy</a> is known for the success of the mobile apps he makes with Xojo. When one of these successful app requires a Web Service, receiving 1000s of requests, it needs to be as lightweight as possible.</p>



<p>Thanks to his reports, the visual controls will be creating Tooltip and WebCSSClasses instances only when being used. For many projects this won&#8217;t make a difference, but having a Web project with hundreds of concurrent users will surely lead to less memory pressure, allowing to run Web apps in cheaper servers.</p>



<p>This task never ends. Upcoming releases will continue improving memory usage and performance.</p>



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



<p>The library we use to display maps, MapLibre, has been upgraded from 3.2.0 to 4.7.1, which will make much easier to implement some of the features we want to introduce in upcoming releases. Stay tuned!</p>



<p>This control also received 4 additional bug fixes. One of them was causing the Zoom to be modified, when updating another control property, for example.</p>



<h2 class="wp-block-heading"><strong>Some New Features</strong></h2>



<p>While Web received mostly bug fixes this time, it also comes with some hidden gems.</p>



<p>Popover position can be adjusted now when displaying it. The positioning is relative to its parent control. Additionally, you can now use a WebPage as the parent control, instead of one of the page children, to place your Popover exactly where you need.</p>



<p>Last, but not least, my favorite new feature. We&#8217;ve added CallLater method to WebTimer. It works exactly the same as Timer.CallLater, but it&#8217;s Session aware. This means you will be able to access the Session from its callback, without having to do anything special.</p>



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



<p>We are saying goodbye to a 2024 packed with improvements for the Web target, with a release dedicated (more than usual) to bug fixing and to make everything more stable. Make sure to check <a href="https://documentation.xojo.com/resources/release_notes/2024r4.html" data-type="link" data-id="https://documentation.xojo.com/resources/release_notes/2024r4.html">Xojo 2024r4 Release Notes</a>, so you don&#8217;t miss anything.</p>



<p>Thanks to everyone reporting bugs, making feature requests and collaborating in the forum!</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>



<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>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/12/WebPopupMenu-with-keyboard.mp4" length="330684" type="video/mp4" />

			</item>
		<item>
		<title>Introducing Named Color and CSS Classes in Xojo Web</title>
		<link>https://blog.xojo.com/2024/10/01/introducing-named-color-and-css-classes-in-xojo-web/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Tue, 01 Oct 2024 15:32:13 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[2024r3]]></category>
		<category><![CDATA[Bootstrap]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13668</guid>

					<description><![CDATA[The latest Xojo release is a big leap forward in terms of design options for Xojo Web users. Xojo 2024r3 comes with new tools for&#8230;]]></description>
										<content:encoded><![CDATA[
<p>The latest Xojo release is a big leap forward in terms of design options for Xojo Web users. Xojo 2024r3 comes with new tools for making beautiful web applications with less effort.</p>



<h2 class="wp-block-heading">A Quick Reminder About What Bootstrap Is</h2>



<p>As I will be mentioning it during this post, let me take a moment to remind readers what Bootstrap is, and what are we using it for at Xojo.</p>



<p>Bootstrap is the library we use for the visual part of web applications made with Xojo. You can think about it as Gtk on Linux, or UIKit on iOS.</p>



<p>While there is a vast amount of alternative libraries, it&#8217;s been probably the most popular framework for the last decade. You can check the <a href="https://getbootstrap.com" data-type="link" data-id="https://getbootstrap.com" target="_blank" rel="noreferrer noopener nofollow">Bootstrap website</a> for more information.</p>



<h2 class="wp-block-heading">ColorGroup Named Colors</h2>



<p>Until this release, the Named option when configuring a ColorGroup was not available on web projects. 2024r3 brings the ability to choose from the Web Basic colors, Web Extended colors and, what I find more interesting, Bootstrap colors, which also support dark mode out of the box.</p>



<figure class="wp-block-video"><video height="908" style="aspect-ratio: 1448 / 908;" width="1448" controls src="https://blog.xojo.com/wp-content/uploads/2024/09/named-colors-from-the-ide.mp4"></video></figure>



<p>As you can expect, if you drop a custom Bootstrap 5.3 theme with another set of colors, the IDE will automatically update in order to preview them.</p>



<figure class="wp-block-video"><video height="908" style="aspect-ratio: 1436 / 908;" width="1436" controls src="https://blog.xojo.com/wp-content/uploads/2024/09/named-colors-bootstrap-theme-support.mp4"></video></figure>



<h2 class="wp-block-heading">Using Named Colors by Code</h2>



<p>When a dynamic need arises, it is also possible to use Bootstrap Named colors programmatically, if you find it easier. Here is an example:</p>



<pre class="wp-block-code"><code>Var colorName As String

If paymentCardIsValid Then
  colorName = "success"
Else
  colorName = "danger"
End If

Rectangle1.BackgroundColor = ColorGroup.NamedColor(colorName)</code></pre>



<p>Or in a <code>WebCanvas.Paint</code> event:</p>



<pre class="wp-block-code"><code>Var colorName As String = If(paymentCardIsValid, "success", "danger")
g.DrawingColor = ColorGroup.NamedColor(colorName)
g.FillRectangle(0, 0, g.Width, g.Height)</code></pre>



<p>You can check the list of available colors in the <a href="https://getbootstrap.com/docs/5.3/customize/color/" data-type="link" data-id="https://getbootstrap.com/docs/5.3/customize/color/" target="_blank" rel="noreferrer noopener nofollow">Color section of the official Bootstrap documentation</a>. Basic and Extended Web Colors will work as well.</p>



<h2 class="wp-block-heading">Using Bootstrap CSS Classes</h2>



<p>Bootstrap comes with a set of utility CSS classes for a variety of visual things. You probably won&#8217;t need them all, as the Xojo IDE will get you there in most of the cases, and we work hard improving the IDE to make it easier, release by release.</p>



<p>That said, if you are an advanced user, and you have previous experience working with Bootstrap, you may find it useful to add CSS classes directly from the Inspector.</p>



<p>Go to the Advanced tab, add some Bootstrap CSS classes, separated by spaces&#8230; and voilà!</p>



<p>Here is a demo:</p>



<figure class="wp-block-video"><video height="910" style="aspect-ratio: 1652 / 910;" width="1652" controls src="https://blog.xojo.com/wp-content/uploads/2024/09/css-classes-demo.mp4"></video></figure>



<p>We have included a new example, called &#8220;Applying Bootstrap CSS classes to controls&#8221;, that you can find under Platforms &gt; Web. Please give it a try.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="807" src="https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-10.56.29-1024x807.png" alt="" class="wp-image-13672" srcset="https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-10.56.29-1024x807.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-10.56.29-300x236.png 300w, https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-10.56.29-768x605.png 768w, https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-10.56.29.png 1267w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>CSS Classes are not limited to Bootstrap, if you have added styles in the HTML Header section, you can use them as well.</p>



<p>You can also add and remove them using the new <code>CSSClasses</code> property, which is available in every WebUIControl subclass.</p>



<h2 class="wp-block-heading">WebRectangle Got Some Love</h2>



<p>You won&#8217;t need to setup the border color, border thickness or the corner size, for WebRectangle, in the Opening event anymore.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="702" height="853" src="https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-11.02.31.png" alt="" class="wp-image-13673" srcset="https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-11.02.31.png 702w, https://blog.xojo.com/wp-content/uploads/2024/09/Captura-de-pantalla-2024-09-18-a-las-11.02.31-247x300.png 247w" sizes="(max-width: 702px) 100vw, 702px" /><figcaption class="wp-element-caption">Xojo 2024r2.1 on the left, Xojo 2024r3 on the right</figcaption></figure>
</div>


<p>When designing web applications, I found myself using a lot of WebRectangle controls and, by default, they have a rounded border.</p>



<p>The side-effect is subtle, but now that you can control the border radius directly from the Inspector, the IDE preview will be closer to how it will look in the browser. And you are going to avoid writing a few lines of code!</p>



<p>In addition, some Bootstrap themes define a different Corner Size. Setting this property to &#8220;-1&#8221; will honor that Bootstrap theme&#8217;s default border radius.</p>



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



<p>As always, the release comes with much more than I can tell you about in one blog post. With over 30 Bug fixes and 9 Feature Requests implemented in the Web target alone, make sure to take a look at the <a href="https://documentation.xojo.com/resources/release_notes/2024r3.html" data-type="link" data-id="https://documentation.xojo.com/resources/release_notes/2024r3.html" target="_blank" rel="noreferrer noopener">Xojo 2024r3 Release Notes</a> to see the whole picture.</p>



<p>Happy coding!</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>



<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>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/09/named-colors-from-the-ide.mp4" length="837283" type="video/mp4" />
<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/09/named-colors-bootstrap-theme-support.mp4" length="429757" type="video/mp4" />
<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/09/css-classes-demo.mp4" length="721074" type="video/mp4" />

			</item>
		<item>
		<title>What&#8217;s New in Xojo Web in 2024r2</title>
		<link>https://blog.xojo.com/2024/06/26/whats-new-in-xojo-web-in-2024r2/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Wed, 26 Jun 2024 15:00:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[2024r2]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13201</guid>

					<description><![CDATA[We're excited about Xojo 2024r2. Performance, control sets, improvements for current controls and bug fixes. You will love this release.]]></description>
										<content:encoded><![CDATA[
<p>We&#8217;re excited about Xojo 2024r2. Performance, control sets, improvements for current controls and bug fixes. You will love this release.</p>



<h2 class="wp-block-heading"><strong>Control Sets</strong></h2>



<p>There are cases where you have a bunch of controls with the same functionality. Imagine you are coding a calculator and you&#8217;ve just added the WebButtons for each digit. It would be repetitive and error prone to add the same code to Pressed events, on each button when the only thing that changes is the numeric value.</p>



<p>A set of controls can be grouped, so you can think about them like if you were using an array. You can add event handlers to the group itself. Events will be enhanced with an &#8220;index&#8221; parameter, to help you decide what to do, depending on the element.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="982" src="https://blog.xojo.com/wp-content/uploads/2024/06/Session-1024x982.png" alt="" class="wp-image-13202" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Session-1024x982.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/06/Session-300x288.png 300w, https://blog.xojo.com/wp-content/uploads/2024/06/Session-768x736.png 768w, https://blog.xojo.com/wp-content/uploads/2024/06/Session.png 1116w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Create Tabs and Embed Controls at Runtime in WebTabPanel and WebPagePanel</h2>



<p>Same as with Control Sets, this is something that was already present in Desktop projects and we wanted to include it for Web. From now on, you will be able to create and remove tabs and pages in WebTabPanel and WebPagePanel controls, respectively. Controls can also be added and removed at runtime, or move controls between tabs or pages whenever you need.</p>



<p>This opens a new world of possibilities for your applications, where you can provide your end users a way to have multiple contexts open at the same time.</p>



<figure class="wp-block-video"><video height="902" style="aspect-ratio: 1648 / 902;" width="1648" controls src="https://blog.xojo.com/wp-content/uploads/2024/06/Grabacion-de-pantalla-2024-06-16-a-las-13.05.26.mp4.mp4"></video></figure>



<h2 class="wp-block-heading"><strong>WebListBox: Configurable Header and Row Height, Border and Line Style</strong></h2>



<p>You will be able to configure the height of WebListBox headers and rows with the same API you are used to using in your Desktop projects. You won&#8217;t need to tweak them with CSS anymore.</p>



<figure class="wp-block-video"><video height="1018" style="aspect-ratio: 1648 / 1018;" width="1648" controls src="https://blog.xojo.com/wp-content/uploads/2024/06/Grabacion-de-pantalla-2024-06-16-a-las-13.08.01.mp4.mp4"></video></figure>



<p><a href="https://documentation.xojo.com/versions/2024r2/api/user_interface/web/weblistbox.html#weblistbox-hasborder">HasBorder</a> and <a href="https://documentation.xojo.com/versions/2024r2/api/user_interface/web/weblistbox.html#weblistbox-gridlinestyle">GridLineStyle</a> has also been added to Web projects, allowing you to remove the outside border, display only vertical lines between the columns&#8230; or just remove them.</p>



<h2 class="wp-block-heading"><strong>WebDataSource Interface</strong></h2>



<p>Speaking of WebListBox improvements, you&#8217;ll find that the WebDataSource is easier to implement. You won&#8217;t need to implement SortedPrimaryKeys and UnsortedPrimaryKeys methods anymore.</p>



<p>There are only three methods required now:</p>



<ul class="wp-block-list">
<li><strong>ColumnData</strong>: Where you will define the amount of columns, names, and configure if they are sortable</li>



<li><strong>RowCount</strong>: So the control can now the amount of space it will need</li>



<li><strong>RowData</strong>: This is where you return an array of rows</li>
</ul>



<p>WebListBox lazy load rows, meaning that it will only ask your DataSource for the amount of rows being displayed on screen. It will only fetch more when needed.</p>



<h2 class="wp-block-heading"><strong>WebListBox Improvements When Using a WebDataSource</strong></h2>



<p>Using a WebListBox with a DataSource makes it possible to display very large amounts of data. Until now, you were able to display thousands of rows very quickly. This release improves the way Xojo uses your DataSource, without having to change a line of code in your projects.</p>



<p>Scrolling through the data will display the rows much faster than before. Just for comparison, 2024r1.1 was able to display 1 million rows in about 6 seconds in my computer. The same project, using 2024r2, can display them in less than 100ms.</p>



<p>But is not just the speed that has been improved. Its memory footprint has been dramatically reduced as well. Displaying 1 million records in 2024r1.1 used about 1 GB of RAM, where 2024r2 will use just a few MB instead.</p>



<p>I can&#8217;t imagine a use case where you need to display millions of rows and scroll through them. But if you find one, you will be able to implement it with Xojo <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>



<h2 class="wp-block-heading"><strong>WebButtons Can be Resized Now</strong></h2>



<p>In order to make it easier to migrate your Web 1 projects, you will be able to modify the height of your WebButtons. The web framework will also take care to reduce the font size if needed when the button is smaller.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="844" src="https://blog.xojo.com/wp-content/uploads/2024/06/Press-me-1024x844.png" alt="" class="wp-image-13205" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Press-me-1024x844.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/06/Press-me-300x247.png 300w, https://blog.xojo.com/wp-content/uploads/2024/06/Press-me-768x633.png 768w, https://blog.xojo.com/wp-content/uploads/2024/06/Press-me.png 1425w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading"><strong>Individual Indicator for Each Segment of WebSegmentedButton</strong></h2>



<p>There are situations where you want to mix different &#8220;indicators&#8221; (different colors) in a single WebSegmentedButton control. For example, pressing on one of the segments can be a destructive action, so you could use the Danger indicator. By default, segments will use the indicator you set in the Inspector panel, but you will be able now to individually override one of them.</p>



<pre class="wp-block-code"><code>Me.Indicator = WebUIControl.Indicators.Primary
Me.SegmentAt(1).Indicator = WebUIControl.Indicators.Danger
Me.SegmentAt(2).Indicator = WebUIControl.Indicators.Success</code></pre>



<p>Having 4 segments, this will be the result of above example at runtime:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="724" height="220" src="https://blog.xojo.com/wp-content/uploads/2024/07/Captura-de-pantalla-2024-06-16-a-las-12.34.38.png" alt="" class="wp-image-13331" srcset="https://blog.xojo.com/wp-content/uploads/2024/07/Captura-de-pantalla-2024-06-16-a-las-12.34.38.png 724w, https://blog.xojo.com/wp-content/uploads/2024/07/Captura-de-pantalla-2024-06-16-a-las-12.34.38-300x91.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>



<h2 class="wp-block-heading">Outlined WebButton and WebSegmentedButton</h2>



<p>Some GUIs could become overwhelming, when every button looks like a call to action. The new Outlined property, available in WebButton and WebSegmentedButton controls, can help with heavily loaded interfaces. Here is how it looks like:</p>



<figure class="wp-block-video"><video height="822" style="aspect-ratio: 1648 / 822;" width="1648" controls src="https://blog.xojo.com/wp-content/uploads/2024/06/Grabacion-de-pantalla-2024-06-16-a-las-12.40.05.mp4.mp4"></video></figure>



<h2 class="wp-block-heading"><strong>Performance, Memory Leaks, Bug Fixes</strong></h2>



<p>Last, but not least, 2024r2 comes with great performance improvements. We&#8217;ve been improving the web server to handle even more requests per second. If you are using Xojo Web for exposing an API, it will be able to serve more requests in less time. For regular Xojo Web applications, it means it will be able to handle more events and reply to them faster.</p>



<p>Here is a comparison of the same project during the different releases of Xojo:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="810" src="https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-1024x810.png" alt="" class="wp-image-13207" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-1024x810.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-300x237.png 300w, https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-768x608.png 768w, https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic.png 1407w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Latency has also been improved, Xojo is able already to reply in less than 2ms:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="810" src="https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-1-1024x810.png" alt="" class="wp-image-13208" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-1-1024x810.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-1-300x237.png 300w, https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-1-768x608.png 768w, https://blog.xojo.com/wp-content/uploads/2024/06/Pasted-Graphic-1.png 1422w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If you are still serving Web APIs with Web 1, this is a good opportunity to migrate:</p>



<figure class="wp-block-table"><table><tbody><tr><td><br></td><td><strong>2019r3.2</strong></td><td><strong>2024r2</strong></td></tr><tr><td>Average Latency</td><td>133.4 ms</td><td>1.98 ms</td></tr><tr><td>Max Latency</td><td>287.3 ms</td><td>143.52 ms</td></tr><tr><td>Requests per second</td><td>76</td><td>8900</td></tr><tr><td>Transfer Rate</td><td>9.89 KB/s</td><td>1.5 MB/s</td></tr></tbody></table></figure>



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



<p>As usual, I&#8217;d like to send a big thank you to everyone taking the time creating bug reports, feature requests and testing beta releases. This wouldn&#8217;t be possible without your support.</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>



<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>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/06/Grabacion-de-pantalla-2024-06-16-a-las-13.05.26.mp4.mp4" length="172691" type="video/mp4" />
<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/06/Grabacion-de-pantalla-2024-06-16-a-las-13.08.01.mp4.mp4" length="300122" type="video/mp4" />
<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/06/Grabacion-de-pantalla-2024-06-16-a-las-12.40.05.mp4.mp4" length="156104" type="video/mp4" />

			</item>
		<item>
		<title>Improvements to Xojo Web in Xojo 2024r1</title>
		<link>https://blog.xojo.com/2024/03/26/popovers-and-other-improvements-in-xojo-web/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Tue, 26 Mar 2024 15:27:06 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[2024r1]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12684</guid>

					<description><![CDATA[Our web framework continues improving, with interesting new features and tons of bug fixes. Let’s take a look to some highlighted 2024r1 changes!]]></description>
										<content:encoded><![CDATA[
<p>Our web framework continues improving, with interesting new features and tons of bug fixes. Let’s take a look to some highlighted 2024r1 changes!</p>



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



<p>Similar to WebDialogs, popovers give you the opportunity to improve your apps’ UX. They are ephemeral screens where you can place text and controls.</p>



<p>Unlike the WebDialog, which is always centered and prevents the user to interact with other controls, Popovers can be placed on specific controls, where that information matters.</p>



<p>Think about them as enhanced “contextual menus” but, instead of just plain text menus, you can add anything you like. Have you ever dreamed of adding a WebMapViewer into some sort of contextual menu? Now you can!</p>



<p>The API is very simple. Create a container, add some controls and that’s it, really. You will just have to create a new instance of that container and show it as a Popover, specifying the control it should be pointing to.</p>



<p>Let’s say you have a container, called “MyTextFieldContainer”, and you want to display it below a WebLabel called “MyLabel”. Here is the code:</p>



<pre class="wp-block-code"><code>Var c As New MyTextFieldContainer
c.ShowPopover(MyLabel)</code></pre>



<p>By default, it will be shown below the specified control, but if you want to show it in a different place, you can use the new DisplaySides enumeration. As easy as this:</p>



<pre class="wp-block-code"><code>Var c As New TextFieldContainer
c.ShowPopover(MyLabel, WebContainer.DisplaySides.Top)</code></pre>



<p>As you can see, Web Projects’ Popovers are just container instances that you will show dynamically. That gives you the opportunity to raise events, add custom computed properties or implement the Observer interface. If you are already familiar with Containers, you already know how to use Popovers. Learn more about <a href="https://blog.xojo.com/2024/03/26/popovers-for-xojo-desktop-web-and-ios/">Popovers</a>.</p>



<h2 class="wp-block-heading">Displaying contextual menus programmatically</h2>



<p>Sometimes Popovers could be overkill for the task. If you just want to display a menu with some textual items inside, a contextual menu might be enough.</p>



<p>Imagine you have a WebTextLabel where you want to display the contextual menu whenever the user Presses on it. In its Opening event you could define the ContextualMenu:</p>



<pre class="wp-block-code"><code>Var menu As New WebMenuItem
menu.AddMenuItem("Foo")
menu.AddMenuItem("Bar")
menu.AddMenuItem("Baz")

Me.ContextualMenu = menu</code></pre>



<p>Implement the WebLabel.Pressed event and add this code:</p>



<pre class="wp-block-code"><code>Me.ContextualMenu.PopUp</code></pre>



<p>As easy as that.</p>



<h2 class="wp-block-heading">New RemoveControl method</h2>



<p>WebViews controls, like WebPage and WebContainer, now supports removing controls. This gives you the missing piece to create GUIs programmatically, as AddControl was already supported .</p>



<p>This can be useful when you are presenting a form to your end user with an unknown amount of fields.</p>



<p>For example, your user is filling the profile and you want to support having multiple contact fields. Some users will want to add 1 phone, others 2, and others would prefer to be contacted just by email.</p>



<p>Adding and removing controls dynamically gives you the opportunity to build this kind of features. Instead of adding a fixed amount of contact methods, you can adapt your app to what your user really needs.</p>



<h2 class="wp-block-heading">Performance and memory usage improvements</h2>



<p>We’re landing at my favorite part, improvements that nobody will see… unless you want to share your server monitoring stats, which is cool.</p>



<p>2024r1 comes with less Disk I/O usage. In my own benchmarks, Xojo Web is now able to serve about 1200 requests per second via the WebApplication.HandleURL event. That’s around a nice 20% more, compared to the previous version.</p>



<p>Also, thanks to Jeremie Leroy (one of our Xojo MVPs) and Bruno Fréchette, we’ve managed to identify and fix some memory leaks. In 2024r1, your web application will be doing a better job at cleaning up after processing requests.</p>



<h2 class="wp-block-heading">Bug fixes</h2>



<p>The list of fixes is big, you can inspect the whole list in the <a href="https://documentation.xojo.com/resources/release_notes/2024r1.html">2024r1 Release Notes</a> page.</p>



<p><strong>Web fixes by category:</strong></p>



<ul class="wp-block-list">
<li>Compiler: 1</li>



<li>IDE: 7</li>



<li>Framework: 40</li>
</ul>



<p>18 extra regressions were reported and fixed during the beta period. A huge thank you to everyone taking the time to test our releases and reporting issues before the final release becomes available.</p>



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



<p>We hope you are as excited as we are for this release. I’m personally looking forward to see what you’re building, please remember to mention us on your favorite social network so we all can see what you’re working on.</p>



<p>In the meantime, we are already working hard preparing our next release, 2024r2. Spoilers: You will love it!</p>



<p>Happy coding!</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>Performance Improvements in Xojo Web</title>
		<link>https://blog.xojo.com/2023/12/12/performance-improvements-in-xojo-web/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Tue, 12 Dec 2023 14:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[2023r4]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12313</guid>

					<description><![CDATA[The last big Xojo release in 2023 comes with a lot of performance improvements everywhere. The Xojo IDE itself is faster, which gives you Time to Reflect on Stack Optimization. In this post, I want to detail those improvements in Xojo 2023r4 that target Xojo Web including faster HandleURL responses, faster transfer rates in Windows and Linux, static assets cache control, Events improvements and a new experimental option.]]></description>
										<content:encoded><![CDATA[
<p>The last big Xojo release in 2023 comes with a lot of performance improvements everywhere. The Xojo IDE itself is <a href="https://blog.xojo.com/2023/12/12/small-and-simple-changes-to-speed-up-the-xojo-ide/">faster</a>, which gives you <a href="https://blog.xojo.com/2023/12/12/time-to-reflect-on-stack-optimization/">Time to Reflect on Stack Optimization</a>. In this post, I want to detail those improvements in Xojo 2023r4 that target Xojo Web including faster HandleURL responses, faster transfer rates in Windows and Linux, static assets cache control, Events improvements and a new experimental option.</p>



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



<h3 class="wp-block-heading">Faster HandleURL Responses</h3>



<p>With Xojo Web you can create APIs backing your Mobile or Desktop applications. Just by updating to Xojo 2023r4, your web services will get the benefit of much faster responses and the ability to handle many more requests per second.</p>



<p>Just to compare between different Xojo versions, we’ve created some benchmarks using Xojo Web 1 (with Xojo 2019r3.2) and some Xojo Web 2 releases, 2023r3.1 and the latest one, 2023r4.</p>



<p>Here are the results, returning plain text:</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="897" height="1024" src="https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-897x1024.png" alt="" class="wp-image-12314" srcset="https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-897x1024.png 897w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-263x300.png 263w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-768x877.png 768w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-1346x1536.png 1346w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms.png 1726w" sizes="auto, (max-width: 897px) 100vw, 897px" /></figure>
</div>


<p>And the same test, but this time returning a string generated by JSONItem:</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="916" height="1024" src="https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-1-916x1024.png" alt="" class="wp-image-12315" srcset="https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-1-916x1024.png 916w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-1-268x300.png 268w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-1-768x859.png 768w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-1-1374x1536.png 1374w, https://blog.xojo.com/wp-content/uploads/2023/12/Avg-Latency-ms-1.png 1764w" sizes="auto, (max-width: 916px) 100vw, 916px" /></figure>
</div>


<p>Xojo 2023r4 is capable of serving around 20x more requests per second compared to Web 1, and around 4x compared to Xojo 2023r3.1. And thanks to the reduced latency time, your API will return the contents much faster.</p>



<h3 class="wp-block-heading">Faster Transfer Rates in Windows and Linux</h3>



<p>While working on performance, we’ve found that applications deployed on Windows and Linux were serving large files much slower than those deployed on macOS servers.</p>



<p>William improved the low level code for sockets on those targets, allowing the server to transfer large files at a much faster speed. During my tests, I’ve seen 10x faster transfer rates.</p>



<p>But this doesn’t affect only our Web target! If you are using a ServerSocket with TCPSocket classes, your Console and Desktop applications will also benefit from these improved transfer rates.</p>



<h3 class="wp-block-heading">Static Assets Cache Control</h3>



<p>In this release, we’ve also improved how the framework interacts with the browser. When your user visits your web application for the first time, it will store all of the required JavaScript and CSS files.</p>



<p>This was already happening in previous releases but with a subtle difference. From now on, the browser won’t even need to check with the server if the file has changed since the last visit. This translates to faster load times for your users and less server load for you since the server won’t need to handle all those requests anymore.</p>



<h3 class="wp-block-heading">Improved Compile Time</h3>



<p>In this release, Xojo Web will compile your projects a few seconds faster. The first time you compile your project, it will cache the result of some processes that are only changing between Xojo releases.</p>



<p>Here is a comparison between 2023r3.1 and 2023r4, both are running a debug session of a blank project:</p>



<figure class="wp-block-video aligncenter"><video height="672" style="aspect-ratio: 2558 / 672;" width="2558" controls src="https://blog.xojo.com/wp-content/uploads/2023/12/web-blank-project-compile-time.mp4"></video></figure>



<p>That’s around 3-4 seconds faster every time a project compiles.</p>



<h3 class="wp-block-heading">Events Improvements</h3>



<p>Some web controls were sending information from the browser to the server more frequently than needed. For example, a WebContainer.Scrolled event was being sent for every scrolled pixel, causing unnecessary server load.</p>



<p>We’ve been reviewing these controls and have made some improvements:</p>



<ul class="wp-block-list">
<li>WebCombobox</li>



<li>WebContainer</li>



<li>WebSearchField</li>



<li>WebTextArea</li>



<li>WebTextField</li>



<li>WebUploader</li>
</ul>



<p>All of them will continue communicating their state updates, but the framework will focus on delivering the latest value available.</p>



<p>For example, in a WebSearchField, if the user writes &#8220;hello&#8221;, the framework will send the first key press (&#8220;h&#8221;) as soon as it happens. The next event it will send will depend on how fast the user types, so it can be either &#8220;hel&#8221; or maybe directly &#8220;hello&#8221;. What is guaranteed is the TextChanged event will be fired for the final value (&#8220;hello&#8221; in this example).</p>



<h3 class="wp-block-heading">New Experimental Option</h3>



<p>WebSession has a new experimental option available, disabled by default. “<a href="https://documentation.xojo.com/api/web/websession.html#websession-sendeventsinbatches">Send Events in Batches</a>”:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="596" height="714" src="https://blog.xojo.com/wp-content/uploads/2023/12/Interfaces.png" alt="" class="wp-image-12317" srcset="https://blog.xojo.com/wp-content/uploads/2023/12/Interfaces.png 596w, https://blog.xojo.com/wp-content/uploads/2023/12/Interfaces-250x300.png 250w" sizes="auto, (max-width: 596px) 100vw, 596px" /></figure>
</div>


<p>Turning it on will make our JavaScript framework group different event notifications in a single request. Projects that contain complex layouts that show and hide several controls at once may benefit from snappier GUIs.</p>



<p>As a side effect, it will also ensure the events arrive to the server in the correct order. Think about a login screen where the user has an email field, a password and a “Login” button with the Default setting turned on (to allow the user to trigger the Pressed event by pressing the Enter key). When sending the events in different requests, because of network latencies, the WebButton.Pressed event could arrive at the server before the last WebTextField.TextChanged.</p>



<p>We would love to hear your experiences when turning on this experimental option. If you find an issue, <a href="https://tracker.xojo.com/xojoinc/xojo/-/issues/new" target="_blank" rel="noreferrer noopener">please report it</a>.</p>



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



<p>As always, while Xojo 2023r4 comes with a lot of performance improvements, it also comes with bug fixes and feature requests. I want to again thank everyone who took the time to create new Bug reports and Feature Requests, and tested the pre-releases.</p>



<p>We’re looking forward to see what you build with it!</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>



<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>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2023/12/web-blank-project-compile-time.mp4" length="538605" type="video/mp4" />

			</item>
		<item>
		<title>Small and Simple Changes to Speed Up the Xojo IDE</title>
		<link>https://blog.xojo.com/2023/12/12/small-and-simple-changes-to-speed-up-the-xojo-ide/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Tue, 12 Dec 2023 14:30:00 +0000</pubDate>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[2023r4]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Navigator]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12266</guid>

					<description><![CDATA[At times, we encounter minor yet impactful changes stemming from seemingly uncomplicated issues. In specific instances, addressing these modest complexities may necessitate minimal adjustments, yet yield substantial outcomes.]]></description>
										<content:encoded><![CDATA[
<p>At times, we encounter minor yet impactful changes stemming from seemingly uncomplicated issues. In specific instances, addressing these modest complexities may necessitate minimal adjustments, yet yield substantial outcomes.</p>



<h3 class="wp-block-heading">Optimizing the Navigator</h3>



<p>In Xojo 2023r4 we tackled a performance issue impacting the navigator&#8217;s speed, particularly during scrolling. Upon closer examination, we identified that the substantial consumption of resources and time was attributed to the rendering of these basic and compact navigator icons.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="122" height="259" src="https://blog.xojo.com/wp-content/uploads/2023/12/SmallIcons.png" alt="" class="wp-image-12267"/></figure>



<p>What was initially intended as a straightforward drawing of an icon, ended up becoming a needlessly intricate element that significantly impeded overall speed.</p>



<h3 class="wp-block-heading">The Before and After</h3>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="426" height="240" src="https://blog.xojo.com/wp-content/uploads/2023/12/Xojo2023r3_Scrolling.gif" alt="" class="wp-image-12279 size-full"/></figure><div class="wp-block-media-text__content">
<p>In 2023r3, a noticeable lag occurs during scrolling, with the thumbtrack failing to keep pace with the mouse movement.</p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="426" height="240" src="https://blog.xojo.com/wp-content/uploads/2023/12/Xojo2023r4_Scrolling-1.gif" alt="" class="wp-image-12281 size-full"/></figure><div class="wp-block-media-text__content">
<p>In 2023r4, scrolling has been significantly improved and the thumbtrack now maintains synchronization with the mouse movement, resulting in a smoother experience.</p>
</div></div>



<h3 class="wp-block-heading">What other benefits does this change offer?</h3>



<p>Having pinpointed the root cause of this issue, we proceeded to implement updates across various instances where the needless drawing persisted. We identified a similar occurrence when rendering command bar icons affecting every keystroke in the code editor and movement in the layout editor. Refactoring this aspect is expected to enhance performance in these specific areas of the IDE.  We trust that you will find the IDE more enjoyable following these small and simple changes.</p>



<p><em><em><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</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>



<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>Updates for Web Projects in Xojo 2023r2</title>
		<link>https://blog.xojo.com/2023/08/09/updates-for-web-projects-in-xojo-2023r2/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Wed, 09 Aug 2023 13:30:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Bootstrap]]></category>
		<category><![CDATA[Charts]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web SDK]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[WebListBox]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11671</guid>

					<description><![CDATA[Xojo 2023r2 comes with a lot of updates for Xojo Web. While Dark Mode and Bootstrap 5 are the main feature in this release, we've put a lot of effort into making everything better including: improved accessibility, updates to the WebListBox and WebChart and IDE performance improvements and more.]]></description>
										<content:encoded><![CDATA[
<p>Xojo 2023r2 comes with a lot of updates for Xojo Web. While Dark Mode and Bootstrap 5 are the main feature in this release, we&#8217;ve put a lot of effort into making everything better including: improved accessibility, updates to the WebListBox and WebChart, IDE performance improvements and more.</p>



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



<h3 class="wp-block-heading">Dark Mode Support and Bootstrap 5</h3>



<p>You can now create web applications with Xojo that respects users&#8217; Dark Mode preference with Bootstrap 5.</p>



<p>There is a new WebSession.ColorMode property you can use. It will be set as Auto by default, meaning it will match the user&#8217;s OS appearance preference, but it can also be forced to Light or Dark. It can be changed at runtime and per session.</p>



<p>While not everyone likes Dark Mode, some of your end users will appreciate this. Due to medical circumstances, they might actually need it, so please consider adding support even if you don&#8217;t like dark interfaces.</p>



<p>If you want to enable Dark Mode in your previous projects, you will have to manually enable the setting in the Shared Build Settings section (which is turned on by default on new projects):</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="786" src="https://blog.xojo.com/wp-content/uploads/2023/07/Supports-Dark-Mode-Setting-1024x786.png" alt="" class="wp-image-11672" srcset="https://blog.xojo.com/wp-content/uploads/2023/07/Supports-Dark-Mode-Setting-1024x786.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/07/Supports-Dark-Mode-Setting-300x230.png 300w, https://blog.xojo.com/wp-content/uploads/2023/07/Supports-Dark-Mode-Setting-768x589.png 768w, https://blog.xojo.com/wp-content/uploads/2023/07/Supports-Dark-Mode-Setting.png 1114w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><a href="https://documentation.xojo.com/api/graphics/colorgroup.html">Color Groups</a> can also be used nearly everywhere, and they will be used in the IDE preview when you toggle between Light and Dark Mode:</p>



<figure class="wp-block-video aligncenter"><video height="1680" style="aspect-ratio: 2786 / 1680;" width="2786" controls src="https://blog.xojo.com/wp-content/uploads/2023/07/ColorGroup-IDE-preview.mp4"></video></figure>



<p>In order get Dark Mode support ready for Web, we had to upgrade our internal <a rel="noreferrer noopener" href="https://getbootstrap.com" data-type="URL" data-id="https://getbootstrap.com" target="_blank">Bootstrap</a> dependency from v4.6.1 to v5.3.0, which is a huge leap by itself. Bootstrap 5 comes with a refreshed color palette, new components, modernized existing controls and bug fixes. Please check our previous <a href="https://blog.xojo.com/2023/01/26/bootstrap-5-is-coming-to-the-xojo-web-framework/" data-type="post" data-id="11198">Bootstrap 5 is Coming to the Xojo Web Framework</a> blog post.</p>



<p>If your application wasn&#8217;t using a custom Bootstrap Theme (bootstrap.min.css), everything should look more or less the same except for the subtle color palette differences and rounder buttons. Bootstrap 4 themes aren&#8217;t supported in Bootstrap 5, please replace it with a v5 theme if needed. Not every theme supports Dark Mode, but the one included in Xojo does.</p>



<p>If you are a theme builder, please check the <a rel="noreferrer noopener" href="https://getbootstrap.com/docs/5.3/customize/color-modes/" target="_blank">Bootstrap&#8217;s Color Modes documentation</a>. You can also find free Bootstrap 5 themes available at&nbsp;<a href="https://bootswatch.com" target="_blank" rel="noreferrer noopener">Bootswatch</a>.</p>



<p>We also want to send a big thank you to our third party developers for their effort adapting their Open Source and Commercial plugins and controls to Bootstrap 5. You can learn about what they offer at the Xojo <a href="https://www.xojo.com/store/#addons">Extras Store</a> and in the <a href="https://documentation.xojo.com/resources/third_party/open_source_projects.html">Open Source Projects</a> page in the Xojo Documentation.</p>



<h3 class="wp-block-heading">Accessibility</h3>



<p>Navigating and using web applications with the keyboard makes everyone&#8217;s life easier. In Xojo 2023r2 we&#8217;ve upgraded <a href="https://documentation.xojo.com/api/user_interface/web/webpagination.html#webpagination">WebPagination</a> and <a href="https://documentation.xojo.com/api/user_interface/web/webbreadcrumb.html#webbreadcrumb">WebBreadcrumb</a> controls, which are composed of more than one focusable item. Your users will be able to properly use the tab key to go through them.</p>



<figure class="wp-block-video aligncenter"><video height="998" style="aspect-ratio: 1404 / 998;" width="1404" controls src="https://blog.xojo.com/wp-content/uploads/2023/07/Tab-WebPagination-and-WebBreadcrumb.mp4"></video></figure>



<p>We plan to continue working on improving Accessibility. Please open a new <a href="https://tracker.xojo.com/xojoinc/xojo/-/issues/new" target="_blank" rel="noreferrer noopener">Issue</a> if you find anything that can help you and your end users.</p>



<h3 class="wp-block-heading">WebListBox</h3>



<p>DataTables, the internal dependency we use for bringing your tables to life, has been upgraded from v1.10.20 to v1.13.4. This recent version includes support for Bootstrap 5 and a few bug fixes that some users were facing in their web projects.</p>



<p>You can now disable your <a href="https://documentation.xojo.com/api/user_interface/web/weblistbox.html#weblistbox">WebListBox</a> by setting its Enabled property to False so your users won&#8217;t be able to interact with it. And also, if you were missing this feature that&#8217;s in the DesktopListBox, you can now add Variant tags to your columns, using the new WebListBox.ColumnTagAt.</p>



<p>Last but not least, this control comes with a visual Inline Editor, like in its Desktop counterpart:</p>



<figure class="wp-block-video aligncenter"><video height="1806" style="aspect-ratio: 2786 / 1806;" width="2786" controls src="https://blog.xojo.com/wp-content/uploads/2023/07/WebListBox-Inline-Edit.mp4"></video></figure>



<h3 class="wp-block-heading">WebChart</h3>



<p>Chart.js, the underlying library we use for <a href="https://documentation.xojo.com/api/user_interface/web/webchart.html#webchart">WebChart</a>, has been upgraded from v2.9.3 to v4.2.1. Again, we&#8217;ve done everything we could on our side so you don&#8217;t have to do anything.</p>



<p>The only exception is with the WebChart.OverrideOptions event. If you are currently using it, you&#8217;ll have to check the library documentation as the internal options JSON has changed.</p>



<p>You can expect the new DesktopChart features to be working on WebChart, like configuring how the lines look like (including the endpoints), background images or prefix and suffixes. Read <a href="https://blog.xojo.com/2023/07/19/2023r2-new-additions-to-desktopchart-mobilechart-and-webchart">New Additions to DesktopChart, MobileChart and WebChart</a> to learn more.</p>



<h3 class="wp-block-heading">Web SDK</h3>



<p>If you are using third party controls, you will notice some of them now have a custom icon in the IDE Library. But even more important, they will use less memory at runtime.</p>



<p>Are you developing Open Source or Commercial Web SDK controls? Remember there is a dedicated <a rel="noreferrer noopener" href="https://forum.xojo.com/c/sdks/web-sdk/23" target="_blank">Web SDK forum</a> where you can ask any questions you may have. </p>



<h3 class="wp-block-heading">IDE Performance and Improved CSS Support</h3>



<p>Bootstrap 5 makes use of the latest CSS features. We took the opportunity to rethink our CSS parser and improve its performance at the same time. As a result, the IDE preview looks even closer to what you see in the browser, and we render everything faster.</p>



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



<p>Over 50 bug fixes and features were included just for Xojo Web in Xojo 2023r2. Please find a full list in the <a href="https://documentation.xojo.com/resources/release_notes/2023r2.html">Release Notes</a>. read more about <a href="https://blog.xojo.com/2023/08/09/bootstrap-5-in-xojo-web-2023r2/">Bootstrap 5</a> and updates to <a href="https://blog.xojo.com/2023/08/09/new-additions-to-desktopchart-mobilechart-and-webchart/">WebChart</a> on the Xojo Programming Blog.  We are looking forward to hearing your thoughts and seeing what you&#8217;re building with Xojo! See you in the forum!</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>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2023/07/ColorGroup-IDE-preview.mp4" length="646228" type="video/mp4" />
<enclosure url="https://blog.xojo.com/wp-content/uploads/2023/07/Tab-WebPagination-and-WebBreadcrumb.mp4" length="202785" type="video/mp4" />
<enclosure url="https://blog.xojo.com/wp-content/uploads/2023/07/WebListBox-Inline-Edit.mp4" length="737982" type="video/mp4" />

			</item>
		<item>
		<title>Xojo 2022r3 Includes 60 Fixes for Xojo Web</title>
		<link>https://blog.xojo.com/2022/10/12/xojo-2022r3-includes-60-fixes-for-xojo-web/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Wed, 12 Oct 2022 13:45:09 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Bug Bash]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=10842</guid>

					<description><![CDATA[While we do our best to write software that "just works", bugs happen. Xojo 2022r3 includes 60 bug fixes just for the Web Framework. Twenty-six of them were fixed during the Bug Bash event. Eight Feature Requests were also included in Xojo Web 2022r3. We've been very careful and tried to pick those on the border line between being a bug or a feature.]]></description>
										<content:encoded><![CDATA[
<p>While we do our best to write software that &#8220;just works&#8221;, bugs happen. Xojo 2022r3 includes 60 bug&nbsp;fixes just for the Web Framework. Twenty-six of them were fixed during the Bug Bash event. Eight Feature Requests were also included in Xojo Web 2022r3. We&#8217;ve been very careful and tried to pick those on the border line between being a bug or a feature.</p>



<p>Both server and frontend will have less memory footprint now. The team has been working on finding and fixing memory leaks, and optimizing how the framework cleans up the controls, when pages aren&#8217;t visible anymore.</p>



<p>Paul and Travis made IDE improvements to load projects much faster. If you have a large Web project, you will surely notice the difference.</p>



<p>The WebListBox component got most of the improvements. Visually, you will notice less flickering. Internally, it will make less requests to the web server to display its data. We will continue optimizing its performance release after release. Interacting with this control is now more natural and accessible, as we&#8217;ve made it more compatible with the different OSs and devices. And just like WebListBox, almost every other control received one or more bug fixes. Check the <a href="https://documentation.xojo.com/resources/release_notes/2022r3.html">Release Notes</a> for a detailed list.</p>



<p>I would like to finish this post with a huge thank you to every user that has helped directly or indirectly creating Issues, attaching a sample project, posting on the Forum and testing the beta releases.</p>



<p>The community is the best feature of Xojo <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><em>Ricardo has always been curious about how things work. Growing up surrounded by computers</em> and became interested in <em>web technologies since 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 &#8230; or crocheting amigurumis. Find Ricardo on Twitter <a rel="noreferrer noopener" href="https://web.archive.org/web/20220805000833/https://www.twitter.com/piradoiv" target="_blank">@piradoiv</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>New Xojo Code Editor Improvements</title>
		<link>https://blog.xojo.com/2021/07/22/new-xojo-code-editor-improvements/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 22 Jul 2021 11:44:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Code Editor]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=8819</guid>

					<description><![CDATA[There are several Code Editor improvements in Xojo 2021 Release 2 that you might enjoy: Line Numbering and the Gutter, Code Folding, Super Return and more...]]></description>
										<content:encoded><![CDATA[
<p>There are several Code Editor improvements in Xojo 2021 Release 2 that you might enjoy. Read on to learn more about them.</p>



<h2 class="wp-block-heading">Line Numbering and the Gutter</h2>



<p>Code Editor Line Numbering is now an IDE preference instead of a per-Code Editor preference. In the Preference (or Options) window, choose Coding and then turn on &#8220;Show line numbers in gutter&#8221; to enable line numbering on all Code Editors.</p>



<p>With Line Numbering enabled, the gutter area is a bit wider to show the line number. As you move the cursor around in the Code Editor, notice that the gutter highlights to indicate the line you are on. This can be very handy to help find where the cursor is in a busy method.</p>



<p>You can also now click on a line number in the gutter to select the entire line. This is helpful if you want to copy the entire line, but it is also a great way to make it a bit easier to study a particular line of code more carefully.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="443" src="https://blog.xojo.com/wp-content/uploads/2021/07/CleanShot-2021-07-09-at-14.48.09.gif" alt="" class="wp-image-8826"/></figure>



<h2 class="wp-block-heading">Code Folding</h2>



<p>If you’ve not used it before, Code Folding allows you to collapse (or fold) code to help reduce clutter in the Code Editor. You do this by clicking on the small “-” indicator that appears to the left of a code block. When code is folded that indicator changes to a “+”, which you can click to make the code visible again. Folded code is never removed, it is just temporarily hidden.</p>



<p>In this release, we improved the “-“ and “+” indicators so that they show with a rounded rectangle to be a bit friendlier. The code folding line highlights are also now slightly less distracting.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="432" src="https://blog.xojo.com/wp-content/uploads/2021/07/CleanShot-2021-07-09-at-14.50.01.gif" alt="" class="wp-image-8828"/></figure>



<h2 class="wp-block-heading">Super Return</h2>



<p>When you are on an incomplete line of code, you can press Shift-Return (also known as Super Return) to automatically provide some assistance. For example, start typing an If statement like this:</p>



<pre class="wp-block-preformatted">If True</pre>



<p>and press Shift-Return after typing True. The Code Editor will fill in the “Then” and “End If” and put the cursor between them:</p>



<pre class="wp-block-preformatted">If True Then
  &lt;-- Cursor here
End If</pre>



<p>When you press Super Return with a For loop, not only is the Next added as it always was, but if you have an inline loop variable, then it is added to the Next as well. This can make it easier to match nested loops.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="347" src="https://blog.xojo.com/wp-content/uploads/2021/07/CleanShot-2021-07-09-at-14.43.35.gif" alt="" class="wp-image-8821"/></figure>



<p>Although this was added in 2021 Release 1, you may also find this tip useful: Press Super Return on a comment line to start a new line with a comment.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="412" src="https://blog.xojo.com/wp-content/uploads/2021/07/CleanShot-2021-07-09-at-14.44.48.gif" alt="" class="wp-image-8822"/></figure>



<p>Related to Super Return is Option Return or Control-Alt Return on Windows/Linux. When you press Option Return on a line, a new line is added with the code continuation character placed at the end of the current line. </p>



<p>In 2021 Release 2, when you press Option Return when inside quotes for a String, the string is completed and things are extended to the next line.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="401" src="https://blog.xojo.com/wp-content/uploads/2021/07/CleanShot-2021-07-09-at-14.46.03.gif" alt="" class="wp-image-8824"/></figure>



<h2 class="wp-block-heading">Other Improvements</h2>



<p>The Project -&gt; Go To Location feature lets you jump to a specific method in your project by typing the class and name, for example: CustomerDetailsWindow.LoadCustomers</p>



<p>In 2021 Release 2 you can now also add a line number to jump to a specific part of the code. This is great when asking someone else on the team to look at some code, especially in a lengthy method. You can do this by putting a “#” followed by the line number like this: CustomerDetailsWindow.LoadCustomers#15</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="449" src="https://blog.xojo.com/wp-content/uploads/2021/07/CleanShot-2021-07-09-at-14.51.33.gif" alt="" class="wp-image-8830"/></figure>



<p>Sometimes you want to get the text for a method signature, but don’t want to copy the entire method and all its code (which was what you previously got when you select a method in the Navigator and choose Copy). Now you can right-click on the method signature in the header of the Code Editor and choose “Copy signature” to copy the signature to the clipboard.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="425" src="https://blog.xojo.com/wp-content/uploads/2021/07/CleanShot-2021-07-09-at-14.53.48.gif" alt="" class="wp-image-8832"/></figure>



<p>As usual, be sure to check out the <a href="https://documentation.xojo.com/resources/release_notes/2021r2.html">full release notes for 2021 Release 2</a> as there are other cool things to find or <a href="http://v">download</a> 2021 Release 2 and try it yourself!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Suddenly, it has been 25 years</title>
		<link>https://blog.xojo.com/2021/04/01/suddenly-it-was-25-years-ago/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Thu, 01 Apr 2021 10:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=8341</guid>

					<description><![CDATA[On this day 25 years ago I wandered into the local Chase Bank here in Austin, Texas to open a checking account for my latest venture. At that time I was planning to write custom software applications for various businesses that were interested in hiring me to do so. Not long after that, one of the developers who worked for one of my customers asked if I'd be interested in hiring him. Jason and I still work together to this day. What you now know as Xojo came along about 18 months later. As we prepared v1.0 to ship, we wound down the custom software development part of the business. We've been a development tools company ever since.]]></description>
										<content:encoded><![CDATA[
<p>On this day 25 years ago I wandered into the local Chase Bank here in Austin, Texas to open a business account for my latest venture. At that time I was planning to write custom software applications for various businesses that were interested in hiring me to do so. Not long after that, one of the developers who worked for one of my customers asked if I&#8217;d be interested in hiring him. Jason and I still work together to this day.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2021/03/geoffandjason.jpg" alt="" class="wp-image-8343" width="436" height="303" srcset="https://blog.xojo.com/wp-content/uploads/2021/03/geoffandjason.jpg 983w, https://blog.xojo.com/wp-content/uploads/2021/03/geoffandjason-300x209.jpg 300w, https://blog.xojo.com/wp-content/uploads/2021/03/geoffandjason-768x535.jpg 768w" sizes="auto, (max-width: 436px) 100vw, 436px" /></figure></div>



<p>What you now know as Xojo came along about 18 months later. As we prepared v1.0 to ship, we wound down the custom software development part of the business. We&#8217;ve been a development tools company ever since.</p>



<p>It&#8217;s truly amazing to me how quickly the past 25 years have gone by. It certainly doesn&#8217;t seem like 25 years. I consider myself quite fortunate that 25 years later, I still get to do what I love. The big factor for us has been adapting to change and learning from our mistakes. In his book, &#8220;A Short History of Nearly Everything&#8221;, Bill Bryson explains what lifeforms must do to survive. He says, &#8220;You must be prepared to change everything about yourself-shape, size, color, species affiliation, everything-and do so repeatedly.&#8221; This is also true in business. I didn&#8217;t start this company to provide development tools but when the opportunity presented itself, I grabbed it. When we shipped v1.0 on July 4th, 1998 it only built desktop apps, only for what is now referred to as Classic MacOS and only for the Motorola 68000 and PowerPC processors. Today we support MacOS (that shares almost nothing with its predecessor), Windows, Linux, the web, iOS (soon Android) and Raspberry Pi. In fact, other than desktop apps as a type, we don&#8217;t support anything we supported in 1998. And despite the fact that everyone on the team has been with us for many years, the team is nearly completely different from what it was back then.</p>



<p>Over the last 25 years we have done what Bill Bryson said must be done &#8211; we changed nearly everything about ourselves. We have added new operating systems, new processors, new capabilities, as well as rewritten the compiler and the IDE from scratch. We have had false starts on projects but we have followed the mantra of the US Navy Seals:</p>



<p>&#8220;I will never quit. I persevere and thrive on adversity&#8230; If knocked down, I will get back up, every time.&#8221;</p>



<p>These are the reasons we are still here after 25 years. We learn, we adapt and we never give up.</p>



<p>As the founder and CEO, I set that tone but a company is only as good as its <a href="https://www.xojo.com/company/team.php">team</a>. It is the people that show up every day, sometimes in the middle of the night or on a Sunday afternoon, to bring their passion, talent and experience, from customer service and marketing to tech support and engineering, in order to create and support Xojo and enable each of you to create things that perhaps might have not otherwise existed.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="404" src="https://blog.xojo.com/wp-content/uploads/2021/03/Untitled-design-1024x404.png" alt="Xojo  programming langauge and IDE 25 years" class="wp-image-8348" srcset="https://blog.xojo.com/wp-content/uploads/2021/03/Untitled-design-1024x404.png 1024w, https://blog.xojo.com/wp-content/uploads/2021/03/Untitled-design-300x118.png 300w, https://blog.xojo.com/wp-content/uploads/2021/03/Untitled-design-768x303.png 768w, https://blog.xojo.com/wp-content/uploads/2021/03/Untitled-design-1536x607.png 1536w, https://blog.xojo.com/wp-content/uploads/2021/03/Untitled-design-2048x809.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>That&#8217;s what has made this past 25 years the best of my life and I can speak for the rest of the team when I say that we look forward to many more challenging, inspiring and rewarding years ahead.</p>



<p>To you who have used the fruit of our labors to create your own for so many years, we are thankful and grateful for your past and continued support. You allow us to spend each and every day doing something we love. Who could ask for more than that?</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Your Path Forward with API 2.0</title>
		<link>https://blog.xojo.com/2019/10/29/your-path-forward-with-api-2-0/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 29 Oct 2019 20:50:22 +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[Tips]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[IDE]]></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=6184</guid>

					<description><![CDATA[You might be assuming you absolutely must upgrade to API 2.0 right now, but that’s not the case.  We have designed it so that you have tremendous flexibility in terms of what and when and even if you move to API 2.0.]]></description>
										<content:encoded><![CDATA[
<p>For anything to be easy to learn and use, it needs to be as intuitive and consistent as possible. Over the past 20+ years, many APIs in Xojo have been added that were not intuitive or consistent. While longtime users have gotten used to them, they can make Xojo difficult to adopt for new users. API 2.0 is our solution.</p>



<p>We did this by creating a sensible set of API naming guidelines and then applying them to our existing APIs. APIs that followed the guidelines were left alone. Those that did not, were changed to meet them. Hindsight, as they say, is 20/20. Looking back, it would have been great had we established these guidelines way back in 1998 before we shipped v1.0 but we didn&#8217;t and the fact that we didn&#8217;t is no reason to avoid it now. We always plan for a long future ahead of us and thus have to be willing to make changes to make that future possible. That we are still here 20+ years later suggests we are doing something right.</p>



<p>If you are one of those long time users who has grown accustomed to the inconstancies that API 2.0 addresses, you might be wondering if there&#8217;s any value for you in using it. The answer is absolutely yes! While it will take a little time for you to get used to the new APIs, what you will find is that you become increasingly more productive because they are so consistent. You will find (as I did) that you can guess at what the API is and likely be correct. I personally made 95% of the Language Reference updates for API 2.0. The documentation wiki does not auto-complete so I had to double-check all the code I was updating. In no time I found that I rarely made errors because API 2.0 is so consistent. You will absolutely see productivity gains once you have used it for a short time.</p>



<p>While API 2.0 is a major step forward for Xojo in terms of intuitiveness and consistency, for those of you with large projects you may feel like migrating is a daunting task. Depending on size, there can be anywhere from a handful to thousands of deprecation warnings to deal with, each being a particular change that could be made.</p>



<p>You might be assuming you absolutely must upgrade your projects but that’s not necessarily the case. How much of a project you update and when depends significantly on how important it is for you to update your existing projects to API 2.0. </p>



<p>First, it’s important to understand that most of the deprecated APIs are going be around for a very long time. It’s possible (perhaps even likely) that they could continue to exist for the entire life of your software project. You could decide not to upgrade any portion of your project or only upgrade portions that require it and then only when necessary.</p>



<p>Many deprecated APIs still share their implementation with the API they replace. A good example is RecordSet.MoveNext and RowSet.MoveToNextRow. If a bug is fixed in MoveToNextRow it will also likely be fixed automatically in RecordSet.MoveNext even though that method is deprecated.</p>



<p>Should you find a bug in a deprecated API you are still using, first try the new, replacement API and see if the bug is no longer reproducible. If that’s the case, you have an immediate solution: just upgrade that one usage of the deprecated class to the new one.</p>



<p>If the bug still exists in the new, replacement class, please report the bug using <a href="https://www.xojo.com/download/extras.php">Feedback</a>. Once fixed, there’s a chance that it will be fixed in the deprecated class as well, assuming it still shares its underlying implementation with the old deprecated class which, again, is true in many cases.</p>



<p>When deciding what to do regarding API 2.0 and any particular project, your options are:</p>



<ol class="wp-block-list"><li><strong>Not Upgrading</strong> &#8211; You could choose not to upgrade an existing project to API 2.0. You could then only upgrade portions of it should that become necessary due to a bug fix or the introduction of new features.</li><li><strong>Upgrade Incrementally</strong> &#8211; Another option is to upgrade your code incrementally as an extra step before refactoring or adding new code to a particular part of a project. This is the path we have chosen for the Xojo IDE as it’s a very large project that would take many months to upgrade if we did it all at once.</li><li><strong>Upgrade All At Once</strong> &#8211; Finally, you may decide to go ahead and upgrade your entire project all at once. This has the advantage of allowing you to focus exclusively on the new APIs and no longer have to switch between the old and the new when going back and forth between older projects and newer ones.</li></ol>



<p>If you’re choosing not to upgrade an older project or do so incrementally and you find seeing the deprecation warnings distracting when you use the Analyze Project feature, you can turn off these warnings by choosing Project &gt; Analysis Warnings.</p>



<p>API 2.0 was introduced with desktop projects but it will be coming to web projects in Web Framework 2.0, for mobile in Android and eventually iOS as well. As a result it will be important to use the new APIs but for many of you, using them only with new projects and/or sporadically with older projects, may make sense.</p>



<p>API 2.0 is a huge change and change can often be difficult. There&#8217;s certainly a lot of comfort to be found in the familiar. Still change is sometimes necessary to keep things moving forward. Fortunately, in the case of API 2.0, we have designed it so that you have tremendous flexibility in terms of what options you choose for existing projects. </p>



<ul class="wp-block-list"><li>Read <a href="https://blog.xojo.com/tag/api-2-0/">more blog posts</a> about this transition.</li><li><a href="UserGuide: Moving Forward with API 2.0
">UserGuide: Moving Forward with API 2.0</a></li><li><a href="UserGuide: API 2 Guidelines">UserGuide: API 2 Guidelines</a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Converting Code to API 2.0</title>
		<link>https://blog.xojo.com/2019/10/29/converting-code-to-api-2-0/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Tue, 29 Oct 2019 17:29:50 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[2019r2]]></category>
		<category><![CDATA[API]]></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=6175</guid>

					<description><![CDATA[2019r2 has many changes related to API 2.0. Most of your projects should open and run without any changes. You can then switch code to API 2.0 when you want (or not at all -- it's up to you). ]]></description>
										<content:encoded><![CDATA[
<p>Xojo 2019r2 has many changes related to API 2.0. Most of your projects should open and run without any changes. You can then switch code to API 2.0 when you want (or not at all &#8212; it&#8217;s up to you). </p>



<h3 class="wp-block-heading">General Tips</h3>



<p>With that said, here are a few things that you may have to update to be able to run your project using 2019r2 and later Xojo releases:</p>



<ul class="wp-block-list"><li>Some advanced properties on FolderItem have been removed.</li><li> You&#8217;ll have to use the Global prefix with the ToolTip class (or switch to new methods).</li><li> You&#8217;ll have to add the new EndOfFile method to anything that uses the Readable interface.</li></ul>



<h3 class="wp-block-heading">Converting Code to Use a New Class</h3>



<p>When converting code to use a new class that replaces a deprecated one, there are two different approaches that will help you do so efficiently.</p>



<h4 class="wp-block-heading">Method 1: <strong>Not Familiar with the New Class</strong></h4>



<p>When you’re not familiar with the new class, replace class members such as properties and methods first, before replacing the class declaration itself. This will allow you to use <a href="https://documentation.xojo.com/getting_started/using_the_ide/code_editor.html#Auto-Complete">auto-complete</a> to see which methods or properties replace the deprecated ones.</p>



<p>Consider the following code example:</p>



<pre class="wp-block-preformatted">Dim rs as RecordSet
rs =db.SQLSelect(“SELECT * FROM Customers”)
If rs &lt;&gt; nil then
While Not rs.EOF
//perform some data processing
&nbsp; rs.MoveNext
Wend
End If</pre>



<p>Deleting EOF and then pressing tab will display the auto-complete menu showing the replacement method, AfterLastRow:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="964" height="702" src="https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-3.06.08-PM.png" alt="" class="wp-image-6181" srcset="https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-3.06.08-PM.png 964w, https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-3.06.08-PM-300x218.png 300w, https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-3.06.08-PM-768x559.png 768w" sizes="auto, (max-width: 964px) 100vw, 964px" /></figure>



<p>Auto-complete will not replace EOF with AfterLastRow as the variable rs is still a RecordSet. However, you can manually make the change now. Once you have changed all class member references, you can then change the variable itself from RecordSet to RowSet.</p>



<h4 class="wp-block-heading">Method 2: <strong>Familiar with the New Class</strong></h4>



<p>If you are familiar with the new class, change the variable (rs in this case). Having done so, you can use auto-complete to change any class members references (properties, methods, etc.) to the new class.</p>



<p>In the beginning the changes in API 2.0 will be unfamiliar so Method 1 above will make sense. Over time you&#8217;ll be more familiar with API 2.0 and then Method 2 will work best. <em>The important thing is to remember that you can do this at your own pace. The APIs that have been replaced will continue to be available for a very long time.</em></p>



<h3 class="wp-block-heading">Summary</h3>



<p>These changes and more are described in detail in the <a href="https://documentation.xojo.com/UserGuide:API_2.0_Guidelines">API 2.0 Guidelines</a> topic in the docs. Be sure to give it a quick read to more easily get up and running with 2019r2. For other guidance on moving projects to API 2.0 to take advantage of newer features and improved naming (again, when you&#8217;re ready), be sure to read <a href="https://documentation.xojo.com/topics/api_design/moving_to_api_2.0.html">Moving to API 2.0</a>.</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>Xojo IDE Improvements: Speed, Tab Management, Menus &#038; More</title>
		<link>https://blog.xojo.com/2019/10/09/xojo-ide-improvements-speed-tab-management-menus-more/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Wed, 09 Oct 2019 10:25:41 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[2019r2]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[IDE]]></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=5837</guid>

					<description><![CDATA[Keeping the IDE simple to use for new users is one of our core tenets, but that doesn't mean that we can't add some much needed capabilities for our long-term users. ]]></description>
										<content:encoded><![CDATA[
<p>Keeping the IDE simple to use for new users is one of our core tenets, but that doesn&#8217;t mean that we can&#8217;t add some much needed capabilities for our long-term users. This cycle we&#8217;ve added some new exciting capabilities for managing medium to large-size projects and made some overall improvements that make the Xojo IDE a lot more satisfying to use. To be honest, the more of these things we added the less I wanted to go back to using older versions of the IDE.</p>



<p><strong>Improved Overall Speed</strong><br>One of the most obvious areas that hurt people with large projects is the speed of the IDE itself. We worked on a number of pain points to improve the overall IDE experience.  Specifically, we were looking for things which by themselves were not too bad, but in a cumulative effect they could take large chunks out of your day.</p>



<p>One such area was in saving text projects. Now you wouldn&#8217;t think that there was much room for improvement here, since it&#8217;s just File I/O right? We found an optimization point in the way we save Bookmarks and Breakpoints, which in the IDE project represents a huge savings when making lots of changes. In our case, we went from 30 seconds down to 1, and for someone who insists on saving before every run, it makes a huge difference.</p>



<p>We also optimized drawing in the Navigator, and that change resulted in huge overall speed increases in many parts of the IDE, from selecting large number of items in the Navigator itself, making changes to multiple items, to even just typing code in the code editor.</p>



<p><strong>Improved Tab Management</strong><br>Tabs have been broken in one way or another for a long time. They finally got some TLC this cycle and we think you&#8217;re going to be much happier with the way they work now. We&#8217;ve rewritten the logic surrounding how tabs are chosen when you take an action which results in a new location request and made the behavior consistent, no matter where that request comes from. Whether that&#8217;s a Go To Location request or a search or clicking on an error result. The rules are applied in the following order:</p>



<ol class="wp-block-list"><li>If there is at least one <em>locked</em> <em>tab</em> which matches the Go To target, the first one will be used (left to right).</li><li>If there is at least one <em>unlocked</em> <em>tab</em> which matches the Go To target, the first one will be replaced.</li><li>If the <em>current</em> tab is unlocked, it will be replaced with the new location.</li><li>If there are <em>any</em> unlocked tabs, the first one will be replaced.</li><li>If none of the above conditions are met, a new tab will be created for the target location.</li></ol>



<p class="has-text-color has-regular-font-size has-vivid-red-color">NOTE: Debugger Tabs are <em>never</em> eligible as a Go To target. This may seem obvious, but it wasn&#8217;t always true before. Now it is. Debugger tabs are also locked by default and cannot be unlocked.</p>



<p>The only exceptions to these rules are the Open In New Tab rules. That is, if you right-click on an item and select Open In New Tab or you double-click on an item with the &#8220;Double-click opens item in new tab&#8221; preference set, they will always open a new tab for you.</p>



<p>Once you start using the new logic, I think you&#8217;ll agree that it&#8217;s much more intuitive and you won&#8217;t feel like the IDE is constantly switching contexts on you. Personally I find that I&#8217;m using <em>fewer</em> tabs than in previous versions because I&#8217;m more confident that the objects I opened will still be there when I get back.</p>



<p><strong>MacOS Dark Mode Layout Editor Toggling</strong><br>On macOS 10.14 and above we&#8217;ve added a new toolbar button which allows you to quickly switch the Window you are editing between light and dark mode. No more switching your entire OS just to see how your app will look in the other mode.</p>



<p><strong>Navigator Contextual Menu</strong><br>We&#8217;ve done some cleanup work here to make it more obvious what you can and can&#8217;t do with objects in the Navigator. Gone are all of the disabled items that were not &#8220;in-context&#8221; for the currently selected item because, well duh, they&#8217;re not &#8220;in-context&#8221;. We&#8217;ve also enhanced the Edit Superclass and Edit Subclass menus. Edit Superclass now shows the entire superclass hierarchy, including things that you can&#8217;t edit (disabled of course) so you can track down common parentage. The Edit Subclass menu has been alphabetized so you don&#8217;t have to read the entire list just to find all of the items that begin with &#8220;c&#8221;.</p>



<p><strong>Code Editor Contextual Menu</strong><br>This menu has also gotten some love and attention. First of all, the menu has been reorganized so that the menu groups are based on the context of the thing that you&#8217;ve clicked on and the object where the code itself lives.</p>



<p>Group 1: Just like previous versions of the IDE, Cut, Copy, Paste, Delete and Select All are still at the top of the menu. They&#8217;re a common thing for mouse oriented users and we don&#8217;t want to hurt that functionality.</p>



<p>Group 2: The next group is for things that are for accessing or modifying the object that you&#8217;re currently editing. This is where you&#8217;ll find the Switch To menu for directly accessing the other code items within the current item. </p>



<p>We&#8217;ve also added two new submenus to this section that are specifically for copying the event and delegate signatures of <em>the thing you&#8217;ve clicked</em> <em>on</em>. For example if your code refers to a <strong>URLConnection</strong> object, you can now right-click on URLConnection and select <strong>Add Method</strong> &gt; <strong>From Event</strong> &gt; <strong>ContentReceived</strong> and the IDE will automatically add a method to the current object with the same signature including the object itself for use with AddHandler! In this case, you&#8217;d end up with a method that looks like this:</p>



<p><br><code>URLConnection_ContentReceived(obj As URLConnection, URL As String, HTTPStatus As Integer, content As String)</code></p>



<p>Then you could type something like:</p>



<p><br><code>AddHandler h.ContentReceived, AddressOf URLConnection_ContentReceived</code></p>



<p>Delegates work the same way, albeit without including the object reference in the method signature. No more flipping back and forth between your current code and the target object or Language Reference to copy the signatures!</p>



<p>Group 3: If it exists, this group is for things that are specific to the object or instance of the object that you clicked on in the code editor. This is where you&#8217;ll see the &#8220;Find&#8221; and &#8220;Go To&#8221; menu items for finding other uses of or going to the definition of an item, respectively. </p>



<p>Group 4: This group is for selection and code-specific tools including the <strong>Insert Color</strong> command, <strong>Standardize Format</strong> and the <strong>Wrap In</strong> menus for wrapping the current selection if an #If #EndIf or While/Wend block. This section also sports the menu for converting the current selection to a Constant or a Method.</p>



<p>Group 5: From here you can toggle Breakpoints and Bookmarks</p>



<p>Group 6: Help and Language Reference access.</p>



<p>For more information about the changes in 2019r2, read the full <a href="http://documentation.xojo.com/Resources:2019r2_Release_Notes">Release Notes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Navigator Keyboard Shortcuts</title>
		<link>https://blog.xojo.com/2019/09/05/navigator-keyboard-shortcuts/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 05 Sep 2019 14:44:37 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Navigator]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=6019</guid>

					<description><![CDATA[Here are a few keyboard shortcuts for the Navigator that you may not know about.]]></description>
										<content:encoded><![CDATA[
<p>Here are a few keyboard shortcuts for the Navigator that you may not know about.</p>



<p>In order for these to work, you must have focus in the Navigator, which means that the row selection is blue.</p>



<ul class="wp-block-list"><li><strong>Home</strong>: Move selection to first row, scrolling if necessary.</li><li><strong>End</strong>: Move selection to last row, scrolling if necessary.</li><li><strong>Right Arrow</strong>: Expand currently selected row.</li><li><strong>Left Arrow</strong>: Collapse currently selected row.</li><li><strong>Up Arrow</strong>: Move selection to previous row. If you are now selecting a code item, then focus moves to the Code Editor.</li><li><strong>Down Arrow</strong>: Move selection to next row. If you are now selecting a code item, then focus moves to the Code Editor.</li><li><strong>Page Up</strong>: Move selection up by one page, scrolling if necessary.</li><li><strong>Page Down</strong>: Move selection down by one page, scrolling if necessary.</li><li><strong>Shift + Up/Down Arrows</strong>: Select multiple rows.</li></ul>



<p>Learn more about the Navigator here: <a href="https://documentation.xojo.com/getting_started/using_the_ide/navigator.html">https://documentation.xojo.com/getting_started/using_the_ide/navigator.html</a></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using IDE and System Version Specific Code</title>
		<link>https://blog.xojo.com/2019/07/29/using-ide-and-system-version-specific-code/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Mon, 29 Jul 2019 06:06:20 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5940</guid>

					<description><![CDATA[Ever wonder how to conditionally implement newer features in your code while keeping the ability to use older versions of Xojo at the same time?&#8230;]]></description>
										<content:encoded><![CDATA[<p>Ever wonder how to conditionally implement newer features in your code while keeping the ability to use older versions of Xojo at the same time? It&#8217;s really easy to do, I&#8217;ll show you how.</p>


<p>There&#8217;s an advanced feature in Xojo called Compiler Directives which allows you to direct the compiler to conditionally compile a block of code based on a boolean comparison. For instance, if you wanted to temporarily disable a block of code (as opposed to commenting it out) you could wrap your code like this:</p>



<pre class="wp-block-preformatted">#If False
  // Code that you don't want to compile
#EndIf</pre>



<p>You can also use constants with the #if directive, so if you created a module called &#8220;Switches&#8221; and it contained a Public or Protected constant named &#8220;EnableDeepLearning&#8221; with a value of True or False you could write code like this:</p>



<pre class="wp-block-preformatted">#If Switches.EnableDeepLearning
  // Code for your deep learning feature goes here
  // This code will only be <em>included</em> in your app if EnableNewFeature is set to True
#EndIf</pre>



<p>There are also some built-in constants for you to use. For instance, there are two constants that tell you which version of the IDE is running, one is a Double, the other is a String. Here&#8217;s an example which allows you to use the new Dark Mode capability depending on whether you&#8217;re running 2018r3 or something earlier:</p>



<pre class="wp-block-preformatted">#If XojoVersion &lt; 2018.03
  Var myTextColor As Color = &amp;c000000
#Else
  Var myTextColor As Color = &amp;c1C1C1C
  If IsDarkMode Then
    myTextColor = &amp;cFEFEFE
  End If
#EndIf</pre>



<p>There are also build-in constants per platform and processor type:</p>



<pre class="wp-block-preformatted">#If TargetMacOS
  // macOS Specific Code
#ElseIf TargetWindows
  // Windows Specific Code
#ElseIf TargetLinux
  // Linux Specific Code
#ElseIf TargetIOS
  // iOS Specific Code
#EndIf

#If Target32Bit
  // Code for 32-Bit Processors
#ElseIf Target64Bit
  // Code for 64-Bit Processors
#ElseIf TargetARM
  // Code for ARM Processors
#EndIf</pre>



<p>For more information on Compiler Directives, see <a href="https://documentation.xojo.com/%23If…%23Endif">https://documentation.xojo.com/＃If…＃Endif</a></p>



<p>In addition to code for specific platforms, sometimes you need to know the specific version of the OS that the user is running. In 2019r3 we added the System.Version method specifically for this purpose:</p>



<pre class="wp-block-preformatted">#If TargetMacOS
  If System.Version = "10.15" Then
    // Code that works exclusively on 10.15
  ElseIf System.Version &gt;= "10.15.1"
    // Code that only works on 10.15.1 and above
  End If
#EndIf</pre>



<p>If you&#8217;re working with Windows, keep in mind that System.Version returns NT System Versions, so you&#8217;ll need to compare to these values instead:</p>



<ul class="wp-block-list"><li>Windows 10 = NT 10</li><li>Windows 8.1 = NT 6.3</li><li>Windows 8 = NT 6.2</li><li>Windows 7 = NT 6.1</li><li>Windows Vista = NT 6.0</li></ul>



<p>For more information about System.Version, See <a href="http://documentation.xojo.com/api/os/system.html#system-version" target="_blank" rel="noreferrer noopener">http://documentation.xojo.com/api/os/system.html#system-version</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hour of Code: Xojo Dojo</title>
		<link>https://blog.xojo.com/2018/11/29/hour-of-code-xojo-dojo/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 29 Nov 2018 08:00:41 +0000</pubDate>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Hour of Code]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Xojo Dojo]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5198</guid>

					<description><![CDATA[Today kicks off Computer Science Education Week 2018! Alongside this is the Hour of Code promotion where schools throughout the world get students to try at least 1 hour of programming at some point during the week. This year I plan to demonstrate Xojo Dojo with a Raspberry Pi and show the kids how much fun coding can be.]]></description>
										<content:encoded><![CDATA[<p>December 3rd kicks off <a href="https://csedweek.org">Computer Science Education Week 2018</a>! Computer Science Education Week is held in early December every year in recognition of the birthday of computing pioneer <a href="https://en.wikipedia.org/wiki/Grace_Hopper">Admiral Grace Hopper</a>. Alongside this is the <a href="https://hourofcode.com/us">Hour of Code promotion</a> where schools throughout the world get students to try at least 1 hour of programming at some point during the week.</p>
<p>Each year for Hour of Code, I volunteer at the local Middle School to talk to the students about what it is like to be a programmer and do a little bit of programming. This year I plan to demonstrate <a href="https://gitlab.com/xojo/XojoDojo">Xojo Dojo</a> with a Raspberry Pi and show the kids how much fun coding and Xojo programming can be.</p>
<p><span id="more-5198"></span></p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium" src="https://documentation.xojo.com/images/b/b2/Xojo_Dojo.png" width="1195" height="758" /></p>
<p>My wife teaches 7th grade math so I have a somewhat receptive audience, at least when it comes to middle school students. Of course, I&#8217;ll be sure to show off a few games made with Xojo. <a href="https://blog.xojo.com/2017/12/05/hour-of-code-2017/">Asteroid Run</a> was popular last year.</p>
<p>As Xojo developers you have a great perspective on coding, which would be wonderful to share with the youth of today. Most schools would absolutely welcome a guest speaker for a day so if you have a child in school or know someone that works at a school, I encourage you to see if you can help out by volunteering.</p>
<p>Looking for ideas? Here&#8217;s what we&#8217;ve done for the Hour of Code in past years:</p>
<ul>
<li><a href="https://blog.xojo.com/2013/12/12/hour-of-code-math-facts/">Hour of Code 2013: Math Facts</a></li>
<li><a href="https://blog.xojo.com/2013/12/11/hour-of-code-spelling-test/">Hour of Code 2013: Spelling Test</a></li>
<li><a href="https://blog.xojo.com/2013/12/19/hour-of-code-recap/">Hour of Code 2013: Recap</a></li>
<li><a href="https://youtu.be/Y3HYu_QN614">Hour of Code 2014: iOS Doodle</a></li>
<li><a href="https://blog.xojo.com/2014/12/19/hour-of-code-2014/">Hour of Code 2014 Recap</a></li>
<li><a href="https://blog.xojo.com/2015/12/07/hour-of-code-cat-pictures/">Hour of Code 2015: Cat Pictures</a></li>
<li><a href="https://blog.xojo.com/2017/12/05/hour-of-code-2017/">Hour of Code 2017: Asteroid Run</a></li>
</ul>
<p><strong>Update (Dec 5, 2018)</strong>:</p>
<p>Finished hour of code with 7th Grade students. They were very excited to learn a bit about coding and see some Xojo-made games.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-5219" src="https://blog.xojo.com/wp-content/uploads/2018/11/Paul1.png" alt="" width="600" height="450" /></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-5220" src="https://blog.xojo.com/wp-content/uploads/2018/11/Paul2.png" alt="" width="600" height="450" /></p>
<p>Also, Xojo Dojo is now available for Mac and Windows. Download either of these from the <a href="http://documentation.xojo.com/getting_started/creating_more_apps/raspberry_pi/xojo_dojo.html">main Xojo Dojo page</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Thank You All</title>
		<link>https://blog.xojo.com/2018/11/21/thank-you-all/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Wed, 21 Nov 2018 10:00:01 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5180</guid>

					<description><![CDATA[This Thanksgiving we wish to give thanks to all of you who use Xojo. You make our work possible.]]></description>
										<content:encoded><![CDATA[<p>This week in America we celebrate Thanksgiving. For many it&#8217;s just another holiday, but for me it&#8217;s a reminder of how lucky I am to get to do what I do. I think I can speak for everyone here at Xojo, Inc. when I say that we <em>all</em> love doing what we do. We often hear your stories about how Xojo has made it easy for you to learn programming or build an app that makes your job easier or start your own business with the software you&#8217;ve created. Knowing that we helped to make those things happen is gratifying.</p>
<p>So this Thanksgiving we wish to give thanks to all of you who use Xojo. You make our work possible.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Join the Dark Side &#8211; Xojo 2018r3 Supports Dark Mode</title>
		<link>https://blog.xojo.com/2018/10/23/join-the-dark-side/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 23 Oct 2018 16:02:04 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Mojave]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5012</guid>

					<description><![CDATA[With the availability of Xojo 2018 Release 3, Xojo now supports macOS Mojave's new dark mode. This means you can update your own apps to support dark mode and it also means that the Xojo IDE works in dark mode.]]></description>
										<content:encoded><![CDATA[<p>With the availability of <a href="https://www.xojo.com/download/">Xojo 2018 Release 3</a>, Xojo now supports macOS Mojave&#8217;s new dark mode. This means you can update your own apps to support dark mode and it also means that the Xojo IDE works in dark mode.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5062" src="https://blog.xojo.com/wp-content/uploads/2018/10/DarthVaderHalloween.jpg" alt="" width="960" height="720" /></p>
<p>To activate dark mode in Mojave, go to System Preferences, click General and select the &#8220;dark&#8221; appearance. The entire UI will switch to a darker, more muted color scheme which can be easier on the eyes, especially at night.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5070" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-16_11-56-20.png" alt="" width="276" height="84" /></p>
<p>Here is what the Xojo IDE looks like in dark mode:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5098" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-25_09-39-06.png" alt="" width="1481" height="880" /></p>
<p>In order for your apps to support dark mode you&#8217;ll have to rebuild them with Xojo 2018r3 with its support for dark mode. Once you open your project in 2018r3 go to <strong>Shared Build Settings</strong> and turn on the Supports Dark Mode property:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5068" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-16_11-53-56.png" alt="" width="204" height="28" /></p>
<p>Note: This property defaults to OFF for existing projects and ON for new projects.</p>
<p>This will automatically cause the Xojo built-in controls to switch to dark mode when you run your app in dark mode on Mojave. Here is Eddie&#8217;s Electronics running in dark mode:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5069" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-11_12-31-29.png" alt="" width="1053" height="846" /></p>
<p>For your own graphics and custom controls you may need to update your drawing code so that you use darker colors and icons when in dark mode. There is now a new <strong>IsDarkMode</strong> global method that you can check to see if your app is running in dark mode so that you can choose a different color or image.</p>
<p>The <strong>App.AppearanceChanged</strong> event is called when the user switches between light and dark modes or when the accent color changes. You can use this to tell your UI to update or redraw as necessary.</p>
<p>Read more about this change and others coming to Xojo graphics and the IDE in <a href="https://blog.xojo.com/2018/10/24/following-the-dark-path/">this post</a>. To learn how you can update your apps to work in dark mode, refer to the <a href="https://documentation.xojo.com/topics/user_interface/desktop/macos/supporting_macos_dark_mode.html">Dark Mode topic in the documentation</a>.</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>Learn The Fundamentals of Xojo Programming</title>
		<link>https://blog.xojo.com/2017/06/26/learn-the-fundamentals-of-programming-with-xojo/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Mon, 26 Jun 2017 09:56:16 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Intro to Xojo Programming Textbook]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<category><![CDATA[Xojo Renewal]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2692</guid>

					<description><![CDATA[Xojo is free to use for learning and development and a great language for those looking to add programming to their skillset. Unlike most languages that are used to teach programming, Xojo is incredibly easy to use.]]></description>
										<content:encoded><![CDATA[<p>The ability to code is an increasingly valuable skill. At Xojo we&nbsp;believe that anybody can learn to make their own apps. And Xojo is a great language for students&nbsp;looking to add programming to their skillset and&nbsp;for&nbsp;<a href="http://blog.xojo.com/2015/11/19/the-citizen-developer/">citizen developers</a>.</p>
<p>Learn to code using Xojo and you can build apps for Mac, Windows and Linux, web apps, iOS apps and Raspberry Pi apps (and Android- it&#8217;s coming!). With the exception of iOS which requires a Mac, you can build <em><strong>for</strong></em> any platform we support <strong><em>from</em></strong> any platform we support. Want to build Windows apps for your friends from your Mac? That&#8217;s what Xojo is great at! Want to make your work day easier with a database app to track your inventory? Xojo&#8217;s great at that too!</p>
<p><span id="more-2692"></span></p>
<h3>One Thing to Learn</h3>
<p>Xojo is a fully integrated development environment (<a href="https://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a>) &#8211; that means your code editor, build tools and debugger are all in Xojo. Learning to code can be challenging enough, you don’t need to also learn how to install and configure a bunch&nbsp;of tools before you even get started. In fact, customers have told us they were able to create their first Xojo app before the other development tools they were testing finished installing!</p>
<h3><img decoding="async" src="https://www.xojo.com/resources/images/intro/Figure01-IntroBook.png"></h3>
<h3>Free Introduction to Programming Book</h3>
<p>Xojo has a free book, <a href="http://www.xojo.com/learn">Introduction to Programming with Xojo</a>, and it&nbsp;is a great way to start learning. The&nbsp;book walks you through programming and general concepts in a way that is easy to understand. You can download it in PDF or for iBooks. Plus there&#8217;s an iOS Addendum, a Raspberry Pi Book and a Teacher’s Guide.</p>
<h3>Apply Your New Skills to Other Languages</h3>
<p>The Xojo programming language is similar to other languages, such as Visual Basic or Java. Because Xojo is object-oriented, the skills you learn with Xojo are directly applicable to other languages, including Visual Basic, Java, C# and more.</p>
<h3>Videos and Webinars</h3>
<p>For those that learn visually, attend the Xojo webinars, hosted by Xojo Developer Evangelist Paul Lefebvre. The webinars cover a wide variety of topics, from beginner to advanced. Plus all the webinars are recorded for on-demand viewing anytime.</p>
<p>Be sure to check out the <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXiYdPy3sPm_-X9_ol3t9NdM">Getting Started playlist</a> on the Xojo YouTube&nbsp;channel with&nbsp;videos such as:</p>
<ul>
<li>An Introduction to Developing with Xojo</li>
<li>Introduction to Xojo and Xojo Cloud</li>
<li>Creating a Desktop App Tutorial</li>
<li>Creating a Web App Tutorial</li>
<li>Creating a Desktop App using Xojo</li>
<li>Creating a Web App using Xojo</li>
<li>Introduction to Programming 101</li>
<li>Introduction to Programming 201</li>
</ul>
<h3>Comprehensive&nbsp;Documentation</h3>
<p>In addition to Xojo&#8217;s&nbsp;books, webinars and video library, we&#8217;ve got&nbsp;<a href="http://developer.xojo.com/quickstart-overvew">QuickStart Guides</a>, <a href="http://developer.xojo.com/tutorials-overview">Tutorials</a> and a <a href="http://developer.xojo.com/userguide">User Guide</a> totalling over 900 pages. <a href="http://developer.xojo.com/userguide$about-the-user-guide">Divided into four parts</a> to help simplify the learning process, the&nbsp;Xojo User Guide is a great resource for learning.</p>
<p>Still not sure where to start? Our <a href="http://developer.xojo.com/get-started">How to Get Started with Xojo</a> page can point you in the right direction.</p>
<h3>Wonderful Community</h3>
<p>Xojo is known for its friendly and approachable user community. The Xojo&nbsp;<a href="http://forum.xojo.com/" target="_blank" rel="noopener noreferrer">Forum</a>&nbsp;is vibrant and active, and includes a Getting Started channel with lots of fellow Xojo Developers available to help answer questions along the way &#8211; though we recommend you take a moment to search to see if your question has already been answered first!</p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/intro/Figure04-Forum.png"></p>
<h3>Free to Develop</h3>
<p>Xojo is free for learning and development. Just create an account, download Xojo and use the resources listed above to start developing your app.</p>
<p>You can develop, run, test and debug all for free. When you are ready to compile your app, you can buy the right Xojo license for you.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What is Xojo?</title>
		<link>https://blog.xojo.com/2017/02/01/what-is-xojo/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 01 Feb 2017 22:47:32 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<category><![CDATA[Xojo Resources]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2247</guid>

					<description><![CDATA[2017&#8217;s first &#8220;What is Xojo?&#8221; webinar was well received and there were lots of questions. Rather than include the questions in the video, I&#8217;ve included a&#8230;]]></description>
										<content:encoded><![CDATA[<p>2017&#8217;s first &#8220;What is Xojo?&#8221; webinar was well received and there were lots of questions. Rather than include the questions in the video, I&#8217;ve included a selection of those questions and detailed answers.</p>
<p>If you missed it, the recording of the presentation is available in the <a href="http://developer.xojo.com/webinar-what-is-xojo">Dev Center: What is Xojo?</a></p>
<p><strong>Q: I would use Microsoft SQL Server Express with Xojo Lite. Is this possible?</strong></p>
<p>A: You can certainly use <a href="http://developer.xojo.com/userguide/microsoft-sql-server">Microsoft SQL Server with Xojo</a>, but you will need to upgrade to a <a href="https://www.xojo.com/store/">Desktop, Web or Xojo Pro license</a>. Contact <a href="mailto:hello@xojo.com">customer support to get a quote</a>.</p>
<p><strong>Q: Will Xojo be supporting build apps for Android?</strong></p>
<p>A: Yes! We announced plans for Xojo to be able to create Android apps at the <a href="https://blog.xojo.com/2016/10/11/xdc-2016-recap/">Xojo Developer Conference in October 2016</a>. We will post milestones as we reach them on the <a href="https://blog.xojo.com">Xojo blog</a>.</p>
<p><strong>Q: Is it possible to deploy an iOS app to my own iPad?</strong></p>
<p>A: Yes, absolutely. If you don&#8217;t have an Apple Developer account, you can follow these steps to get your <a href="http://developer.xojo.com/userguide/ios-free-provisioning-profile">free Provisioning Profile from Apple</a>. If you do have an Apple Developer account, the steps are much easier: <a href="http://developer.xojo.com/userguide/device-deployment">Deploying to Device</a>.</p>
<p><strong>Q: Is there a way to show the Library and Inspector at same time?</strong></p>
<p>A: Yes! Xojo has a preference to change the Library and Inspector to <a href="http://developer.xojo.com/userguide/preferences">display as floating palettes</a>. When you do this you can have both open at the same time and can even position them on a second display.</p>
<p><strong>Q: Can iOS apps make use of low-level APIs?</strong></p>
<p>A: You can use the <a href="http://developer.xojo.com/declare">Declare command</a> to directly access iOS APIs. Some <a href="http://developer.xojo.com/ios-declare-example-projects">examples are also included with Xojo</a>. The <a href="https://github.com/kingj5/iOSKit">open-source iOSKit library</a> provides access to many additional iOS features as well.</p>
<p><strong>Q: How do you connect to database(s)?</strong></p>
<p>A: Xojo has built-in support for <a href="http://developer.xojo.com/userguide/sqlite">SQLite</a>, <a href="http://developer.xojo.com/userguide/mysql">MySQL</a>, <a href="http://developer.xojo.com/userguide/postgresql">PostgreSQL</a>, <a href="http://developer.xojo.com/userguide/microsoft-sql-server">Microsoft SQL Server</a> and <a href="http://developer.xojo.com/userguide/oracle">Oracle</a>. In addition you can use <a href="http://developer.xojo.com/userguide/odbc">ODBC</a> to connect to any other database (as long as you have a driver).</p>
<p><strong>Q: How easy is it to access the hardware features of apple devices, such as the GPS or its movements?</strong></p>
<p>A: Xojo has a built-in class for accessing location/GPS information: <a href="http://developer.xojo.com/ioslocation">iOSLocation</a>. The <a href="http://developer.xojo.com/iosmotion">iOSMotion</a> class gives you access to information about device movement from the accelerometer and gyroscope.</p>
<p><strong>Q: How do you create apps that work on both iPhone and iPad, switch screens as appropriate?</strong></p>
<p>A: You can specify different views that are used for iPhone and iPads by setting the <a href="http://developer.xojo.com/userguide/ios-screens">Screens</a>. Also, the <a href="http://developer.xojo.com/userguide/ios-split-screen">Split Screen topic</a> in the User Guide shows how iPad apps can have two views displayed at once. There are a few example projects that show this as well:</p>
<ul>
<li>Examples/iOS/Apps/XojoNotes</li>
<li>Examples/iOS/Navigation/SplitViewExample</li>
</ul>
<p><strong>Q: Where can I find Xojo training materials?</strong></p>
<p>A: You can access our vast library of online learning materials at the <a href="http://developer.xojo.com">Xojo Dev Center</a>. There you will find <a href="http://developer.xojo.com/quickstart-overvew">Quick Starts</a>, <a href="http://developer.xojo.com/tutorials-overview">Tutorials</a>, <a href="http://developer.xojo.com/userguide">User Guide</a>, <a href="http://developer.xojo.com/reference-guide">Reference Guide</a>, <a href="http://developer.xojo.com/videos">Videos</a> and much more. From our Resources page you can access our free textbook, <a href="https://xojo.com/learn/"><i>Introduction </i><i>to Prog<wbr />ramming with Xojo</i></a>, and our <a href="https://xojo.com/learn/">Teacher&#8217;s Guide</a>. Join us for free webinars and virtual events, or <a href="https://www.youtube.com/user/goxojo">watch on-demand webinars and video tutorials</a> covering all kinds of topics. If you are interested in training, <a href="https://www.xojo.com/store/#conference">Xojo offers training</a> and there are other options in our <a href="https://www.xojo.com/store/#addons">Add-On Store.</a></p>
<p><strong>Q: How would I transition a desktop Xojo app to a web service + custom web UI?</strong></p>
<p>A: You can move your desktop app&#8217;s business logic to a web app that functions as a web service. More information about that is in the <a href="http://developer.xojo.com/userguide/web-services">Web Services topic</a>, which has links to many videos on this topic. Another option to help with this is the <a href="https://github.com/timdietrich/luna">Luna open-source framework</a>. Once you have your web service set up, you can use the <a href="http://developer.xojo.com/xojo-net-httpsocket">HTTPSocket</a> in desktop, web or iOS apps to connect and use the web service.</p>
<p><strong>Q: As a Filemaker developer, can Xojo display/play photos,video, mp3 files?</strong></p>
<p>A: Yes, Xojo has built-in controls to display pictures, play video and mp3 files. Some of them include: ImageWell, WebImageView, iOSImageView, MoviePlayer, WebMoviePlayer. Also there is a web project that shows how to play audio using HTML5: Examples/Web/Controls/AudioPlayer.</p>
<p><strong>Q: How do I convert my FileMaker Apps (desktop and mobile apps) to Xojo?</strong></p>
<p>A: You&#8217;ll find some ideas at the <a href="http://developer.xojo.com/migrating-from-filemaker">Migrating from FileMaker topic</a> at the Dev Center.</p>
<p><strong>Q: Where can I find examples for developing Xojo plugins?</strong></p>
<p>A: Included in your Xojo download (in the Extras folder) is the PluginsSDK, which has documentation and examples on how to create your own plugins.</p>
<p><strong>Q: Can you say a bit about reports?</strong></p>
<p>A: Xojo desktop projects can use the <a href="http://developer.xojo.com/userguide/report-layout-editor">Report Layout Editor</a> to design reports that can be printed or displayed on the screen. There are also <a href="http://documentation.xojo.com/index.php/Third_Party_Products#Reporting">several 3rd-party reporting products</a> available.</p>
<p><strong>Q: Info about Raspberry Pi and for Apple TV?</strong></p>
<p>A: Xojo can create desktop, web and console apps that run on Raspberry Pi 2 and 3. You can find more information, with some example hardware projects here: <a href="http://developer.xojo.com/pibook/about">Raspberry Pi</a>. Xojo cannot directly create Apple TV apps, but you can use a Xojo web app as a web service to send content to Apple TV TVML apps using the open-source <a href="http://timdietrich.me/viewpoint/">Viewpoint project</a> shown by Tim Dietrich in the most recent <a href="http://www.vxug.org/meetings">Virtual Xojo User Group meeting</a>.</p>
<p><strong>Q: What happens with my Xojo Apps when the user updates their Operating System? Will I have to make an update for the Apps?</strong></p>
<p>A: Your Xojo apps are generally not affected by OS updates. Of course, you&#8217;ll want to use the latest version of Xojo to ensure you have the most recent support for the latest operating systems.</p>
<p><strong>Q: How active is the referral forum for the Pro users, specifically from the freelance developer perspective?</strong></p>
<p>A: This varies greatly, but currently there are about 2 posts per week on average with about 28 items currently listed.</p>
<h2>Thanks!</h2>
<p>Thanks to all the attendees for the great questions! Be sure to give <a href="http://www.xojo.com/download">Xojo a try today</a>. It&#8217;s free! You&#8217;ll soon be making apps faster than you ever thought possible. Additional &#8220;What is Xojo?&#8221; webinars are scheduled for <a href="http://www.xojo.com/support/webinar.php">February and March</a>. Be sure to join so you can ask your own questions. For more casual conversations, join our Lunch with Xojo hangouts in <a href="http://www.xojo.com/support/webinar.php">February and March</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How Does Xojo Do #CodeDay?</title>
		<link>https://blog.xojo.com/2014/05/16/how-does-xojo-do-codeday/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Fri, 16 May 2014 00:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Hour of Code]]></category>
		<category><![CDATA[Women in Tech]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2014/05/16/how-does-xojo-do-codeday/</guid>

					<description><![CDATA[How Does Xojo Do #CodeDay?]]></description>
										<content:encoded><![CDATA[<p>Despite our best efforts here at Xojo, everyday can&#8217;t be #CodeDay! So we figure we better go all out for the <a href="http://codeday.org/">first official, national Code Day</a>! Saturday, May 24th, we want to help you join thousands of students in 24 cities across America celebrate technology, share ideas and build cool apps!</p>
<p><span id="more-121"></span></p>
<p>We&#8217;d love if you showed up ready to have some fun and learn something new at your local Code Day event with your new Xojo license! Starting Monday, May 19th and running through Sunday May 25th we&#8217;re offering students and teachers 30% off new Xojo licenses! Simply send me an email at custserv@xojo.com using your academic email address or include a picture of your current student ID and I&#8217;ll send you a coupon code for 30% off any new Xojo license! And don&#8217;t forget about Xojo&#8217;s free <a href="http://www.xojo.com/learn/">Introduction to Programming</a> textbook and our new <a href="http://www.xojo.com/learn/">Teacher&#8217;s Guide</a>!</p>
<p>Code Day is a special event, and this is the first time it will be celebrated across the United States. Please share this post and help spread the word about #CodeDay and codeday.org, let&#8217;s grow the Xojo community and encourage more coding across the world! Like they say at code.org, &#8220;Build something awesome in 24 hours!&#8221;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
