SAFE Network TEST 9 + SAFE Mail Tutorial

This is awesome!

However, does it mean you can’t send safemails to your safebank to top up your safecoin with traditional money when you’re out of safecoin?

Anybody measured the propagation time of such emails?
Methinks about a real-time collaboration tool…

I am thinking that SafeMQ (message queue) would be a nice wee project. You would just need a client to add to the queue and an observer monitoring for updates. Hmm…

1 Like

Had fun digging into the mail tutorial :

Certainly not clean but it works :slight_smile:

The fork lives here :

Thank you very much for all the work done on that tutorial, it really helps making progresses.


Bravo… encore! Encore!

Someone could build a useful app out of this demo. :slight_smile:


Am I the only one here who ISN’T all that familiar with node.js and finds it a tad irratating having all tutorials written with the assumption you understand the code? Anotations are important. Like I realize node is based off javascript but there seems to be a big jump between javascript you’d write for a browser or something and node.js. Even a link to an appropriate node.js or book and reference to the appropriate chapter would work. I mean I’m psyched about reading the tutorial and learning the API but I need to understand it in order to read it.

For example what does this mean:

export const authoriseApplication = (data) =>

??? I mean the rest seems to be straight up json for the payload but THAT initial statement I don’t recognize. Maybe I just need to get up to snuff on my javascript or something. But either way links to reference material to explain the code would be good. Don’t assume just because the dev writing the tutorial can code means that the reader trying to learn the API is so good at coding. Don’t assume they know how to set up git or node. Don’t assume they know how to use them either. Quite frankly I’d rather look like an idiot than have someone else who knows less or nothing be totally turned off or overwhelmed by this instead of following up their curiosity with supplimental reading and continue learning about the API and SAFE network. Just like any other lesson you need to clearly state the prerequisites. If being familiar with node is required provide a link to a tutorial or at least state how familiar you have to be. Also as I said when writing code for others it’s good practice to annotate the code.


I mean I don’t want to come off as an annoyance but what you guys have to remember is you’re writing code like some people play Mozart or how Jimi Hendrix played guitar. Well I’m sorry but some of us are still struggling to code “House of the Rising Sun” if you get my meaning while you’re off coding bloody symphonies and rock concerts. You guys are coding the internet 2.0. That’s amazing. But when you write a tutorial think chopsticks not Wagner.


I agree, but I also think that’s how certain things are done. It’s the most efficient way for MaidSafe to do it, because you can’t start at programming 101 for every tutorial or they’d never get anywhere.

I think it’s up to the rest of us to get up to speed, and get each other up to speed, on these new tools if we need to use them. Or outsource work / team up, like most companies do.

While I’m still mostly just the manager of my apps and hire devs to implement the code, I’m personally trying to break through and become more of a dev myself, even though node / JS aren’t my main languages.

But getting them down can be hugely powerful, because you can use them to make SAFE web apps, desktop apps with electron (node) like MaidSafe uses, and that’s pretty much everything right there.

Long story short, SAFE will inspire many people to learn these languages, so we need to Help each other out and I still am supporting a “hello world” tutorial in the dev forum using safe-js. Maybe I’ll put up a personal bounty… Hmm…

Well then set a bounty or just set up a community task list to have people come in and look up the appropriate tutorials. A lot of the needed information has probably been written already in other tutorials and technical books but the issue is linking and referencing to the right material so you aren’t spending hours hunting for it. Think card catalogue not having to rewrite the tutorial every time (yes I just made a reference to hard copy research). Also anotating the code is important because the reader doesn’t nessesarily know what the writer of the code was thinking or trying to do. Anotations are more than telling users what each piece of code means but what the intentions of the coder is in writing them. (also it can be a handy lesson in itself on how to anotate for those that don’t know.)

I agree learning the languages is hugely powerful and in the long run prove invaluable. Being code literate is proving to be more and more important these days. But just like learning anything else it takes time. Like I said chopsticks instead o Wagner.

1 Like

yes but I guess the tl;dr of my points was that you don’t come to MaidSafe / forums to learn JS / Node, you go to the respective sites / books / resources on youtube etc and then come back when you’re ready to integrate your skills into SAFE projects. They need to be able to write their tutorials for people who are at that level

1 Like

my SAFEmail: whiteoutmashups

True but that’s why I say link to the respective books/sites/youtubes for the perspective reader. I really think this attitude of silo thinking about development has to change. People come to Maidsafe, see all the possibilities about learning code and get inspired to learn code and help out. So I’d disagree to a point that people don’t come to maidsafe to learn code. That may not be their primary reason for coming to maidsafe but just like someone may not primarily go to a symphony to learn how to play piano or the trumpets or whatever, or go to a rock concert to learn guitar there’s still a connection. One might still hear that awesome music and want to learn how to play it. Same with writing. If you hang out in a library and read a ton of books you’ll end up thinking about stories and odds are you might start writing yourself, more so if you hang out with actual writers. But if the prevailing attitude is the Library is JUST for reading and you need to go across town in order to learn about writing there’s going to be a bigger disconnect that if there’s a place to hone your craft in the next room or across the street. The easier we can make it for people to learn code and access coding reference material, whether maidsafe writes that material or just links to it, will increase the amount of new developers popping up around here. We need to stop thinking about coding like a professional providing a service or product and start thinking about it more like we do about every day reading or writing. If you had a community that had a high level of illiteracy in it would you tell them just to wait for someone to read to them? No. You’d be hunting down educational materials left right and center. Even if all you could do is give them a list of things to read/watch or places to go to educate themselves. Institutions do this all the time. Even if they themselves don’t provide the service they may make a point of having a list of other places that DO provide the needed service. Saying that people don’t come to maidsafe to learn to code isn’t an excuse for not having a list of links on hand, especially in regards to a learning environment like a tutorial.

On top of this why isn’t this kind of stuff being compiled on a site on SAFE? I was planning to upload a library anyway but it seems it’s desperately needed. Not to mention finding additional books on the given topics at hand. Oh well that’s another web development project. I’ll see if I can’t slap something together.

1 Like

Much of what SAFE is about is promoting APP development and APP development depends on code literacy. Therefore it’s in SAFE’s best interests to promote code literacy. The more code literate people are the more apps that are developed. The more apps that are developed, the more choices and free expression people have and consequently the more people will use the SAFE network. If you don’t care about educating people then you should care about having more apps on the network and consequently more users on the network, eventually wanting to earn safecoin and store their data on the network. Ergo promoting code literacy = a faster growing SAFE network.

The example/demo apps are largely to help library writers. I wouldn’t expect a novice developer to use them to write apps.

If people don’t want to understand java script, rest APIs, etc then they shouldn’t have to. They should just pick up either the safe browser with this stuff abstracted away or pick an existing library instead.

The best devs are those who use existing libraries and code that is already out there. It is a waste of time and energy for people to keep reinventing the wheel over and over.

When safe net is mature, the average app will just call a few functions and the rest, JSON, java script which does the heavy lifting will just happen in the background.

Build on the shoulders of giants.


I do want to learn but you don’t go straight from arithmatic into calculus or from learning to decode sounds into writing a scientific paper. There needs to be a progression of education. Also isn’t the code meant for an app developer? If it was meant for writing a library wouldn’t the aim and purpose of the tutorial be different?

Yes but that’s because most people can understand how the wheel works. If you don’t understand how the wheel works you end up inventing it over and over. That’s why one of the popular programming exercises is to program a calculator. It’s not that we lack calculators, it’s to understand how one is coded in the first place. Also you can’t fork a library or function if you don’t understand how it works.

I guess what I’m saying is one shouldn’t presume to impose dependence on external sources. A library of functions should save time not be an excuse to perpetuate ignorance. It’s similar to the idea that why would you grow your own food if a store is right there beside you or if one can be built: independence. So I still say if you’re going to write a tutorial it should be understandable to all levels of coding. Low level devs shouldn’t be dependent on library writers or anyone else in order to code their stuff. A library should be an asset not a liability. If one is dependent on a library and it’s maintainers then it becomes a liability.

It should be “Okay so it works like this and this and this. But all this code has been written out already in this library of functions that you can import using this command so you don’t need to do it over and over again. However you can find out how each of those functions works here.” Say you found a cool function you wanted to learn from and modify? We’re back to learning how it all works. Just because I can download a fully functioning distribution of Linux doesn’t mean I shouldn’t be able to look at the source code or create my own distro. Even if there is a library of SAFE commands, which there isn’t yet, doesn’t mean we should be dependent on it in order to code.


  1. If one is asking for help learning code one obviously is willing to put in the time time to learn it.
  2. If one is trying to understand the APIs one obviously wants to use them bad enough to put in the time to learn to write an app.
  3. Writing a tutorial presumes one is teaching rather than leaving one to learn on their own. If there are prereqs these should be added clearly.
  4. Ignorance != lack of motivation or willingness to learn.
  5. Promoting code literacy -> More app devs -> More apps -> Faster growing SAFE community.
  6. Adding a link to another book or tutorial on node or whatever other prereq does not take a ton of time out of the author’s day. Better yet add a specific reference to the section that discusses the code being used in the tutorial. Again links and references don’t take forever to add.

To argue that devs don’t have to teach new coders isn’t an arguement for not supporting new coders or taking their education seriously. Especially when you have a language prereq to understand the API.

You should realize the stage of development it is right now.

1 Like


Am I the only one here who ISN’T all that familiar with node.js and finds it a tad irratating having all tutorials written with the assumption you understand the code? Anotations are important. Like I realize node is based off javascript but there seems to be a big jump between javascript you’d write for a browser or something and node.js.

I have only glanced at the tutorial so far, but my first question was: is this node.js again, I hope not!?

If so, so be it, but it needs to be stated.

Either way the intro could include a paragraph or two on who this is aimed at, what the examples are written in, and any assumptions about prior knowledge and ability - yes @Blindsite2k - with links to sources of that knowledge. Apologies if this is already there - I’ve only glanced at them so far.

Overall though my first impression is these are excellent tutorials. Just some tweaks needed to ease the path for those of us who are still learning the basics. And if they are written in node.js, I think we’d need something that isn’t but this can be done in the way that the GoogleDrive API is documented - with tabs showing each code example in a different language. A lot of work though, so we can’t expect it all from day one. And of course, good if when we figure it out, we help improve these docs as well as helping each other here. Soon we’ll all be SAFE API experts, you’ll see, keep plugging away, and one day it just happens :slight_smile:

Props to @frabrunelle - I think these are a great first cut. Thanks. I know writing this kind of stuff takes s lot of work and they look very good to me. I can’t wait to dive in properly!


Hi Eddy,

let wel op type fouten: ‘Nieuwe Internet heeft nu email probleem het zelf’



Wow God ooh God,

Ik was te enthousiast om het bericht te verspreiden. :scream:

Sjonge jonge, ik moet idd beter opletten :stuck_out_tongue:

haha, ik deel je enthousiasme. :slight_smile: