Joseph's Safe Websites Project



The Maidsafe guys are really great programmers. I am not. Since 2008, when I was last active with JavaScript, it appears that JavaScript has grown up and become complicated. I have slung a lot of JavaScript, back in the day, but when I look at the code below, it is confusing to me.


The above code needs to be split up into about 5 different functions to make it clear to my old brain. If that requires somebody to make a helper library (jQuery for SAFE), than that’s what I want.

Since @Joseph_Meagher is looking for his next challenge, I would vote for that. A library that allows even old-school programmers from 2007 to quickly be able to crank out applications without needing to nest things in the manner shown in the example above.

I know this is my failing and an argument could be made that I need to just come up to speed on the new way to do JavaScript. However, I would argue that there are a lot of people like me, and so having a dumbed-down way for us to create apps would greatly increase the pool of app developers.


I know how you feel Tom, but I urge you to learn the new stuff. What you see above is code using a new feature, which is kind of made for this kind of system: ECMAScript (the JavaScript official standard) Promises

I say… read up on ECMAScript and Promises. It takes a bit of time to get your head around, but without it, it will be far more difficult to build anything a of note. I’m still grappling with it myself, but the alternative is so excruciating now, and the same goes for other new patterns in JavaScript (which are mirrored in other languages such as Rust as far as I can tell).


Thanks for this. You have given me a vocabulary I can use to google things. Also, now I can at least say “I really hate ECMAScript Promises”!

Reading about Promise Libraries, which is interesting and may make my brain hurt less… Lots to catch up on

Also appears it’s easy to mess this up and people frequently do. Here’s some interesting reading. We have a problem with promises


I was wondering how best to answer this for a while, there are several paths that I thought of when I first read this.

I’ll start off by addressing the direct point of helper functions. It would be possible for me to provide some high-level helper functions such as uploading a file, getting it and getting all files, and if the fully featured safe file manager is picked it would probably cut down time spent developing by a good bit, but this would still put pressures on me to maintain it which I mighn’t be able to fullfil as the API can change rapidly and the higher-level and specific the function is, the less the developer is able to custom make their functions and limits what developers can do. To be fair there are ways around some of these problems by using defaults and optional parameters in the code so there would be optional customisability, but it could in some cases make things a lot more complicated for developers and myself.

I’ll now address the more abstract point on complexity of the safe API. I’ll admit when you first glance at the safe API it can be a bit overwhelming but once you understand the purpose of each function and what they accomplish, how data is stored on the network, as well as how the networks works it begins much clearer and easier to develop. Again, this can also be overwhelming and could deter would be developers. This is why I think it might be a good idea for some videos or short blog post giving a brief overview of the network and the API (this could also tie in nicely with the Preparing a coordinated marketing campaign to concisely explain the safe network to get more people on board ). I attempted something like it with the safedemo main.js file (click here if you want to watch) , but looking back on it I should have done more explaining and less stating what I had written. If there is enough demand for it in the polls tomorrow I will try to do my best on it and might ask the community to help me along with it or edit the draft scripts/blog.

And finally, I am not an experienced javascript developer (I really started looking at javscript a bit over a year ago), the only formal coding/programming I have was attending CoderDojo (it’s an Irish charity for 7-17 year olds teaching how to code) and I only did about 2 years of it about 4 years ago. Once you get the hang of what the examples mean the safe API really does become a lot easier to use and understand.


Here are some polls you can give a go while waiting for the Dev Update (this will probably run until Monday).

Here is a quick rundown of each of the options:
Web Directory would be like an online phone book of safe websites where people can sumbit there website link if they want people to access it.

Safe File Manager would be a much more UI focused and friendly version of the safedemo it would also have the ability to publish websites directly on the safe network instead of having to use the web hosting manager, and would make use of the NFS functions .

Safe Tube would be a user-submitted video catalogue where you can upload and view videos.

Maintain Safe Chat would be me making improvements to Safe Chat by adding more features such as choosing a default css with a config file, implementing free instance instances (handy to see how to do it for developers) and possibly more.

  • Safe Web Directory
  • Safe File Manager
  • Safe Tube
  • Maintain Safe Chat

0 voters

Now on to the second poll documents on coding, the safe API and the safe network with another quick explainer of the options:
Rundown of my code would be going through my code and explaining what and why I wrote the functions like they are.

Rundown of the safe API would be going through some of the functions I use most in the safe JS docs and helpful hints developers can use when developing.

Rundown of the safe network would be looking at the safe network aimed at a beginner and would give an overview of how it is different from blockchain technologies and how it works with close network consenus.

Rundown of both would be aimed at developers who haven’t heard of maidsafe or the safe network before and would look at the absolute basics of the network and the api.

Blog/Text vs Video
Video would take longer to do and I only have a earphone mic at my disposal so it might be a bit hard to understand what I am saying, that being said videos are usually a lower barrier to entry than reading a few pages of documents and it would it will be easier to point to in a post. I can also show what I am doing on screen and use visual cues instead of just pictures.

Text would be faster than to make than videos and it is much easier to translate text than to add subtitles to a video. It also can be updated more easily if something is wrong or becomes deprecated and is also a lot easier to reference instead of having to look to specific part in a video and remembering its time. Text can also include pictures as substitute for video and in most cases that will be good enough.

  • Rundown of my code
  • Rundown of safe API and hints for developers
  • Rundown of safe network/API
  • Rundown of safe network

0 voters

  • Video
  • Blog/Text

0 voters

I am still looking at possible methods of monetisation but for now I’ll stick wtih the donation system for the moment.

SAFE API Overview (Joseph’s Safe Websites Project)

All of the above sounds very interesting! I’m currently exploring the API myself and find it quiet hard to use Private MDs (compared to Public MDs). I think a simple but solid example app / snippet which showcases basic Private MD functions (write data, re-access previously stored private data, serialisation, encryption, decryption etc.) doesn’t exist yet and would love to see such thing! I’m sure this would help other beginners too. :slight_smile:


@Joseph_Meagher I think you should put the explanations of what the 2nd and 3rd polls are about above the polls themselves not below them. Kinda hard to follow otherwise. :slightly_smiling_face:


Amazing work @Joseph_Meagher! I’m making a donation right now. SAFE Tube would be so cool, especially if people could store a video on their own account and your site would index them.


Lol so u gonna remake my apps?

Good idea though as many versions as possible always


Maybe :wink:, but technically was started before your original safe tube , but it never saw that light of day and eventually developed in to the safedemo


Small update to safe chat, no longer needs to authorise with the browser to view messages. Go here to use new code.

Edit: Everything fixed and no longer needs to manually refresh everytime you send a message


I have closed the polls , I will start working on safe tube now, it is going to be using NFS and it could take some time to do, hopefully before school starts.

There have been a few “advanced testing attempts” on safe chat (if you wish to see for yourself remove the if statement in the the getMessages function)

if (uintToString(value.buf).length < 300 && uintToString(value.buf) !== "" &&
                 parseInt(uintToString(key)) < time && uintToString(key).length === 13 && uintToString(key).substring(0,4) == 1502 )

which is good but there may be some future bugs breaking stuff, as I am writing this all website-breaking messages have been filtered out and there is now a 300 character limit on all messages. Since I’ll be working on safe tube now I’ll have to leave safechat by itself but will try to fix anything broken when I come back to it.

I am also going to be working on docs for the safe API possibly in collabaration with other members of the community as there appears to be momentum gathering for that.


Small announcement safecat no longer needs to have its code pasted into the console just head to safe://safechat.jam and everything should just work, there will be a bigger announcement in a few hours


I will release a new topic going over safe tube when everything is ready, but for now please test out safetube.jam uploading and viewing videos and using the localhost with its github. The safe network website is really slow for me (might be my connection) but the localhost works perfectly.

It turns out the main.js file needs to be copied into the console again to work, copy this in to console like you had to do with safechat. Please let me know if it is working for you.

P.S. It takes time to load and upload


Managed to upload first video no problems. Second video doesn’t seem to have uploaded though.


It might be still uploading, uploading can take a really long time especially if the file is big.
Was the wind turbine your first video?
P.S. please leave everything releated to safe tube in the Vidy release (Joseph's Safe Websites Project) topic


No worries will post in there. Yes the wind turbine was my first video. Good work by the way. Really cool to see these first apps been born.


I will release another poll of safe websites to develop tomorrow before the dev update again (please leave suggestions here), as well as two new threads click here and here for a sneak peak.


If you could add some bells and whistles to the email app that would be cool.


The polls and official release topic of Safe Web Dir is going to be delayed so I can implement a a particular filter, but you can still try it out here safe://ttt.ttt .
I also have decided to rename my released projects safe demo to demoy, safe chat to chaty, safe tube to vidy and safe web dir to listy as there may be some confusion between my projects and @whiteoutmashups great projects which you can see github here (SAFEtube, SecretChat, SAFEdir, SAFE demo app)