Comments by "Biomorphic" (@biomorphic) on "ByteByteGo" channel.

  1. Most company do Scrum + DevOps, which means there is a DevOps engineer as part of the team. This person is basically a system administrator with cloud knowledge, usually AWS, less frequently Azure and GCP. He can't write a program and he has no idea when to use DocumentDB and when DynamoDB. The issue with this approach is that only one person knows how to deploy and running the services. To deal with this issue, sometimes companies create a DevOps team, but this often does not work either, because it becomes a bottleneck. Sometimes developers need very specialised tools, like Kafka, Flink, that DevOps simply can't scale or operate properly, due to the massive amount of configuration required. So for me it's way better if there are no DevOps at all. Facebook instead employs SE in teams called Production Engineering Teams. Basically these are skilled developers with deep knowledge of the operating system and application they run. People who can debug the code. Facebook does not use Kubernetes or ECS or whatever, so these teams ensure a service, or a bunch of services, are up and running. But do not make mistakes, these are not DevOps, these are skilled Software Engineers. What I personally did, as tech lead and CTO, was to create a platform. In small startups I created the platform myself, and then developer used it. My colleagues were surprised we were able to cut 80% of the code. In bigger companies I usually create a team, that I call R&D, but it's basically PE, that is responsible to build the platform. I do not think one solution fits all use cases. But PE for me is better, because the entire team acquires knowledge of the platform using it. They learn how to deploy, how to make improvements to the platform itself. I am a huge fan of PE and monorepo.
    15
  2. 10
  3. 5
  4. 4
  5. 3
  6. 2
  7. 1
  8. 1
  9. First of all, it is true not all the clients are mobile apps (but they can be), but in fact you don't use the same method. You generate the token when the client is indeed an app (Android or iOS, they do both have a keychain). When the client is the browser, you do store the JWT in a cookie, and you tie the cookie to the IP, so that a stolen cookie cannot be used outside your network. Unfortunately there is not other way around it if a client is the web browser. Sure, you can install the app on your phone, assuming you were able to hack the phone of someone else who has legit credentials, and you stole his private key from the keychain (very very very very unlikely), but the keychain you are using is related to the did, and the did (device ID) of your device is different, so the token that the app generates on your phone is invalid. You can push as much as you want, but generating the token on the client, when the client is a mobile app, is much more secure, especially if the mobile app is the only client you have. You cannot perform any attack, unless you steal the phone, and you pass the biometric, having full access to the device. Also this system ensures that a user can use his set of credentials on a single device, so that different users cannot share their credentials and pay for a single license, which is something you cannot do otherwise. I studied this stuff, I know what I am talking about. If I did the thing this way is because I deeply studied the subject. Maybe in the future, with WebAssembly, we'll have a way to make it work also inside the browser. Maybe it is already possible, I do not know. @marklnz 
    1
  10. 1
  11. 1
  12. 1
  13. 1