News for hackers. Stuff that matters.

inetic

Re:Ask HN: Who is hiring? (September 2024) on Tuesday September 03, 2024 @06:31AM (#41433374)
eQualitie (https://equalit.ie) | File System integration developer (with priority on iOS/macOS) | Full-time | REMOTE (Preferred CET ± 3h)

We are a small team working on an open-source, encrypted, peer-to-peer file system synchronization software (https://ouisync.net). The synchronization part is written in Rust and the GUI part is written in Flutter. We have integration with Linux (FUSE), Windows (Dokan), Android (ContentProvider, integration with Storage Access Framework is planned) and we're currently working on iOS/macOS using the File Provider Extension.

We are looking for a developer to help us with these integrations.

Ideal candidate will have a subset of these skills:

- In depth knowledge of the iOS and/or macOS OS

- Ability and desire to work across multiple languages: Swift, Dart, Rust, Kotlin

- Experience with Apple's File Provider Extension

- Experience with the Storage Access Framework on Android

If interested, please reach us at [email protected]

Re:Show HN: C++ UPnP client library using Boost.Asio on Wednesday January 22, 2020 @06:53AM (#22116733)
As the title says, linked is a UPnP library written in C++ using Boost.Asio. UPnP is a big set of protocols and this library currently only supports creating, removing and listing of IPv4 TCP and UDP port mappings.

The API is based around Asio coroutines, which suffices for our purposes, but if there is interest I'm happy to add support for handlers and futures using Asio's async result machinery.

Show HN: Simple coop game to demonstrate Club (decentralized networking) library

Few weeks back I posted here a link to Club library I've been working on.https://github.com/inetic/clubIt is a library for decentralized networking designed (not only) for computer games with the main goal to avoid paying for game servers.People asked me whether it can be used for real time multiplayer games and since there wasn't a game using it already I hesitated to give a yes/no...

( Read More... | no comments | 4 points | on HN )
When we started working on our game, we knew we wanted it to feature multiplayer. We did not know whether we'd earn money and hearing how much it normally costs to run dedicated servers we wanted to avoid that cost, so we decided to go the decentralized way and created Club library.

One of the features of a dedicated server is that you have a central authority that makes decisions about who is in the game/lobby and who is not. In Club, these decisions are done through a decentralized membership algorithm in such a way that everyone receives membership changes in the same order.

Other that membership decisions, Club also offers an algorithm for totally ordering messages. That is, if one node sends a message A and another node sends a message B independently, it holds that if some node receives A before B, then every other node that receives both messages will receive them in the same order.

It should be noted though that such ordering is slow, because it requires an acknowledgement from every other node in the network, but if performance is an issue, this algorithm can be used for leader election, and after that the leader may serve as a central authority for further and faster ordering of messages.

Other feature that a dedicated server solves trivially is message routing. Typically, users/nodes that are connected to the internet are behind some kind of router, these sometimes go out of their way prevent two nodes from establishing a direct connection between them. A dedicated server on the other hand normally isn't behind a router or is set up in such a way that any node can connect to it, thus any node that wants to communicate with any other node may do so through the server. In Club - again - there is no central server, but the library apart from maintaining who is in the network, also stores the information about who is connected to whom, so for any two nodes that are in the network, Club knows how to efficiently route messages between them.

Now there are also some other features that I did not mention, but there are also many TODO items I've got.

Such as:

* Automatic establishment of full network where everyone tries to connect to everyone to reduce number of message hops and the risk of network partition (I had this already, but commented out the code while refactoring). * Symmetric NAT traversal (similarly, I had this, was commented out during refactor ). * Better congestion control. * Node to node routing (Currently only broadcast. Extending it should be trivial) * Encryption ...

Now, the questions that motivated this post: How big of a utilization do you guys think there is for such library? Is it something that was already implemented by other libraries? I checked RakNet and few others but AFAIK they concentrate on the 'centralized server' approach, but maybe someone can correct me? I would love to continue working on it, but the lack of seeing or hearing of a similar approach used somewhere else makes me worry I'm being naive so you guys may give me a cold shower :)

The library is written in C++11, it currently only depends on Boost (Mostly Asio) and is distributed under the Apache 2 license (though I'm thinking of relaxing it further to MIT).

(I cross posted this from [r/gamedev](https://www.reddit.com/r/gamedev/comments/4pg8kf/is_there_a_...), I'm not too much of a writer, sorry about that)