falcon
Sandstorm
falcon | Sandstorm | |
---|---|---|
2 | 51 | |
925 | 6,646 | |
0.6% | 0.3% | |
7.8 | 5.4 | |
20 days ago | 3 months ago | |
Jupyter Notebook | JavaScript | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
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.
falcon
- Goodbye, Node.js Buffer
-
Launch HN: Drifting in Space (YC W22) – A server process for every user
Good questions!
> Why do you need one process per user? / Wouldn't this "event loop" actually be more efficient that one user/process, as there would be less context switching cost from the OS?
We're particularly interested in apps that are often CPU-bound, so a traditional event-loop would be blocked for long periods of time. A typical solution is to put the work into a thread, so there would still be a context switch, albeit a smaller one.
The process-per-user approach makes the most sense when a significant amount of the data used by each user does not overlap with other users. VS Code (in client/server mode) is a good example of this -- the overhead of siloing each process is relatively low compared to the benefits it gives. We think more data-heavy apps will make the same trade-offs.
> Can I just keep a map of (connection, thread_id) on my server, and spawn one thread per user on my own server?
If you don't have to scale beyond one server, this approach works fine, but it makes scaling horizontally complicated because you suddenly can't just use a plain old load balancer. It's not just about routing requests to the right server; deciding which server to run the threads on becomes complicated because you ideally want to decide based on the server load of each. We started going down this path, realized we'd end up re-inventing Kubernetes, so decided to embrace it instead.
> Could I just load up my server with many cores, and give each user a SQLite database which runs each query in its own thread? This way a multi GB database would not be loaded into RAM, the query would filter it down to a result set.
If, for a particular use case, it's economical to keep the data ready in a database that supports the query pattern users will make, it's probably not a good fit for a session-lived backend. In database terms, where our architecture makes sense is when you need to create an index on a dataset (or subset of a dataset) during the runtime of an application. For example, if you have thousands of large parquet files in blob storage and you want a user to be able to load one and run [Falcon](https://github.com/vega/falcon)-type analysis on it.
Sandstorm
-
Website Impersonating a Desktop Environment
Sandstorm really had this kind of feeling. Not that it presented as a desktop environment visually - but it offered a much more integrated “computer” of documents versus silod web site apps where you need to open each site to see the files in the app. https://sandstorm.io/
-
Ask HN: Experience using your user's Google Drive instead of a database?
RemoteStorage https://remotestorage.io/ seems to be trying to do this too
I also really like the https://sandstorm.io approach which goes a little farther beyond
-
Tech Independence
They tried, it was called sandstorm https://sandstorm.io/
-
Ask HN: WordPress vs. Django/Flask?
I did read from somewhere, that with Wordpress SEO plugins etc some website got to top of search results.
Those that did website with other tech did not get same results, and thinked how to compete or survive.
For security, I use Sandstorm https://sandstorm.io fork of WordPress that generates static websites. But that does not work with some interactive plugins.
-
Plunder and Urbit
Urbit made the choice to use a bunch of silly new words for familiar concepts, not because they were inventing something so new that there were no words to describe it, but because they wanted to fool people into thinking that's what they were doing. Actually they just spent 10 years trying to do https://sandstorm.io/, but made it 10 times harder than it needed to be by coming up with a wacky new set of programming languages with silly names for everything.
That's funny, and it is OK to make fun of it.
-
Cap'n Proto 1.0
I don't work at Cloudflare but follow their work and occasionally work on performance sensitive projects.
If I had to guess, they looked at the landscape a bit like I do and regarded Cap'n Proto, flatbuffers, SBE, etc. as being in one category apart from other data formats like Avro, protobuf, and the like.
So once you're committed to record'ish shaped (rather than columnar like Parquet) data that has an upfront parse time of zero (nominally, there could be marshalling if you transmogrify the field values on read), the list gets pretty short.
https://capnproto.org/news/2014-06-17-capnproto-flatbuffers-... goes into some of the trade-offs here.
Cap'n Proto was originally made for https://sandstorm.io/. That work (which Kenton has presumably done at Cloudflare since he's been employed there) eventually turned into Cloudflare workers.
Another consideration: https://github.com/google/flatbuffers/issues/2#issuecomment-...
- 1Sub.dev – A world where people pay for software
- Sandstorm: Open-source platform for self-hosting web apps
What are some alternatives?
stateroom - A lightweight framework for building WebSocket-based application backends.
yunohost - YunoHost is an operating system aiming to simplify as much as possible the administration of a server. This repository corresponds to the core code, written mostly in Python and Bash.
nodejs-polars - nodejs front-end of polars
NextCloudPi - 📦 Build code for NextcloudPi: Raspberry Pi, Odroid, Rock64, curl installer...
streams - Streams Standard
sovereign - A set of Ansible playbooks to build and maintain your own private cloud: email, calendar, contacts, file sync, IRC bouncer, VPN, and more.
proposal-zero-copy-arraybuffer-list - A proposal for zero-copy ArrayBuffer lists
Open and cheap DIY IP-KVM based on Raspberry Pi - Open and inexpensive DIY IP-KVM based on Raspberry Pi
proposal-arraybuffer-base64 - TC39 proposal for Uint8Array<->base64/hex
DietPi - Lightweight justice for your single-board computer!
spawner - Session backend orchestrator for ambitious browser-based apps. [Moved to: https://github.com/drifting-in-space/plane]
Ansible-NAS - Build a full-featured home server or NAS replacement with an Ubuntu box and this playbook.