Skip to content

Week 15: Interface and Application Programming

Tasks
- Compare as many tool options as possible.

As makers, Liam and I have much experience in the microcontroller world but one of our weakpoints is in developing applications and GUI, so this week we thought we would dive into some options at developing these for a multitude of platforms and explore which ones might be suitable for us. We will go through the pros and cons that we find from looking at some documentation, basic tutorials and community interactions with all of them.

MIT App Inventor

Summary: A versatile and easy to use platform that allows the creation of android apps via drop and drag code blocks.

Pros
- Has a user friendly interface that is accessible to beginners and persons without any prior coding experience
- Features a drag and drop system to create apps like in Scratch
- Extremely visual building system without the need for understanding syntax
- Has high-level capabilities such as text-to-speech and sensor readouts

Cons
- Difficult to build complex or ellaborate applications - is more suited for simple programs
- The drag and drop block system can be less flexible than traditional programming
- Less efficient and may run slower than programs written in other frameworks - Android only

Electron

Summary: A popular framework developed by GitHub that allows for desktop application developemnt using web-related languages.

Pros
- Utilises web-based languages and technologies such as JavaScript, HTML, and CSS, which are familiar among many makers
- Popularity means a large pool of community resources and community contributions
- Has compatibility across MacOS, Windows and Linux

Cons
- Applications can be extremely memory intensive
- More difficult to access hardware resources like bluetooth, pins or ports
- Applications can have a large file size, even extremely simple ones

React

Summary: Another popular framework for building IOS and Android applications using Javascript and React made by Facebook.

Pros
- Can compile apps for IOS and Android from the same codebase
- Reactive native can connect and use Javascript platform capabilities
- Has the abilty to "hot reload" and "live reload" which allows for faster and smoother development
- Popular with many community resources

Cons
- Not very beginner friendly and has a stepp learning curve with many moving parts needing to be learnt
- Suffers from compatibility issues arising from third-party updates (lots of people on reddit complaining about this one)

Tkinter

Summary: An easy to use and popular standard library in Python that can be used to creat simple and lightweight desktop applications.

Pros - Works on Windows, Linux and MacOS with consitency in code and final product across all of them
- Great for small and simple projects - Is suprising versatile with lots of GUI elements available
- Is popular with a large community and has also been around for a long time.

Cons
- Difficult to produce visually appealing and "modern" UI
- While its great for basic and somewhat complex applications, it struggles with more complex and high end applications
- Harder to scale with larger projects

Flutter

Summary: A natively compiled toolkit by Google for developing applications for mobile, web and desktop using Dart.

Pros
- Extremely detailed official documentation and SDK
- Consistent development process and UI across platforms
- Backed by a large company like Google
- Also allows for hot reloading

Cons
- Although it is growing, it has limited libraries
- Uses Dart which is a language exlusive to Flutter
- Applications can be extremely memory intensive