Windows Printing Broken in Xojo R4

We’ve done a lot more testing with Shorts and R4.1 this week.  Wow.  Where to begin.  I guess the first thing to say is if you need to print in Windows stick with Xojo Release 3 for now.  R4, with its switch to Direct2D has completely messed up printing.

Using Shorts, and Xojo R3 this is what a normal print looks like.  (Forget about the colors and stuff, I’m testing things out and the ugly colored blocks help).  Looks like it should:

Exact same code in 2016 R4.1 and this is what it looks like.  Note:  the picture makes it worse than it is, it’s not slanted like that on the page, my camera angle is just weird.  But, you can clearly see that while the lines and rectangles printed properly, there’s no text!

It’s obvious that the Direct2D from GDI+ in R4 were not properly tested.  Part of that is on us, the beta test community, but it seems, to me at least, that Xojo didn’t do enough vetting themselves.

The good news is that the Shorts display works fine as well the output to PDF.  So if you don’t actually print directly from your Shorts application you’ll be okay.

I expect better of Xojo.

Xojo 2016 R4.1

Xojo 2016 R4.1 was released today.  The 4.1 release mostly contains Windows fixes related to the switch in drawing engines.  Gone is GDI Plus and Direct2D is now used instead.

GDI Plus wasn’t only deprecated but removed so that is a little different than most Xojo releases.  It is highly recommend that you test your Windows apps thoroughly before release.  It’s also recommended that you test your 64 bit builds as well since it’s a newer framework and has received less attention.  Just today I found out that SegmentedControls don’t draw right in Windows 64 bit builds.  Feedback id 46268

As always, take a look at the full release notes for pertinent information.

Monkeybread Software released version 16.5 of their plugins today http://www.mbsplugins.de/archive/2016-12-12/MBS_Xojo__Real_Studio_plug-ins and is recommended for all users.  Einhugur http://www.einhugur.com has released a number of updated plugins for R4 and has indicated that more are updates are coming.

Xojo 2016 R4 (The Xojo IDE I Always Needed)

Xojo 2016 Release 4 hit the web today.  In many respects this is the IDE that I wish had been released three and a half years ago as a few of the more insidious features bugs have been fixed.  And, as usual, there is a plethora of new features, changes and bug fixes that make R4 a must-have release.  Let’s get to it!

First, the tabs in the IDE now work like most of us want them too.  Open an object, say a window, into a new tab.  By default this tab is locked and it will stay in that window.  The small back and forward arrows at the top of the navigator are not even visible.  To ‘use’ the tab for another object click on the lock symbol in the tab to unlock it.  It might take a click on the name of the Window at the top of the navigator but the arrows come back and you can navigate back to the project stack.  Or, as I tend to do just close the tab and open another object.

In a somewhat related fix, the Back and Forward arrows in the toolbar now work properly per tab.  As you navigate through an object, choosing the back button remembers where you’ve been in that object.  In previous releases the Back and Forward arrows seemed to be a exercise in random number theory as it seemed to go to locations in the IDE I had never visited.  There might have been a pattern to it but usually I just never bothered to use the buttons.

If nothing else, these two changes are a compelling reason to use R4.  The locked tab feature and the back/forward buttons never worked the way I wanted to use them.  It is sad that it took this long to get it right.

The Navigator filter received some updates too.  Now you can use type’s like ‘type:property’ will only find properties.  ‘Type:shared%’ will only find anything that’s shared.  It’s pretty powerful and I recommend playing with it a bit to get used to it.

There is now a contextual menu item for Pictures to convert them to an Image Set and put the selected picture in the first image slot.  This eliminates multiple steps with the mouse and is a very useful addition.

For Windows users there has been some changes.  UseGDIPlus has been deprecated and is replaced with Direct2D drawing.  Make sure to test any of your Windows apps that use a lot of drawing in a graphics object as things might have changed a little with the switch to Direct2D.

New Picture only creates 32 bit depth pictures and this now matches what the other target platforms do by default.  This also means that NewPicture method is deprecated.  HiDPI builds for Windows are no longer beta.

Xojo cloud received a major update.  Uploads to Xojo Cloud are now much faster.  Libraries are now cached by the server so only code and image resources are uploaded.  For example, in R3 one of our largest web projects took over three minutes to upload.  The first time I used R4 it took a little over two minutes (it was caching new libraries) but every time I uploaded the project thereafter it took a mere 44 seconds to upload.  That’s a significant time savings!

The WebListbox now has a CellPicture method that allows you to assign a WebPicture to it.  The WebSession shutdown mechanism has been refactored to help keep sessions from getting stuck and not quitting.  Exceptions in Websession.close no longer keep subsequent sessions from closing.

Due to changes, especially on the Windows side, you might want to check on updated versions of your plugins.  MonkeyBread software recommends version 16.5, or newer with R4.  16.5 is currently in preview and they expect to release it next week.  Einhugur has a couple of updated plugins for Release 4 as well.

As with any major Xojo release, you should test your projects thoroughly before releasing anything into the wild.  The beta program catches a lot of bugs but it’s not a perfect program.  One such bug that got through is an Application crash when using the Super button in the Inspector.  Until a fix is released type the class super by hand rather than using the dialog.

R4 is a small, but significant release.  It moves Windows forward using Direct2D drawing, and Xojo Cloud is significantly faster for deployment, but perhaps the changes to the IDE are the most important.  The Navigator is not nearly as horrible as it was in previous releases and, in my opinion, makes it as useful, now, as the Real Studio IDE.  If you are still using Real Studio I recommend checking out R4 as I think it takes most of the pain out of using Xojo.

What’s new, changed, or fixed, that makes you happy?

Beta Program Incentives

I’ve been part of the beta program for over a decade.  Many cycles I bemoan the fact that I’ve found very little time to real testing before its released.  That’s bad and I suspect many of my fellow members of the beta program feel much the same way.

The incentive to be in the beta program is simple.  See the new features first and help find bugs and along the and way offer some advice and guidance on how new features work.  And in general, make the product better.  That is an incentive and it’s a laudable one but many cycles that’s not enough.  Perhaps there’s a way to give us more incentives.

I fight with finding time to beta test.  I’m often working under deadlines with real projects that I can’t afford to release a version with the beta.  There’s no way around that.  Perhaps there is something that Xojo can do to make it worth my while to do more testing.

What if Xojo gave a percentage off, say 5%, off a license purchase (either new or upgrade) if I hit some threshold of credible bug reporting?  I spend a lot of money on licenses so that might be a good incentive for me (or at least one of my developers) to work with the beta on a regular basis.

Obviously there would need to be ground rules to prevent abuse.  Bug reports must be well defined with demonstrable repeatability, example project, video, etc. to make sure there’s not a flood of crap.  After it’s reviewed by a Xojo engineer that bug report gets applied to our account.  Then when it comes time for renewal we can apply the discount we’ve earned.  Perhaps that means a percentage point for every five credible bug reports (not feature requests) during a release cycle with a maximum percentage.

Make a game of it.  Reward outstanding bug reporters with recognition.  Make the participant list public so everyone is aware that so-and-so is participating and finding a lot of bugs.  Maybe reward the yearly ‘winner’ with free or discounted admission to XDC.  As a person always on the lookout for new Xojo talent this might be a good way find someone as well as having a little fun with it.

I see this as a way to get new users involved.  For me a license is no big deal but for some it’s huge and if that user has extra time (or at least more than me) that will give them extra incentive to submit bug reports.

I get it it.  The beta program should be a win-win for Xojo and us users.  The reality is that I feel like we’re free labor to a certain extent.  I don’t feel much love from Xojo even though I *know* they do appreciate whatever beta testing we do.  Offer some discounts, make it a game.  Do something to entice us!

What are your thoughts?

The Xojo Community is Awesome

Have I told you how much I love the Xojo community?  I’ve been part of it for fifteen years and I’ve met hundreds of Xojo developers at developers conferences and probably exchanged emails with thousands more.  I am amazed at how much this community helps each other and I wish there was a way to promote that as a key feature of the product.  It’s a big deal.  Really!

If you’re just starting out using Xojo know that there are a bunch of people, myself included, that are willing to help out, if we can, on your journey.  Programming is hard.  Well, I don’t think it’s hard because I’ve been doing it for so long, but it is complex at times and that makes it hard.  Just ask your question in the Xojo forums and you’ll almost always get an answer within hours.

Even Xojo pros, such as myself, have need of help.  Xojo covers Mac, Windows, Linux desktop, console, and web apps.  It does iOS apps for iPhone and iPad.  It now does Raspberry Pi for heavens sake!  It works with dozens of different databases.  There is simply no way any one person is going to know everything there is to know about Xojo.  It just can’t happen.  So yes, I go to the forums, all the time, and ask for help.

Just the other day I asked for some help with WooCommerce.  Not Xojo related, really, but certainly related to a project we’re working on for a client.  Within a few hours I had half a dozen developers private message me saying they might be able to help.  Subsequent contact narrowed that list down a bit but the point is that I have probably shaved off several days worth of work simply by asking for advice.

I am biased towards Xojo, naturally, as it’s been my primary development language for fifteen years.  I think I’d be hard pressed to find such a friendly community.  I call many on the forums my friends even though I’ve never physically met them.  The few that I’ve met in person have lived up to their forum reputations and are really friends for life.

So maybe this is my belated Thanksgiving post.  I am thankful that so many years ago I jumped both feet first into the tool.  I asked questions – many of the silly and redundant.  I became more proficient and then made another jump to start blogging about it, making products for other developers, and training the next generation of developers.

So if you are in need of a cross-platform development tool I highly recommend Xojo.  It ain’t perfect but no development tool is.  If you jump in I think you’ll love the community.  I know I do.

What say you fellow Xojo developers?

Iconographer Review

iconographerscreensnapz001

If you’ve spent any amount of time making cross-platform applications in Xojo you probably hate icons as much as I do.  I’m no graphic artist and because of this I’ve paid good money for several icon sets.  These icon set are fine but they’re pretty basic/generic and don’t tend to look right in macOS, Windows 8 and above, or even iOS.  And that’s just for application icons.  Making icons for documents, disks, folders, and the like, are just as big a pain to make.  Each platform has several different styles and getting it right is awful.

Ohanaware introduced Iconographer last week.  This is the tool I’ve been waiting for!  Iconographer lets you easily make icons that are consistent for their target platforms all while keeping the overall identity intact.  Not having to use a high-end graphic tool, like PhotoShop is worth it to a developer geek like me.

Using it is easy.  Simply drag your starting image into the editor window and start manipulating it.  At the top left of the window there is an expanding toolbar, for lack of a better word, that lets you pick the Icon Type:  Application, Folder, Disk, Document, and Web Icon.  Below that you have options for the target.  Depending upon the Icon Type you have the option to pick the Target.  For Application you have macOS, Windows, and iOS but for the Folder Target you only have macOS and Windows.

screen-shot-2016-11-10-at-7-09-32-pmTo the right of the drawing canvas you can pick the style of the icon.  For macOS you have Blank, Circular, Rounded Rectangle, Tilted, Rounded Square, and Plugin.  For Windows you have Blank, Windows Tile, and Use Different Application Icon.  Similar styles are there for iOS.

Below the Styles is the Layers list that lists the layers in the selected Style.  I will be honest, I had issues figuring out how to manipulate the layers.  You can add layers using the ‘+ Layer’ button where you can add Shapes, Images, and Text.

Adding Text also was problematic for me.  Once I added a Text object I couldn’t always select it until I had rotated it and then reset it to zero.  Then, if I had two text objects I never was able to edit and change the text of the first one.  I chalk this up to possibly not understanding what the shared label is.  At times I also had a weird purple selection rectangle that I was never able to get rid of.
At the bottom of the drawing canvas is, perhaps, one of the more useful features of Iconographer.  The Eye lets you select from a number of environments to preview your icon in an About Window, the macOS dock, and even the Mac App Store, to name a few.  This is a great way to preview your app in an actual environment and lets you make decisions while in the application instead of having to leave and use a graphics application.

screen-shot-2016-11-10-at-7-09-49-pmOnce you’re done you can build your icons.  It takes the currently selected Icon Type and all of the selected Targets and outputs them into the directory of your choice.  For macOS it will create an icns file and for Windows an ico file.  It really is that easy.  It would be nice to have the ability to export SVG format too.  If you’re creating a suite of icons, say for application, document, and disk, you have to do it in several steps but that I suspect that most developers won’t have an issue with that.

Iconographer is a must have for any cross-platform developer.  It’s ability to make consistent application and document icons for macOS, Windows, web, and iOS easily and quickly make this an invaluable tool.

Iconographer works on macOS X 10.10 and better.  It normally costs $19.99 but Ohanaware has an introductory price of $9.99.  More information can be found at http://ohanaware.com/iconographer/.

A Short Video is Worth a Hundred Emails

One of the ‘joys’ of consulting is the language difference between developers and the customer.  Developers have a ‘language’ and clients have a completely different ‘language’.  A perfect example is when a customer says ‘the application crashed’ and trying to interpret that.  I usually end of asking, did this crash mean a dialog appeared saying something happened (an exception was caught), or that the app just went ‘poof’ and disappeared (something way more serious).  For Xojo developers those two definitions of ‘crash’ mean totally different things.  Those nuances mean nothing to the customer.

Email is a notoriously bad way to communicate.  It’s easy miss details, or worse yet, misconstrue intention.  It’s easy to read anger, annoyance, or <insert feeling here>, that the sender did not imply.

We’ve had instances where we go round and round with a client via email on some detail when a simple phone call would have solved the issue within five minutes.  I know it’s not ‘modern’ but sometimes a simple phone call solves a lot of issues.

More recently I’ve had a client say that a sequence was wrong and described it with some detail.  I took a stab at the fix and then gave them another build for testing.  Still had issues.  The problem was that they’re not describing what’s really happening – they’re using customer language when I needed developer language.  The solution was a simple video.

Most people have a smart phone that can take video.  In my case, once I knew what the customer was really doing it was a simple fix because I could see what they were really doing.

Voice calls are important, videos are important, and doing screen sharing is becoming another important factor.  Think about using any of these tools before sending yet another email.

Xojo:  The Best Secret in the Programming Industry Part 2

In Part 1 of Xojo:  The Best Secret in the Programming Industry we talked about some of the capabilities of Xojo and why it’s such a great software development tool.  We finished it with the question on why isn’t Xojo more well known?  If it’s such a good development tool why doesn’t everyone know about it?  There are no easy answers to this but I’ll identify some of areas of concern.

Entrenched IT Departments

The first issue is the BASIC language.  Xojo uses a form of the basic language.  However, it’s nothing like the gwbasic many programmers learned in high school.  It is a highly evolved, object-oriented language that happens to use a form of basic as the syntax.  Unlike other forms of basic, Xojo compiles down into a self contained executable needing no outside libraries.  It is not an interpreted language.  It’s not a ‘toy’ language.

Yet, the stigma of Basic still persists.  I think in many cases it’s because Basic is very approachable for new developers.  Many of these developers are not programmers by education and are coming at the language to get something done.  If you’re trying to introduce Xojo to your corporate IT department filled with programmers, that have spent thousands of dollars on their eduction, Xojo doesn’t fit any of the checkboxes of any of the current, hot, and yet soon-to-be-obsolete development tools they’ve learned.

From my own personal experience we had a Xojo app working as a prototype, proof-of-concept application, for a big Fortune 100 company.  Their IT department laughed at it and then turned around and told the project owner that it would take them TWO YEARS to start working it (they were busy after all) and they estimated another two years of development time.  Um…with Xojo our small five person team spent under a year on it starting from scratch and got it mostly working!  But that didn’t matter.  Never underestimate the power of entrenched IT departments.

And, much like in the Visual Basic 6 era, just because you can create a very useful application with the tool doesn’t mean that it is a great application that adheres to all of the modern principles.  Simply put, just because it’s easy doesn’t mean anybody can magically create a great application.  Software development takes some skill and some discipline to make a good application and sometimes beginning programmers don’t know any better (regardless of platform).

 

Who Is Their Market?

Honestly, I have no idea who Xojo markets to.  I’ve used the term hobbyist in the past but Xojo prefers the term ‘Citizen Developer’.  Whatever.  I think we’re talking about the same crowd.  They’re people that aren’t necessarily getting paid to develop software or it’s not their primary function in their job.  While, I don’t have a problem with getting more of these types of people into the community but what I really want are the enterprise users.

The trick in either the citizen or enterprise developer is how do you reach them?  In years past you could do some advertising in magazines but that market has gone to the web so it’s much harder to identify and advertise.  What is Xamarin and the other cross platform tools doing to advertise?

Here are a few ideas:  What about sponsoring a podcast or webcast that business owners or developers listen to?  It seems like there’s a podcast for everything these days but the trick is to identify a podcast that might have a lot of listeners that fit the ‘citizen developer’ model.

The Raspberry Pi has some interesting possibilities and, I think, fits with Xojo very well.  When Remote Debugging is completed this makes Xojo an excellent choice for the platform.  I would think there is a number of marketing opportunities that open up from magazines to podcasts to websites that do nothing but talk about the mini computer.  I imagine a ‘show us your Xojo Raspberry Pi application’ contest.

One of my new developers discovered Xojo as part of a software bundle from a number of years ago.  It’s a long gestation period but giving out a free single platform license every couple of years does seem to grow the user base.  This is anecdotal evidence, of course, but it makes sense to me.  When the programming industry got started what you used at work became what you used at home.  The flip side could also be true:  if you start with a really good tool as a youngster you might end up using it later to get stuff done.

Many of our clients ask about Xojo and ask if I think they’ll be around in five years.  For a company that’s been around for twenty years already that seems like a silly question but perhaps Xojo needs to use that as a marketing point.  They’ve been around longer than most of the current, hot, software development languages and tools.  I doubt they’re going away any time soon.

Third Party Tools

This one is near and dear to my heart because this issue has been around since I started with Xojo fifteen years ago.  The Xojo community is small and there is not a big community of developers writing add-ons for it.  There are tools for almost anything you want that range from free to commercially supported.  The difference is that not all third party tools are supported equally and some developers aren’t exactly quick to support their products.  Some developers look at Xojo and are scared away by the lack of third party components.

On the flip side, developers don’t write add-ons for Xojo because the market is small.  We, BKeeney Software, have developed several components and can tell you that we couldn’t survive on component sales – a vast majority of our income is from consulting.  We cheat and spend a lot of time on those components that we use ourselves.  Either way we win.  It’s either a competitive edge when bidding on projects or we make a little extra cash with sales to other developers.

I don’t feel that Xojo does a very good job of promoting third party products.  They do sell some of those products through their web store but there are no previews, no demo’s, screenshots, or anything, to tell you how good those products are.  There’s no way to link to the developers website, how long the product has been around, or when it was last updated.

I would love to get my products in front of more eyeballs.  The store in its current form isn’t doing it.  I would also gladly pay to promote some of my products (like our reporting tool) that I think many Xojo developers might find useful.  Even better, I’d love to create a lite, free version, that could be bundled with Xojo.  Sure, it’s a bit more work right now, but in six months or year, some of the people using the lite version might buy the full version.

Currently Xojo has the ability to use plugins written in C++ and there are some incredibly useful plugins out there.  We own most of them because they save time and money on many projects.  Xojo has announced that sometime in 2017 users will have the ability to create plugins within the IDE using Xojo itself.  This has the potential of really growing the market but until it’s in our hands we won’t know for sure.  This is a critical component in 2017 for Xojo to help foster the third party market.  Hopefully Xojo helps promote them too in such a way that’s a win-win for both Xojo and the developer.

No Books/Lack of Training Material

One issue that some people have with adopting Xojo is that you can’t go to Amazon and find a Xojo book.  There are some older REALbasic and Real Studio books but mostly they’re out of date (though still valid for much of the language).  We, BKeeney Software, offer video training and we have about 65 hours of video that has some Real Studio material in it as well.  The name change to Xojo from Real Studio and REALbasic hasn’t help them in that regard and it will get better over time.

Another issue is that Xojo is on a ninety day release cycle.  It means that if I write a book that is completely valid today in three months there is a good chance part of it becomes obsolete.  Every ninety days Xojo adds something, changes something, and fixes bugs.  There is no way a printed book ever stays up to date.

If you’re looking for written material I’d look at www.xojolibrary.com as the topics tend to be narrowly focused on a specific topic.

I’ve thought about writing a book on database programming using Xojo.  I even have an outline and some chapters fleshed out complete with code examples.  But, since I know the new Xojo framework changes many aspects of Xojo it’s not worth it to complete the book.  Why write it now and have to rewrite most of it when the new framework comes out?  The community is small and the number of people that would be willing to write a book is even smaller.  I think to get a book into Amazon and other books sellers Xojo is going to have to commission a book to give an author an incentive to complete it.

Competitive Advantage/Keep it Secret!

There are some people that are using Xojo and making a great living selling their Xojo-made applications.  They’re just not vocal about it.  I’ve heard clients tell me they don’t want their competitors to know they use Xojo because they feel it’s a ‘competitive advantage’.  It takes them about a quarter of the time to put out a new version that their competitor (who is using more ‘traditional’ programming tools) can do.  That means more sales to them.

I get it.  Remember my story about the working prototype that the IT department laughed at?  It’s five years later and to the best of my knowledge the project was never started.  Imagine how they’d be feeling now if that Xojo prototype project had gone into product?  The project owner would be a flipping hero for solving the problem quickly for far less money than they could do it internally.

They’re not Apple or Microsoft

Xcode is the standard bearer for macOS and iOS development.  Apple is tight lipped on many of their new technologies so a third party developer like Xojo finds out at the same time the public does on new API’s and technologies.  Likewise, Visual Studio is Microsoft’s preferred development tool and while they’re not as forward thinking and don’t obsolete older technologies nearly as much as Apple they do introduce new technologies at a fast pace.  There is simply no way for Xojo to keep up with either of them.

This might be one of the biggest drawbacks to Xojo.  Because they have to be reactive to the whims of Apple and Microsoft they are always late to the party.  It took Xojo a few months to quickly deprecate QuickTime from Xojo because Apple deprecated it and shortly afterwards started rejecting applications from the Mac App Store that used QuickTime.  I think they did admirably in that situation but what’s the next bombshell?  That the Mac lineup is moving to the ARM processor?

At their developers conference last month they told us about a new feature called Interops that, at least for macOS and iOS, and Linux, make future platform changes easier to transition to.  However, there’s no guarantee that something else won’t change in the future that causes Xojo to play major catch up.

Conclusions

It’s truly a shame that Xojo isn’t more well known.  It’s a great tool that accomplishes a lot of things that other development tools don’t even try to do.  I think the community is getting larger and one would hope that there is some tipping point where Xojo becomes synonymous with cross-platform programming.  It has some extremely important deadlines to meet in 2017 to keep the platform moving forward.

Did I miss any reasons why Xojo isn’t more well known?

Xojo: the Best Secret in the Programming Industry Part 1

Xojo turns twenty years old in 2016.  That’s an extraordinary feat not only for a business but even more as a development tool.  The simple fact is that 90% of all businesses in the United States fail within two years.  There’s a significant number of the remaining businesses that fail two years after that.  Xojo has beaten the odds from a business standpoint.

When it comes to software development tools and languages it seems that every time you turn around there is another programming language of the moment that is the hot, hot, HOT thing that everyone has to learn and then two years later it is relegated to old, has been, technology.  Each one promises to make software development easier and faster and in most cases they solve A problem but not necessarily all problems.  In reality, every development tool still requires a competent programmer to do some work – you get nothing for free.

Xojo has been renamed multiple times first as REALbasic and then as Real Studio but in each name iteration it’s been the same product:  a rapid application development platform and language that creates compiled desktop, console, and web applications native for Mac OS X, Windows, and Linux.  Not only in 32-bit but also for 64-bit.  For a vast majority of users it really is as simple as checking a box captioned “Windows” to create a fully functioning Windows application that works the same as the one you’ve create on the Mac or in Linux.

Xojo started out twenty years ago as CrossBasic before Real Software Inc purchased the rights.  It was modeled after the very successful Microsoft Visual Basic and those roots are still visible today.  Xojo initially ran only on Macintosh but within a few years it ran on Windows.  It now runs on Linux too.

Xojo has transitioned from 68k Macintosh desktop apps, to PowerPC apps, to Carbon apps, and finally to Cocoa apps.  Recently they transitioned from 32-bit applications to 64-bit applications for Mac OS X, Windows, and Linux and introduced Linux ARM as a new target.  This transition is still in progress (the IDE is still 32-bit and remote debugging isn’t available for 64-bit yet) and they’ve announce more transitions on the Windows side to start moving away from the venerable Win32 framework for some things.

Besides desktop apps Xojo also creates console and web apps.  Web apps are a different beast as they expect to keep a constant connection between the browser and application on the server.  This makes web apps work a lot like desktops apps and eliminates a host of typical web app issues.  These web apps can be deployed as either cgi applications or as standalone apps.  The cgi applications work with Apache or IIS servers.  Standalone builds require no server and act as their own server which makes them very easy to deploy to any Mac OS X, Windows, and Linux machine.  Much of the code used in a desktop app is reusable for web apps.

A few years ago Xojo introduced the ability to create iOS applications which introduced yet another target.  iOS transitioned quickly from 32-bit to 64-bit after one of Apples famous ‘deprecations’.  iOS built under Xojo works with the iOS Simulator that comes with Xcode to accomplish remote debugging.  Just a few weeks ago Xojo announced that in late 2017 Android will become another target.

Xojo is an integrated development editor, or IDE, that allows a developer from within one application, to write all the code, layout all the user interface, and include any resources necessary for it to work.  It has a series of built-in editors that mostly mean you’ll never have to leave the Xojo IDE.  Working on desktop, web, console, or iOS projects expose the available libraries and controls for those targets.

Xojo lets you compile final executables or do remote debugging to any of the supported platforms.  So while working on Mac OS X I can remote debug an application in Windows running on another machine on the same network or in a VM environment.  While remote debugging, any exceptions that occur in code are revealed in the IDE and users can view variable values and see the call stack.

These things are nothing spectacular by themselves because many development tools can do them.  What makes Xojo remarkable is that is does this regardless of what platform you develop on.  A Windows developer, Mac OS X developer, and a Linux developer get the same capabilities and can deploy to any of the other platforms.  The only exception is that to do iOS you must be using a Macintosh and have Xcode.

Like any tool it has its detractors but it’s managed to transition, quite quickly at times, due to sudden announcements from Apple (who thought they’d move away from PPC?  Or iOS apps would be 64 bit that quickly?) and from the inevitable changes from Microsoft, and the sometimes daily changes in Linux distributions.  Some users complain about the number of bugs introduced in new releases or that bugs sometimes go years without being fixed.  It’s my opinion, though, that every developer complains about those things in their development tool of choice.  Xojo averages a release every 90 days (with the occasional dot release) and always add some new features and fixes many bugs.

The Xojo community is incredibly welcoming to new people.  There is not a lot of condescension given to new users that ask simple questions on the Xojo forums.  Unlike some other venues there is not a lot of vitriol going on.  The Xojo engineers frequent the forums and answer questions.

Since Xojo has lasted twenty years they’ve already beaten the odds.  There is every indication that they’ll be around many more years.  They are no Apple, Google, or Microsoft, but yet they keep churning out new versions that attempt to keep up with the ever changing development landscape with what many would consider a very lean development staff.  Most of the development staff are former users so there is a high level of familiarity with the needs of the user base.

So why don’t more developers know about Xojo?  With the features and history described above it seems like everyone show know what Xojo can do for them.  That doesn’t seem to be the case so why not?  In part 2 we’ll examine some of those reasons.

Xojo Musings

iOS 64 bit builds was introduced in Xojo 2015 R1.  Raspberry Pi support and 64 bit builds for Xojo desktop, web, and console apps was released in Xojo R3 in October 2015.  iOS, Raspberry Pi, and the 64 bit builds are all using the LLVM compiler.  The lack of a 64 bit debugger really holds back adoption of these new platforms in Xojo, in my opinion.

I’ve spent the last month working on a couple of different Raspberry Pi projects.  One was for a client and one was for fun.  In both cases the projects weren’t exceptionally tricky or complex but they took way longer than necessary since you can’t ’see’ anything while it’s running so I was is forced to use ‘old-school’ debugging methods with log files, message boxes, console messages, and whatnot.  Regardless, it’s not fun using the Raspberry Pi with Xojo.

It’s obvious that the move to 64 bit is much harder than they anticipated.  If it was easy the Xojo IDE would already be 64 bit by now – a year after 64 bit was released.

As a company we’ve officially held off on supporting 64 bit builds of our products.  Both Shorts and Formatted Text Control use XojoScript which isn’t 64 bit compatible yet.  XojoScript can be stripped from both products but it’s not an ideal situation and one that seems pointless since 64 bit is coming – eventually.

Xojo 2016 R3 was released a few weeks ago so the chances of R4 coming out in October is pretty slim.  The Xojo Developers Conference (XDC) is coming up in two weeks so I’m sure everyone at Xojo is gearing up for it.  And since they are all at the conference there is not much chance of real work getting done that week.  Good for those attending but bad for those anxiously awaiting new features and bug fixes.

In the past two and half years Xojo has added two new platforms (iOS and Raspberry Pi not to mention 64 bit builds) and not added any permanent staff (that I’m aware of).  Xojo does amazing stuff with the limited staff it has.  While they swear it doesn’t take away from their work I have to call them on it.  Two new platforms with initial development cost, debugging time, and the subsequent bug reports from users HAS to slow them down on other things.  It simply does.

I’m not doing their level of work but we manage five employees each with their own set of projects.  To put one person on ‘project x’ when they’re already working on ‘project y’ means that ‘project y’ gets delayed.  Since 2016 R2 was a big iOS release one has to wonder what was delayed to get those features added (and some would argue they were a year late anyway but that’s a different post).

I’m hoping to see a 64 bit debugger at XDC but I’d bet on a 64 bit IDE first.  This makes sense because they need time to work with it internally before we see it.  This will mean that XojoScript and whatever else was holding 64 bit back has been figure out.

Other things I predict for XDC:

Android.  Don’t get me wrong, I want Android because I feel it’s the only way for Xojo to grow into the mobile space, but if it means that the same staff are now adding yet one more platform it’s not worth it.  I’d rather have the big ticket items they’ve already said are coming than yet another platform that takes precious time away from what they already have. Likelihood:  sadly, pretty good given a recent Xojo blog post

Windows framework changes.  It’s been a while since Windows has received significant love.  We know they’ve been talking about using part of the .NET framework in Windows and now that Windows XP support was dropped this might become a reality.  The only question is what does it give us and when do we get it?  Likelihood:  Good

New framework additions.  The Xojo framework has been slow to gain momentum in the community.  Part of it is bugs those brave enough to use it have discovered and part of it is that it’s incomplete.  I’m not sure how much of the new framework is used in new parts of the IDE but it seems like this would become a bigger part of their mission as time goes on.    Likelihood:  Good

New database frameworks.  In iOS we’re already seeing the potential changes coming where a database error throws an exception.  This is a good change but will require a lot of patience on our part to get used to.  Many XDC’s ago Xojo showed off ORM classes (a lot like ActiveRecord but built into the IDE) for SQLite that looked interesting so it will be nice to see if that’s gone anywhere.  Prepared Statements are now built into the SQLExecute and SQLSelect commands but they’ve also screwed up (read removed) dynamic queries with the lack of BindType and BindValues so I’m looking for a new solution in this front.  Likelihood:  Maybe

Libraries with Xojo.  This was brought up last year at XDC so I don’t expect to see a lot of news about it but I do expect an update.  It would be really nice to create libraries using Xojo instead of using plugins or encrypting source code.  Likelihood:  Mention only

Plugin Management.  The simple fact of the matter is that many Xojo developers (myself included) use plugins.  For many it’s the simplest way of doing things and between Monkeybread Software and Einhugur they offer a ton of functionality that is not built into Xojo.  It would be nice to have the IDE manage them so you can have multiple versions of a plugin installed and only some of them activated on a per project basis.    Likelihood:  Wishful thinking

I’m sure there will be a surprise or two but honestly I expect methodical, evolutionary changes.  What news do you expect to see from the Xojo Developer Conference?  What would surprise you?