nixers
Your dream project - Printable Version
+- nixers (https://nixers.net)
+-- Forum: Development & Graphics (https://nixers.net/forumdisplay.php?fid=7)
+--- Forum: Programming On Unix (https://nixers.net/forumdisplay.php?fid=21)
+--- Thread: Your dream project (/showthread.php?tid=2145)
Pages: 1 2 3


Your dream project - z3bra - 25-07-2017

To make this community stronger, I had an idea. Let's all share our "dream projects" (Unix related), and help each others accomplish them!
By dream project, I mean a project you feel you would love to get involved in, but feel like you're not up to the task, or lack resources.

I'll start with mine: I want to setup a decentralized online backup solution with other people, but I don't have anyone to peer with, and don't know which tool to use for this task.


RE: Your dream project - jkl - 25-07-2017

Quote: a decentralized online backup solution with other people

So, basically, Resilio Sync (formerly Bittorrent Sync)?

Mine's still a machine to slap people over the internet. My main problem is not how to control the GPIO stuff (that looks pretty easy), but I suck at hardware robotics.

edit: Ha!


RE: Your dream project - z3bra - 25-07-2017

(25-07-2017, 08:38 AM)jkl Wrote:
Quote: a decentralized online backup solution with other people

So, basically, Revilo Sync (formerly Bittorrent Sync)?

Resilio Sync you mean? I use that at work already, and I considered this solution yeah. My main problem with it is that they only provide pre-compiled binaries, and there all users have the same access to the data. I'd prefer a solution with builtin encryption support, so that even if my data is spread amongst 10 servers, I'm still the only one able to access it (given that I don't loose the key of course).
I like the idea of using bittorrent underneath though, as it's pretty efficient network-wise, and fault-tolerant as well. I considered syncthing as well, but many users reported loosing data because of it, which makes it a pretty bad backup tool!

I started cooking something on my own for this purpose (see synk). For now it's just a multihost rsync, but I plan on having it support directory recursion, and non-POSIX systems as well. I would love to implement it over bittorrent, but couldn't find a simple library to use the protocol in C, so for now I keep calling ssh + rsync (and it works rather well for now).
With this solution, encryption needs to be done outside the tool, for example:

Code:
# tar cj /etc /home | openssl enc -e -aes256 -pass file:/etc/secret > /var/backup/$(hostname)-$(date +%Y%m%d).tbz.enc
# synk /var/backup/*.enc -h jkl.nixers.net -h dcat.nixers.net -h xero.nixers.net -h venam.nixers.net

That's no rocket science as you can see, but still require external tools.

(25-07-2017, 08:38 AM)jkl Wrote: Mine's still a machine to slap people over the internet. My main problem is not how to control the GPIO stuff (that looks pretty easy), but I suck at hardware robotics.

Now that's a good idea. I'd had fist bump as well, to keep entertaining the suspense when the arm moves ;)
To go slap only, a servomotor and a rubber band would be enough I guess. Then to slap, you perform a full rotation with the rubber band.

Now you need to create and RFC for that protocol


RE: Your dream project - jkl - 25-07-2017

(25-07-2017, 09:14 AM)z3bra Wrote: Resilio Sync you mean?

Ah, sorry. I tried it for a very short time (with the old name) and I lost track of it for years. Just pretend I never wrote "Revilo"!

(25-07-2017, 09:14 AM)z3bra Wrote: My main problem with it is that they only provide pre-compiled binaries, and there all users have the same access to the data. I'd prefer a solution with builtin encryption support, so that even if my data is spread amongst 10 servers, I'm still the only one able to access it (given that I don't loose the key of course).

I see. I'm not sure if it makes sense to have a decentralized protocol for sharing files you don't want anyone to see. Why would anyone want to participate in your backups then?
Maybe a combination of Syncthing and GnuPG encryption would work for you. But I surely don't want to torpedo your idea for the sake of it.

(25-07-2017, 09:14 AM)z3bra Wrote: Now that's a good idea. I'd had fist bump as well, to keep entertaining the suspense when the arm moves ;)

Ha, awesome: Hit them and then fist-bump them for successfully having been hit.

(25-07-2017, 09:14 AM)z3bra Wrote: To go slap only, a servomotor and a rubber band would be enough I guess.

I found out that a rubber band would be a horrible idea as it's not predictable enough. The slapping speed needs to be regulated well or else it could leave serious damage on the opponent which is not what I'd want. (Also, my hardware skills are limited. I wouldn't even know a servo motor if I saw one, so I don't really consider myself to be capable of building something with one.)

(25-07-2017, 09:14 AM)z3bra Wrote: Now you need to create and RFC for that protocol

The protocol itself is ready but undocumented. I'd probably have to read about how to create an RFC first.


RE: Your dream project - z3bra - 25-07-2017

As I said, syncthing seems to loose data over time, which would totally defeat the point of using it for backups. But something similar would definitely rock!
Having your own backups encrypted and saved in different places means that nobody would be able to steal your data, even though you have it stored over different random places over the internet.

A servomotor is the kind of motor you find in these radio commanded cars for kids. Typical electric motor, nothing special about it. You put a switch controlled by the raspi, and switch it on to slap.


RE: Your dream project - r4ndom - 25-07-2017

(25-07-2017, 08:01 AM)z3bra Wrote: I'll start with mine: I want to setup a decentralized online backup solution with other people, but I don't have anyone to peer with, and don't know which tool to use for this task.

I'm pretty sure this is an easy thing to do with blockchains. I'm currently studying the hyperledger fabric framework, which is a blockchain framework able to easily set up a custom smart contract within (the logic behind the blockchain). It is in addition a permissioned blockchain, so only permitted peers are able to use it. This way you can spread this backup tool between other nixer user's and you can build your own blockchain network with it. The only problem would be the scalability. Since blockchains do always grow in size it would be a terribly big database in a short time if someone decides to backup his movies/music/pictures with it.


RE: Your dream project - z3bra - 25-07-2017

(25-07-2017, 04:06 PM)r4ndom Wrote:
(25-07-2017, 08:01 AM)z3bra Wrote: I'll start with mine: I want to setup a decentralized online backup solution with other people, but I don't have anyone to peer with, and don't know which tool to use for this task.

I'm pretty sure this is an easy thing to do with blockchains. I'm currently studying the hyperledger fabric framework, which is a blockchain framework able to easily set up a custom smart contract within (the logic behind the blockchain). It is in addition a permissioned blockchain, so only permitted peers are able to use it. This way you can spread this backup tool between other nixer user's and you can build your own blockchain network with it. The only problem would be the scalability. Since blockchains do always grow in size it would be a terribly big database in a short time if someone decides to backup his movies/music/pictures with it.

that is an interesting idea indeed, thanks for sharing! I'm more interested in an all purpose backup tool though (my compressed data is about 600Gib), so it would probably not scale well


RE: Your dream project - darthlukan - 26-07-2017

I've been reading through Window Manager docs and trying to write one myself for a while. Every time I get some headway, I scrap it and start over, never satisfied with my garbage C skills. I want to write it in C because I'm weak in that language (I could have probably already finished it in Python or even Go, but then I wouldn't be learning what I want to learn or building what I want to build). It's so bad, that I haven't even put it up in a Git repo because the history would just be a ton of scrapping commits and deletions.


RE: Your dream project - z3bra - 26-07-2017

(26-07-2017, 02:43 PM)darthlukan Wrote: I've been reading through Window Manager docs and trying to write one myself for a while. Every time I get some headway, I scrap it and start over, never satisfied with my garbage C skills. I want to write it in C because I'm weak in that language (I could have probably already finished it in Python or even Go, but then I wouldn't be learning what I want to learn or building what I want to build). It's so bad, that I haven't even put it up in a Git repo because the history would just be a ton of scrapping commits and deletions.

Writing a WM is a big project, and as such, you first need to organize and plan what your code will be. For such a project, you'll need to be consistent in style, and stick with it until you have something working. Don't change your mind mid-way, or you'll loose a huge amount of time.

Regarding the actual code, don't hesitate to look into other projects, particularly swm, 2bwm and wmutils (we wrote wmutils so that the code is easy to understand and reuse).
There is also libwm which you can use to focus on features rather than dealing with windows themselves.


RE: Your dream project - Tmplt - 17-10-2017

Lately I've been wanting a torrent client with the same model of mpd. I currently use rtorrent, but I find the configuration confusing, and having to run it in a detached screen/tmux session feels needless. And I'm not even going to mention the endless trouble I've had when trying to set rutorrent up. Unfortunately I'm quite busy with both uni and other projects, but one day... (it goes without saying that I'd use libgbt).

EDIT: I want this so I would be able to do everything I want through a CLI, but this might also be possible with rtorrent and its XMLRPC interface. I'll have to investigate this further.

EDIT2: I'd aptly name it gbtd, methinks.