lbirkert

lbirkert

0-day streak
github.com/qb-rs/qb We got android working 🥳 - Well, sorta. And the road was bumpy as well. Let me elaborate. I firstly tried to just straight up build the daemon binary for android (and its different architectures arm64-v8, armeabi-v7, x8664). Building was really a hassle but in the end successful. Then I put those into my assets directory of flutter only to realize that after copying to a directory on the android device you cannot execute those, as the filesystem they are copied onto is writable and therefore we have a W^X violation (which basically just means you cannot have a writeable and an executable file at the same time). Then I thought about how I could get the binaries onto a readonly file system for them to run. I tried with jniLibs, but no luck there and it also felt kinda wrong having to rename my executables lib<name>.so. In the end I decided to just package the daemon into a library (which now means I've got two separate packages for the daemon, the library `qb-daemon` and the binary `qb-app-daemon)` . Using a package called `flutterrustbridge` this seemed to be quite easy. Until I had to realize, that it requires me to make the QBDaemon struct Sync for use in asynchronous code shared with dart, which was not in any way trivial and I definitely considered just giving up half way through. But after that was complete, it now works like a charm. There's still some stuff to implement, namely the DocumentsProvider to allow accessing the files through the system file explorer, the QBI setup process and its UI, but this brings me just one step closer to my goal. (btw. flutterrust_bridge also makes iOS packaging a lot easier, so it was definitely worth it)
https://scrapbook-into-the-redwoods.s3.amazonaws.com/c85d8875-bf01-44f3-8e41-5d69f145f12f-image.pnghttps://imgutil.s3.us-east-2.amazonaws.com/589c6d4b49f2e78b9419692ef655f24e0ed30ad452adaba686182984f677c4da/51aaee36-9123-483d-9716-f158bd54d27b.png
github emoji
summer-of-making emoji
github.com/lbirkert/oscsim Today I implemented settings for springs, which allows to access the stiffness field and like here, modify it to have negative values as well. The red spring in this case has a negative stiffness and tries to push the anchor away from the other, while the yellow springs have positive stiffness values and try to pull the anchor inwards.
https://imgutil.s3.us-east-2.amazonaws.com/d73a4e57d8fda2a944b29b424d12c02ffdf8b77f589ec99b4fdb4465c1633289/08e8aabb-1fa0-4cf7-89b3-a0bc63bc87e5.png
summer-of-making emoji
github emoji
github.com/qb-rs/qb Implemented watching for renames today. This introduces a few more challenges, as we should collapse files, whose only dependence is the source destination of a rename so that we can for example diff efficiently. Geany for example creates and writes to a temporary file, which it then renames to the actual file name. If we then change a file using geany, we basically get Create tmp; Write tmp; Rename tmp file.txt with the write not being diffable, as the contents of the tmp file are empty at first instead of Write file.txt . I've delayed writing a minifier for changemaps but I am interested in how the algorithm will look like for this in the future.
https://scrapbook-into-the-redwoods.s3.amazonaws.com/80c04259-9419-4e41-9d2b-15b301a082ac-image.pnghttps://imgutil.s3.us-east-2.amazonaws.com/93efab2ec4464bdc4dc348e88aa57de80c717498c100d314700a56a563d0eba3/e2a6b899-f9de-4a27-bdad-ead2ad48c2f8.png
github emoji
summer-of-making emoji
https://scrapbook-into-the-redwoods.s3.amazonaws.com/b913c37f-a7e6-49b8-a17f-8f8acaedde9e-image.pnghttps://imgutil.s3.us-east-2.amazonaws.com/7792a11dbee49c2ec996e01e257019586d89dfca104097140a7ed6518529b4b2/0a4179e9-8c1a-4905-a936-c2fad0e50578.png
https://scrapbook-into-the-redwoods.s3.amazonaws.com/4fbca23a-579d-4bc6-9bce-7297e477cd26-image.pnghttps://imgutil.s3.us-east-2.amazonaws.com/08c812bfb2d2c4e6b567f987a61dd4e191585e5424910ce31d0e4a70e725dc55/7e49e939-0b19-48f7-a2d5-63e70a6aef02.png
summer-of-making emoji
github emoji
https://imgutil.s3.us-east-2.amazonaws.com/8bb3d18a6d659a2971907414b3ed3a4f89f9b61aaddd1ab75d9088e29dbefedc/42ddbe7f-88dd-4cf0-a109-b0d71349141c.png
github emoji
summer-of-making emoji
github.com/qb-rs/qb Implemented TLS for the qbi-tcp today. One more step in the direction of a first beta release.
https://scrapbook-into-the-redwoods.s3.amazonaws.com/f8da4ed2-97b9-41a3-acad-cafa7e4b28ee-image.pnghttps://imgutil.s3.us-east-2.amazonaws.com/0f0edfcf71f47614c18fa4adba6c7b8ac06f3acd3435528d2a89ac5d08e29444/a7dc652d-6aee-4ed2-9b2b-278de9185462.png
summer-of-making emoji
github emoji
Improved the CLI client a lot. If you are wondering, what exactly you are seeing here, quixbyte is an application stack for synchronizing your files. The CLI client (which you are seeing here) provides a way of interfacing with the Daemon (in the future there will be graphical clients as well). We can attach so called interfaces, which can handle synchronization between another device (here we have local, which synchronizes a folder, as well as client-socket, which connects to a server over a custom protocol, also running quixbyte). I plan on improving this a lot, meaning, adding interfaces for other storage solutions (for example google drive or quixbyte), adding wide platform support and creating graphical user clients. github.com/qb-rs/qb/commit/8a43d4017aab25a540612babd7ffab155c701379
https://scrapbook-into-the-redwoods.s3.amazonaws.com/6f8b95ba-4e4b-49e4-be91-3ef8c40f71b2-screenshot_2024-08-07-18-02-56_1920x1080.pnghttps://imgutil.s3.us-east-2.amazonaws.com/8cb4c298fe6c0db73c55c31ff7b32055b930afe80f6c07db09f197d36be4bb06/a97a248a-e196-4540-b7e6-c734e8964cf8.png
github emoji
summer-of-making emoji
google emoji
https://scrapbook-into-the-redwoods.s3.amazonaws.com/b3e16f1f-667f-4ce2-aa7d-8072c64e5e67-image.pnghttps://imgutil.s3.us-east-2.amazonaws.com/be097955a9f97f15421baf6d70af6b15b587bbd8c26ee9566e03bce074dc0420/929def76-d82a-4c39-a950-62702aaa764a.png
github emoji
summer-of-making emoji
github.com/qb-rs/qb I am really happy with the new protocol implementation, as it automatically negotiates the content-type and content-encoding that is used to exchange messages [via the negotiate function].
https://scrapbook-into-the-redwoods.s3.amazonaws.com/2492581b-1ff1-4cb0-bb17-ed84a4029915-image.pnghttps://imgutil.s3.us-east-2.amazonaws.com/fe284811e63fbf6292690507b7b3fa6e00f88133829c23d421ab6cfc87489888/9080b850-44aa-490f-9f47-d9878e7c394c.png
summer-of-making emoji
github emoji
https://imgutil.s3.us-east-2.amazonaws.com/8bb3d18a6d659a2971907414b3ed3a4f89f9b61aaddd1ab75d9088e29dbefedc/8dbac155-ac76-40c0-acc7-5220cb2c6ce5.png