> Why build a cross platform social media client?
Trying to see how far I can stretch the capabilities of #flutter before I want to pull my hair out and beat my skull into the keyboard. So far, not many dents in the desk (or my head for that matter). The framework and language (#dartlang) have been super simple to pick up and run with.
If an app manages to look okay on every platform, but is actually so full of annoying UX bugs and mistakes as to make the entire experience a bit rubbish, you can count on it being written in React Native.
I feel like it would be worthwhile to write a little desktop app that lists current #POTA spots along with a little bilutton that tells #FLRig to QSY and set that mode.
I have a list of packages and now I want to find the spoons to build a #Gemini client in #Flutter... I want to add support for "gmix" files (which was I think gemtext with inline markdown support, I forgot what I wanted it to be), a /_menu.gmix file that would add a site-wide menu bar and display title, ANSI colors/bold/italics, (prompted) PDF reading, and Titan, and it would ideally look and work pretty close to Lagrange but be Material and therefore look... less rudimentary.
Before the day ends: yes, work (especially #Ginlo_II / #Cicero) is going really well.
Today I added a bunch of minor details, and as the third language: Turkish (ok, ok, a lot of work to do still, but it is there already).
But also fixed lots of bugs. I am confident that we can finally give it out to more people in the company. The first few already started.
Since privacy (and especially chat privacy) is so important to me, that I even introduced settings where you can be chatting and someone looking over your shoulder has no idea with whom you are chatting. No avatar. No name. Just some initials and that's it. Not the slightest indication, even in groups.
I mean, sometimes this can be really important. Imagine children chatting with a trusted third party about something they can't (yet) talk with their parents and one parent comes over and peeks over their shoulder... Of course, I can't hide the messages (that would defy the purpose, right?), but I can at least hide the chat partner's identity completely...
I have added many such features and settings - of course, always "Global + Chat-by-Chat-basis". Security is given (E2EE + local encryption), but I find that other messengers think that privacy is just a minor topic, but no, it is a major issue - as big as security, so... yeah, it helps that I am a trans person, because I can (somewhat) imagine what kind of privacy people might want.
(And yes, I do have "vanishing messages" and yes, you can set to send only vanishing messages - Global + Chat-by-Chat-basis).
(And yes, I have other message-based privacy settings, but can't mention them yet 😂)
Did I mention that I added a "stalker-protection feature"? I mean, as far as I could do, right?
Yeah, I can't wait to release this anymore... It is really becoming a great app
(and yes, there were still lots of bugs including one which caused excessive CPU usage, but could be fixed nicely)
Yeah, today was good - it is really extremely heavy/hard work atm, but the results are great. I am happy...
I use the HTTP request actions in #Tasker to automate the creation of time entries in #Toggl, but that's been pretty darn flaky for me recently. Not sure if that's my internet, my phone, or Toggl's API blocking my requests.
Tasker provides a library and POC code for creating native plugins. So, let's try that! It's an excuse to get back into some #Flutter development, and it'll force me to get exposed to #Gradle and #Kotlin.
Well, one day was a bit ambitious. But this is doable.
Struggle #1 is the learning of #Kotlin. I see some design parallels to Java (makes sense) and TypeScript. I have to think about the language, which means I'm spending less time thinking about the implementation.
Struggle #2 is getting more familiar with the #Flutter ecosystem and interacting with it from native code. Should I have started this with just a base Android project? Perhaps. But I'm nothing if not stubborn!
Ian "Hixie" Hickson editor of #WhatWG HTML specification for 10 years, in January 2023 criticises the use of #HTML, #CSS, #Javascript for intricate #Web applications, and proposes an alternate approach based on 4 lower-level #OpenStandards:
Continuing with my joy levels about the Dart 3 switch statement, yes it is as powerful as Kotlin's ever was. For example one can now do something like this (admittedly contrived but you get the point) #dartlang#dart3#flutter
Some Clojure developers developed a means of targeting the DartVM so that they can write Dart and Flutter apps with Clojure. As an old Kotlin fan I'm wondering if Kotlin developers could do something comparable. The advantage to that would be being able to have a DSL for defining Flutter Widgets. A few more tweaks to the Dart language we could do it natively of course but we aren't there yet and not sure there is any impetus to get us there. It is one thing I miss with TornadoFX and KotlinJS DOM manipulation. #Dart#Flutter#Clojure#Kotlin#JavaScript "Joyful Cross platform Development with ClojureDart" by Christophe Grand and Baptiste Dupuch
"This article delves into the reverse engineering of Dart executable or Flutter release applications. We focus on the reverse engineering of byte arrays."
Is there a language that handles dependencies well?
Python's virtual environments are a bit awkward but everything mostly works, I haven't played with Java build tools much, Javascript is a trainwreck. I've been happy with Dart, but haven't gotten into the weeds much. Same with rust, cargo seems nice, but I haven't played with it enough to know the pitfalls yet.
Well everyone, after spending seven months learning iOS development as well as like six or seven years using iPhone, I may have converted to the dark side.
Today I bought a Samsung Galaxy A54 for $400. I did pull from my savings to get it, but it was a big deal for me. I've always used the contract phone deals from Verizon/AT&T/etc and my parents always paid for it. But this is my phone. One payment and I own it. No two year contract. And it is NICE. Definitely one of the best midrange phones out there. I honestly don't think I need anything more.
I've also never had a phone with a 120hz refresh rate and it feels amazing.
@robustjumprope
I'd suggest spending lots of time understanding the fundamentals before moving on to something cross platform like #Flutter (or whatever's popular right now, I'm kinda out of touch :ablobfoxhyperthinking: ). Cross platform tools often need tweaking to plug native libraries, and it's good to be able to do it yourself.
The ability to have one common codebase to share logic is immensely helpful for a lot of apps.
Working with #flutter and #dart, and an annoyance is the linter complaining that some things should be marked const.
Yes, linter, you're absolutely correct about that. But if you can figure that out, why the hell doesn't the compiler do it automagically as an optimisation step?
If there is a good reason why the compiler can't do that, I'd love to hear it.
I've published a blog post on reverse engineering Dart. This is the programming language used by Flutter.
This is a specific point on a non-standard way Dart assembly performs routine calls. It explains why decompilers just don't get it right when it comes to Dart...
I have successfully made a #Neovim autocommand that adds the Dart and #Flutter commands from the project's linked SDK to my PATH, so when I :cd to, for example, Squirrel Maps, the project's SDKs, installed with FVM, become available for my language server!
Before I finished posting this I rewrote it into the second version which also cleans itself up.
Reversing Flutter Apps: Dart’s Small Integers (cryptax.medium.com)
"This article delves into the reverse engineering of Dart executable or Flutter release applications. We focus on the reverse engineering of byte arrays."