<?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>Ohanaware &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/ohanaware/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, 24 Oct 2022 20:46:40 +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>Pump Up Your Xojo Development</title>
		<link>https://blog.xojo.com/2021/05/03/the-xojo-extras-store/</link>
		
		<dc:creator><![CDATA[Dana Brown]]></dc:creator>
		<pubDate>Mon, 03 May 2021 09:12:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[AprendeXojo]]></category>
		<category><![CDATA[Monkeybread Software]]></category>
		<category><![CDATA[Ohanaware]]></category>
		<category><![CDATA[Third Party]]></category>
		<category><![CDATA[xDev Magazine]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=7746</guid>

					<description><![CDATA[During this week's May Sale all Xojo licenses and everything in the Xojo Extras Store are discounted 20%! What kind of deals and extras are out there? Let's check them out! There are 5 categories of Xojo Extras: Developer Tools, User Interface, Database, Distribution and Learning.]]></description>
										<content:encoded><![CDATA[
<p>During this week&#8217;s May Sale all Xojo licenses and everything in the Xojo Extras Store are discounted 20%! What kind of deals and extras are out there? Let&#8217;s check them out. There are 5 categories of Xojo Extras: Developer Tools, User Interface, Database, Distribution and Learning.</p>



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



<p><strong>piDog DataView</strong> is a fast and flexible list viewer and includes one year of updates.</p>



<p><strong>Markdown Parser</strong> for Xojo is a class that allows you to implement the ability to parse Markdown source text into HTML + the provided CSS styles, so it can be presented on the fly over an HTML control for its use &#8220;as-is&#8221;, as a starting point for invoices, reports, templates or document conversion. </p>



<p>If you don&#8217;t have anything from Monkeybread Software, then this is a great deal for you! Everything is 20% off from the <strong>Complete Plugin Set</strong>, which includes 54,000+ functions, to <strong>DynaPDF</strong> for creating and editing PDF documents and more.</p>



<p><strong>Mime Parser</strong> is a class for parsing emails.</p>



<p>The <strong>OMP Plugin</strong> allows you to easily parse Microsoft Outlook Structured Storage (.MSG) files cross-platform from Xojo.</p>



<p>Also offered is a <strong>Spell Checker Class</strong> to easily spell check text.</p>



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



<p><strong>ARWaitingView</strong> is a class to prevent the user from navigating the interface while something is downloading or doing a long process. </p>



<p><strong>AXControlGrid</strong> is a complete and powerful Xojo desktop UI component for macOS and Windows that it makes possible to put Canvas-based controls in a Page or a series of Pages of a given size and, optionally, their associated captions.</p>



<p><strong>AXImageCanvas </strong>greatly simplifies the task of displaying a Picture with the ability to correctly display the image maintaining its original aspect ratio, and keeping the full resolution of the picture and reference to the original FolderItem.</p>



<p><strong>AXNumValidatedTF</strong> is a Xojo TextField subclass (32/64 bits) for Windows and macOS allowing the input validation of a defined numeric range, using the system Locale settings for decimal and grouping text formatting.</p>



<p>Antonio Rinaldi offers <strong>Doughnut</strong>, which is an extension for iOSGraphics to draw circular graphs. Additionally, <strong>iOSTableViewExtended</strong> is a subclass that adds useful features including: swipe to reload, table header and footer, customer section header and footer, contextual menus, side index, TextEdit fix and more.</p>



<p><strong>GraffitiSuite</strong> All Access, Desktop and Web are on sale! They are a collection of custom components for Xojo Desktop and Web. </p>



<p>MBS <strong>ChartDirector</strong> lets you create professional charts in Xojo, with 30 chart and gauge types.</p>



<p><strong>RubberViews</strong> from Match Software maintains the place and relative size of every control when a Window or Container Control is resized. They also offer Window Placement and Screen Extensions that are modules that let you manage windows with greater control.</p>



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



<p><strong>DataViewer Component </strong>is a collection of objects for Xojo that can easily incorporate into your own projects to give SQL Query and DML functionality for SQLite and MySQL databases along with Data Export facilities. Full source code edition also available.</p>



<p>The<strong> MBS SQL Plugin</strong> is an alternative database interface to Xojo that gives access to SQL databases including Oracle, Microsoft SQL Server, DB2, Sybase, Informix, InterBase/Firebird, SQLBase, MySQL, PostgreSQL, ODBC and SQLite. Also available is the <strong>MBS SQLite Extension</strong> is a plug-in for cubeSQL Server, a plug-in for SQLite Manager (sqlabs) and an extension for SQLite that you can use in all SQLite-based database engines, including the SQLiteDatabase class in Xojo.</p>



<p><strong>SQLVue</strong> is the fast and easy way to manage your SQLite databases.</p>



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



<p><strong>App Wrapper </strong>from Ohanaware simplified the process of preparing applications for submission to the Mac App Store and deploying on websites. Get a 30-day or a 1 year single user or team update plan during this limited time offer.</p>



<p><strong>BoxedApp Packer</strong> helps Xojo developers prepare a single executable file that contains all required files a Xojo application needs.</p>



<p>The <strong>GuancheMOS</strong> plug-in is a serial number creation and validation Engine. Also available is <strong>GuancheID</strong>, the easiest way to get a unique ID for macOS and Windows based computers, so you can use it in combination with GuancheMOS or your own software licensing scheme to make sure your software only runs on the computer the license has been generated for.</p>



<p><strong>Quick License Manager</strong> protects your Xojo Windows application with licensing for trials, perpetual or subscription-based licenses.</p>



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



<p><strong>AprendeXojo</strong> has 2 Spanish-language ebooks in the store available for $20 each during the sale:&nbsp;<em>Programación Multiplataforma Xojo</em>&nbsp;and&nbsp;<em>SQLite</em>.</p>



<p><strong>xDev Magazine</strong> is an&nbsp;independent bimonthly publication focused on educating Xojo users through instruction, tutorials and programming. Score a 1 year subscription during the sale for just $40!</p>



<h2 class="wp-block-heading">Shop Now</h2>



<p>The <a href="https://www.xojo.com/store">Xojo Extras store</a> has something for every kind of Xojo developer, whether you are learning something new or looking to save some time implementing something tricky. Take a look now to see what can help make your development life easier! The Xojo May Sale runs until midnight (CT) Friday, May 7th.  </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>App How To: Packaging, Selling &#038; Marketing</title>
		<link>https://blog.xojo.com/2018/07/16/how-to-selling-your-xojo-apps/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Mon, 16 Jul 2018 13:00:00 +0000</pubDate>
				<category><![CDATA[Dev Marketing]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Add-Ons]]></category>
		<category><![CDATA[App Marketing]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Developer Marketing]]></category>
		<category><![CDATA[Ohanaware]]></category>
		<category><![CDATA[Social Media Marketing]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2013/09/25/how-to-selling-your-xojo-apps/</guid>

					<description><![CDATA[In this long read blog post, we'll walk you through packaging your app for distribution, offering your app on your website and and app marketplaces for sale, as well as first steps to marketing your app.]]></description>
										<content:encoded><![CDATA[<p>Are you ready to sell your app? Whether you have a web app, desktop or mobile app, it&#8217;s time to think about how to package and distribute that app, how get the word out and, of course, how to get paid for sales.</p>
<p>In this #longread blog post, we&#8217;ll walk you through preparing your app for distribution, offering your app on your website and in app marketplaces for sale, as well as first steps to marketing your app.</p>
<p><span id="more-64"></span></p>
<p>When designing a commercial app for sale, an important thing you need to consider is how you will get the app to people who buy it.</p>
<h2 style="text-align: center;">Packaging Your App for Distribution</h2>
<p>Desktop and mobile apps will need to be distributed, whereas a web app usually requires the user set up a log in and sign up for a subscription and is not distributed separately.</p>
<h3>Mobile Apps</h3>
<p>To package your iOS app you&#8217;ll need an <a href="https://blog.xojo.com/2015/06/16/apple-combines-ios-and-mac-developer-programs/">Apple Developer account</a> to generate the certificates and provisioning profiles required by Apple. After that is set up, go to the iOS Build Settings and turn on the switch for Build For App Store and Build your app. This creates a special ipa file that can be submitted to the App Store using App Connect. You can read the steps in more detail here: <a href="http://developer.xojo.com/userguide/ios-app-store">Submitting to the App Store</a></p>
<p>You can also <a href="https://blog.xojo.com/2015/12/03/deploy-ios-apps-to-your-devices-without-an-apple-dev-membership/">read this earlier post</a> on how deploy iOS apps to your devices without an Apple Developer Membership.</p>
<h3>Desktop Installers</h3>
<p>You&#8217;ll definitely want to use an installer to distribute your Windows apps. We&#8217;ve previously blogged before about free and paid options for <a href="https://blog.xojo.com/2014/06/12/creating-installers-for-windows-apps/">Windows installers in detail</a>.</p>
<p>On macOS, many apps are distributed as simple ZIP files that you can create from the Finder. Or you can use Disk Utility (or another utility such as <a href="http://www.araelium.com/dmgcanvas/" target="_blank" rel="noopener noreferrer">DMG Canvas</a>) to create a DMG (disk image). If you need an installer on macOS, which is not often the case, try <a href="http://s.sudre.free.fr/Software/Packages/about.html">Packages</a> or PackageMaker (included with Xcode).</p>
<p>On Linux, you can also distribute your apps as ZIP files or you can take the more complicated route of creating a specific distribution file (deb or rpm) for the versions of Linux you target.</p>
<h3>Demo Mode or Limited Free Trial</h3>
<p>People like to download and try out software before purchasing. We highly recommend that you offer some features of your app for free or for a limited free trial to entice people to give your app a shot.</p>
<p>For iOS apps, the App Store does not have great support for demo or trial apps. One option is to make two versions of your app: one that is a free demo and one that is a paid app. Another option is to make your app a free download and to use in-app purchase to unlock the full version.</p>
<p>Desktop and web apps offer more options regarding demos and trials so think about what will work best for your app. Do you want a free demo version? Will you limit the demo by time (14 and 30 days are common) or by number of uses (4 free uses)? Another common option is to limit the app to running with some feature limitations if no license key is entered. You can even combine the two so that a trial reverts to a demo after the trial expires.</p>
<p>Regardless of what you choose, you&#8217;ll need to make sure this is all designed into your app before you release it.</p>
<h3>License Keys &amp; Serial Numbers</h3>
<p>Often, an essential part of commercial software is generating license keys or serial numbers. When a customer purchases your app, you can provide a license key to unlock the full features of your app or stop the timer on a time-limited trial. You can build your own license key generation and verification functions into your app. This is relatively simple to do by creating a web service with a Xojo web app. Two solutions that can help you get started are <a href="http://www.tempel.org/UsingAquaticPrime" target="_blank" rel="noopener noreferrer">AquaticPrime</a> and <a href="https://github.com/paullefebvre/regcode">RegCode</a>.</p>
<p>If you are need to save time, look into developed solutions offered in the Xojo <a href="https://www.xojo.com/store/#addons">Add-Ons Store</a> such as the <a href="https://blog.xojo.com/2018/06/26/software-distribution-simplified-with-guanchemos/">GuancheMOS Plugin</a>, a cross-platform serial number creation and validation engine, for Windows check out Quick License Manager for licensing trials for perpetual or subscription licenses.</p>
<h2 style="text-align: center;">Selling Your App</h2>
<p>Once you have your app packaged to distribute, you&#8217;ll need places to sell it and ways to get paid.</p>
<h3>Selling on your Website</h3>
<p>You should definitely have a Web site with a specific landing page that talks about the product and shows the price.  This makes is easier for your page to be found when searching the web. A landing page is a stand-alone page that includes highlights of what your app offers, your demo video and a call to action. (<a href="https://blog.hubspot.com/blog/tabid/6307/bid/7177/what-is-a-landing-page-and-why-should-you-care.aspx">Learn more</a> about landing pages.) Make the page&#8217;s focus your &#8220;call to action&#8221;, whether that is to watch the demo video, download or purchase the app, or to create an account.</p>
<p>Even if you only have an iOS app that is sold via the App Store, a landing page is useful, some say essential, making it easier for people to find your app and for you to share it on social media.</p>
<h3>Selling at a Marketplace</h3>
<p>In addition to selling on your website, you may want to investigate getting your app into an appropriate app store. App stores are often where people look first for apps, plus most app stores make it really simple for users to install and upgrade apps. And they make getting paid a lot simpler. However, App Stores can take a percentage of the sale (commonly 30%) and may have significant restrictions and a lengthy approval process before your app can be ready for sale.</p>
<p>If you are selling a macOS app, you might want to make it available in the Apple&#8217;s Mac Store. Here are some examples of <a href="https://blog.xojo.com/2013/07/08/xojo-apps-in-the-mac-app-store/">Xojo apps in the Mac Store</a>. For iOS apps the only option is the App Store and we&#8217;ve blogged about how to get your <a href="https://blog.xojo.com/2015/08/21/getting-your-ios-apps-into-the-app-store/">Xojo iOS apps in the App Store</a>.</p>
<p>To sell something in either the App Store or Mac App Store you need to be a member of the $99 <a href="http://blog.xojo.com/2015/06/16/apple-combines-ios-and-mac-developer-programs/">Apple Developer Program</a>. You also have give Apple 30% of each sale, wait for them to approve your app for sale and wait for approvals for any app updates. The <a href="http://www.ohanaware.com/appwrapper/">App Wrapper tool</a> can help make it easier to package your Mac apps to sell in the Mac App Store.</p>
<p>Of course there is the <a href="https://www.microsoft.com/en-us/store/appsvnext/windows">Windows Store</a> for your Windows apps. If you use <a href="https://www.advancedinstaller.com">Advanced Installer</a>, the <a href="https://www.advancedinstaller.com/user-guide/desktop-bridge-setup-converter.html">Desktop Bridge Setup Converter</a> can be used to convert an installer to one that is compatible with the Windows Store. More information is available in this article: <a href="http://scispec.ca/index.php/books/34-build-an-appx-installer-for-microsoft-store-with-xojo">Build an AppX Installer for Microsoft Store with Xojo</a>.</p>
<p>If you are selling a Xojo-related tool, library or plugin, another option is to sell it in the Xojo Store in the Add-On Product section. There is no charge for this and you get to keep 70% of the sale. <a href="../../../../../../com/xojo/blog/index.html">Contact us</a> if you are interested.</p>
<h3>Getting Paid</h3>
<p>With apps sold in the app stores you&#8217;ll get paid by the store guidelines, usually once a month for the previous month&#8217;s sales, though some store may set a minimum payment before they pay up.</p>
<p>For desktop apps or web apps that have subscriptions you&#8217;ll need a way to handle payments. Rather than setting up your own merchant account and dealing with that, it&#8217;s increasingly common to use an existing payment processing service like <a href="https://www.paypal.com" target="_blank" rel="noopener noreferrer">PayPal</a> or <a href="http://www.fastspring.com" target="_blank" rel="noopener noreferrer">FastSpring</a>.</p>
<p>If you are not already familiar with how PayPal works, you can learn more <a href="https://www.paypal.com/us/smarthelp/article/how-do-i-get-paid-faq1750">here</a>. FastSpring lets you create a &#8220;store&#8221; with your products, pricing, a shopping cart, currency conversion and will take payments from credit cards and other means. FastSpring takes 8.9% per transaction with a minimum order fee of $0.75 or 5.9% + $0.95 per transaction; <a href="https://www.paypal.com/us/webapps/mpp/paypal-fees">PayPal is 2.9%</a> + $0.30 per transaction (rates from July 2018).</p>
<p>Regardless of the service you use, you will need to hook it up to an account to receive payment. Typically you hook it up to a checking account or PayPal. Other services you might want to check out include: <a href="https://gumroad.com" target="_blank" rel="noopener noreferrer">Gumroad,</a> <a href="https://stripe.com" target="_blank" rel="noopener noreferrer">Stripe</a>, <a href="http://www.usepaddle.com" target="_blank" rel="noopener noreferrer">Paddle</a>, and <a href="https://www.2checkout.com" target="_blank" rel="noopener noreferrer">2CheckOut</a>.</p>
<h2 style="text-align: center;">Marketing Your App</h2>
<p>Now your app is packaged and available for sale on your website and an app marketplace or two. How do you get the word out? Here are 3 <em>musts</em> when it comes to app marketing:</p>
<h3>Press Release</h3>
<p>You&#8217;ll need a Press Release that announces your app, explains what your app does and why people should buy it &#8211; here&#8217;s a <a href="https://coschedule.com/blog/how-to-write-press-releases/#outline">template and example</a>.</p>
<p>For a small fee, services like <a href="https://www.prnewswire.com/">PR Newswire</a> will send out your press release to a wide variety of websites for you. We also want to help promote your #XojoMade app! Email your press release to <a href="../../../../../../com/xojo/blog/index.html">pr@xojo.com</a> and we&#8217;ll post it on the <a href="https://forum.xojo.com/conversations/announcements">Announcements</a> channel in the forum and share it on <a href="https://twitter.com/xojo">Twitter</a>.</p>
<h3>Demo Video</h3>
<p>Yes, you should definitely have a demo video! Either more of a traditional software demonstration, a commercial that lists your app&#8217;s top selling points or some combination of the two. Keep it short and sweet &#8211; feel free to follow up with a longer, more in-depth video, but to grab perspective users you&#8217;ll want something less than a minute. Video is much more digestible and easy to share than the written word and you can <a href="https://blog.hubspot.com/marketing/make-a-marketing-video">create a good one</a> on your own.</p>
<h3>Outside Listings &amp; Reviews</h3>
<p>Get your product listed on app download services, such as <a href="https://www.macupdate.com" target="_blank" rel="noopener noreferrer">MacUpdate</a> or <a href="http://download.cnet.com" target="_blank" rel="noopener noreferrer">Download.com</a>. Once listed, you&#8217;ll want reviews because one of the most trusted forms of marketing is word of mouth. You believe the word of a colleague over that of a commercial, right? Ask your users to post honest reviews of your app in app marketplaces and on third party sites. If your app is new, or just needs the reviews, think about offering a discount or swag for a review.</p>
<h3>Now What? More Marketing Tips from Dana and Alyssa</h3>
<p>Here are some great posts to explore simple and often free options for marketing your apps:</p>
<div><a href="https://blog.xojo.com/2017/06/29/free-marketing-4-practical-tips-for-developers-new-to-twitter/" target="_blank" rel="noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en&amp;q=https://blog.xojo.com/2017/06/29/free-marketing-4-practical-tips-for-developers-new-to-twitter/&amp;source=gmail&amp;ust=1529168451724000&amp;usg=AFQjCNGqP9YZLFau25CucRprxMbV6KAtng">Free Marketing! 4 Practical Tips for Developers New to Twitter</a></div>
<div><a href="https://blog.xojo.com/2017/09/05/recording-ios-demos/" target="_blank" rel="noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en&amp;q=https://blog.xojo.com/2017/09/05/recording-ios-demos/&amp;source=gmail&amp;ust=1529168451724000&amp;usg=AFQjCNGeSLm8YLYe75PBW3lXrWOx28H_Fg">How to Record Video Demos for your iOS Apps</a></div>
<div><a href="https://blog.xojo.com/2017/11/16/8-ways-to-market-your-app-for-free/" target="_blank" rel="noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en&amp;q=https://blog.xojo.com/2017/11/16/8-ways-to-market-your-app-for-free/&amp;source=gmail&amp;ust=1529168451724000&amp;usg=AFQjCNHHck5L1dhcywvr-Le4yHnPkTF4vQ">8 Ways to Market Your App for Free</a></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Guest Blog Post: Iconographer from Ohanaware</title>
		<link>https://blog.xojo.com/2016/11/07/guest-blog-post-iconographer-from-ohanaware/</link>
		
		<dc:creator><![CDATA[Sam Rowlands]]></dc:creator>
		<pubDate>Mon, 07 Nov 2016 14:00:34 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Add-Ons]]></category>
		<category><![CDATA[Ohanaware]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2033</guid>

					<description><![CDATA[The idea behind Iconographer, is to be able to take the same set of elements and produce app icons, document icons, folder icons, disk icons and web icons that are all consistent with their intended target, while retaining the application identity. This post offers a quick walkthrough on how we took our Mac Iconographer icon and not only converted the icon for other targets, but we also made document icons and more in just a few minutes.]]></description>
										<content:encoded><![CDATA[<p><em>Sam Rowlands has been developing Xojo apps since 1997. He and his wife, Joy Sha, make up&nbsp;<a href="http://www.ohanaware.com/">Ohanaware</a>&nbsp;and they have been building award winning apps since 2008, notably Funtastic Photos, HDRtist and&nbsp;<a href="http://xojo.com/community/casestudies/shine.php">Shine</a>. Sam is an active Xojo developer and he also offers App Wrapper, which simplifies the process of preparing applications for submission to the Mac App Store and deploying on web sites, in the Xojo Third Party Store.</em></p>
<p>I&#8217;d like to introduce you to&nbsp;Ohanaware&#8217;s latest Made With Xojo application we&#8217;ve created for us Xojo developers. It&#8217;s&nbsp;called &#8220;Iconographer&#8221; and it is&nbsp;designed to simplify the process of creating stunning and platform-consistent icons for Mac, Windows &amp; iOS.</p>
<p><span id="more-2033"></span></p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-2034" src="https://blog.xojo.com/wp-content/uploads/2016/11/iconSpread.png" alt="iconspread" width="1536" height="540"></p>
<p>The idea behind Iconographer, is to be able to take the same set of elements and produce app icons, document icons, folder icons, disk icons and web icons that are all consistent with their intended target, while retaining the application identity.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2035" src="https://blog.xojo.com/wp-content/uploads/2016/11/macOSIconAndEditor.png" alt="macosiconandeditor" width="2272" height="1624">Here we have our Iconographer icon in the Iconographer editor, a quick look at the interface and you&#8217;ll notice that we have an &#8220;Icon&#8221; selector, a &#8220;Target&#8221; selector, a &#8220;Style&#8221; selector, Layers and then layer properties.</p>
<p>I&#8217;m not going to show you how I made the Iconographer icon, instead I’ll demonstrate how to take this fine work of art and create all the other icons that we may need.</p>
<p>Before we begin, I just want to see what the icon will look like in the Mac App Store, to do that, I’ll select “Mac App Store” from the “Preview Icon in” menu, from the “Preview” button in the bottom right hand corner of the editor. Note: The preview pulls the other application icons from your applications folder, so this also doubles as a way of comparing with existing apps.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2036" src="https://blog.xojo.com/wp-content/uploads/2016/11/macAppStorePreview.png" alt="macappstorepreview" width="2272" height="1624">Clicking on the &#8220;Windows&#8221; target will change the editor to the Windows application icon. From here I chose the &#8220;Windows Tile&#8221; style, but it doesn&#8217;t look anything that I might like. Note: part of this is how I chose to build the Iconographer icon.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2037" src="https://blog.xojo.com/wp-content/uploads/2016/11/windowsBlankTile.png" alt="windowsblanktile" width="2272" height="1624">There&#8217;s only two layers for this icon, I need to import the rest. Simply clicking on the &#8220;+ Layer&#8221; button, I can select and add in the shared graphics and the shared label.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2038" src="https://blog.xojo.com/wp-content/uploads/2016/11/windowsLayers1.png" alt="windowslayers1" width="1726" height="1110"></p>
<p>Now you can see that the layers list has more layers and all the elements are loaded, but it looks like a mess. I&#8217;ll start by re-arranging the layers to get a more pleasing layout.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2039" src="https://blog.xojo.com/wp-content/uploads/2016/11/windowsLayers2.png" alt="windowslayers2" width="1768" height="1208"></p>
<p>That&#8217;s a bit more like it, now the layout looks more pleasing, I&#8217;ve tweaked the font &amp; size of<br />
the text, also enabled &#8220;All Caps&#8221; so it automatically displays in capital letters. Still one problem…</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2040" src="https://blog.xojo.com/wp-content/uploads/2016/11/windowsLayers3.png" alt="windowslayers3" width="1730" height="1150"></p>
<p>Much better; Windows 10 icons are white silhouettes on a plain colored background. Iconographer features a really nifty &#8220;Color&#8221; function where it will replace the colors of an icon with either a chosen solid color or a gradient. In this case we&#8217;re using the Badge color. Iconographer uses shared colors (as well as shared graphics and shared labels), when you adjust a color in one icon, it updates all your icons. If I set the &#8220;Badge Color&#8221; to be orange, all the elements using the Badge color get updated.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2041" src="https://blog.xojo.com/wp-content/uploads/2016/11/windowsLayers4.png" alt="windowslayers4" width="1726" height="1156"></p>
<p>Clicking on the &#8220;Preview&#8221; button again (the one in the bottom right hand corner), and selecting &#8220;Contact Sheet&#8221;, will show a contact sheet with the various sizes that a Windows icon can feature.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2042" src="https://blog.xojo.com/wp-content/uploads/2016/11/windowsContactSheet.png" alt="windowscontactsheet" width="2272" height="1624">Sort out the iOS icon. Clicking on the &#8220;iOS&#8221; target icon in the left hand column, shows me the following icon. I should point out that your default will vary, mine is very weird because of the elements I&#8217;ve used to create the Iconographer icon.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2043" src="https://blog.xojo.com/wp-content/uploads/2016/11/iOSDefault.png" alt="iosdefault" width="1148" height="1146"></p>
<p>Again, once all the layers have been added, like it was done for Windows, it starts to resemble more of what we&#8217;d like.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2044" src="https://blog.xojo.com/wp-content/uploads/2016/11/iOSStep2.png" alt="iosstep2" width="1728" height="1154"></p>
<p>Getting there, rearranging the layers, colorizing some and fixing the text, gives a far more pleasing result.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2045" src="https://blog.xojo.com/wp-content/uploads/2016/11/iOSStep3.png" alt="iosstep3" width="1732" height="1154"></p>
<p>Now if we check out the &#8220;Preview&#8221; menu, we can even see what it will look like on the home screen of an iPhone or iPad and the App Store.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2046" src="https://blog.xojo.com/wp-content/uploads/2016/11/iOSPreview.png" alt="iospreview" width="2272" height="1624">Next, I simply select &#8220;Build all selected icons&#8230;&#8221; from the &#8220;Build Icon&#8221; button in the bottom left hand corner, choose a folder and let Iconographer do its job. It&#8217;s important to note that each icon can be customized as to what elements are included and some targets even have a file format option.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2047" src="https://blog.xojo.com/wp-content/uploads/2016/11/allTheApps.png" alt="alltheapps" width="1206" height="478"></p>
<p><strong>Wait&#8230; That&#8217;s not all Iconographer can do&#8230;</strong></p>
<p>By selecting &#8220;Document&#8221; from the icon selector in the top left, there&#8217;s a perfect document file icon just waiting for me to export. If I change to Windows, there&#8217;s one there too and the Windows one is automatically using the Windows icon we adapted earlier.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2048" src="https://blog.xojo.com/wp-content/uploads/2016/11/documentScreenshot.png" alt="documentscreenshot" width="2272" height="1624">If you study the screenshot, you&#8217;ll notice an option on the Label called &#8220;Increase readability&#8221;, we use a number of different options to make the text more readable as it gets smaller. It doesn&#8217;t work in all cases, but it is perfect for the label on a document file icon.</p>
<p><strong>One more thing&#8230;</strong><br />
Clicking on the &#8220;Web icon&#8221; from the Icon selector, will allow you to create &#8220;Favicon.ico&#8221;, PNG versions and the Apple Touch variations.</p>
<p>I want to make the favicon.ico similar to the Windows icon as I think that will work better at smaller sizes. First; I go to the Windows application icon and select &#8220;Copy&#8221; from the &#8220;Edit&#8221; menu, then I go back to the Favicon target under the &#8220;Web Icon&#8221; and select &#8220;Paste icon style&#8221; from the &#8220;Editor menu. Since&nbsp;the favicon is tiny, I&#8217;ll also select &#8220;Overview&#8221; from the &#8220;View&#8221; menu, then click on the action icon in the &#8220;Overview&#8221; section and choose &#8220;16 x 16&#8221;.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2049" src="https://blog.xojo.com/wp-content/uploads/2016/11/favIconStep1.png" alt="faviconstep1" width="2272" height="1624">After some tweaking of the sizes, changing the elements to use &#8220;Doc Label&#8221; color instead of &#8220;Badge Color&#8221; and even removing some layers, I&#8217;m happy with this icon as my favIcon. Very simple and clean.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2050" src="https://blog.xojo.com/wp-content/uploads/2016/11/favIconStep2.png" alt="faviconstep2" width="1730" height="1154"></p>
<p>For the Apple Touch Icon, I&#8217;m going to wimp out and cheat. I select the third style and choose &#8220;iOS&#8221; as the icon. That&#8217;s right, I&#8217;ve remapped it to use the iOS icon, any changes I make to the iOS icon will also get updated here.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2051" src="https://blog.xojo.com/wp-content/uploads/2016/11/webPreview.png" alt="webpreview" width="1668" height="582"></p>
<p>Select &#8220;Safari&#8221; from the preview icon in the bottom right hand corner, and there we go, we get a Safari preview where you can see the favicon and the Apple Touch Icons in action.</p>
<p>To export these icons, simply select &#8220;Build all selected icons&#8230;&#8221; from the &#8220;Build icons&#8221; button.</p>
<p>There you have it, a quick walkthrough on how we took our Mac Iconographer icon and not only converted the icon for other targets, but we also made document icons and more in just a few minutes.</p>
<p>Give it a try yourself, <a href="http://www.ohanaware.com/iconographer/iconographer.dmg">get the trial version</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Guest Post: Solving Sandboxing Issues and Improving Xojo Apps With Ohanaware&#8217;s Sandbox Kit</title>
		<link>https://blog.xojo.com/2015/02/18/guest-post-solving-sandboxing-issues-and-improving-xojo-apps-with-ohanawares-sandbox-kit/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Wed, 18 Feb 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Ohanaware]]></category>
		<category><![CDATA[Sandboxing]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/02/18/guest-post-solving-sandboxing-issues-and-improving-xojo-apps-with-ohanawares-sandbox-kit/</guid>

					<description><![CDATA[If you want to sell an app in the Mac App Store, the app must adopt the App Sandbox security. Trying to figure out solutions to these new issues often results in much head scratching and consulting with other developers via the Xojo Forums. In this post, I'm going to cover a few Sandboxing issues and how to resolve them with the tools / code that I've built for the apps that we sell.]]></description>
										<content:encoded><![CDATA[<p><em>Sam Rowlands has been developing Xojo apps since 1997. He and his wife, Joy Sha, make up <a href="http://www.ohanaware.com">Ohanaware</a> and they have been building award winning apps since 2008, notably Funtastic Photos, HDRtist and <a href="http://xojo.com/community/casestudies/shine.php">Shine</a>. Sam is an active Xojo developer and he also offers App Wrapper, which simplifies the process of preparing applications for submission to the Mac App Store and deploying on web sites, in the Xojo Third Party Store.</em></p>
<h2><span style="font-size: 20px;"><strong>What is the App Sandbox and why is it a chore?</strong></span></h2>
<p>The App Sandbox is a great end user security concept. The Sandbox governs what an application can and cannot do. This means that a virally infected word processor, cannot go on to infect other applications nor rampantly damage files on the users disk. It can however affect files which the user has created or opened within the word processor.</p>
<p><span id="more-185"></span></p>
<p>The developers&#8217; pain comes from the App Sandbox&#8217;s greatest strength. The app developer must perform additional work, just to reclaim functionality that the App Sandbox took away. If you want to sell an app in the Mac App Store, the app must adopt the App Sandbox security.</p>
<p><strong>Note</strong>: There are some functions which simply cannot be done within a Sandboxed application.</p>
<p>Trying to figure out solutions to these new issues often results in much head scratching and consulting with other developers via the Xojo Forums. I&#8217;ve seen some really creative solutions to reclaim features when using this security mechanism. In this post, I&#8217;m going to cover a few Sandboxing issues and how to resolve them with the tools / code that I&#8217;ve built for the apps that we sell.</p>
<h2><span style="font-size: 20px;"><strong>Chocks away&#8230;</strong></span></h2>
<p>Taking my latest, greatest app, which just so happens to be a really cool Text Editor built with Xojo.</p>
<p>1. If I simply Sandbox the application (using App Wrapper 3, with just the minimum), I can create new documents, but I can&#8217;t save or even open documents.</p>
<p>2. The Recent Items menu no longer works.</p>
<p>3. I personally like apps that re-open the last documents I was working on. The same issue persists, code that used to work, no longer does.</p>
<p>4. Even more scary, is that users can&#8217;t even print- what kind of text editor can&#8217;t print?</p>
<h3><strong>Problems 1 and 4</strong></h3>
<p>We&#8217;ll start with the simplest, problems #1 &amp; #4 are easily resolved with the options (&#8220;Open &amp; Save Panels&#8221; &amp; &#8220;Printer&#8221;) on the &#8220;Capabilities&#8221; panel within App Wrapper.</p>
<p><a href="http://www.xojo.com/blog/en/assets_c/2015/02/Screenshot%201%20-%20App%20Wrapper%20Settings-574.php"><img loading="lazy" decoding="async" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="https://blog.xojo.com/wp-content/uploads/2015/02/screenshot20120-20app20wrapper20settings-thumb-400x323-574.pngt1466486449161ampwidth400ampheight323" sizes="auto, (max-width: 400px) 100vw, 400px" alt="Screenshot 1 - App Wrapper Settings.png" width="400" height="323" /></a><strong>Note</strong>: There appears to be a new issue with Yosemite, I&#8217;m not 100% certain of the cause, but it seemed that changing the case of the application&#8217;s bundle identifier solved it. So &#8220;com.ohanaware.mytexteditor&#8221; doesn&#8217;t work, where as &#8220;com.ohanaware.myTextEditor&#8221; does.</p>
<h3><strong>Problem 2: Recent Items list</strong></h3>
<p>In order to solve problem 2, we&#8217;ll use the &#8220;OWRecentItems&#8221; class from the Sandbox Kit. It&#8217;s a little more complicated than just selecting checkboxes, but not much more complicated.</p>
<p>Add the Sandbox Kit to your Xojo project.</p>
<p>In the &#8220;Open&#8221; event of the &#8220;App&#8221; object, add the following line of code</p>
<pre>OWRecentItems.installRecentMenu( fileMenu, 1 )</pre>
<p>This single line of code will tell the OWRecentItems class to install the recent menu, you pass in the menu on the to add to, and where in the menubar you&#8217;d like the &#8220;Open Recent&#8221; submenu to appear.</p>
<p><a href="http://www.xojo.com/blog/en/assets_c/2015/02/Screenshot%202%20-%20Code%20%26%20Recent%20Menu%20items-577.php"><img loading="lazy" decoding="async" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="https://blog.xojo.com/wp-content/uploads/2015/02/screenshot20220-20code202620recent20menu20items-thumb-400x198-577.pngt1466486449161ampwidth400ampheight198" sizes="auto, (max-width: 400px) 100vw, 400px" alt="Screenshot 2 - Code &amp; Recent Menu items.png" width="400" height="198" /></a></p>
<p>For my Text Editor, I added it to the file menu and in position 2.</p>
<p>3. Now all that&#8217;s required is when a document is saved or opened, another line of code needs to be called.</p>
<pre>OWRecentItems.addToRecentMenu( file )</pre>
<p>Simply call the OWRecentItems class again and use the addToRecentMenu method, passing in the Xojo folderitem where the document is being saved. It will be added to the Recent Menu (it&#8217;s okay to call it multiple times as it will only list it once).</p>
<p>That&#8217;s it. Now the application has a Sandbox safe recent items menu.</p>
<p><strong>Note</strong>: Using this code will also add the Recent Item menu to the App&#8217;s dock item. It&#8217;s also pretty cool in the fact that the Apple Recent Item system work across Sandboxed and un-sandboxed versions.</p>
<h3><strong>Problem 3: Re-opening last open documents</strong></h3>
<p>There&#8217;s a bit more work involved to implement this solution, the great news is once you&#8217;ve mastered it for one window, it&#8217;s trivial to add to other windows.</p>
<p>1. In your Xojo application, you need to select your document window and click on the &#8220;Choose&#8221; button next to &#8220;Interfaces&#8221; in the Xojo inspector.</p>
<p><a href="http://www.xojo.com/blog/en/assets_c/2015/02/Screenshot%203%20-%20Interface%20selector-580.php"><img loading="lazy" decoding="async" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="https://blog.xojo.com/wp-content/uploads/2015/02/screenshot20320-20interface20selector-thumb-400x233-580.pngt1466486449161ampwidth400ampheight233" sizes="auto, (max-width: 400px) 100vw, 400px" alt="Screenshot 3 - Interface selector.png" width="400" height="233" /></a></p>
<p>2. Some new methods will be added to the Window class.</p>
<ul>
<li>classIdentifer as string</li>
<li>restoreData( data as JSONItem )</li>
<li>storeData as JSONItem</li>
</ul>
<p>&#8220;classIdentifer&#8221; is where we return a identifier, to which our restoration service uses to determine what window instance to create when the data is restored. I tend to return the window class name.</p>
<pre>Function classIdentifier() As string
  // Part of the OWRestorableWindow interface.
  return "documentWindow"
End Function</pre>
<p>&#8220;restoreData&#8221; is used to populate the controls when restoring the window. For our word processor, we&#8217;ll use the code below.</p>
<pre>Sub restoreData(data as JSONItem)
  // Part of the OWRestorableWindow interface.
  if data &lt;&gt; nil then
    if data.hasName( "text" ) then TextArea1.text = data.value( "text" )
  end if
End Sub</pre>
<p>It&#8217;s important to check that the data object isn&#8217;t NIL and also to check for each setting (this will help to future proof your application).</p>
<p>&#8220;storeData&#8221; is the last method to populate in the Window class. For our purposes we&#8217;ll use the following code. It will simply store the TextArea into the property &#8220;text&#8221;.</p>
<p><strong>Note</strong>: As we&#8217;re using JSONItems to save and restore the data, it&#8217;s not designed to contain vast amounts of data and some data types will need to be converted to text before storing.</p>
<pre>Function storeData() As JSONItem
  // Part of the OWRestorableWindow interface.
  if me.folderitem &lt;&gt; nil then call saveFile
  Dim r as new JSONItem
  if textArea1.text &lt;&gt; "" then r.value( "text" ) = textArea1.text
  Return r
End Function</pre>
<p>It&#8217;s important to know that if you&#8217;re writing Auto Save files, this is the place to do so. Once Window Restoration is properly configured, the window will never receive the &#8220;CancelClose&#8221; or &#8220;Close&#8221; events. Consider this the last place to save the user data.</p>
<p>Modify the Save routine of the window, to store the file into the Window, this is done by using the window.folderitem property.</p>
<pre>me.folderitem = f</pre>
<p><strong>Note</strong>: This is one of the key elements, without this the Window Restoration will not work correctly. The folderitem must be attached to the Window using this method.</p>
<p>Modify your file open routine to also use this property.</p>
<p>3. Now we need to alter the App object.<br />
In the &#8220;CancelClose&#8221; event of the &#8220;App&#8221; Object, add the code to store the open windows.</p>
<pre>Function CancelClose() As Boolean
<strong>OWWindowRestoration.storeOpenWindows</strong>
End Function</pre>
<p><strong>Note</strong>: Once this line is executed, no more code will be executed after it, nor will the application&#8217;s &#8220;Close&#8221;, window &#8220;CancelClose&#8221; and &#8220;Close&#8221; events will not fire.</p>
<p>4. The next step is to create a subclass of the &#8220;OWWindowRestoration&#8221; class, name this class something appropriate (for &#8220;My Text Editor&#8221;, I used the name &#8220;MTERestoration&#8221; ).</p>
<p>Add the event &#8220;windowByClassIdentifier&#8221; and in here is where we create a new instance of our window when requested. Earlier on, I returned &#8220;documentWindow&#8221; from the Window&#8217;s classIdentifer method.</p>
<pre>Function windowByClassIdentifier(classIdentifier as string) As window
  select case classIdentifier
  case "documentWindow"
    return new documentWindow
  end select
End Function</pre>
<p>5. Back to the &#8220;Open&#8221; event of the &#8220;App&#8221; and we ask our subclass to restore windows. For example, this app uses the following code.</p>
<pre>Sub Open()
  // --- Initiate the Recent Items Menu.
  OWRecentItems.installRecentMenu( fileMenu, 2 )
  // --- Initate Window Restoration.
<strong>  Dim nwrc as new MTERestoration
</strong>End Sub</pre>
<p>In order to test this, make sure that &#8220;Close windows when quitting an app&#8221; is unchecked, in the &#8220;General&#8221; section of &#8220;System Preferences&#8221;.</p>
<p>Now run the application, leave some windows open, quit the application and re-launch it&#8230;</p>
<p>6. Cleaning up<br />
In the final step, we need to restore window positions for files that were auto re-loaded (not just data that is stored). This is done by adding the following line to your file open routine.</p>
<pre>OWWindowRestoration.restoreWindowBounds( myNewWindow, fileToOpen )</pre>
<p>Replace &#8220;MyNewWindow&#8221; with the new instance of your window and &#8220;fileToOpen&#8221; with the file that was opened by the routine. Below is how it&#8217;s used in &#8220;My Text Editor&#8221;.</p>
<pre>Sub OpenDocument(item As FolderItem)
  Dim theText as string
  try
    Dim tis as textInputStream = textInputStream.open( item )
    if tis &lt;&gt; nil then
      theText = tis.readAll
      tis.close
      Dim ndw as new documentWindow
      ndw.TextArea1.text = theText
      ndw.contentsChanged = false
      ndw.folderitem = item
      OWRecentItems.addToRecentMenu( item )
<strong>      OWWindowRestoration.restoreWindowBounds( ndw, item )
</strong>      ndw.show
    end if
  catch err as IOException
    MsgBox "Unable to open the file """ + item.name + """." + EndOfLine + endOfLine + err.message
  End try
End Sub</pre>
<p>You may have noticed that your Xojo application is also creating new blank windows, which may be undesirable. This is can be solved by adding a property to the &#8220;App&#8221; class, name it &#8220;blockFirstNewWindow&#8221; and make it a boolean. Update the &#8220;NewDocument&#8221; event to use this new property.</p>
<pre>Sub NewDocument()
  if blockFirstNewWindow = false then
    Dim ndw as new documentWindow
    ndw.show
  else
    blockFirstNewWindow = false
  end if
End Sub</pre>
<p>Switch back to the &#8220;Open&#8221; event and add a line of code to set that property to the result of the window restoration code.</p>
<pre>Sub Open()
  // --- Initiate the Recent Items Menu.
  OWRecentItems.installRecentMenu( fileMenu, 2 )
  // --- Initate Window Restoration.
  Dim nwrc as new MTERestoration
<strong>  blockFirstNewWindow = nwrc.restored
</strong>End Sub</pre>
<p>Now, if you run the project, create some documents, open some, save others, then quit and re-launch, your app should restore the open documents as they were when the application was quit.</p>
<h2><strong>Benefits of using this code</strong></h2>
<p>Apart from solving some App Sandbox issues, you&#8217;ll also get some additional functionality for free.</p>
<ul>
<li>Using the Apple Recent Item system, recent documents are also available from the dock menu.</li>
<li>The Apple Recent Item system is compatible with both the Sandboxed application and unsandboxed (while everything else is not). Users of either version can swap between the two and still be able to use the Recent Items.</li>
<li>Using the Window Restoration system will make an application follow and behave more consistently with other applications.</li>
<li>The Window Restoration system will also add the file icon to the Window titlebar, and if the user control clicks on the file icon, they can see where on the disk the file is located.</li>
</ul>
<h2><strong>What&#8217;s included in the Sandbox Kit</strong></h2>
<ul>
<li>OWRecentItems; Used to implement a Sandbox Safe Recent Items menu</li>
<li>OWWindowRestoration; The Window Restoration handler</li>
<li>OWRestorableWindow; A Class Interface adding the functions for Window Restoration</li>
<li>OW_Sandbox_Kit; A shared module that the Sandbox Kit object require</li>
<li>OWAppleScript; The preferred method of executing Apple Scripts from within a Sandboxed application</li>
<li>OWBookmark; A last resort function for storing references to files, use this only if OWRecentItems &amp; OWWindowRestoration cannot solve the issue</li>
<li>SSBToken; Used by the OWBookmark class to ensure access to a referenced file is closed properly</li>
<li>OWShell; A Shell subclass that can also use NSTask, the only way to launch embedded &#8220;Helper&#8221; applications within a Sandboxed application</li>
</ul>
<h2><strong>How to get the Sandbox Kit</strong></h2>
<p>The Sandbox Kit is sold via the <a href="http://www.ohanaware.com/sandboxkit/">Ohanaware web site</a> for $99.99.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
