LiveCode 10 DP-5: Smaller, faster, richer

by Mark Waddingham on April 18, 2023 3 comments

I’m delighted to announce the release of LiveCode 10, dp-5.

Web Engine Size

This release includes the first iteration of the work we have been doing to reduce the download size of the web engine.

The (unicode related) data the engine needs to run has been split into three files – icu-core.dat, icu-iter.dat and icu-coll.dat.

The core data file is always downloaded, the engine will not run without it.

The coll data file is only downloaded if the browser does not have the necessary JavaScript collation APIs (recent versions of Chrome, Safari, Edge and Firefox do have the necessary features).

The iter data file is only downloaded if the browser does not have the necessary JavaScript segmentation APIs (recent versions of Chrome, Safari and Edge do have the necessary features).

The result is that the current minimum size of a LiveCode web app (when running on Chrome, Safari and Edge) has changed as follows:

  • Uncompressed size has dropped from 23.6 Mb down to 15.7Mb
  • Gzip compressed size has dropped from 10.6Mb down to 7.6Mb
read more
Mark WaddinghamLiveCode 10 DP-5: Smaller, faster, richer

Best Practice for API Keys and Security

by Mark Waddingham on June 27, 2022 1 comment

The question of security when using API Keys is something that comes up fairly often, so I thought it would be useful to write a blog post covering what I believe to be best practice when using these keys.

I have come across three kinds of API key in practice:

 1) API keys intended to be used from web pages (in client-side code)

 2) API keys intended to be used in deployed apps

 3) API keys intended to be used for doing secure things

read more
Mark WaddinghamBest Practice for API Keys and Security

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

Infinite LiveCode – The First Stretch Goal – SQLite Library

by Mark Waddingham on May 20, 2016 3 comments

SQLite databases are used ubiquitously in modern applications. Whether they be used as caches for downloaded data (so apps can run offline), as a file format for document editing apps or just for persistent data storage. Indeed, we feel that they are so important that they deserve their own clean, modern, high-level set of functions in LiveCode Script to access directly – rather than going through revDB.

For this Infinite LiveCode stretch goal we propose to:

  • Provide gyp-based descriptions of building the SQLite native code library.
  • Wrap the SQLite API using Infinite LiveCode to allow it to be used directly from Builder
  • Write a Builder module which allows usage of SQLite databases easily from Builder
  • Write a Builder library module which exposes a high-level API for manipulating SQLite databases directly from Script
read more
Mark WaddinghamInfinite LiveCode – The First Stretch Goal – SQLite Library

Infinite LiveCode – An Example

by Mark Waddingham on May 16, 2016 4 comments

Prologue

The engineering team at LiveCode recently published a technical whitepaper on how we’d like to make LiveCode Builder interoperate better with other languages by improving its so-called ‘foreign function interface’.

In this post, I’d like to work through an example of how Infinite LiveCode, once it is funded, might be used to write an extension for an ability the engine does not have: battery status monitoring on iOS.

There are several steps involved in working out how to build an extension which hooks into foreign APIs:

  1. Define what you want to be able to do
  2. Find the foreign APIs that you need to use and figure out how they work
  3. Work out a suitable set of functionality to expose to LiveCode Script
  4. Wrap the foreign APIs for use from LiveCode Builder
  5. Write a LiveCode Builder module which uses the wrapped foreign APIs to build the LiveCode Script functionality.

I’ll go through each of these five steps in turn.

read more
Mark WaddinghamInfinite LiveCode – An Example

Script Only Stacks

by Mark Waddingham on March 3, 2016 14 comments

In LiveCode 8 there is a new option in the (new) ‘New Stack’ submenu:

script-only-select

This new option allows you to create what is called a ‘script only stack’.

read more
Mark WaddinghamScript Only Stacks

Feature Exchange Update

by Mark Waddingham on October 21, 2015 4 comments

During the last week of September we tried a new model to fund specific feature development for the LiveCode platform – The Feature Exchange. A simple crowd-funding platform, the idea was that we could raise money from the community to implement contained and specified features in a well estimated timescale.

read more
Mark WaddinghamFeature Exchange Update