French developer working on #Funkwhale and other web-related projects.
I thought Mastodon.Technology would be a good pick for that, so thank you for welcoming me!
I'm looking forward to talk with you :)
Tempo, a mood tracking/diary app
These days, I've been working on a lightweight mood tracking and diary app.
I've used some of them, like Daylio in the past, however I wasn't entirely satisfied, mainly because I wanted something that worked accross multiple devices (incl. desktop), and could handle larger amounts of texts.
Tempo is my second attempt at building something for myself, with a significantly different approach as last time.
Important PSA for Funkwhale admins using YunoHost
We've currently in the process of upgrading the Funkwhale YunoHost package to the latest version. However, there seem to be a crash/unexpected behaviour when updating from the web UI.
Command line upgrade seem unaffected, but we advise you to wait until https://github.com/YunoHost-Apps/funkwhale_ynh/issues/106 is fixed before upgrading your YunoHost Funkwhale installation.
if you are looking for CC-licenced #music, e.g. to host yourself and let other people enjoy on the #funkwhale network, then the following is a good starting point.
Also have a look at:
In other scenarios, when the front-end is on a completely different domain as the API, then login will use OAuth instead.
The webapp is therefore considered as a third-party app (which it is), and everyone's happy (esp. me, because I don't need to support JWT anywore \o/)
So instead of enforcing an insecure or hacky auth to enable this, in the end I decided to support two auth scheme in parallel:
In typical production deployments, the webapp is served on the same domain as the API. This means we can use cookie/session based auth, transparently and securely (assuming we enforce the proper Cross-Site Request Forgery protections)
This was done through https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1126
This is invaluable for contributors, because you can `yarn serve` then point the front-end to an existing server (open.audio, demo.funkwhale.audio, your personal pod), and reproduce UI bugs or develop new screens against real, live data.
But, in 99% of Funkwhale deployments, this isn't used.
Then, I remembered why I used JWT over basic cookie/session based auth initially: I wanted a way to login to any instance with any front-end. Phrased differently, I didn't want to have coupling between the front-end and the backend.
A really important use case unlocked by this is the ability to work on the front-end locally without installing a backend , populate data, etc.
The main reason is that the OAuth dance works like this:
1. You are using app X and want to connect it to service Y
2. App X redirects you to service Y
3. Service Y ask you if you want to authorize app X
4. Service Y redirects you to app X
But how can we authorize at step 3 if oauth is needed for authentication? Sounds quite obvious when written like this, but I bumped into this after a whole day of work x)
I've done quite some work done on authentication lately.
Funkwhale has been using Json Web Tokens for two or three years. This worked great, however, now that we also support OAuth, it felt redundant, and JWT doesn't allow granularity in terms of permissions.
Initally, I thought the logical move would be to ditch JWT entirely, and use OAuth everywhere (including our built-in webapp).
However after having a closer look, I realized it wouldn't be possible.
I know I said I was done with tech but I'm wishing I had more tech skills so I could implement music visualizers in @funkwhale it would be so fucking rad and all the classic visualization engines like M-Labs, MilkDrop, and AVS are open-source now.
I've also moved all CSS from .vue files to our style directory, meaning it will be easier to maintain and to factorize in the future.
All this work was pretty exhausting and involved, but in the end I think it's worth it.
The attached video showcase how tweaking theme variables, directly in the browser, affects the UI (sorry for my bad color taste ;)
As you can see, it's way less involved that the previous approach wic required overriding existing rules in each theme.
- 45% reduction of our CSS (from 715 KiB to 405KiB). It's still huge, but it's less huge ;)
- Use CSS vars for theming, this was actually inspired by the work I've done on Tempo last month
- Writing a new theme now requires 30 lines instead of 300 (and gives a better, more consistent result)
- The new system unlock some interesting features, e.g having a theme editor in the app, or per-user or per-pod themes without rebuilding the front-end
So, a month ago, someone contributed a merge request to improve our theming system (https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1094). I lacked the time to review it properly at the time, but I got back at it this week.
After playing with it, I decided to go a step further, and do a major cleanup of our CSS to reduce its size and make theming way easier.
Took me a full week, but today I can share the result!
I'm experimenting with basic data visualization on Tempo. Ideally, I'd like to make it easy to answer some questions such as:
- How many entries do I write per day/week/month?
- how well do I sleep?
- how stable is my mood?
- Is a given tag usually positive or negative?
CW: the video includes some neg entries regarding my mood
It's far from complete, but I'm already quite satisfied with the result.
I stopped using Spotify and replaced it with #Funkwhale a couple of years ago because Spotify suddenly stopped offering an album I'd had in my collection for a long time with no notice nor explanation.
Now I'm hearing that a bunch of podcasts are going Spotify exclusive as well, meaning that they are no longer actually podcasts and are not accessible to people in countries which Spotify does not serve.
Kill Spotify dead, frankly. Just the worst example of art distorted by tech.
Ditch the Walled Gardens - https://rootkey.co.uk/posts/Ditch-the-Walled-Gardens.html
Blog post week 2020-19: starting the work on Funkwhale 0.21.1 and 1.0 https://blog.funkwhale.audio/~/Announcements/blog-post-week-2020-19-starting-the-work-on-funkwhale-0.21.1-and-1.0/
Finally managed to get some #qaul.net stuff to work that sends a text message through a full application stack, through a network of three nodes!
There's a 100 other things on my laundry list but this is a bit of a weight off my shoulders because it was a pretty big blocker!
Posted about it on our ML and I guess I'll clean up the code and push the changes to master soon.
In case you're not familiar, #qaul.net is a free software project that aims to connect people via ad-hoc mesh networks. Born out of the riots in Egypt in 2011, and the #freifunk project, it made Android phones able to create decentralised, internet-independent networks on the go, with very little technical knowledge required to set it up!
The project is currently grant funded and what I get most of my money for to live. WE have an IRC channel on freenode if you wanna say hi, and the above ML.
French developer working on #Funkwhale and other web-related projects.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!