538 karma · joined March 26, 2013
What's really missing is a good way to browser by metadata (e.g. author, series or even your own custom tags). However, there seem to be some progress here [0].
Are there other books like this?
Edit: Actually, those colleagues are doing a talk about that topic. So, if you are in Germany and Hannover area, have a look at [2] and search for "Nie wieder Log-Files!".
[0]: https://opentelemetry.io/docs/instrumentation/ruby/manual/#a...
[1]:
tracing.ts:38 Usecase: Handle Auth
tracing.ts:47 http://localhost:16686/trace/ec7ffb1e23ddbb8dd770a3f08028666b
tracing.ts:38 Adapter: Find Personal Board
tracing.ts:47 http://localhost:16686/trace/e22d342316ab0d7d23230864008e27bc
tracing.ts:38 Adapter: Find Starred Board List
tracing.ts:47 http://localhost:16686/trace/129f89cee26d54cfdc38abea368d9b4e
tracing.ts:38 Adapter: Find Personal Board List
tracing.ts:47 http://localhost:16686/trace/97948127d77501ff0c65a5db21b21b5a
[2]: https://javaforumnord.de/2023/programm/[1]: https://logseq.com/
I build my packages regularly (not pruned), then I prune with scope "backend". Apparently the pruned directory contains node_modules with empty packages, not sure what reason is for that; I just ignored it. In the resulting directory I then run `pnpm install --prod`. Only the regular dependencies will be installed. I think this is enough for my usecase. I am not sure if prune is supposed to be used for this approach though.
Personally I am using an unused key on my keyboard (layout) as modifier to access them. My particular mapping is based on the Neo Layout [0]. Basically FPS-style WASD but shifted by one key to the right.
As tool to change keyboard layout I use Interception Tools [1] and a personal C program. The advantage of interception tools is that it works everywhere (even outside a desktop environment).
[0]: https://www.neo-layout.org/ – It's a German page, but you can look at "Ebene 4" on the keyboard thingy to see the layout.
[0]: https://docs.yjs.dev/api/document-updates#syncing-clients
Personally, I don't use classes much, but sometimes I think free functions are a little too hard to find, so I tend to experiment with the following pattern.
interface User { … }
const User = {
rename(user: User, newName: string): User { … },
getDisplayName(user: User): string { … }
}
const renke: User = { … }
console.log(User.getDisplayName(renke));
Which makes finding an operation for a certain type easier to find (just write User and trigger autocomplete).The alternative is of course having renameUser (or userRename) and getUserDisplayName (or userGetDisplayname). The prefixed version would make autocomplete easier also.
Perfect!
> However, it sounds like you like to see glob fan out of tasks.
Yes, the idea here being that I don't want to list all similar tasks (such as linting) explicitly in the turborepo config. Teams should be free to add any additional lint task if they think it's useful for them (and possibly only for them). Similar to Maven(Java) where additional goals can be bound to the standard lifecycle phases.
* tasks on the root package (e.g. tsc -b that typechecks all packages)
* treat tasks such as lint:eslint, lint:pretter as a single task lint (or maybe lint:*)
These are probably niche features though.
I was actually about to mention Nix in my post as well. Being a casual NixOS user myself I wonder if there is any kind of monorepo tooling based on Nix? Without ever having used Bazel myself I always thought of it as Nix-like.
Any thoughts on Automerge vs. yjs? – I am not doing a text editor. I just want to build a solid offline-first web application.
Also, is there any way to "squash" the history of changes? Let's say I have a central server through which all changes are synced (no peer-to-peer syncing). Does it make sense to force clients that haven't synced for a long time (let's say a weeks) to just discard their non-synced changed and use the "current" state as stored on the server?
Okay, one more question: Let's say I want to add an API to my server that uses the data that was synced to server (assuming the sync state of Automerge/yjs is stored somewhere). Would the server in this case just be another client that just get's the data from the synced state and stores in an appropriate store (say a SQL database, Elasticsearch, etc.)?