@lyse@lyse.isobeef.org Hey, it’s nice to hear that :D
I guess there are already many tools to do that (my brother uses one when he’s riding a bike, with fancy animations and a 3D map), but when you make your own tool, it tastes differently.
Share with us if you revive it!
The thing yarnd uses seems a bit odd to Lyse.
I didn’t choose it 😅 I have no experience in this kind of thing 😂
@lyse@lyse.isobeef.org I also argue you can use a KV store here, but abstracting out the interface is a good idea anyway. The types of data you’re wanting to store (exercises) are more like time-series (which most use KV stores anyway).
Recommend Bitcask of course 😅 Or Badger or Bolt
Maybe long-term: OAuth/etc. But that goes against the rule of simplicity and
puts a big hole in the privacy part.
I’d recommend implementing IndieAuth. You can even test against any yarnd
instance out there as they’re all valid IndieAuth providers (or one locally even)
@lyse@lyse.isobeef.org Use Bitcask 😆 Designed for high write and read 😂
@lyse@lyse.isobeef.org If you’re going to seriously look at Bitcask (which I use in all my projects, including yarnd
) you should know some things up front:
- Be aware of a design flaw / bug #238 whereby your program will deadlock if you attempt to do
.Get()
(s) inside of a.Scan()
or.Fold()
. This is a known problem, so avoid doing this. The work-around is to copy the keys you want to work with, then perform your operations on them separately.
With that out of the way:
Hopefully most of the information on the README will be enough to get you started and understand performance characteristics and the overall API.
Couple of additional things to note:
- There export/dump commands to help you debug your database. As well as import/restore the other way around.
For example, I use this frequently:
$ bitcask -p ./dinofs.db dump | jq '. | map_values(@base64d)'
…continued…
There is also FUSE filesystem called bitcaskfs you can use to mount your database and treat it like a filesystem for debugging purposes or whatever.
And finally if you need High Availability or a Server<->Client model there is the builtin
bitcaskd
which provides a Redis-compatible API for a server/client model or the bitraft which provides Raft-based HA with a Redis-compatible API.
@lyse@lyse.isobeef.org Wow, that’s a good definition for the problem to solve. Was a pleasant surprise.
(Random story ahead) The name is pretty relatable for me since I heard that word in a Popular Mechanics magazine a few years ago about the band.
Do you have some screenshots or a quick video to watch how is it going? I know programmers are more text-based but an appealing image is always useful to share the visual idea behind it.
Something that has happened to me with FitBot is that if I leave the project in a theoretical way, only writing about it, and thinking about how to create it, I get sick of the idea. So I need some users (starting with me) to feel the product/software/service is alive.
@lyse@lyse.isobeef.org Also curious how you plan to write a Web UI without any Javascript – But you started off by writing a Rest API? Are those going to be two separate things?
@lyse@lyse.isobeef.org Thanks dude, I’ll take a look. If you need any specific feedback or to ping-pong ideas, throw me an @