NHacker Next
login
▲Show HN: Sink – Sync any directory with any device on your local networkgithub.com
72 points by sirbread 11 hours ago | 58 comments
Loading comments...
gwbas1c 4 hours ago [-]
> note: this is still a veeery big wip, as there are many features that I have planned to added; you can see this on the bottom of this readme.

I spent a decade as a lead on an industry-leading commercial sync product. Once you start working on details, tools like this can get very time consuming.

(They're also very fun to work on.)

The devil is all the corner cases, and there are a LOT of corner cases in sync; especially if you handle renames as renames. (IE, instead of treating a rename as a delete and recreate.)

My $0.02: Decide if this is a one-off project, hobby, or something you want to turn full time. Remember that what might seem like a bug, or a weekend project, could turn into a long coding journey. It's important to understand your commitment going in, because you don't want to "bite off more than you can chew."

You can find my website in my profile (and thus email) if you want to contact me and ask anything.

alt187 8 hours ago [-]
Be proud you did a thing. Not everything has to optimize profits, userbase, or some other metrics. You developed something for yourself, and saw it through until it worked, and no one can take that away from you.

It's also much more stimulating to build something than ask like a pedant "why this exists when Syncthing?", so, I guess the joke's on them.

kunley 16 minutes ago [-]
But the point is, the author didn't know about Syncthing. And he's got a few of things to solve that Syncting already has. (Doesn't need to mimic all things Syncthing has, of course).

I am all for implementing something own when one is dissatisfied with the state of the art. But that's different than updating one's understanding what the state if the art is

sirbread 1 hours ago [-]
thank you for the kind words :)
rcarmo 3 hours ago [-]
This is nice. Kudos for using Bonjour/Zeroconf, which I do too for everything that needs self-discovery.
MrGilbert 10 hours ago [-]
Congrats! It's always neat to have something out there in the wild. :)

For quickly sending a file, url, text or whatever between two devices, I usually use a selfhosted version of https://tnxfr.com (https://github.com/mustakimali/just-an-email). Thanks to a web interface, it works on almost every device.

dewey 11 hours ago [-]
What is the selling point over the very mature Syncthing? I’ve been using that for this use case for many years, with the additional benefit of also being able to sync it to my server, having a UI and being in all package managers already.
sirbread 10 hours ago [-]
being fr, i never even knew about syncthing until now. it's (clearly) a lot better, but again, the reason I made this is because of my school's software whitelist. they only allow certain apps to run on my laptop, one of them being python due to out compsci class. since then, I've been using it to get around whitelists and make my own stuff. this allows me to sync up me and my friend's stuff (like projects, etc.) while we're in school and not have to worry about the whitelist :)
udev4096 2 hours ago [-]
This kind of whitelisting does absolutely nothing. It's a straight up lolbin. Anyway, if python is allowed, then surely other languages can be added to whitelist. Ask them to whitelist go and use syncthing
woodrowbarlow 1 hours ago [-]
> This kind of whitelisting does absolutely nothing.

well, aside from getting students more interested in programming, apparently.

sirbread 2 hours ago [-]
trust me, I've tried asking for other programs to be on the whitelist. if they didn't allow firefox, they definitely won't allow synching. and I don't wanna get in trouble either lol
47 minutes ago [-]
28 minutes ago [-]
ryanjshaw 10 hours ago [-]
That’s perfectly valid. Maybe add it to the top of your readme explaining what problem it solves (need to sync files between machines and all you can use is python).
globular-toast 10 hours ago [-]
My initial thought was, man, your school is lame. But maybe it's genius? Creativity thrives in a constrained environment.
donatj 8 hours ago [-]
Syncthing is the most confounding user-unfriendly software I have ever had the displeasure of using. It makes a process that should be pretty easy, pick some folders and share some keys remarkably painful and convoluted.
throw7 2 hours ago [-]
Syncthing is software where i think reading the manual is recommended. it is a fine manual and clears up a lot of the confusion. There's a lot of complexity "under the hood" and trying to just intuit it from the settings is... as you know... confusing.
pjerem 2 hours ago [-]
I have more mixed feelings about Syncthing than you.

I personally think it’s a power user tool rather than an easy to use tool. The UI can feel intimidating but is actually pretty coherent once you understand how Syncthing works.

I would compare it with Git in terms of ergonomics : a powerful tool with its own jargon that you must understand to be able to use it.

Like git, Syncthing chose to expose its internals to the user rather than hiding it behind something magic. But like git, I don’t feel like there are unnecessary complexity. Once you understand it, it’s easy to make it work because it makes sense.

xnx 30 minutes ago [-]
Oh no. What makes it so hard? I was happy with the syncthing and syncthingtray setup process.
agildehaus 3 hours ago [-]
Has any open-source project done it better? Serious question, I've been looking.
deepspace 2 hours ago [-]
I used Unison many years ago, and it worked perfectly for all my use cases. Not sure how it stacks up these days. CLI only IIRC.
127dot1 1 hours ago [-]
I still use Unison as it is simpler than Syncthing.

It does have GUI, which I use. I wouldn't call it pretty or polished, but it works and I understand how it works and the way it works is exactly how I think syncing should work.

I've also configured it to run a GUI diff tool diffuse to easily combine changes in case of conflicts (when a file was changed on both sides since the last sync).

I wish it was a bit more modern and re-written in a modern language, but that's secondary qualities for a program.

pydry 4 hours ago [-]
to be fair, syncing is something that appears simple on the surface but which is a mess of complexity under the hood.
feiss 4 hours ago [-]
+1000 times this
lxgr 1 hours ago [-]
99% less configuration and UI surfaces come to mind.

Syncthing is great, but it does include everything and the kitchen sink. That's often great, but not always.

fxtentacle 10 hours ago [-]
I especially like that Syncthing can do encrypted revision backups to untrusted servers. My workstation and laptop get synchronised. And in case I ever accidentally overwrite a file, there’s the past five revisions on an offsite server.
lostmsu 2 hours ago [-]
How does your setup for the backup look like? Won't you lose the data if the source of backup data gets lost together with the keys?
shakna 10 hours ago [-]
SyncThing's insistence that a web UI be how you do everything has caused me quite a few headaches. Especially when said UI regularly breaks accessibility tools.

(The team do tend to fix those accessibility problems pretty fast. But spending a couple days a month working around a tool is not my idea of fun.)

zimpenfish 9 hours ago [-]
> SyncThing's insistence that a web UI be how you do everything

It does have `syncthing cli ...` which -I think- lets you do everything but to call it obtuse would be an understatement.

_pferreir_ 10 hours ago [-]
This ^

I also recommend magic wormhole.

anerli 11 hours ago [-]
^ syncthing is nice
progx 10 hours ago [-]
NIH?
5 hours ago [-]
kinow 11 hours ago [-]
Most of whayt I emailed myself were links to have a look at later.

I stopped doing that after learning about the sync feature in Firefox, and the option to send tabs across devices.

saaspirant 10 hours ago [-]
I used to use Firefox tabs too but I look at links maybe once a week and keeping too many tabs is annoying for me. So I am back to emailing notes and thoughts
tomhow 4 hours ago [-]
[stub]
Daril 10 hours ago [-]
I use Syncthing in combination with Cryptomator for sensible files, but there is also the Localsend app : https://localsend.org/
saaspirant 10 hours ago [-]
From the headline, I thought it was a way to easily note your thoughts because I unless I e-mail myself my thoughts, I never look at them.
notpushkin 11 hours ago [-]
[flagged]
sirbread 11 hours ago [-]
Totally understand your doubts. I mainly made this program to solve a tiny issue that got annoying and repetitive, so I asked myself, "Can I automate this?" 1. Since I mainly use Windows (for school software to run), I cannot simply do this, considering our school blocks any 3rd part app that isn't in their whitelist. 2. Sure, it doesn't _replace_ a USB drive, but it makes it a lot easier, which can _lessen_ the use of a USB drive. 3. Again, I really just made this for myself and a couple of friends at my high school so we can share projects without too much hassle. I just wanted to share it with the world because maybe someone else has the same dumb problem, which could help them too. It's not meant to be a business, just a tool. I'll call that a win if it saves one other person from emailing a file to themselves.
notpushkin 11 hours ago [-]
Sorry, I might have edited that /s in too late! This is actually one of the early comments from the Dropbox launch thread: https://news.ycombinator.com/item?id=8863#9224
saaspirant 10 hours ago [-]
I was gonna link to the same thing! Text looked familiar
dewey 10 hours ago [-]
I’d guess that the overlap of people who email themselves files also use Gmail…which would then also just have Google Drive. Why not use that?
skrebbel 11 hours ago [-]
FWIW i think you ruined it by editing that “/s” in
notpushkin 11 hours ago [-]
I thought about it for a bit, but I’m worried the author might not recognize this copypasta and try to answer it on its face value.

(It is, of course, the famous Dropbox comment: https://news.ycombinator.com/item?id=8863#9224)

Imustaskforhelp 10 hours ago [-]
Haha. I guess I had heard the story of dropbox, why not ftp, but I guess this was the story!

I guess it is funny to me that SVN/CVS was there in 2007 since I think git wasn't even invented at the time but now new people won't even know what SVN/CVS are, I only got to know them because I wanted to download a specific folder of github and some stackoverflow comment mentioned svn

notpushkin 10 hours ago [-]
Apparently, the first version of Git was released in 2005, but I’m not sure a lot of people have heard about it before GitHub has been launched in 2008.

Wild times! (I was 10, my preferred source control system was “eh I have a backup somewhere I think”.)

fetzu 10 hours ago [-]
MyVeryCoolApp_final_FINAL2_fixed.BAS
sirbread 10 hours ago [-]
we've all been there
drcongo 11 hours ago [-]
That made my morning.
maweki 11 hours ago [-]
I don't really understand what the difference is to syncthing (or value over syncthing, as it is very mature and also works across the Internet). You share folders and other devices are discovered locally and you decide which devices to trust and to share with.
5 hours ago [-]
bilekas 10 hours ago [-]
The commit log reads exactly like my stream of consciousness with personal projects :

https://github.com/sirbread/sink/commits/main/

5 hours ago [-]
poisonborz 11 hours ago [-]
This title on HN sounds like the "Until now, this was the only way to get juice from an orange"[1] scene from Simpsons.

[1]https://yewtu.be/watch?v=PJffrWZg-Bo

5 hours ago [-]
bbno4 11 hours ago [-]
[flagged]
sirbread 10 hours ago [-]
lol sure i "reinvented it" but the reason I made it in the first place is because my school's whitelist. they whitelisted certain apps (like Python 3.11, for our Comp Sci class) and i've been using that since to get around the whitelist :p
jonwinstanley 10 hours ago [-]
Re-inventing a product is great for learning. Looks like a decent project and hopefully you had a good time solving the issues.
11 hours ago [-]
kunley 11 hours ago [-]
[flagged]
5 hours ago [-]
neepi 10 hours ago [-]
I solved this problem again recently as well. After evaluating various synchronisation methods I thought it would be a good idea to design a new methodology which doesn't reinvent the wheel. Completely out of the box thinking. It took a few days to come up with a solution which worked on paper and a couple of weeks to implement it. I call this onecomputer. What you do is uninstall all sync software from your devices and put everything other than the primary one in the cupboard. Job done. No problems with conflict resolution. No race conditions. No resource and locking issues. Fast, reliable and does not depend on any third party provider or network. It just works. No wheel reinventing - this is uninvention.
shaism 10 hours ago [-]
How do I get stuff from my “onesmartphone” to the “onecomputer”?

Or shall I also put the “onesmartphone” in the cupboard?

neepi 9 hours ago [-]
The phone here basically does IMAP (which is sync I suppose) and gets plugged into the computer and stuff copied around as required manually, which turns out to be rarely as it's not the primary device!
sirbread 10 hours ago [-]
i can't tell if this is satire or not </3
neepi 9 hours ago [-]
I haven't decided yet :)

More seriously, I am mostly working like this now. I've had at least some data loss or reliability from every single sync solution I've tried so am practicing avoidance where possible.

I really want something to work but I can't find anything that does and I've tried all major ecosystems and syncthing etc.

globalnode 10 hours ago [-]
its something, lets move along quietly and hope they dont notice...

also not sure why so many have a love affair with syncthing, id never heard of it but more diverse software in the world is a good thing imho. the more wheels reinvented the better, its fun!