This is the multi-page printable view of this section. Click here to print.
Overview of Logiak
- 1: Logiak Overview
- 2: Logiak Approach
- 3: Logiak and Data
- 4: Protecting References
- 5: Data Types
- 6: Switches
1 - Logiak Overview
Logiak
Logiak is a lightweight 100% No Code system with which you can rapidly and robustly build cross-platform Apps without programming.
Logiak allows you to
- build collaborative, multi-app systems, as well as single, standalone Apps
- make use of fine-grained logic, of the kind normally associated with programming
- work collaboratively with colleagues on developing projects
- Deploy to modern backend cloud platforms: Firebase and Supabase, with the data 100% under your control.
Logiak Products
This is what Logiak consists in
- a web application. This is where you login to create and manage project configurations, available as SaaS or on-prem,
- Runner Apps for iOS and Android. With these Apps your configurations are transformed into running Apps.
Logiak-created Apps are available for web, iOS and Android (with Supabase ) and iOS and Android (with Firebase )
Benefits (in short)
- Quick!
- Fun!
- Powerful!
- Robust!
Key feature: Systems, not just Apps
When we say that Logiak allows you to build systems and not just Apps, we are referring to the fact that Logiak supports projects which involve various types of users collaborating together.
These users need to share a common database, but have different access to it, and different functionality.
Key feature: Declarative Logic
One of the main reasons why experts, for example those with specialist medical or legal knowledge, have been so able to create systems with Logiak is because at the heart of the system is the ability to express knowledge declaratively.
What is Logiak good for?
Logiak is good for when you have data, collect data, and want non-aggregate data to be processed in particular ways.
Let us call that Data Management
One might also use the term Case Management: when you deal with certain things or events and need to register/record them, and then process them individually in certain specified ways.
And Logiak is particularly useful when you need to have close attention to and reasonably complex processing of individual cases.
The clearest example of this is when you set out to provide Decision Support
Benefits (longer)
- Building an App with Logiak is rapid and is therefore highly cost-effective
- Using pre-existing components means you are not dealing with the fragility of new code ( robustness)
- Logiak automatically prevents you making some of the mistakes common to programming. This also enhances robustness
- Apps can be constructed by analytically-minded people without experience in programming, so this widens the pool of people within your organization who can do this. If someone can use Excel effectively, they are likely to find it possible to do the same with Logiak.
- Sometimes there is knowledge/expertise which you want to build into an App and the very best way is to have the expert(s) themselves do that. Having an the expert communicate the knowledge to a programmer, brings communication and interpretation challenges which create inefficiencies at best, but which can prove to be insurmountable at worst.
Get started for FREE
You can get started with Logiak for FREE .
First thing to do is to build a functioning data managment App in three minutes !
2 - Logiak Approach
The aim of Logiak is to help people be
pragmatic
efficient
agile
Pragmatism and detail
Everything is a trade-off, and Logiak embodies one particular trade-off. Which is it?
Many No Code systems focus on presentation and lack logical power. They may look exciting initially, but you can’t achieve the processing you need. You can link screens, but there is often not much more to it than that.
Logiak is the counter to this. It offers components which are not low-level UI components but high-level packets of functionality, from which Apps can be assembled in no time.
And, importantly, one of those Components is there to include Processes in the mix, and in a Logiak Process one is able to do very fine grained processing and updating of data.
In a Process, you can achieve logial complexity in a scaleable and maintainable way. It has been demonstrated that analytically minded non-programming experts can fashion their knowledge into useful interactive applications by developing Logiak Processes.
We think that Logiak is appropriate for organization-internal Applications.
Logiak is for programmers and non-programmers alike. Programmers will be aware of what time this saves them. Programmers will be aware not only of costs saved in building a system, but in maintaining one.
Logiak has two main user categories:
- Those who want to create data handling Apps rapidly, robustly, flexibly
- Those who want to create knowledge-based Apps, for example embodying regulatory or diagnostic knowledge and who need non-programming experts to be involved in their construction.
Logiak is for you if you need logically expressive and presentationally pragmatic.
Logically expressive
What we mean by this is: with Logiak, in particular with Processes, you can do a lot of the logical computation and numerical calculation you might want to do with code.
Logiak is expressive in that sense.
The Logic Just Flows
Process Logic is fine-grained, but there are logical possibilities not only in the Processes, but also in the Components and in their Flow .
-
So you can configure field conditions for Lists and Data Tables.
-
You can use switches in Actions components to enable and disable options for the user.
-
You can display/hide elements with Custom Layouts, based again on Switches.
-
You can also use Switches to make the Component Flow itself adaptive to the state of the data.
Software is hard
Logiak is offered with keen awareness of just how difficult building software is.
While programming languages and techniques are involving and improving all the time, programming remains, quite frankly, humbling.
No programming language which makes it easy. Some languages make it incrementally, marginally, easier.
At the same time, the demands for software are in a permanent exponential increase.
Logiak makes things easier
Logiak eases some of the complexity by removing coding from the equation.
-
Apps running on iPhone without having to deal with XCode, or Swift.
-
Apps running on Android without having to encounter Gradle, or JetPack, or Kotlin.
-
Apps running on the web without knowing anything about JavaScript, CSS, Apache, Tomcat, Java, React, Angular whatever.
Logiak doesn’t make your problem easier
Having said this, its important to say that Logiak doesn’t make the actual problem you are addressing simpler though.
You still need to be pretty analytically minded in order to successfully tackle problems of any complexity.
What does 100% NO CODE mean?
No code means you do NOT have to learn:
- JavaScript
- CSS
- Python
- React
- Java
… or whatever
If you know some HTML you can use it, but you don’t need to.
If you know some Markdown, you can use it, but you don’t need to.
Logiak is a Lightweight SaaS
What we mean by this is Logiak seeks to keep out of your way.
It doesn’t want to be a burden for you, nor a chain around your neck.
Logiak seeks to help you to be pragmatic, agile, efficient.
Minimal UI actions for maximal results
We don’t think it is a great thing to have lots of components. It sounds good, but less is more can be an important principle.
We aim at minimalism in the sense of reducing to a minimum what you need to know, and to look at, in order to address your problem.
So we don’t want you to be paging through hundreds of components to find the one which might change your life.
For the same reason we have tried to minimise the concepts within the configuration UI.
Just for one example: selecting which users to send mail to uses the same UI as does filtering a list.
3 - Logiak and Data
Logiak is lightweight
Logiak is a lightweight service with which you create Apps to deploy to your backends.
That is: Logiak does not control your data, you do!
You set up the backend (with support from Logiak), and you have full control over that backend. Logiak has zero control.
Backend Parameters
When you set up the backend, you enter some parameters from the backend into Logiak.
These parameters are required so that your Apps, and the Logiak server on your behalf, can communicate with your backend, and but we affirm that the parameters are used solely for the purposes of your project.
Logiak’s minimal constraints on data model
How about the data model, are there some proprietary aspects to that?
No!
Logiak is designed to be minimally intrusive in how your design your data.
Here are the extent of the constraints:
- Each table has to have a primary key (this is hardly a constraint: it is good practice)
- Primary keys cannot be composite
- A table cannot have more than one foreign key to the same table
logiak_version system table
To support remote deployment of new versions, Logiak requires the addition of a single system table called logiak_version to your database.
This table affects nothing else - has no relationship with any other table - and can simply be deleted without problem should you decide to stop using Logiak
No data lock-in!
We have done as much as possible to ensure there is no data lock-in with Logiak.
When you deploy Logiak, you are creating or using a totally normal database, designed by you, one that you can continue to use with other technologies should you decide to stop using Logiak.
An advantage of this is that Logiak is a conceivable solution for someone who wants to build Apps to make use of an existing database.
4 - Protecting References
Maintaining References
The challenge
A major source crashes in software is the unseen broken references.
For example, let us suppose I call a function foo somewhere in my code.
It can happen that I am working on the same code months later and delete that function, forgetting all about the reference I had made to it.
Subsequently, my code crashes because of the call to foo.
In programming, this kind of bug often surfaces as a so-called Null pointer error
Automatic protection of references
Logiak automatically keeps track of all the references you establish as you are building your App, and prevents any of those references getting broken.
So you may find that you go to delete something and you can’t. Why? It will be because Logiak knows that you still have a reference to that something, and it will usually be able to tell you where that reference is.
Example from Process
Look at an example here.
In this video you will see there are two input questions, asking values for weight and height from the user.
Then we introduce an Update variable action, and the expression we enter makes use of both weight and height.
Elements become undeletable when referenced
As soon as this action is added, the trash icons disappear from beside the two input questions: you can’t delete them just now, because otherwise the Update Variable Action would lack a value it needs and would crash.
But you don’t need to worry about the crashing because Logiak has made it impossible to make that mistake - you can’t delete either of the two input questions as long as they are used.
Then the video shows that as soon as the Update variable action is deleted, the two input questions once again become deletable.
Showing references - so you can delete them if you want
When something is not deletable, Logiak will also tell you why not - i.e. where is this thing being used at the moment?
Then, if you delete the sources of those references, the element will become itself deletable.
5 - Data Types
Each data value has a type.
For example, it is important to identify whether something is a number or not, so that we can determine whether it can be used in a calculation.
Six main Data Types in Logiak
Here are the main data types which Logiak defines:
Two ancillary Data Types
There are two other data types:
- media url
- object instance
All Object fields have a data type
When you add fields to an Object, you have to specify a type for each field you add
When you view fields of an Object, you will see their names are preceded by data type icons
Object fields alphabetically
By default they appear in alphabetical order
Object fields by type
You can switch to view them grouped by type
All Process values have a data type
As with Object fields, all values in a Process have an associated type.
For example, if you add a variable, you are asked to specify which type of data the variable will hold.
Process variables by type
As with Object fields, when you are viewing Process values, you can view them grouped by type
DATE data type
Internally, dates are represented with large numbers - the number of milliseconds since 1 January 1970.
This might sound strange but it is the commonest way of representing dates
Reducing dates to numbers means that it is easy to calculate with dates.
We can add a week to a date (represented as a number), by simple addition of (7 * 24 * 60 * 60 * 1000) milliseconds.
Logiak supports you in these kinds of calculations, via the Expression Wizard.
We mention this here so that you are not surprised when the Expression Wizard produces ugly-seeming expressions containing very large numbers.
Present time
The value of the time which represents the current time, at the moment the user is using the App, is a special variable called now.
This expression gets you “now”
{special:now}
Mapping requires data type matching
When we use Process actions to create or update data, we do this by mapping Process values to Object fields.
Data type plays an important role here in ensuring Object fields get the right kind of data.
Number values are possible candidates for number fields, but text values aren’t, etc.
Mapping Logiak data types to database types
Object field datatypes in Logiak are abstract. The concrete reality is when an App is running on a device, using a specific operating system and a specific database.
So Logiak types correspond one-to-one with types in SQLite (when running on a mobile device) and Postgres (when running as web app, and for the Supabase backend).
6 - Switches
Switches
What we mean by switches is simply this:
Values of true/false fields of Object instances.
Clearly, each value is in one of two states, like a switch:
- true
- false
Used in workflow and other conditional behaviours
Switches are used in many places in the Component Flow to help you implement conditional behaviours.
You can make your App’s structure and functioning adapt according to the state of the data which the user selects and passes downstream