I am IMMUTABLE - Safe Blog App

Any chance this becomes a packaged app that anyone can run? Guessing the main issue is choosing the network to bootstrap to like a current Testnet or local network.

Would be cool to see people uploading and sharing blogs over the test nets.

Very neat and I love that it’s network/clearnet agnostic! Good work

9 Likes

@Traktion just dropping in with a quick
clipart1863908

4 Likes

Traktion, its Beautiful!

5 Likes

Thanks! Love that acronym too! Catchy! :smiley:

3 Likes

Yes, there could be various ways of packaging it. Right now, you literally just need the sn_httpd binary and the handful of angular text files (js, css, html, etc). The docker container just bundles these together so you can just run the container and then point your browser at it (like I do in the screenshots - on localhost:8080).

I should be able to push a pre-built version of the container up to docker hub or AWS registry too, which will make life easier. Then you would just need to have docker support on your device to run it.

I think the issues with docker connecting to my local test net are only my issues too (which are only needed for dev, obviously). When we get another test net, I’ll try pointing it to there and see how we get on. I suspect it will be smooth enough! :sunglasses:

There are other options too. The angular static files could be baked into sn_httpd too, to create a single binary with everything in it. These could be built to different targets and run directly. It could figure out where the live safe network is by itself too. So, you would then just run the binary and point a browser at it - pretty simple!

Going one step further again, you can create standalone apps, which are basically web apps under the hood (e.g. electron). These could integrate the sn_httpd binary and the angular code and wrap it all in a single app to load/use on the desktop. I don’t think it is too tricky, it is just a matter of time/effort really!

For mobile, it may get more tricky. I know Maidsafe have experimented with some of that direct rust library integration before. However, even if the mobile has an app which just talks to a gateway server, that would be similar to most apps in terms of user experience.

So, lots of options. It’s just a case of assembling the components in the most useful and accessible way. For some, a hosted web gateway may be super handy. For others, local instance is better, where it can’t be blocked or censored. Once we have a working native safe browser again, we will get some more options there too!

Thanks, appreciated! I’ve toyed with creating a CLI version for giggles too. I know there are some markdown readers out there and it would just be a case of squirting the data to these in a simple way. There is something more immutable about a CLI too for some reason! :smiley:

4 Likes

For those who just want to pull a docker image and run it, I’ve setup Docker Hub too now:

TLDR, on a Linux host you can run:

git clone https://github.com/traktion/i-am-immutable-docker.git
cd i-am-immutable-docker
./sn_start_testnet.sh
docker pull codiate/i-am-immutable:latest
docker run --network host -t codiate/i-am-immutable:latest 127.0.0.1:12305

Then open your browser and go to: http://localhost:8080/blog/yourblog where yourblog is your blog index (see i-am-immutable-client README for how to create one).

For Windows/Mac, I need to understand why a local test net can’t be connected to. Sorry!

7 Likes

Great name for the app! Cant say I understand the details but sounds like you put some real work in there. Maybe consider the BGF once they start looking into funding apps?

10 Likes

I’ve created a sn_httpd release and built binaries for Linux and Windows 64 too.

If you download the binary, then create the static directory (from the same directory as the binary) with associated i-am-immutable-client files, you should be able to run it that way too (including windows!). Static files are here:

On Linux, you then run the command like this:

./sn_httpd.linux.x86_64-unknown-linux-musl 0.0.0.0:8080 static 127.0.0.1:12305

On Windows, it should be something like this:

sn_httpd.exe.windows.x86_64-pc-windows-gnu.exe 0.0.0.0:8080 static 127.0.0.1:12305

I’ve not got a Windows box to try it out on, but Rust seemed to build ok! :smiley:

EDIT: Note that 127.0.0.1:12305 is the safe network address. If you are using run-baby-fleming, take the genesis IP:port and use it here instead.

2 Likes

Thanks - it was a fun learning experience! :slight_smile:

It would be great to get some BGF support and take it to the next level. There are loads of features I would like to add longer term and I’m sure there would be plenty of good ideas from folks here.

I also see this as a platform to create other apps which can work well as hybrid clear/safe net apps. Adding write access in some way would help this too. Some fun for another day though! :slight_smile:

13 Likes

Excellent In the voice of Burns

Love the work you’ve done here and will be a great App for the new network. And you can use it to blog your progress too. :slight_smile:

7 Likes

Great to see you both making at last and having fun doing it Paul. I hope you’ll find time to do more and that the BGF can help when it opens up to apps. Good luck and :clap:

7 Likes

Would posting a link to this on r/programming be well received there?

1 Like

I was planning on writing this up in some blog posts, which talk through the components and design. They maybe better to share with a wider audience, but I don’t mind if anyone wants to link this post anywhere.

The code isn’t my finest work, as its mostly a prototype, but I’m sure folks get that! :laughing:

3 Likes

:partying_face: :partying_face: :partying_face: :partying_face: :partying_face:
I’m not going to lie, it took me a few tries but I figured it out!! great stuff @Traktion

12 Likes

That’s awesome! I really appreciate you taking the time to give it a spin! :sunglasses:

If the instructions need some refinement (they probably do! :sweat_smile:), any notes or even a PR would be welcomed. I know there are a few moving parts to pull together still, but hopefully it wasn’t too bad!

You should stick some images in your test blog there too. It’s quite surprising how quick they load when the browser is instructed to cache them indefinitely.

I want to explore some markdown extensions for music and video links too. From what I’ve read, it should be possible. Being able to stream safe network video and audio to a clear net browser would be pretty cool! :sunglasses:

10 Likes

I consider myself the problem :slightly_smiling_face: not your instructions which are very good.

At work now but will come back to play with this a little later, will let you where I got stuck and what I didn’t/don’t understand then.

Edit: @Traktion

./sn_start_testnet.sh confused me.
I had some issues here but I figured those out. Definitely user error.

The other issue was simply that I did not read the instruction properly.
I was using http://localhost:8080/blog/yourblog
instead of
/blog/<blog-index-safe-url>/article/<article-safe-url>
that was due to this post and me not reading the entire README as suggested.

Those were my only hurdles, so nothing really.

Looking at my MyTestBlog though both Home & Article are active (not the case in your screenshot) where have I gone wrong here? Clicking on either clears the screen until I use the back arrow.

2 Likes

Both of the following should work:

/blog/<blog-index-safe-url>

/blog/<blog-index-safe-url>/article/<article-safe-url>

The former should show the index and the latter should show the article. If that doesn’t work, something isn’t right! :grinning:

The former should have ‘home’ active and the latter should have ‘article’ active. If that doesn’t work for you it could easily be a bug!

1 Like

Video works :boom: :boom:

7 Likes

Ha! That’s brilliant! :muscle:

Did you just add a media link in markdown?

3 Likes
[![alt text](safe://image)](safe://video)
2 Likes