As I’m writing this first development log, I’m one year into my Master’s in Psychology through the University of Glasgow. The past year has been a whirlwind of new information coming my way and unexpectedly, finding my way around R (the statistical programming language) has been one of the greatest joys.
So here I am. One year in. Thinking of how to expand on the fun I’m having with psychological science & programming. I’ve come to the idea of writing my own application, one that focuses on wellbeing. Perhaps a bit of an oversaturated market, but one I feel passionate about.
My aim with this “Dev Log” is to write about my other projects as well (eventually), just to keep things a bit “alive” as to where I’m at with various things. So whilst I could write about the ISENG community forum upgrade, the first shader effects in Fhaloness, I’m not doing that in this post. I’ll keep this first entry strictly focused on my (new) wellbeing app.
Why a wellbeing app?
Because I feel there’s a lot of chatter around the subject.
It also combines everything I enjoy: education, psychology & technology. Plus, it’ll be a learning experience for myself at the same time. And by open sourcing it on GitHub, I’m very much hoping other people will engage with it on a deeper level, offering suggestions and ideas for future developments.
I care deeply about wellbeing and how people feel, but very much from a different angle than what has been popularised in education over the past decade-or-so. I like a pragmatic, slow (boring, not so flashy) approach to wellbeing. What works for you, works for you. I’m not here to say “this can’t be good, because it doesn’t work for me”. But I do value scientific research, as much as psychological and educational research can be an interesting debate in its own right.
So in defining what this Wellbeing App will be, I’ve tried to draft a list of guiding principles to help decide what fits within the app and what doesn’t. Similar to design principles included in Godot, Linux and countless other FOSS projects, this app will be completely free. Which, I hope, sets it apart from quite a few other apps out there, which market their own “proven” ways in making you feel better. As long as you pay.
Tool for the trade
I’ve settled on Godot. Whilst Godot is a game engine, there are a few reasons I went with it:
- Free, Open Source Software (FOSS): This one’s very important to me. I don’t like the big corporations with the complicated licenses. The recent débâcle with Unity being a prime example. With its MIT license firmly in place, Godot isn’t going anywhere and I’ve been a Patron for a while now, ever since I started to switch my adventure game development over there.
- Quite a few people use it to develop apps, so I’m not alone and there are some good resources out there. Particularly since I’m new to this thing, that wouldn’t be smart.
- Cross-platform: A very big one for me. I use a MacBook Pro (M1) and a Linux PC (Manjaro), along with an iPad and an iPhone. So I’m looking for something that works well across multiple platforms. Whilst I’m still toying with C# (vs GDScript), the .NET framework isn’t currently up-to-scratch in Godot (at C# 8.0 vs the most-recent C# 10). Microsoft’s MAUI framework looks to be an interesting next step in “true” cross-platform app development, but it’s not there yet. Also, the complexity of a full Visual Studio suite is a bit intimidating. Compare it with Godot’s fun, easy and compact development environment and the choice is easy to make. And with Godot’s ability to integrate with XCode (allowing for iPhone and iPad development), I’m quite happy to continue with this.
- GDScript is so easy! Whilst C# is a more dynamic language and useful in different environments, as a beginner in coding (I know some AGS scripting and R), I feel GDScript is the right step at this point in time to get some firm foundations in place for how coding works. And with excellent resources like “Learn to Code in GDScript” through GDQuest (as well as their full course on how to develop from scratch), I feel there is plenty to get on with at this stage. I’ve purchased the C# Player Handbook to dabble with C#10 in the meantime, so we’ll see. I can always switch the codebase over to C# if/when I need to within Godot. Let’s learn one thing properly first before jumping all over the place.
I will fail. Many times.
I’m not a seasoned app developer or programmer. So I’ve decided to go FOSS, with the whole project hosted on GitHub. So I’m showing all the ugly pieces of code as I try to string an app together. There will be mistakes, since I haven’t got a clue what I’m doing most of the time. But thanks to Godot’s friendly community & excellent documentation, I’m determined to try.
This DevLog is therefore also a way to hold myself accountable. Maybe this whole endeavour will stall, freeze and fail miserably. But maybe it won’t. I’m giving myself the freedom to fail but am determined to push ahead. As written in the Resistance manifesto, let’s keep pushing ahead and finish this thing.
Iterative design (pragmatic, agile…)
Whatever the terminology may be. I’m continuously reading, learning, reflecting and studying. And hopefully, once the app is being used, gathering feedback information. So I do reserve all rights to change principles, guidelines, ideas, etc, as the app matures. It is related to my permission to fail, though, in this case, a permission to grow.
What have I accomplished so far?
Not an awful lot, to be honest, but the frameworks are beginning to emerge. I’ve got the app starting, keeping persistent data in a save file, it scales to different resolutions (somewhat, work-in-progress) and I’m beginning to build the GUI. Oh, and I managed to code an update-checker, which I felt very chuffed about.
As you can tell from the screenshot, it isn’t much to look at yet. But, in the absence of a fancy Trello board, I’m trying to stay on top of my Feature List, so you can see roughly where I aim to go next…
See you next time!