:IF: Friends - the messenger you'll never want to move away from

aaaaaaaaaand!!!

(not online yet - I need to do some debugging - there’s some stuff to iron out before releasing - buuuuut)

This is the first friends connection successfully negotiated purely through Autonomi scratchpads :tada:

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! :smiley:

This is a big milestone here! (sadly I have no time today anymore but wanted to drop a short note to celebrate)

19 Likes


dweb

Ha, got the same today.

Looking at the details I think you need a funded wallet locally to send that I think.

1 Like

yeah I didnt add wallet

3 Likes

You need to make sure you’re on the latest version of dweb (and have funds in the connected wallet - yes)

There was a breaking change in Scratchpad handling not very long ago

3 Likes






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 …

8 Likes

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.

7 Likes

Before your time @riddim but sometimes the old ways were better. Maybe some inspiration for Friends.

This was ICQ which I used a lot on the late nineties…

2 Likes

I still know my number and probably still the password xD - no idea how often I entered those credentials xD

2 Likes

gosh I don’t, and you’re either older than I thought or ICQ outlasted my use by over a decade. :thinking:

I used it between the age of 10 and 20 or so :wink:

I used irc a bit too but that was mainly with friends older than me

2 Likes

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.

2 Likes

I stuffed mine into a yellow soap box :grinning_face:

1 Like

okay! I’ve been a bit more quiet within the last days than I used to be :smiley: 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 :tada:
  • 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 (:tada: 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
  • multi session / multi user chats
13 Likes

This is a Big one! Friendship Request completed!

… 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 :smiley: 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 (:tada: 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

16 Likes

some minor UI improvements

  • 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 (:tada: 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)
8 Likes

Would like to contribute with testing but no money left. Waiting for a billionaire to help me with some ANT and GAS for testing :money_mouth_face:
(I know you’re reading these lines, wealthy person)
0x9877282D7DA4190e7de1f10cd645198aaeDF23C7
(yes it’s a micro-scam)

3 Likes

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…

2 Likes

There is a Community Faucet:-

I’ve not used it myself but people say it works.

If I get time later I’ll get on and send you a small amount of ANT and ETH on Arb. I’m not the billionaire though!

5 Likes

Slight adjustment of timeline (prioritising better ux for first time users):

Until 17th (time really is running..)

  • friendship requests (:tada: 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

  • multi session / multi user chats

8 Likes