network | refute | |
---|---|---|
3 | 3 | |
20 | 9 | |
- | - | |
4.6 | 5.9 | |
11 days ago | 6 months 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.
network
-
Ask HN: Why isn't JSON-RPC more widely adopted?
So funny you say this. I think it's the insight of many developers including my own. I hacked together a framework that did this before the existence of GRPC. Now I'm trying to formalise it as a protocol. https://github.com/micro/network/blob/main/PROTOCOL.md
-
More Instant Messaging Interoperability
Alright, let me throw my hat into this ring with a totally unfinished idea. I started working on a design for something called the Micro Communication Protocol (MUCP) [1]. It's a header based protocol that's transport agnostic and focuses on service-to-service communication. An early prototype existed in Micro [2] but I'm primarily focused on redesigning the protocol before re-implementing it. Micro was geared towards API first services but I'm looking to expand the scope and try to build a UI layer on top. Most of the protocols focused very much on communication between people but I think if you focus on service-to-service communication more broadly it opens up the avenue to all sorts of multiplayer collaboration.
- [1] https://github.com/micro/network/blob/main/PROTOCOL.md
-
Real World Micro Services
Yea like you're part of this club that has exclusive access to something, you contribute to it, deliver value, see it grow and then it's gone when you leave. It exists within a silo and for the better part of a decade that's really irked me but I haven't quite figured out how to solve for that problem beyond doing it in a shared open source repo and a shared platform. I think I the issue is it's bigger than any one person and you have to find a way to sell thousands of people on the idea. My starting point was code and now I wonder could I have approached this differently? Is there another path in which this would actually succeed? I'm still trying to figure it out and it's driving me crazy. Next I'll be writing a protocol no joke https://github.com/micro/network
refute
-
Ramda: A practical functional library for JavaScript programmers
I find straight forward, dedicated combinators much more readable and practical to use ie. for iterables (context where it makes a lot of sense) [0] example [1], runtime assertions (through refutations, which are much faster than combinators over assertions) [2], parser combinators for smallish grammars [3] etc.
In many cases vanilla/imperative js is more readable and terse, no need to bring functional fanaticism everywhere, just in places where it gives true benefits and in form that can be understood by peers.
Functional code can be beautiful and can also be unreadable/undebugable. Same with imperative code. It's great in js/ts you can pick approach where the problem is expressed more naturally and mix it at will.
[0] https://github.com/preludejs/generator
[1] https://observablehq.com/@mirek/project-euler
[2] https://github.com/preludejs/refute
[3] https://github.com/preludejs/parser
-
Ask HN: Why isn't JSON-RPC more widely adopted?
We use jsonrpc over websockets in production for many years in trading services. It works very well. We use lightweight libraries that look like this [0] and this [1]. It's lightweight, fast, type safe, easy to maintain and debug etc.
[0] https://github.com/preludejs/jsonrpc
[1] https://github.com/preludejs/refute
-
An Inconsistent Truth: Next.js and Typesafety
Types can be asserted at runtime (parsed) at IO boundaries (reading http request or response, websocket message, parsing json file etc). Once they enter statically type system they don't need to be asserted again.
The difference it makes is illusion of type-safety vs type-safety this article touches on.
You can try to bind service with client somehow but in many cases this will fail in production as you can't guarantee paired versioning, due to normal situations by design of your architecture or temporary mid-deployment state or other team doing something they were not suppose to do etc. It's hard to avoid runtime parsing in general.
Functional combinators [0] or faster [1] with predicate/assert semantics work very well with typescript, which is very pleasant language to work with.
[0] https://github.com/appliedblockchain/assert-combinators
[1] https://github.com/preludejs/refute
What are some alternatives?
services - Real World Micro Services
assert-combinators - Functional assertion combinators.
sydent - Sydent: Reference Matrix Identity Server
next-rpc - makes exported functions from API routes accessible in the browser. Just import your API function and call it anywhere you want.
json-api - A specification for building JSON APIs
parser - String parser combinators
Spectrum 2 - Spectrum 2 IM transports
sick - Streams of Independent Constant Keys
biboumi - IRC gateway for XMPP
gradual-typing-bib - A bibliography on Gradual Typing
server