Great idea combining batman with libp2p! You guys have the heart in the right place :-).
Currently, your project seems to be an opinionated wrapper ontop of libp2p. For this to become a proper distributed toolkit you lack an abstraction to for apps to collaborate over shared state (incl. convergence after partition). Come up with a good abstraction for that, and make it work p2p (e.g. delta state based CRDTs, or op-based CRDTs based on a replicated log; event sourcing ..). Tangentially related, a consensus abstraction might also be handy for some applications.
You are right. At the moment, we are an opinionated wrapper, but we take a different approach to discovery than other libp2p-based networks with our custom batman-adv-based neighbor discovery.
Abstractions for collaboration are currently in the works, and we hope to release that soon. The work on consensus has already started. Your suggestions seem all very interesting, and we'll definitely consider them. We are also currently in the process of talking to potential users to build handy and approachable abstractions for them.
I saw that [freenet](https://docs.freenet.org/components/contracts.html) went with CRDTs, but I think they made it too complicated. We were thinking about a graph (or wide-column) with an engine similar to Kassandara and a frontend like (or ideally just) SurrealDB.
I remember that iroh moved away from libp2p when they dropped IPFS compatibility and moved to a self-built stack: https://www.iroh.computer/blog/a-new-direction-for-iroh When we got started, the capabilities of iroh didn't really fit our bill, but it seems like it's time to reevaluate that.
As a former contributor to rust-libp2p, I never quite got the frustration with libp2p that many people have, Iroh included, especially since many of the described problems seemed fixable, and I would have preferred if they did that instead, and libp2p remains the shared base people build these things on.
I remember Actyx being a rust-libp2p user, but I wasn't aware that they failed. Do you have more info? How and why? It would be great if we could learn from them.
> I remember Actyx being a rust-libp2p user, but I wasn't aware that they failed. Do you have more info? How and why? It would be great if we could learn from them.
They (we?) unfortunately never found product-market-fit. Actyx targeted the SME factory space with a p2p application platform. Turns out that developers in general don’t want to deal with the additional complexities of anything lesser than strong consistency, especially if they don’t fully drank the distribute-everything kool-aid. And SMEs don’t really bother either.
Philosophically decentralization is the right thing to do, but I’m thinking more and more that federation might actually be the compromise in the long run, at least for consumer apps. The only valid use cases for p2p edge devices with loose connectivity are in military applications.
Restaurants is a few places where a tablet is a godsend. Children aren't always involved in adults conversations, so they get (obviously) bored at the table. A tablet guarantees some time off to the parents.
Now obviously is a problem if you go to the restaurant often, in our case it's once every few months and having them watching a movie makes going to the restaurant possible again (we waited 6 years before we could)
>Restaurants is a few places where a tablet is a godsend. Children aren't always involved in adults conversations, so they get (obviously) bored at the table. A tablet guarantees some time off to the parents.
as a fellow restaurant patron : I don't care that your kid is bored or if you can't afford a baby-sitter -- what I do care about is listening to the latest baby shark or whatever other youtube-brainrot-babysitter-program blaring near me while I'm trying to eat my linguini.
When I was younger if you brought a loud/obnoxious kid to dinner at a restaurant it was a sign that either you were inexperienced as parents or too poor to afford a baby-sitter (which then raises questions about eating out..), or otherwise didn't give a fuck about appearances or anyone else near you.
Also : not all kids are bored by what adults are doing, and a big part of getting good at those kind of conversations and 'adult actions' later in life is fueled by social mimicry and third party practice; to dismiss all children from such activities by directing their attention towards whatever the closest thing that minimizes parenting time and effort is , imo, likely damaging.
But, at the end of the day I gotta throw my arms up and say "Well, i'm not a parent." -- but it just seems obvious to me as a bystander that this level of forced autonomy and independence for smaller children reduces any chance that a kid will say "Mom, what does that word you just used mean?" and actually learn something from a novel experience. It reduces the amount the kids will read the faces of strangers and make social decisions. It reduces the chance that a kid will make a social faux pas slip and require corrections preventing it in the future.
It does, however, keep a kid busy , often annoying everyone else, while you gossip. I'm not sure that's supposed to be the end goal here.
Children don't get the tablet immediately, they eat without the tablet and get it when they are done, so there is plenty of time to chat, with opportunities for talking with the adult.
That being said, everything you say makes sense, but the reality is if you don't get a break every couple of months for a few hours, the parents don't perform, so from my perspective they (and myself) get a pass for the tablet.
As for the volume, they can lower it? I'm very careful making sure the volume is low, but I guess some people aren't careful.
This also assumes the children don't spend time with the parents. The parents could be spending many hours with the children so whatever happens at the restaurant is very small in the big picture.
That's totally fine.
My children get plenty of boring time, sometimes they get creative, sometimes they do not.
When they are creative, their creation is not always compatible with the environment (too noisy, too active).
Not all children like drawing either. Tablet is consistent, which is helpful when going to a restaurant.
Just to be clear, I use tablet only as a tv, I don't allow any games, too many exploits child's mind.
If I went more often to the restaurant, it would make sense to have different activities though, you are right. We go maybe once every 2-3 months, so the tablet was acceptable.
It has become way too expensive eating out.
Id urge you to try both out again and verify results. The comment is fairly dismissive, yet both do work even behind a cgnat (albeit not under all conditions). If you do find a general solution to the problem, please do share.
Wow, thank you so much! I made these using HTML canvases and TypeScript. I’m drawing everything in code, including the pixel art (which is defined in the source).
The animations are made using a small animation system that I made for this post. This system has two useful properties:
1. It allows me to animate whatever property of the object I’m interested in (alpha, frame, etc).
2. It allows me to set up other work to be triggered when the animation has reached a certain completion threshold, which lets the animations flow into each other. This is how (for example) the grid lines ‘cascade’ in after each other.
The 3D animations are also primarily HTML canvases, and I used Three.js to place them as textures in a 3D scene. I have some logic to map the coordinate system of the canvases to the 3D scene, so that I can draw the connective tissue between the canvases and run animations that operate on objects both on the 2D canvases and the 3D scene.
There is quite a bit German community there incl doctors, lawyers etc.
the big hospitals are also okay, although the local youth is fleeing the island.
To understand the difference between a manual and a highly industrialised process doesn’t matter here. It’s about the underlying principles that define how things work.
Currently, your project seems to be an opinionated wrapper ontop of libp2p. For this to become a proper distributed toolkit you lack an abstraction to for apps to collaborate over shared state (incl. convergence after partition). Come up with a good abstraction for that, and make it work p2p (e.g. delta state based CRDTs, or op-based CRDTs based on a replicated log; event sourcing ..). Tangentially related, a consensus abstraction might also be handy for some applications.
Also check out [iroh](https://github.com/n0-computer/iroh) as a potential awesome replacement for p2p; as well as [Actyx](https://github.com/Actyx/Actyx) as an inspiration of similar (sadly failed) project using rust-libp2p.
Oh, and you might want to give your docs a grammar review.
Kudos for showing!