Background
I've been working with microcontrollers as a hobby for a long time, and working with them professionally for several years.
On many of my projects I've made used, modified and written custom tooling for simple tasks like setting the time on a clock to more complicated plotting of sensor data for tuning a PID controller.
Previously this was usually from-scratch Python or QT based interfaces using network or serial port libraries, but more recently new options designed specifically for hardware interfacing have started appearing.
While most of my previous interfaces communicated with the micro via serial port, the introduction of cheap wireless parts like the ESP32 have allowed for (limited) web-based interfaces and cloud hosted interfaces.
Motivation
I saw a recommendation for a tool on Reddit that looked perfect for a work project - it promised to solve a lot of low-effort tasks that I didn't have time to implement, and had some extra features that looked useful for a later stage of development.
I sent off a request for pricing information and started reading over the docs, but quickly found there was nearly no documentation beyond a trivial hello-world.
With no response to my email and a serious doubt about the rest of their functionality, I'm left feeling like I participated in some odd market research.
Nobody reviews developer tooling
While YouTube and tech publications/reviewers for consumer products are generally oversaturated, there's less discussion for 'self-hosted'/Linux/OSS communities, and practically nothing specific to the software side of embedded systems tooling.
For the little 3rd party discussion that does exist, it's either incredibly shallow and shows someone's finished project or provides a re-hash of the quickstart guide documentation.
This lack of review and discussion isn't healthy - advertised features are often poorly tested, it's hard for people to see through marketing copy, and testing this kind of software requires a large upfront time commitment.
Philosophy of good tools
I believe that all tools, physical or virtual, need to achieve two minimums: the ability for the user accomplish their goals, and the user should to want to use the tool again.
Beyond the essentials, when evaluating products I try to look at the design decisions and compromises,
Cost: in the financial sense, but more importantly the time spent learning and using the tool,
Handling: the way a knife balances, or how a programming language feels, is an indicator of the intuitiveness and consideration of accessibility,
Sophistication: providing versatility without being overwhelming or needing to hide complexity,
Who's this for?
Ultimately I want to create a community resource that can save people the experience of taking a bet on the wrong tool, and the time burnt before they realise it.
The libraries and tools I want to cover span the wide skill range between an embedded systems professional and someone getting into a new hobby.
How can I contribute?
Point people to this website when it might help them, spread the word.
Provide feedback by sending an email to arduinouserinterface@gmail.com:
- Is there a product or feature I've missed?
- Do my expectations or experiences differ from yours?
- Have I made a spelling or technical mistake?
- Have you made a project you want to share?