Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 03:25
    Jack-Works commented #796
  • 03:25
    Jack-Works commented #824
  • Oct 15 16:43
    amark opened #828
  • Oct 11 12:38
    mmalmi commented #748
  • Oct 09 01:56
    LiamKarlMitchell commented #787
  • Oct 08 17:41
    mboperator commented #692
  • Oct 08 09:12
    TheBolliwood commented #827
  • Oct 06 14:10
    sirpy commented #814
  • Oct 04 18:58
    mmalmi synchronize #760
  • Oct 03 00:12
    JamieRez opened #827
  • Oct 02 06:37

    mmalmi on 0.2019.930

    (compare)

  • Oct 01 20:54
    JamieRez closed #821
  • Oct 01 06:32
    rm-rf-etc commented #824
  • Oct 01 06:32
    rm-rf-etc commented #824
  • Oct 01 06:32
    rm-rf-etc commented #824
  • Oct 01 06:10
    rm-rf-etc commented #824
  • Oct 01 06:09
    rm-rf-etc commented #824
  • Sep 30 21:27

    amark on master

    drop chat example until DOM bug… (compare)

  • Sep 30 21:06

    amark on master

    unbuild & delete plugins changi… (compare)

  • Sep 30 20:36

    amark on master

    update panic test Merge branch 'master' of http:/… (compare)

Jachen Duschletta
@Dletta
Nice 30 minutes, you’ll likely have 5 minutes of setting up the app with weir and gun and then 25 minutes of QA, :P
Rob
@rm-rf-etc
LOL. Hopefully I can get from 0 to live in 10 minutes, but we'll see once I start practicing. I'm actually most worried about losing time on page layout, so I'll probably put some extra practice emphasis on installing of react-bootstrap and doing some basic column layouts
Lightnet
@Lightnet
@amark canada bc time >.>;; 9am to 9pm >.>;;
been working on R&D for which rust lang package for testing gunjs build which took longer and might need to read how the code work correctly XD.
Jachen Duschletta
@Dletta
@TensorTom Mark calls it functional programming
Rob
@rm-rf-etc

Hmm... the problem with trying to let developers drive changes in a bucket from another bucket, is the potential to create event loops. It would be great if the framework would provide a solution to detect these before run-time but that's really hard to do. We could have a system where changes in bucketA sometimes drive bucketB, and bucketB sometimes drives bucketA, and there's no event loop. Like this: bucketA.state.a -> bucketB.state.a, and bucketB.state.b -> bucketA.state.b, and this would be okay, but we wouldn't be able to know which properties will be changed by which reducers. Even if we try to parse the reducer logic, it could have conditions, like

if (thing) {
  return { propA: false };
} else {
  return { propB: false };
}

So dependent on thing, we either change propA or we change propB. I think there's no way to evaluate the results other than fuzzing, and that's hard.

I think redux / flux address this by requiring only 1 store, which I think will be the right direction. That would mean we can only have 1 bucket, which means buckets will need support for multiple data structures somehow.

oi.

Rob
@rm-rf-etc
React, on the other hand, sometimes gets into cyclical loops, and they handle it by just detecting when it happens and throwing an error.
Jachen Duschletta
@Dletta
@rm-rf-etc What if you create a 'shared bucket' that has 2 different buckets underneath. The shared bucket could reference items from both buckets so you can treat them as one bucket from the front end, but in the backend they are still different buckets for intents and purposes of datastructure?
mimiza
@mimiza
@amark congratulations! gun does not depend on node-webcrypto-ossl any more! yahoooo
mimiza
@mimiza
I think if gun allows developers to create custom space (just like ~@) with their own custom keys (~#, %$ etc...) and rules, its gonna be awesome. For example: I would like to create a ~wallet$ space where only some special pub keys can write in (using sea sign/verify) or the "owner" of the token (based on the last receipt of the blockchain) can create a new "block". Then we can create a wallet.
Mika
@mhelander
@rm-rf-etc @amark sorry for being quiet... I can try to join, would prefer outside office hours if possible.
Mika
@mhelander
@sirpy I've made some comments, mostly cosmetic and/or coding style.
mimiza
@mimiza
var a = {}, b = {}
a.b = b
b.a = a
console.log(a)
Hey guys, this code generates an infinite object (just like gun). But I wonder if it consumes device resources!?
Robin Bron
@finwo
Hi mimiza, this fully depends on the javascript engine you're running on. All that I know register a reference to the same memory-block on the objects, so no more resources are used than any other assignment.
Cale
@trosel

Here's a thought: What if we started going around to various self-hostable, open-source apps and just started submitting PRs where the user logins are replaced with SEA instead of their existing centralized database logins lol

Make a best practices guide for swapping user logins to SEA and do it guerrilla style lol

narnikgamarnik
@narnikgamarnikus
Is there a way to use a gun similar to, for example, peerjs, to only transmit data, but not write to them?
Duane Johnson
@canadaduane
@amark neo4j folks are announcing a new graph query language standard, GQL: https://neo4j.com/press-releases/query-language-graph-databases-international-standard/
@trosel Your proposal sounds similar to Sandstorm's approach, and maybe we could learn from what they did (it recently shut down; see some great comments at https://news.ycombinator.com/item?id=20979428)
(Sandstorm was a self-hosted web app manager that let you install open source apps similar to the ease with which you install an app from the Apple App Store. One requirement for this to be possible was the "login method" of each app had to be modified to be compatible with Sandstorm's way of doing things.)
Cale
@trosel
So they just went on a blitz of submitting PRs to various kinds of software
Duane Johnson
@canadaduane
Yes, or forking projects where the Sandstorm community had great interest in making it work, but there was resistance by original project owners
go1dfish
@go1dfish
I tried out that new node native lib to replace ossl locally and it works well (didn't try the gun pr was trying with my own stuff)
regarding the SEA call my availability is pretty flexible, you guys figure out a time and I may pop in if I can, is the goal to discuss the future of the SEA user() features?
Matthew Hall
@matthewhall.ca_gitlab
Is there any guidelines/suggestions in using GUN in a multi-tenant application? I am guessing its just to spinup a separate GUN instance for every tenant?
narnikgamarnik
@narnikgamarnikus

Does someone synchronization peers between anonymous users using Gun?

I use fingerprntjs2 to generate a key for Gun

let fingerprint

Fingerprint2.get({}, function(components) {
  const values = components.map(function(component) {
    return component.value
  })
  fingerprint = Fingerprint2.x64hash128(values.join(''), 31)
})
const peer = new Peer({
  host: 'localhost',
  port: 9000,
  path: '/',
  debug: 3
})

if (peer and fingerprint) {
  gun
   .get('peers')
   .set({
      fingerprint,
      peerId: peer.id
    })
    .bye()
    .put(null)
}
        gun
          .get('peers')
          .map()
          .on(function(data, id) {
            // this.put(null)
            // console.log('data', data)
            if (data) {
              if (data.fingerprint && data.peerId) {
                if (data.peerId !== peer.id) {
                  // console.log('data', data)
                  connect = peer.connect(data.peerId)
                  setTimeout(function() {
                    connect.send(`Hello world from ! ${peer.id}`)
                  }, 1000)
                }
              }
            }
          })
The problem is. I regularly encounter peers, users who have already closed the browser tab, ie bye().put(null) does not work.
Cale
@trosel
@canadaduane interesting that YUNOhost is down today as well https://yunohost.org
narnikgamarnik
@narnikgamarnikus
What is the best way to have a current list of anonymous online users?
Lightnet
@Lightnet
@narnikgamarnikus well you put .put("null") this will be fine but it should work.
oh right there some json to string format as back and forward convert for sea.js
Mark Nadal
@amark
@sirpy thanks!
@rm-rf-etc w00h000! Phew, half a year out! Commitment! :D
@mimiza w00h000! :D This is a good idea, but it becomes a "standards" thing because we need pretty much every machine to run the code to enforce the rules, and more code = more bloat, etc., it sounds like you can get away with doing what you want just via a user space, no?
@finwo nice answer!!!
@trosel oooooooo! I like that idea.
@narnikgamarnikus yes, do you need the data to merge tho (?)
I didn't quite understand your 2nd example, is this just checking the hash on data? Or you just want online-only with .bye() extension? I think you submitted a PR... will be looking into it. :)
@canadaduane I couldn't find any example of GQL :P did you see any?
@go1dfish YAAAY it worked :D :D yeah .grant( .trust( specifically.
@matthewhall.ca_gitlab WELCOME TO THE COMMUNITY!!!!!!!!!!!!!!!!!!!!!!! Multiple relay servers is probably smartest, depending on your needs. The easiest route would be just to use different data graphs, .get('foo') versus .get('bar') and save everything under those.
Never heard of yuno.
@matthewhall.ca_gitlab how'd you hear about us? What are you working on? :)
Matthew Hall
@matthewhall.ca_gitlab
@amark Thanks! Just found via Google I believe. CTO over at SpringboardVR.com - evaluating GUN for handling some offline first stuff in VR ;) Was going to reach out to you about some sponsorship + consulting stuff soon as well
@amark I just wrote this for you and @mmalmi
I hope you enjoy it
Mark Nadal
@amark
@matthewhall.ca_gitlab awesome, checking out your site now!
had various VR / AR people doing cool stuff
@data_over_ideal_twitter click (just finished reading your other article, liked it, and gonna plan to watch documentary sometime this week with the family, and got me interested in Moral Sentiments again, but phew 12 hour audio, gonna see if Amber wants to commit to doing it or not lol)
Rob
@rm-rf-etc
@Dletta sort of like the concept of a view... This would also give me a good place for developers to utilize the reselect module. I think this would help with certain situations for sure. Reducers in buckets can only work on the data they have at hand, so by creating a merged view from multiple buckets, it would allow us to compute states we otherwise couldn't. But it doesn't solve the situation where we want a state change in one bucket to trigger a state change in another bucket. I'm leaning towards loop detection for that. If it's good enough for React, it should be good enough for Weir. I'm just worried a little that someone might deploy a change to prod that triggers a loop which they weren't able to catch in QA, and then they end up with jacked up user data that's hard or impossible to fix.
Mark Nadal
@amark
@matthewhall.ca_gitlab nice! Out of curiosity, do you have any clients/shops in Bay Area? I wonder if any of the VR places near me use you guys.
Rob
@rm-rf-etc
@matthewhall.ca_gitlab let me take the opportunity to shamelessly promote the youtube videos we've been recording, since they're developer focused, they might help with your evaluation process. https://www.youtube.com/channel/UCXkC2aczhf2KDJBhHryhbDg
Matthew Hall
@matthewhall.ca_gitlab
@rm-rf-etc thanks! Will definitely check them out
@amark yup definitely! We're the largest software provider in the "Location Based VR" space. Would have to check our Hubspot to see whats actually in the Bay Area but i am sure there is a few
Mark Nadal
@amark
@matthewhall.ca_gitlab nice, feel free to promote yourself / what your goals are here. See if gun is a good fit or not. :)
Jace
@data_over_ideal_twitter
@amark I know right? It's a full time job using books to learn. I respect academics a lot more than I used to!
Rob
@rm-rf-etc
@Dletta maybe... If I implement an internal-only API, where buckets pass a message object to any recipient buckets when invoking a reducer, the buckets could record the result of the reducer as a diff, write it to the message object, then each bucket could examine this message object and decide to either permit or reject, prior to running the invoked reducer.
Matthew Hall
@matthewhall.ca_gitlab

We build software for "Location based VR" - basically anytime you're using VR not for personal use. VR arcades, businsses using VR for training, schools with VR labs, etc.

Right now we use a very traditional client to server approach where we have some Windows desktop software (.NET Core), VR apps (Unity + VueJS - its a bit unique) and some web applications (VueJS) all using a GraphQL API (PHP, Go, Node microservices)

Looking to move that section of our software to a more decentralized approach for a few reasons - Biggest being speed and reliability. Want to be able to better handle clients with crappy internet, having communication on a LAN between our web software and the desktop software without having to go to our servers, etc.

GUN so far looks like it checks all of our boxes pretty well. Biggest things we're trying to figure out still are
1) How to make our current APIs read/write to GUN
2) How to include it on our desktop software effectively
3) How to host our GUN databases server side for multiple tenants

Hoping to ship a very rough MVP just to test behind the scenes in conjunction with the current approach in the next few months.

Not hiring anything specific to this project just yet but we are hiring a .Net/C# desktop developer :)

Rob
@rm-rf-etc
@matthewhall.ca_gitlab did you evaluate electron for desktop?