<?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>Introspection &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/introspection/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Wed, 16 Oct 2019 20:16:18 +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>XDC 2018 Keynote Recap</title>
		<link>https://blog.xojo.com/2018/04/25/xdc-2018-keynote-recap-draft/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Wed, 25 Apr 2018 16:00:46 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Introspection]]></category>
		<category><![CDATA[Keynote]]></category>
		<category><![CDATA[Xojo Framework]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=4197</guid>

					<description><![CDATA[Geoff just wrapped up the Keynote at this year&#8217;s XDC here in beautiful Denver, Colorado. The stately ballroom at the Magnolia Hotel was packed. After&#8230;]]></description>
										<content:encoded><![CDATA[<p>Geoff just wrapped up the Keynote at this year&#8217;s XDC here in beautiful Denver, Colorado. The stately ballroom at the Magnolia Hotel was packed.</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter wp-image-4242" src="https://blog.xojo.com/wp-content/uploads/2018/04/keynote-2018.jpg" alt="" width="591" height="331"></p>
<p>After a brief intro and some bragging about how this XDC sold out faster than any XDC before, how 25% of attendees are first-timers and how Xojo is represented by users from 12 different countries &#8211; shoutout to <a href="http://developer.xojo.com/francais">Stephane Pinel</a> Xojo&#8217;s French Evangelist and and <a href="http://developer.xojo.com/spanish">Javier Menendez</a> our Spanish Evangelist who is attending for the first time (don&#8217;t think he&#8217;s a newbie though, he&#8217;s been with Xojo for 10 years), Geoff discussed the Xojo Community. Our forum has grown over 20% since the last XDC, with 18,000 members and over 43,000 conversations.</p>
<h3>Xojo Cloud</h3>
<p>People use Xojo Cloud because zero-configuration is an obvious advantage &#8211; we install more than 100 software updates per year which is 100+ actions that protect your app and your data that you don&#8217;t have to manage or install yourself. But it&#8217;s the industrial strength security that adds the most value. Xojo Cloud servers have been scanned over 1 billion times with zero known breaches to date. While no one can make servers 100% secure, Xojo Cloud certainly has proved itself to provide best-of-class security which is absolutely critical in today’s always-on, always-connected world. Check out <a href="https://www.xojo.com/cloud/">Xojo Cloud</a>&#8216;s bigger and better servers &#8211; now with <a href="https://blog.xojo.com/2018/04/18/xojo-cloud-server-stats/">monitoring and stats</a> build into the Xojo IDE.</p>
<p><img decoding="async" class="wp-image-4205 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2018/04/XojoCloudStats-1.png" alt="" width="670" height="423"></p>
<h3>Platform Landscape</h3>
<div class="page" title="Page 59">
<div class="section">
<div class="layoutArea">
<div class="column">
<p>When we started back in 1998, the desktop was really the only platform that mattered for applications. But it&#8217;s over 20 years later and mobile has certainly become an important platform. It&#8217;s interesting to note that through 2017 and now into 2018, mobile is treading downward slightly and desktop is trending upward.</p>
<p><img decoding="async" class=" wp-image-4211 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2018/04/desktop-vs-mobile.png" alt="" width="631" height="471"></p>
<div class="page" title="Page 61">
<div class="section">
<div class="layoutArea">
<div class="column">
<p>Illustrating that whether you focus on mobile or desktop, cross-platform development is more important now than ever before. As always, Xojo abstracts you from all of this and highlights the importance of a cross-platform tool.</p>
<h3>Foundational Improvements to Xojo</h3>
<p>Since the last conference we&#8217;ve fixed 815 bugs, made 151 changes, added 64 new features to Xojo, this is all aside from our main focus of modernizing the foundation upon which your apps and Xojo itself is built. A lot of this foundational work we&#8217;ve covered as it happened: <a href="https://blog.xojo.com/2017/04/12/windows-graphics-direct2ddirectwrite-direction/">Direct 2D and DirectWrite</a> for hardware-accelerated, modern graphics on Windows. Upgrading to <a href="https://blog.xojo.com/2018/04/17/change-window-opacity-using-a-linux-gtk-declare/">GTK3</a> to provide <a href="https://blog.xojo.com/2016/04/05/xojo-retinahidpi-the-journey-of-a-thousand-pixels/">HiDPI</a> on Linux. And, of course, you can now build <a href="http://developer.xojo.com/64-bit-guidelines">64-bit</a> applications which is increasingly becoming the accepted standard. For 64-bit builds and for Raspberry Pi, the compiler now <a href="https://blog.xojo.com/2018/01/31/compilers-106-optimizer/">optimizes your code for speed</a>. For apps that do a lot of calculations, this can provide a huge improvement. Xojo user Thomas Moore recently reached out to let us know how the optimized compiler sped up the app he&#8217;s working on for NASA&#8217;s LISA project.</p>
</div>
<h3>Xojo Compiler Optimizations Speed up Calculations for NASA</h3>
<div class="page" title="Page 73">
<div class="section">
<div class="layoutArea">
<div class="column">
<p>Thomas Moore is a long time Xojo user and a Professor pf Physics at Cal Poly Pomona. He’s written an app in Xojo to help with his research for the proposed LISA mission in which NASA will launch 3 satellites to form a triangle 3 million miles on each side, letting us better detect gravitational waves. Thomas&#8217; app will be analyzing the massive (seriously massive) amount of gravitational wave data downloaded from these satellites. Once he was able to compile his app for 64-bit and gain the benefit of the optimizing compiler, he saw an immediate gain of 7X. The compiler optimizations provided a speed increase nearly equal to what he had gained over 10 years of advances in computer technology.</p>
<h3>LLVM</h3>
<p>The ability for Xojo to optimize your code is the direct result of our move to LLVM as our compiler backend. As it’s improved in the future with more optimizations, we will update and you’ll get them automatically.</p>
<h3>64-bit IDE</h3>
<div class="page" title="Page 81">
<div class="section">
<div class="layoutArea">
<div class="column">
<p>Since the Xojo IDE is written in Xojo, we&#8217;ve been building it as a 64-bit app since 2017r3. It&nbsp;was no small task since the Xojo IDE is quite a large project. For the overwhelming majority of you, <a href="https://blog.xojo.com/2017/07/18/big-transitions-little-effort-one-apps-update-to-64-bit/">building a 64-bit</a> version of your apps required nothing more than switching a setting and rebuilding. Given that macOS now warns users when they launch 32 bit apps, it’s even better that Xojo is now 64 bit. These changes are all about modernizing the foundation upon which your apps are built. This not only means you don’t have to worry about it, but it also makes many of our future plans for Xojo possible.</p>
<div class="page" title="Page 83">
<div class="section">
<div class="layoutArea">
<div class="column">
<h3>The Future</h3>
<p>Much like building a house, there is extensive foundational work to be done up front. We are often working on new features across several releases. Despite our best efforts, there are a few things we’d hoped to have ready by now such as Interops and Plugins.</p>
<p>Interops make it much easier to call into the system when something you need isn’t provided by the Xojo framework. We are making great progress on Interops for Android which is likely the first platform upon which they will be supported. In fact, the Android framework is being built in Xojo using Interops. We’ve been working very hard for some time now to provide support for Android. There’s a lot to talk about and Travis will be covering it in detail in his session later today and we&#8217;ll post more on our blog as we reach milestones.*</p>
<p>As for Plugins, we had hoped by now to have the ability to write plugins for Xojo in Xojo by now. Unfortunately, other things have taken priority. However, plugins are important to us and we continue to work on that.</p>
<p>In addition, there are some user experience changes we were planning to make project navigation faster and more efficient. We have been overhauling the underpinnings required to make all of that possible. Just like building that house, the hard part comes first and then it gets a lot easier towards the end. In order to make it easier to build desktop-like web apps we&#8217;re upgrading the web framework to Web Framework 2.0. This will include significant modernizations and optimizations, more robust applications, greater speed between client and server, overhauling of 5 controls and 10 new controls, an improved look and feel and will be 99% compatible with existing projects. If you’re currently building web apps or planning to, this is going to be a huge step forward, Greg will cover this in more detail in his session.*</p>
<h3>Xojo API 2.0</h3>
<div class="page" title="Page 124">
<div class="section">
<div class="layoutArea">
<div class="column">
<p>As we went down the path to the new Xojo Framework we realized there were a lot inconsistencies. Methods, properties and events that did the same or similar things across different classes often had dissimilar names. We discovered several other types of inconsistencies in the naming as well. So we&#8217;ve turned our direction to give you the best of both worlds.</p>
<p><img loading="lazy" decoding="async" class=" wp-image-4212 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2018/04/best-of-both-worlds.png" alt="" width="710" height="531"></p>
<p>This keeps the Xojo language simple and it eliminates the need for us to put all the APIs into namespaces, removing that bit of complexity as well. This also makes the transition easier for us because we can roll out the new APIs over time rather than being required to have an entire functional set of new APIs all at once. API 2.0 will provide you with more consistent APIs across classes with improved functionality while keeping Xojo easy to learn and use as well as making your transition easy as well.</p>
<h3>XDC 2019</h3>
<p>That&#8217;s right, we&#8217;re announcing XDC 2019 in beautiful Miami, Florida! We will be at the Miami Marriott Biscayne Bay which is right on the water. You&#8217;ll get great views from the hotel, a beautiful park and a 3 mile straight shot across the bay to South Beach! Reminder that we sold out this year quite quickly (faster than ever before) so make sure you register early to not only reserve your spot but save $200 as well!</p>
<p><img loading="lazy" decoding="async" class="wp-image-4213 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2018/04/xdc-2019.png" alt="" width="643" height="481"></p>
<p>We&#8217;ll be keeping you updated on more from Denver on <a href="https://twitter.com/xojo">Twitter</a> and sharing live videos on <a href="https://www.facebook.com/goxojo/">Facebook</a> over the next 3 days! Thanks for sharing and using #XDC2018, we hope to see you next year at XDC 2019 in beautiful Miami, Florida.</p>
<p>*Videos of XDC sessions and the Keynote will be available for purchase next month. You can &nbsp;purchase previous <a href="https://www.xojo.com/store/#conference">XDC session videos</a>&nbsp;from 2015 and 2016 at a 20% discount this week only!</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introspection</title>
		<link>https://blog.xojo.com/2016/04/13/introspection/</link>
		
		<dc:creator><![CDATA[Norman Palardy]]></dc:creator>
		<pubDate>Wed, 13 Apr 2016 00:00:00 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Introspection]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2016/04/13/introspection/</guid>

					<description><![CDATA[Introspection is a very handy and useful part of the Xojo language. You can use it to examine a lot of the objects that are in&#8230;]]></description>
										<content:encoded><![CDATA[<p>Introspection is a very handy and useful part of the Xojo language.</p>
<p>You can use it to examine a lot of the objects that are in memory at runtime. You can access the properties in those objects, call methods on those objects and even create new instances (with some caveats here).</p>
<p>But there are limits to what you can do with it. You can&#8217;t use it to create things that do not exist at runtime because they&#8217;ve been stripped out when your app was built.</p>
<p><span id="more-292"></span>Suppose you have a class, MyCoolClass, and nowhere in your app do you have a parameter of that type used, a property of that type, or you never have any IsA MyCoolClass checks and never dim a variable as MyCoolClass. Then the likelihood your class has been stripped out of the final built executable is high. Basically if you never use the class it will likely get stripped out.</p>
<p>It&#8217;s possible to create classes that exist at runtime so you have to make sure they do not get stripped out. And there is no way for you to create one at runtime &#8220;by name&#8221; because there is no &#8220;make me this class by name&#8221; operator or function.</p>
<p>So in order to use introspection to create a class you need to have the class IN your compiled code.</p>
<p>Something like:</p>
<p><span style="font-family: 'courier new', courier;">dim ti as Introspection.TypeInfo = GetTypeInfo( MyCoolClass )</span></p>
<p>will ensure MyCoolClass won&#8217;t be stripped out. And then you can creates instances from the TypeInfo by accessing the class&#8217; constructors.</p>
<p>Watch our Intro to Introspection webinar on-demand:</p>
<p><!--HubSpot Call-to-Action Code --> <span id="hs-cta-wrapper-5858593b-62a6-444c-9b87-9c4a8db1c932" class="hs-cta-wrapper"> <span id="hs-cta-5858593b-62a6-444c-9b87-9c4a8db1c932" class="hs-cta-node hs-cta-5858593b-62a6-444c-9b87-9c4a8db1c932"><br />
<!-- [if lte IE 8]>


<div id="hs-cta-ie-element"></div>


<![endif]--> <a href="http://developer.xojo.com/webinar-introduction-to-introspection" target="_blank"><img loading="lazy" decoding="async" id="hs-cta-img-5858593b-62a6-444c-9b87-9c4a8db1c932" class="hs-cta-img aligncenter" style="border-width: 0px; margin: 0 auto; display: block; margin-top: 20px; margin-bottom: 20px;" src="https://blog.xojo.com/wp-content/uploads/2016/03/5858593b-62a6-444c-9b87-9c4a8db1c932.png" alt="Introduction to Introspection" width="514" height="83" align="middle" /></a></span></span> <!-- end HubSpot Call-to-Action Code --></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>An Introspection Gotcha</title>
		<link>https://blog.xojo.com/2016/04/04/an-introspection-gotcha/</link>
		
		<dc:creator><![CDATA[Norman Palardy]]></dc:creator>
		<pubDate>Mon, 04 Apr 2016 00:00:00 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Introspection]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2016/04/04/an-introspection-gotcha/</guid>

					<description><![CDATA[Learn to use Introspection to examine many of the objects that are in memory at runtime- access the properties in those objects, call methods and more.]]></description>
										<content:encoded><![CDATA[<p><a href="http://developer.xojo.com/userguide/introspection" target="_blank" rel="noopener">Introspection</a> is a very handy and useful part of the Xojo language.</p>
<p>You can use Introspection to examine many of the objects that are in memory at runtime. You can access the properties in those objects, call methods on those objects and even create new instances- with some caveats of course.</p>
<p><span id="more-340"></span>There are limits to what you can do with Introspection. You can&#8217;t use it to create things that do not exist at runtime because the Xojo compiler will have removed them from the app. What might something like that be?</p>
<p><img decoding="async" title="" src="https://blog.xojo.com/wp-content/uploads/2016/04/10299874793_4d2a8812d1_b.jpg" /></p>
<p>Suppose you have a class, MyCoolClass, and nowhere in your app do you use it. You have no property of that type, you never had any &#8220;IsA MyCoolClass&#8221; checks and never Dim a variable as MyCoolClass. Then the likelihood your class has been stripped out of the final built executable during compilation is high. Basically, if you never use the class, it will likely get stripped out.</p>
<p>And there is no way for you to create one at runtime &#8220;by name&#8221; because there is no &#8220;make me this class by name&#8221; operator or function.</p>
<p>Since it&#8217;s only possible to create classes that exist at runtime, you need to make sure they do not get stripped out. The easiest way to do this is to make sure you use the class somewhere in your code. Some like this is sufficient:</p>
<p><span style="font-family: 'courier new', courier;">Dim info As Introspection.TypeInfo = GetTypeInfo(MyCoolClass)</span></p>
<p>Now your class is referenced and it will not be stripped out. Now you can create instances from the TypeInfo by accessing the class&#8217; constructors.<br />
<!-- end HubSpot Call-to-Action Code --></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
