Live data from Hacker News

Show HN: Kvass, a personal key-value store

github.com

61–70 of 129 posts

Re: Show HN: Kvass, a personal key-value store

#61

The built-in server and remote support is pretty nice! API seems solid, and I dig the QR codes.

Qr codes are pretty cool just a shame it never really took off.

What do you mean it didn't take off? QR code detection is implemented in native iOS camera and IIRC most android implementations too. Almost everyone can use it.

In that sense it took off more than bitcoin.

Re: Show HN: Kvass, a personal key-value store

#62
post #23

Earlier quoted context omitted.

Isn't that the whole point of "Show HN"? Or what do you expect when you click on a "Show HN" story?

I expected to learn something from it - especially when it's popped on the front page of HN. Am I expecting too much of HN? My train of thought when I saw the link "a key-value store": what data-structure are they using? A hashmap? How are they resolving conflicts? Is it in memory? How are they persisting data? Do they support multiple instances? What about concurrency? etc. Of course I might be a bit disappointed wh…

It's not HN job to entertain you. Someone wrote some software they thought was useful, so they are sharing it. If you don't like it down vote and move on. Get off your high horse.

Re: Show HN: Kvass, a personal key-value store

#63
post #61

Earlier quoted context omitted.

Qr codes are pretty cool just a shame it never really took off.

What do you mean it didn't take off? QR code detection is implemented in native iOS camera and IIRC most android implementations too. Almost everyone can use it. In that sense it took off more than bitcoin.

That is true, its just not as widely used as I would have hoped.

Re: Show HN: Kvass, a personal key-value store

#64
post #23

Earlier quoted context omitted.

Isn't that the whole point of "Show HN"? Or what do you expect when you click on a "Show HN" story?

I expected to learn something from it - especially when it's popped on the front page of HN. Am I expecting too much of HN? My train of thought when I saw the link "a key-value store": what data-structure are they using? A hashmap? How are they resolving conflicts? Is it in memory? How are they persisting data? Do they support multiple instances? What about concurrency? etc. Of course I might be a bit disappointed wh…

Fair enough. I did share some of those expectations too tbh and it was indeed surprising that the solution was that simple. But to be fair it does not promise any of that and it does what it sets out to.

Re: Show HN: Kvass, a personal key-value store

#67

Earlier quoted context omitted.

This seems unnecessarily snarky. You can make anything sound silly by reducing its functionality to the most basic level possible, ignoring all aspects of ergonomics and packaging. And you could make this comment about any storage engine. Like the infamous Dropbox comment here.

What's wrong with Dropbox comment? I still didn't find any use for this service, but rsync works for me almost every day. IMO Dropbox is useless.

yc and Dropbox realised that people would like to pay for it. in the same logic, a toaster is useless, I can always just heat bread in a pan no?

Re: Show HN: Kvass, a personal key-value store

#68

Earlier quoted context omitted.

This seems unnecessarily snarky. You can make anything sound silly by reducing its functionality to the most basic level possible, ignoring all aspects of ergonomics and packaging. And you could make this comment about any storage engine. Like the infamous Dropbox comment here.

What's wrong with Dropbox comment? I still didn't find any use for this service, but rsync works for me almost every day. IMO Dropbox is useless.

a browser is useless, you can always send a request through curl and read the html.

Re: Show HN: Kvass, a personal key-value store

#70
I have so many questions about this. Much of the architecture seems off to me. I like the concept, but it doesn't seem as secure as it could be.

For the README, I'd hope to find a bit more information about the way data is stored and transmitted. For example, this seems to just be a SQLite database with values in fields? Is there a separate encryption key for the database itself? Otherwise anyone with access to the file would be able to see all data stored?

The encryption key is only used to encrypt data in transit, but not at rest? And then you're encrypting the full JSON blob instead of only the values? This seems risky to me.

What is the purpose of the ProcessID? It is randomly generated and stored in the database (thus used by all clients too). So, I'm not sure what this is for? I see it's used to resolve conflicts, but these should probably be given out by the server?

Do the clients cache data locally? It looks like you're basically syncing from the server for every request. You're already making a round trip to the server for a request anyway, so why not keep state only on the server? I can understand an offline-only mode, but this would require a significantly more robust sync mechanism. If this was the goal, I'd love to see this discussed more in the README too.

Finally, I don't understand why you're using plain HTTP (no TLS) for communication b/w client and server. I didn't see any authn/authz in the requests. You're also unmarshalling random data from the request w/o confirming that it is valid first. This seems risky to me and could potentially crash the server if I were to send it random data.

This would have been a great use-case for a simple (non-HTTP/JSON) TCP server:

    >>> AUTHTOKEN xxx
    >>> SET $KEY $LEN $SHA1
    >>> 
    >> AUTHTOKEN xxx
    >>> GET $KEY
    
Custom protocols have their own security issues, but it can also be easier to see where there are potential issues (like unmarshalling unvalidated blobs). If you wrap something like the above in TLS-PSK, you're set. If you want to use encryption for a session (after you authenticate), that's possible too, but you're at risk of effectively re-creating TLS.
Post reply on HN