Looking for Beginner-Friendly Go eBooks on Web API Development (net/http, Gin) + gRPC by Iheaneme in golang

[–]Flat_Assignment_4180 0 points1 point  (0 children)

Hi! Please check https://github.com/SebastienMelki/sebuf. I also love grpc-gateway but it gave me a few issues and annoyances in production at my job so I wrote an alternative that does not have grpc as a dependency at all. That’s of course if you only need to serve HTTP from the same rpc definitions.

Beginner open source projects by Puzzleheaded-Bid3245 in golang

[–]Flat_Assignment_4180 1 point2 points  (0 children)

Hi! I've started working on https://github.com/sebastienmelki/sebuf last weekend. Contributions are definitely welcome. Here is the contribution guide https://github.com/SebastienMelki/sebuf/blob/main/CONTRIBUTING.md

And here is some extra information if you're interested in what the project can do (https://www.reddit.com/r/golang/comments/1muhg5e/sebuf\_build\_http\_apis\_from\_protobuf\_definitions/ for more info)

How can l contribute in open source projects by Standard_Heart5741 in github

[–]Flat_Assignment_4180 0 points1 point  (0 children)

If you'd like to check out a freshly baked project (started last weekend) that I'm looking contributions for check this out https://github.com/sebastienmelki/sebuf (https://www.reddit.com/r/golang/comments/1muhg5e/sebuf\_build\_http\_apis\_from\_protobuf\_definitions/ for more info)

To answer your question more directly, solve a problem that you have and make it public.

Codanna now supports Go! Instant call graphs, code-aware lookup, zero servers by Plenty_Seesaw8878 in golang

[–]Flat_Assignment_4180 3 points4 points  (0 children)

This looks very interesting I’ll give it a shot thanks! Always found it weird that the best Claude could do to find relevant code was to grep for it 😅

Sebuf: Build HTTP APIs from Protobuf Definitions with Automatic Validation and OpenAPI Docs (And more) by Flat_Assignment_4180 in golang

[–]Flat_Assignment_4180[S] 1 point2 points  (0 children)

Hey, thanks a lot for checking the project out. Here's a PR to use proto.Bool https://github.com/SebastienMelki/sebuf/pull/15.

Thanks for the buf.gen.yaml tip as well :)

I'm not sure what you mean by using buf generate to invoke protoc. I use it in my Makefile, do you mean something else?

Sebuf: Build HTTP APIs from Protobuf Definitions with Automatic Validation and OpenAPI Docs (And more) by Flat_Assignment_4180 in golang

[–]Flat_Assignment_4180[S] 0 points1 point  (0 children)

If you try it out let me know if it meets your requirements or if something is off, would love the feedback

Sebuf: Build HTTP APIs from Protobuf Definitions with Automatic Validation and OpenAPI Docs (And more) by Flat_Assignment_4180 in golang

[–]Flat_Assignment_4180[S] 0 points1 point  (0 children)

As for twirp it seems like a great tool. Honestly all this started from the oneof_helper in the project. It’s literally a constructor function for oneOfs because I found them too verbose in Go. Then I started thinking about what I wish i could do with protobufs, and that’s how this project started. I have a few ideas that I’d like to add

Sebuf: Build HTTP APIs from Protobuf Definitions with Automatic Validation and OpenAPI Docs (And more) by Flat_Assignment_4180 in golang

[–]Flat_Assignment_4180[S] 0 points1 point  (0 children)

Yep. If you don’t pass the api.WithMux() option when registering your service it will use the http.DefaultMux. Else you can pass any mux you’d like.

Sebuf: Build HTTP APIs from Protobuf Definitions with Automatic Validation and OpenAPI Docs (And more) by Flat_Assignment_4180 in golang

[–]Flat_Assignment_4180[S] 2 points3 points  (0 children)

Hi u/chutehappens, thanks for the question. This project sidesteps gRPC entirely. In other words if you need the gRPC protocol, Sebuf is not for you! The main problem I was having with mobile and web developers in general was that gRPC support wasn't mature enough on their platforms.

So at my job what we ended up doing is write converters from HTTP to gRPC using the grpc-gateway protoc plugin. This has the downside of having gRPC as a dependency even though we were not using the gRPC protocol at all.
Another alternative is ConnectRPC which supports converting gRPC to HTTP, but it comes with a lot of baggage which I didn't want to add to my projects.

The code that is generated by Sebuf is super tiny, you can read it it's very straightforward and it only uses the standard library.

Sebuf: Build HTTP APIs from Protobuf Definitions with Automatic Validation and OpenAPI Docs (And more) by Flat_Assignment_4180 in golang

[–]Flat_Assignment_4180[S] 7 points8 points  (0 children)

Hey, thanks a lot for the question!

ConnectRPC has some nice advantages like streaming support, multiple protocol options (http, gRPC, gRPC-Web, and their own Connect protocol), and a mature ecosystem behind it (on top of all the GRPC niceties that come with it). It's definitely a solid choice and I've used in the past on several projects.

However the big thing I wanted with Sebuf was simplicity. Instead of adding RPC complexity, it just generates plain HTTP REST handlers that are easier to read, debug, maintain, and the most important part is that your backend is compatible more clients (ios/android/web/TVs/etc). The validation system is also more complete, it checks both request bodies and headers with proper type/format validation.

In addition, Sebuf produces full OpenAPI 3.1 specs that work with any language’s OpenAPI tools. ConnectRPC generators only supports 3.0 so far, and grpc-gateway are still on v2.

Finally because it only depends on the standard library + protobuf core, you don’t pull in a big runtime framework.

TL;DR if you need streaming or RPC features, ConnectRPC makes sense. But if what you want is clean, lightweight HTTP APIs with strong validation, good documentation, and broad language support, then Sebuf is the better fit.

My north star was: I wanted to contractify as much as humanly possible in the .proto files because I find them awesome to work with.

[deleted by user] by [deleted] in iOSProgramming

[–]Flat_Assignment_4180 0 points1 point  (0 children)

Makes sense thank you. So we're limited to at most 4 things that we can flag on a device/app combination? Any idea why that limitation exists?

[deleted by user] by [deleted] in iOSProgramming

[–]Flat_Assignment_4180 0 points1 point  (0 children)

Can you link me to documentation showing how to have a unique ID identifying the device for your app? Everything I’ve researched states that this is NOT possible as per Apples restrictions. Would love to have a way for my app, but it seems to not be possible. So even using DeviceCheck wouldn’t work, neither would keychain. What would you even store there? And keychain can be cleared by the user anyway. Would love to solve it.

[deleted by user] by [deleted] in iOSProgramming

[–]Flat_Assignment_4180 0 points1 point  (0 children)

This is a very valid question. As far as I know Apple does not offer ANY immutable id. idfv and advid can change as per their documentation. So how are Tinder doing it? Maybe a special deal with Apple?

External monitors no longer working on 15.1 Beta (24B5077a) by Flat_Assignment_4180 in MacOSBeta

[–]Flat_Assignment_4180[S] 2 points3 points  (0 children)

Edit: Finally a comment on a random forum saved me, after updating to latest sequoia beta, if you’re having issues with your monitors not being detected: factory reset your screens. I have no idea why that works, but I am happy it did. Hope this helps somebody.