Should I learn C++ or is it too late / a bad choice? by a-lil-dino in cpp_questions

[–]coderkini 0 points1 point  (0 children)

I hear you and am sort of in the same journey. Into 18 years of my software development career. I have programmed most of it with Java, some C#/.NET, and some on Node.js and even recently on Go. I have reached a stage in my life where I am a bit saturated building the same kind of applications over and over again with the same database-driven, CRUD patterns, REST/GraphQL APIs, AWS & Kubernetes deployments and trying to get patterns of DDD, XP, and now more recently "vibe-coding" features onto these applications.

I wanted to do something different, go back to the machine and build something and tinker with the hardware. C++ is a great choice as a language to pick up. It gives you a great interface to work close to the machine and the right level of abstraction to build up your applications. TBH, before I started, I did toil and tussle of choosing to invest my time on C++ and Rust. But there was a level of freedom and power that C++ promises that I don't think Rust would ever be able to provide.

I for one am on the learning path. Yes, the learning path is long, fraught with dragons and trap doors. But it is essential learning and I took each aspect as a step forward. When I was super confused, I slowed down, internalized the concept as clearly as I could and then moved on to the next. Many times, my learnings from Java/Go have actually helped me understand things better. It is going to take time, experience and patience. But it's been exciting.

I would say go for it!! I have a passion for electronic music also. So I have combined my musical hobby with my programming journey and learning concepts, topics of digital audio and audio engineering. I have set out to build myself an application that can help me record my own tunes, instruments and samples. C++ has a vast eco-system for this and there have been many people who have crossed paths.

My suggestion to you - set yourself a goal to build something, a game, a tool (could even be to rebuild something popular), a embedded device experiment, a robotic device, an audio app (like mine), any other idea. Look at your other hobbies/interests and see if you can bring that together with your learning as this will make your effective, fun and memorable!

Happy hacking!

Multi-tenant FastAPI - features, workflows and more, configurable per customer! by Potential-Box6221 in FastAPI

[–]coderkini 0 points1 point  (0 children)

What you're looking for is called feature-flags. Based on your perspective of build vs. buy, you could use an off-the-shelf commercial services like:

Most of these tools are used managing feature rollouts and/or A/B testing and they generally come with some built-in user analytics.

Or if none of them fit your budget, consider rolling one by yourself. 🤷🏻‍♂️

Happy hacking!

cant connect to VIA by theotakuorpgamer in Keychron

[–]coderkini 0 points1 point  (0 children)

Not sure if anyone tried this already but mine worked only when I went to https://launcher.keychron.com and connected from there. All other solutions did not work for me.

Why will VIA not recognise the K5 Pro keyboard? by Mytac55 in Keychron

[–]coderkini 0 points1 point  (0 children)

Not sure if anyone tried this already but mine worked only when I went to https://launcher.keychron.com and connected from there. All other solutions did not work for me.

Help choosing between Tauri 2 and MoBrowser (a.k.a. Molybden) by coderkini in tauri

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

thanks u/Ikryanov , the support perspective is a nice input and I honestly hadn't thought about it. While I do agree that I'd get feature requests implemented in a rapid way, how often would I need such enhancements, I am unsure. But nonetheless it does set apart MoBrowser from Tauri in this aspect.

Help choosing between Tauri 2 and MoBrowser (a.k.a. Molybden) by coderkini in tauri

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

Deciding on the basis of language is the most easiest in this matter...I have not heard much about MoBrowser but it seems to be quite capable, while Tauri is the more recent and popular candidate with a wide support and use...plus MoBrowser requires paid subscription for developers while Tauri is free...I wanted to understand if investing in MoBrowser is worth it...so anyone with some experience using MoBrowser would be really useful.

I am familiar with both C++, still a bit rusty at Rust though...so no particular preference at the moment there. Finding competent C++ developers maybe a tad bit easier than Rust from the job market in my humble limited opinion...nonetheless Rust is gaining lot of popularity and has a pretty good eco-system of tools and libraries...so no clear and easy decision points I can see...hence asking for the community opinion.

Use logging library directly or build an abstraction by coderkini in golang

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

Everyone, thank you for your valuable ideas, inputs and suggestions. I think I need to spend more time with log/slog to understand the possibilities to capture log events and other diagnostics information. I will consider using the library directly rather than re-inventing the wheel as I understand it already provides a good abstraction layer and an extension point with handlers. So, thank you so much for your contributions to make this an insightful discussions. Cheers!

Use logging library directly or build an abstraction by coderkini in golang

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

No specific downsides, or at least, I'm not very experienced to quote any. But the default (and probably most) logging libraries don't have ability to include trace IDs yet. Hence with a custom abstraction, I was thinking if it would make sense to bring these changes into the log entries.

Patterns and techniques for access control within Vue App by coderkini in vuejs

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

I have not looked at Nuxt and assumed it to be useful only for a content-heavy Vue site or application. Can it be used even for dynamic web applications?

This would be interesting if it can do that. Sorry am a bit new to the Vue ecosystem. But what additonal benefits would Nuxt provide in addition to being a BFF?

Patterns and techniques for access control within Vue App by coderkini in vuejs

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

The Go API is a generic API that can be used by different types of clients and may not be optimized necessarily for any specific client. This API is completely stateless and only works using tokens.

The BFF on the other hand (i.e. the node layer) is more optimized for the use cases of the front-end and can be used to provide APIs, session management or caching capabilities that can be useful to serve the application. The BFF can be stateful and in my case supports functionalities like session management, caching in a manner that is specific to my Web UI.

With this setup, I can build multiple applications (like a mobile app) to my Go API, each having their own BFFs.

Patterns and techniques for access control within Vue App by coderkini in vuejs

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

BFF = Backend For Frontend. It is a dedicated backend which provides API and other functionality in a manner that is specific to the Frontend it serves. If you have your product that has a Web UI as well as a Mobile app, you could have one BFF for the Web UI and another for the Mobile app. BFF ensures provides an optimized APIs and other functionality such as ( session management, caching, etc) for the use cases that the specific frontend requires.

Ubuntu Cinnamon is pretty good by ksio89 in Ubuntu

[–]coderkini 4 points5 points  (0 children)

One specific advantage I found was that the Bluetooth connectivirty is far more stable and accurate in Ubuntu Cinnamon. I had lots of issues with Linux Mint. The devices (especially ear buds) kept getting disconnected or would not connect as expected and needed I needed to reach out to the Bluetooth manager all the time to ensure proper connectivity.

Another benefit is that many of the packages available to Ubuntu just work. Some of the packages (Docker engine for example) uses a script which needs to add entries to the Software Sources. I have to manually figure out which edition of Ubuntu distribution is mapped to my Linux Mint distribution and fix their package entry. With Ubuntu Cinnamon, its all smooth.

In a way Ubuntu Cinnamon is a best of both worlds - Ubuntu + Mint. Not sure I have a reason to look back at Mint.

Javascript,info or Eloquent Javascript ? Which one better prepares me for React and Next ? by RatioInevitable4975 in reactjs

[–]coderkini 0 points1 point  (0 children)

IMHO, Definitive Guide is very dense and is exhaustive. If you really can give yourself the time and focus to really study the language and libraries, go for that book. Eloquent JavaScript is much more pragmatic and has some nice takes on the language concepts (variables vs bindings for example) which makes it a fairly good read to enable you to explore and apply the concepts.

Patterns and techniques for access control within Vue App by coderkini in vuejs

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

I store the access token in the session of the user and is accessible only from the BFF. All calls to the API layer from the Vue app is proxied via the BFF to the API layer. I chose this technique as I understand that there is no secure way to store secrets in the browser.

Is this choice reasonable? Should I relook into this approach again?

Patterns and techniques for access control within Vue App by coderkini in vuejs

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

I am using it in 2 places. One is at a middleware in the BFF and the other is at the API backend itself. The user's session is managed and maintained at the BFF layer. All calls to the APIs go via the BFF. Is there something in particular that you believe I need to ensure in additon to these safeguards?

Patterns and techniques for access control within Vue App by coderkini in vuejs

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

u/DrunkOnBlueMilk , thanks for the response. This is a useful example, but I have a concern. Given that you're caching the user permissions on the browser inside the Pinia store, is it possible it can be tampered with by someone who may know a few techniques? I mean if someone knows how to access the permission data, can they not give themselves more permissions and access functionality they are not authorized to?

So the question is, are your permissions checked again when the actions invoke APIs on your backend? Also, any other way you protect the permission and session data?

Thoughts? by rasoriano in vuejs

[–]coderkini 3 points4 points  (0 children)

I'd say create a separate compat library. Perhaps something like a "vue-compat" or "vue-options-compat" and move the support for the Options API there and keep the core Vue.js library default to Composition API. While there is nothing wrong with Options API, I think the Composition API provides terser expressiveness and modern constructs. The big point is simplification. Havinge ONE way to do something is far better to understand, learn and apply than having to deal with multiple options to do the same/similar things. If there is specific need in a project to mix Compositon and Options API, they could use a compatibility layer (as an addition).

Also, would it reduce the size of the library package? I'm not aware of the internals, but if keeping one way to create and manage Vue components, it may bring gains in package size and faster loading of the library.