bb-remote-execution
asciiflow
bb-remote-execution | asciiflow | |
---|---|---|
3 | 51 | |
104 | 4,415 | |
2.9% | - | |
8.2 | 6.4 | |
about 1 month ago | 28 days ago | |
Go | TypeScript | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
bb-remote-execution
-
Write Your Own Task Queue
Though it obviously depends on the case at hand, I sort of agree with this.
For a distributed build cluster that I maintain (Buildbarn, https://github.com/buildbarn/bb-remote-execution/), I also had to implement a scheduler process that would queue compilation/test actions, so that they can be executed on workers later on.
Initially I looked into using some conventional queueing system, but eventually settled on implementing my own as part of the scheduler process. So far I'm really happy with this choice, as it has allowed me to implement the following features, and more:
- In-flight deduplication of identical compilation actions. If identical actions are scheduled with different priorities, the highest priority is used.
- Multi-level scheduling fairness between groups, users in a group, builds run by the same user, etc.. The fairness cooperates well with priorities.
- Automatic removal of queued actions that are no longer associated with any running build.
- Stickiness, where workers prefer picking up actions that are similar to the one they ran previously, for reducing network utilisation.
- Facilities for draining workers.
Though I'm not saying it would have been impossible to achieve this with an off the shelf task queue, I'm not convinced it would have been easy. Adding new features right now only means I need to care about the actual semantics of it, as opposed to trying to figure out how to map it onto the feature set of the queueing system of choice.
-
LiteFS a FUSE-based file system for replicating SQLite
I was going to raise that point exactly.
As someone who spends an awful amount of time using FUSE, my recommendation is to only use it in cases where the software that interacts with the file system isn't easily changeable. For example, for Buildbarn which I maintain (https://github.com/buildbarn/bb-remote-execution), I need to use it. It's infeasible to change arbitrary compilers and tests to all interact with a network distributed build cache. Designing the FUSE file system was a pretty heavy investment though, as you really need to be POSIXly correct to make it all work. The quality of implementations of FUSE also varies between OSes and their versions. macFUSE, for example, is quite different from Linux FUSE.
Given that SQLite already has all of the hooks in place, I would strongly recommend using those. In addition to increasing portability, it also makes it easier to set up/run. As an example, it's pretty hard to mount a FUSE file system inside of a container running on Kubernetes without risking locking up the underlying host. Doing the same thing with the SQLite VFS hooks is likely easy and also doesn't require your container to run with superuser privileges.
-
Disorderfs: FUSE-based filesystem that introduces non-determinism into metadata
Buildbarn, a build cluster implementation for Bazel that I maintain, can also run build actions (compilation steps, unit tests) in a FUSE file system. Though the primary motivator for this is that it reduces the time to construct a build action's file system to nearly instant, it has the advantage that I can also do things similar to disorderfs. Shuffling directory listings is actually something that I also added. Pretty useful!
https://github.com/buildbarn/bb-remote-execution/blob/eb1150...
asciiflow
- How the Devteam Conquered the iPhone
- Monodraw
-
Nomnoml
> 7. You can put them in the source where they are relevant.
> Got a hairy state machine? Stick a comment at the top with something like nomnoml's syntax and anyone can follow what's going on without having to trace through the code.
For that use-case a markup graph language is a poor solution. Use https://asciiflow.com instead to produce something that people can digest without needing a third-party tool that may not even exist anymore.
- Architecture diagrams enable better conversations
-
Typograms: A definition and renderer for ASCII diagrams
Many diagrams I am able to draw manually as I'm editing source code on emacs, but for more complicated ones I tend to use this: https://asciiflow.com . To each their own, so pick your favorite ASCII editor.
-
Good graphic FlowChart drawing tool ?
This isn't at all what you are asking for but I use it in code all the time for flow-charting logic. https://asciiflow.com/ And on the plus side, the output is very portable.
-
[CppSerbia Meetup] C++ Customisation Points
Combination of: - http://maaslalani.com/slides/ - for slides - figlet/toilet/cowsay/lolcat - for generating titles and ascii art - https://github.com/lewish/asciiflow - for charts and diagrams
-
Oracle Industries: Helion Gasworks - My survival H2 facility!
So I used this website: https://asciiflow.com to draw out the diagrams and then pasted them into the LCDs using the monospace font! An LCD is 39x58 "ASCII tiles" FYI if you wanted to do this too!
-
What are considerations to make a website secure?
AsciiFlow
- Top 8 diagramming tools for software architecture
What are some alternatives?
litefs - FUSE-based file system for replicating SQLite databases across a cluster of machines
excalidraw - Virtual whiteboard for sketching hand-drawn like diagrams
verneuil - Verneuil is a VFS extension for SQLite that asynchronously replicates databases to S3-compatible blob stores.
GeneWeb - GeneWeb is a free (as in free speech) genealogy software with a web interface created by Daniel de Rauglaudre.
BeanstalkD - Beanstalk is a simple, fast work queue.
Mermaid - Edit, preview and share mermaid charts/diagrams. New implementation of the live editor.
miniqueue - A simple, single binary, message queue. Supports HTTP/2 and Redis Protocol.
blynk - Blynk is an Internet of Things Platform aimed to simplify building mobile and web applications for the Internet of Things. Easily connect 400+ hardware models like Arduino, ESP8266, ESP32, Raspberry Pi and similar MCUs and drag-n-drop IOT mobile apps for iOS and Android in 5 minutes
workerpool-go - auto-scaling worker pool (work queue) in Go, using generics
Reactive Resume - A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today! [Moved to: https://github.com/AmruthPillai/Reactive-Resume]
Monica - Personal CRM. Remember everything about your friends, family and business relationships.
Musical Artifacts - Helping to catalog, preserve and free the artifacts you need to produce music.