This is the first friends connection successfully negotiated purely through Autonomi scratchpads
I’ll release a friends version not relying on any central infrastructure (and with the ability to add custom STUN servers too) in a couple of days I think!
This is a big milestone here! (sadly I have no time today anymore but wanted to drop a short note to celebrate)
IF you want to have reliable connections for now you (and your friends) need to start friends with:
dweb open friends -v 10
This will open the (historic) version of Friends that uses a centralized handshake server for connection handshake (settings and priority negotiating are mutable data and profile picture/themes are still immutable data loaded from the network - just as the friends app itself)
I am in the process of deciding on how to completely move back to centralized handshake server or not. I think I’ll wait for further announcements by the team before I run into any direction on this again and throw too much time out of the window.
…this is an awesome feature coming with using the dweb platform … to be able to use frozen in history versions … but since I’ve some pretty significant upgrades planned I would prefer to not go this route and not promote an old version long term …
Assisting development in this way is one of many benefits of versioned apps.
Unfortunately, lots of development gets thrown away due to uncertainties and changes. I’ve thrown literally years of code away on this project - but the learning, skills and ideas remain and continue to contribute to my work.
This is one of the important things about doing the hard work of thinking, writing and rewriting that makes a software developer and cannot be done by an LLM. All they do is regurgitate rehashed public content without ever understanding a problem. Using them deskills those working with them, degrades creativity, reduces understanding and loses important knowledge.
So enjoy this work knowing it is building your skills, nothing is really ever lost if you thought hard to make it.
At that age I was building analogue circuits, making my own radio transmitters as well stuffing them into small match boxes and all sorts of things. Once logic chips became available I was hooked and then computers (Main Frames/Minis) then did engineering.
okay! I’ve been a bit more quiet within the last days than I used to be sorry about that - this whole WebRTC thing and debugging issues is significantly more involved than I expected when I decided to adopt it to enhance the UX (nonetheless I think it’s the right decision … so I just lost some time to get a proper testing setup and to learn that MacOS doesn’t like mDNS names …)
maybe a short overview about where we are and where I want to get within the immediate next time:
What we’ve reached so far:
svelte Webapp bundled to only 5 (!) files that need to be uploaded to autonomi (very autonomi friendly app structure)
already many iterations of friends to get to a simple design with all the needed settings.
WebRTC connections between different users in this forum (in a scratchpad-compatible fashion; but mostly not utilizing scratchpads for the handshake itself because performance is lacking and timeouts are hitting)
released a general purpose WebRTC connection Library for nodejs that can be used by anybody. It can be used with my handshake server or - when autonomi scratchpads are fast enough again - just utilizes autonomi as handshake-“server”
Friends published as versioned WebApp via dweb. Historic versions are accessible through the -v <version-number> flag and are already here to be accessible and usable by everyone forever
profile picture loaded from public datamap address
themes as plugins loaded as external .css stylesheet from its datamap address
what I am going to implement next: (scope planned until July 17th - end of “building phase”)
friendship requests ( with public profile preview)
simple global names for easier discovery (no more copying of public scratchpad addresses … you just lookup “riddim” and that will be my profile where you then can click “friendship request”)
simplifying and documenting external stylesheets for easier theming of friends
implementing plugins (loaded from autonomi) as JavaScript Webcomponents. (even though I love this detail: if I’m running short on time I may push this back to make sure we have a good documentation ready for the end of the building phase)
Documentation about the Features and how to use Friends
Developer-Documentation (how to run friends locally in dev mode and do live-debugging with main net-connection → might be helpful for others wanting to develop dweb apps too)
scope beyond July 17th:
optionally persisting chat history with friends via scratchpads
releasing a python version of smokesigns (name already reserved)
and creating a simple demo on how to use it to connect (from everywhere in the world) via WebRTC to e.g. a locally running Raspberry Pi with a camera and fetching a picture it takes with a pi-camera
python terminal chat (friends compatible - only selecting friends and chatting with them as text only; no adding/removing of friends etc)
more extensive profile pages
the whole Friends app as JS WebComponent
Friends bundled with dweb via Tauri as standalone app
… I need to do some tidying before I want to release this on mainnet (some imperfections in the architecture … currently using display name instead of the now existing profileID as unique friend identifier profileID makes so much more sense xD … I think I want to implement global names too before releasing, would make friend discovery significantly nicer than this stupid long profileID string …)
todo list before 17th
friendship requests ( with public profile preview)
simple global names for easier discovery (no more copying of public scratchpad addresses … you just lookup “riddim” and that will be my profile where you then can click “friendship request”)
simplifying and documenting external stylesheets for easier theming of friends
implementing plugins (loaded from autonomi) as JavaScript Webcomponents. (even though I love this detail: if I’m running short on time I may push this back to make sure we have a good documentation ready for the end of the building phase)
Documentation about the Features and how to use Friends
Developer-Documentation (how to run friends locally in dev mode and do live-debugging with main net-connection → might be helpful for others wanting to develop dweb apps too)
Haha - oh funny everyone can change my check list xD
hiding of debug-stuff for regular user (can be activated through query params)
renaming of friends
friendship requests using the globally unique profileID now
minor fixes to the layout
display of profile images set by friends
now we’re in a good place to go for the global names next! (but not tonight ;D … )
friendship requests ( with public profile preview)
simple global names for easier discovery (no more copying of public scratchpad addresses … you just lookup “riddim” and that will be my profile where you then can click “friendship request”)
simplifying and documenting external stylesheets for easier theming of friends
implementing plugins (loaded from autonomi) as JavaScript Webcomponents. (even though I love this detail: if I’m running short on time I may push this back to make sure we have a good documentation ready for the end of the building phase)
Documentation about the Features and how to use Friends
Developer-Documentation (how to run friends locally in dev mode and do live-debugging with main net-connection → might be helpful for others wanting to develop dweb apps too)
Would like to contribute with testing but no money left. Waiting for a billionaire to help me with some ANT and GAS for testing
(I know you’re reading these lines, wealthy person)
0x9877282D7DA4190e7de1f10cd645198aaeDF23C7
(yes it’s a micro-scam)
Argh… Sorry didn’t upload the latest version yet =/ I was hoping to add global names today but failed… Will release either a version where you can get and share your profile id (to get friendship requests) or a version where you can use nice global names to find others within the next 2 days!
… The friends version running currently on Mainnet is significantly worse in terms of ux than the one I’m having here…
Slight adjustment of timeline (prioritising better ux for first time users):
Until 17th (time really is running..)
friendship requests ( with public profile preview)
simple global names for easier discovery (no more copying of public scratchpad addresses … you just lookup “riddim” and that will be my profile where you then can click “friendship request”)
account setup only on request (so when opening friends the first time it will not automatically create the account - you just may have clicked a link and didn’t even want to use friends… - but ask you if you want to create an account.)
guided account creation. Asking the user for account name, Avatar, public name etc while the account is being set up in the background.
Documentation about the Features and how to use Friends (a simple video that shows the setup process +updating the github README)
Developer-Documentation (how to run friends locally in dev mode and do live-debugging with main net-connection → might be helpful for others wanting to develop dweb apps too)
Beyond 17th:
simplifying and documenting external stylesheets for easier theming of friends
implementing plugins (loaded from autonomi) as JavaScript Webcomponents.
optionally persisting chat history with friends via scratchpads
releasing a python version of smokesigns (name already reserved)
and creating a simple demo on how to use it to connect (from everywhere in the world) via WebRTC to e.g. a locally running Raspberry Pi with a camera and fetching a picture it takes with a pi-camera
python terminal chat (friends compatible - only selecting friends and chatting with them as text only; no adding/removing of friends etc)
more extensive profile pages
the whole Friends app as JS WebComponent
Friends bundled with dweb via Tauri as standalone app