How LiveCode Enables FlipBit Technology and Our KickStarter Project

by Steven Crighton on August 16, 2016 8 comments

Bud Nail recently got in touch to tell us about his environmentally friendly digital display project in LiveCode, a fascinating project that Bud is trying to raise funds for on KickStarter. He has kindly agreed to do a guest blog post to tell us all about the project…

First, just a little bit of background on FlipBit. You can go deeper by visiting our KickStarter page. Recently, I was looking for a project that would keep my intern, Alex, interested as he learns to use design and fabrication tools. I had been mentally designing what might be called a mechanical pixel for many years. Typically, it would come to mind when on a long boring drive with nothing much to look at but trees and roadside signs. I had mentally tested and rejected many approaches for cost and complexity reasons, but at some point I finally focused in on what I thought was probably an optimum design. Alex became my inspiration to finally get the design out of the gray matter and into something tangible.

read more
Steven CrightonHow LiveCode Enables FlipBit Technology and Our KickStarter Project

Updates to LiveCode’s platform support policy

by Peter Brett on July 21, 2016 No comments

Over the last couple of years, it’s been very exciting to see people developing and deploying LiveCode apps on a amazingly wide variety of platforms and operating systems, from Pentium 3 servers running CentOS 5 to retina iMacs running the OS X El Capitan.

Today, we’re updating our policy for platform support to clarify and streamline it.  We’re doing this to:

  • help LiveCode app developers make good “system requirements” recommendations to their users
  • explain which platforms we use to test LiveCode features before making each release
  • make it feasible to provide a very high quality LiveCode Support service by clarifying which platforms are covered by the service

What's a platform?

A platform is a combination of computer hardware and a particular version of a particular operating system environment. For example, “OS X 10.10 x86” is the Yosemite version of OS X running on an Intel-compatible 32-bit processor.

LiveCode supports 5 operating systems at the moment: Windows, Android, Linux, OS X and iOS.  These all have differing vendor support, versioning systems, third-party ecosystems, and uptake by the LiveCode developer and user community.  This means there’s no “one size fits all” support policy that can simply cover them all, so we’ve tailored our new platform support policy to suit each of them. I’ll go through them in turn.

Windows is still the most widely-deployed operating system in the world, and there are more LiveCode developers and end-users using Windows than any other operating system.

LiveCode is supported on Windows when it is running on x86 (32 bit) and x86-64 (64 bit) hardware.

The oldest version of Windows that LiveCode currently supports is Windows XP, which is deployed on approximately 10% of Windows computers.  Microsoft have now dropped all support for both Windows XP and Windows Vista, which is making it increasingly difficult and costly to support LiveCode for those versions of Windows.

In LiveCode 8.2, we will end official support for versions of Windows that are not supported by Microsoft.  This will include ending support for Windows XP and Windows Vista.

Windows platform support information
LiveCode 8.1 LiveCode 8.2
Windows XP Yes No
Windows Vista Yes No
Windows 7 Yes Yes
Windows 8 Yes Yes
Windows 8.1 Yes Yes
Windows 10 Yes Yes

One of the biggest challenges when deciding how to support Linux users is the bewilderingly large variety of different Linux distributions.  Some always have the very latest versions of every program; some only update programs when they have to.  Some distributions are designed to run in a massive cluster in a datacentre, and some are designed for children’s laptops.

We decided to base our Linux support policy on specific versions of specific Linux distributions.  We looked at lots of factors when designing the policy, including the quality of support provided by the distributions, how widely used they are, and their release cycles.  We also looked at the rate of change in Linux development tools and libraries.

For the LiveCode IDE and standalones, we decided to provide official support for the Ubuntu and Fedora distributions.  This includes:

  • the latest release of Ubuntu, and versions of Ubuntu with Long Term Support that have been released in the last 4 years
  • the current and next-to-current releases of Fedora

Because Linux is so widely used for LiveCode Server deployments, we decided to provide official server-only support for Debian and CentOS, two distributions widely used on Linux servers. This includes versions of Debian stable and CentOS that receive official vendor support and were released in the last 4 years.

We will currently only provide official support for x86 (32 bit) and x86-64 (64 bit) Linux.

Linux platform support information
Desktop Server
Ubuntu 16.04 Yes Yes
Ubuntu 14.04 Yes Yes
Fedora 24 Yes Yes
Fedora 23 Yes Yes
Debian 8 (Jessie) No Yes
Debian 7 (Wheezy) No Yes
CentOS 7 No Yes

Android is the most widely-used mobile operating system in the world. Apps built with LiveCode currently run on all versions of Android from 2.3.3 (Gingerbread) onwards.  However, certain features may not be available, depending on the specific version of Android being used and the device on which it’s running.

Currently, we compile LiveCode in a way that lets it run on ARM v6 hardware or newer.

When we were considering which versions of Android should be officially supported, we looked at how widely used different versions of Android and device hardware were used.  Versions of Android older than 4.1 (Jelly Bean), and ARM v6 hardware, are now quite rare.  Dropping support for these older Android devices will allow us to make LiveCode considerably faster, by taking advantage of newer hardware features.

We will drop support for ARM v6 hardware and the oldest versions of Android in LiveCode 8.2.

Note: Official support will be extended to new versions of Android when they are released for general availability.  Preview and beta releases are not officially supported.

Android version support information
LiveCode 8.1 LiveCode 8.2
Gingerbread (2.3.3–2.3.7) Yes No
Ice Cream Sandwich (4.0) Yes No
Jelly Bean (4.1–4.3) Yes Yes
KitKat (4.4) Yes Yes
Lollipop (5.0–5.1) Yes Yes
Marshmallow (6.0) Yes Yes
Android hardware support information
LiveCode 8.1 LiveCode 8.2
ARM v6 Yes No
ARM v7 Yes Yes
ARM v8 (ARM64) Yes Yes

Apple’s MacOS X operating system is very popular with LiveCode users thanks to LiveCode’s HyperTalk ancestry.  It’s also the only operating system that can be used to build iOS apps to run on Apple’s iPhone and iPad devices.

Apple currently provides security updates and other support for MacOS X 10.9 and later, and provides upgrades to newer versions of MacOS for all customers.

In LiveCode 8.2, we will end official support for versions of MacOS that are not officially supported by Apple.

Note: Official support will be extended to new versions of MacOS when Apple releases them for general availability.  Preview and beta releases are not officially supported.

MacOS platform support information
LiveCode 8.1 LiveCode 8.2
Snow Leopard (10.6) Yes No
Lion (10.7) Yes No
Mountain Lion (10.8) Yes No
Mavericks (10.9) Yes Yes
Yosemite (10.10) Yes Yes
El Capitan (10.11) Yes Yes

The iOS operating system is used on Apple’s iPad and iPhone mobile devices.  iOS app development is extremely popular among LiveCode developers.

The Apple App Store only accepts iOS apps if they are compiled with support for one of a few, most recent versions of iOS.  Currently, LiveCode has official support only for these versions of the iOS device operating system.  In the past, however, there has also been official support for much older versions of the iOS simulator (which is included with Apple’s Xcode development environment).

We will continue to officially support all versions of iOS that are supported by the App Store. However, in LiveCode 8.2 we will end official support for older versions of iOS simulator.

Note: Official support will be extended to new versions of iOS when Apple releases them for general availability.  Preview and beta releases are not officially supported.

iOS platform support information
LiveCode 8.1 LiveCode 8.2
iOS 6.1 Simulator No
iOS 7.1 Simulator No
iOS 8.2 Yes Yes
iOS 9.2 Yes Yes
iOS 9.3 Yes Yes

As you can see, LiveCode has official support for a very large variety of platforms!

But wait; there is more! There are several platforms where LiveCode isn’t officially supported, but can be made to run quite well, such as on the Xubuntu variant of Ubuntu Linux, or on ARMv6 Linux distributions running on tiny Raspberry Pi computers.

And what if changes are needed to make LiveCode work on your favourite platform? LiveCode is open source software, and the core dev team will always accept reasonable patches to make it easier to compile and use LiveCode on a wide variety of platforms.

In the future, we will try to ensure that we always clearly indicate what platforms you can get official support for, and we will soon be updating the support area of the website to make this information easier to find.  We’ll do our best to give as much notice as possible when a particular platform is reaching end-of-life.

If you have any questions about our platform support policy, please contact our support team.

read more
Peter BrettUpdates to LiveCode’s platform support policy

Faff-free files function

by Peter Brett on July 13, 2016 No comments

The next developer preview release of LiveCode 8.1 will contain a long-requested enhancement to make writing programs that work with files much easier.

For time immemorial, the files() and folders() functions in LiveCode Script have operated only on the current folder (also known as the current working directory), which is accessed using the defaultFolder global property.

Unfortunately, setting the defaultFolder can fail for many reasons.  For example, it might fail if the requested directory doesn’t actually exist, or if you don’t have permissions to read it.  A reasonably robust implementation of a ListStackFilesInFolder() function that lists the stack files in directory might look something like this:

read more
Peter BrettFaff-free files function

Cross-platform app deployment with LiveCode is now even easier!

by Ali Lloyd on June 16, 2016 3 comments

While the majority of LiveCode features are built-in to the language, there are increasing numbers of ways to extend LiveCode, some of which require the inclusion of native code modules and other resources. The long-term vision for the IDE is to provide an extensions ecosystem, where script libraries, plugins, LiveCode Builder widgets, libraries and modules, custom controls and old-style externals can be easily downloaded and installed, and if required, subsequently built into standalone applications.

One important step towards this was the implementation of a dynamic property inspector, so that widgets and custom controls could have a way of specifying their editable properties and how they can be edited. Up until now the standalone settings stack has suffered some of the limitations of the old property inspector – namely that adding features requires manual modification of a stackfile.

An ‘Inclusions’ pane has been added to the LiveCode standalone settings user interface for the 8.1 releases, which not only simplifies the way you choose what extra functionality you want in your apps, but also allows you to select from a complete list of available inclusions, with a clear indication of the supported platforms at the side.

This significantly improves the cross-platform development experience provided by LiveCode. The iOS and Android panes no longer have separate check boxes for the various built-in externals (such as the XML external). Moreover any resources added to the appropriate locations should be reflected in the list.

read more
Ali LloydCross-platform app deployment with LiveCode is now even easier!

LiveCode Widgets: SVG Path

by Ali Lloyd on June 10, 2016 No comments

Continuing the blog series on the initial set of widgets included with LiveCode 8.0, here we are going to look at the SVG Path widget in a bit more detail.

What is SVG?

SVG stands for Scalable Vector Graphics. An SVG image file is essentially a set of instructions about how it should be drawn. SVG paths are sequences of commands which specify how the path is constructed from co-ordinate to co-ordinate (see the specification for SVG paths). This is how the scalability of SVG images is achieved – in order to scale it one simply has to adjust the scale used by the canvas. The SVG path widget only deals with the ‘path’ element of an SVG image. A prototype of full SVG rendering capabilities has been written, however there is a lot to do before SVG can be fully integrated into the engine so that SVG images can be used for button icons and so on.

read more
Ali LloydLiveCode Widgets: SVG Path

Extending the interactive welcome BMI app with HealthKit

by Monte Goulding on June 2, 2016 2 comments

By now many of you will have completed the new interactive tutorial for LiveCode 8. If you haven’t done that yet, you might like to go and complete it before continuing on here.

By the end of the tutorial you should have an app that looks something like the image below. If you’re like me and get excited by pancake printers it’s probably telling you something different to the image below but let’s not worry about that just now… the point is you should have an app that uses a web service to calculate BMI and charts it.

Today I’m introducing a new external for HealthKit called mergHK. With mergHK you can read and write to the HealthStore and therefore improve the integration of your health app with the array of other apps that users use to manage their health data.

read more
Monte GouldingExtending the interactive welcome BMI app with HealthKit

Removing Quicktime Dependency from LiveCode’s Player Object

by Ian Macphail on May 26, 2016 4 comments

A recent blog post from computer security firm Trend Micro announced that they had found 2 potential security vulnerabilities in QuickTime for Windows, and that a fix for those issues would not be forthcoming as Apple have withdrawn support for the Windows version of QuickTime. Consequently they recommend Uninstalling QuickTime for Windows as soon as possible. This is also the recommendation of US-CERT, the US government’s Computer Emergency Readiness Team.

Links:
Trend Micro Blog Post
US-CERT Alert
Apple QT For Windows Download Page

How does this affect LiveCode and our users? Our media player object has been based on QuickTime, on Windows and Mac. There is fallback support to use the old Windows MCI system, however this has been around since the days of Windows 3.1 and is no longer supported by Microsoft. Clearly it is now necessary to remove our reliance on Quicktime and move to a modern implementation of the player object. Happily, we have just done that, and the solution is available to you in the latest LiveCode release.

read more
Ian MacphailRemoving Quicktime Dependency from LiveCode’s Player Object

Infinite LiveCode – Third Stretch Goal – Mobile Native Field Widget

by Mark Waddingham on May 23, 2016 No comments

One of the biggest new features of LiveCode 8 was the Browser Widget. This new control allows any LiveCode application to take advantage of an embedded browser by just dragging and dropping a control onto a card – just like other LiveCode controls. This replaces the previous way you would use an embedded browser in LiveCode – either via revBrowser on Desktop, or mobileControlCreate(“browser”) on Android/iOS. It goes without saying that this widget was implemented using the power of LiveCode Builder!

The new browser widget really does make using an embedded browser so much easier: there’s no cross-platform difference between how you use it; and there’s no need to manage the browser’s lifetime yourself as it works just like a normal engine control (because that is what it is!). We’d like to extend this ease of use to mobile-specific feature which is widely used: the native field control accessible via mobileControlCreate(“input”).

This stretch goal’s proposal is to build a Builder widget which uses a native layer to make it possible to drag-drop native mobile field controls onto your stacks and use them, with exactly the same functionality as currently provided via the mobileControl functions, but in a way much more in keeping with how LiveCode should be.

read more
Mark WaddinghamInfinite LiveCode – Third Stretch Goal – Mobile Native Field Widget