3 ms·
Might you be looking at this through rose tinted glasses? I'm still a VIM user to this day, but my learning experience was hardly a clean incremental process.
by 0xFACEFEED 7y ago
Might you be looking at this through rose tinted glasses?
I'm still a VIM user to this day, but my learning experience was hardly a clean incremental process. VIM has no MVP if you're using it to program computers. Early on, I spent hours getting sucked into making the editor do what I wanted. I only stuck with it because I believed the investment of time was worth it (and it was).
> You don't need to understand a lot to copy files in and out of AWS s3 for example, and you can compose many services together even after a basic understanding. You can slowly learn about more features as you work.
This is dangerous though. You might unknowingly become a victim of vendor lock-in. Or you might have to throw out all of your work because you didn't understand the constraints of the system.
Subjectively, my evidence is how I (an experienced person) evaluates software and tools today. Step 1 is learning the architecture, Step 2 is finding the limits/constraints, etc (there's more but you get the idea). When I was evaluating Git I spent a couple hours researching the internals. This sold me on Git but it also made Git much easier to use down the road. It's not a very big time investment most of the time. This kind of evaluation has been so important when evaluating complex stuff like databases and SaaS products.
> Now that the unix philosophy is being more widely adopted, although renamed to microservice fundamentals, these ideas of lazy evaluation and protected data sharing probably be the next level of services research.
Microservices have been a disaster. The majority of implementations I've seen are brittle/buggy/convoluted messes. Complexity that was previously managed in code has been pushed to infrastructure -- and no one knows how to do infrastructure!
Most people that I talk to don't really understand what made the Unix philosophy work. Everyone cites "programs that do one thing and do it well". That's certainly the fun part, but it isn't what makes Unix programs so great. It's how programs do I/O (text and pipes).
In other words, it's not enough to build tiny modular single-use programs. You need an equally elegant system the combines the programs together. The programs need to strictly adhere to this system otherwise everything breaks down. Containers are not it. K8s is not it.
- disqard 7y agoThis is an important point, and I'll (re)state it: the pieces have to be modular, AND the "glue" has to afford that modularity.
- dragonwriter 7y ago> This is dangerous though. You might unknowingly become a victim of vendor lock-in. The simplicity of the individual services means it's easy to compose within a cloud, but it also means (particularly when the fundamental problem concept each is directed at is similar) that it is easy to abstract from a particular cloud by composing the solutions from separate clouds for the same problem behind a shared abstraction layer.
- 0xFACEFEED 7y agoThe dirty reality is that software is tuned to constraints of a particular cloud provider. Talk to anyone who's turned a long-lived single-cloud production system into multi-cloud. Example: How does AWS EKS provision control plane worker nodes? AWS CloudFormation. How do you manage security policies? AWS IAM. What kind of servers do you tune your software to run on? AWS EC2 of course. Now let's say you wanna take advantage of this fancy "composing the solutions from separate clouds" thing. Let's say you like Azure's Blob Storage over AWS's S3. Guess what? You're now paying for cross-cloud latency! Both in time and in cost. The devil is in the details.
- z3t4 7y agoPeople evaluate things differently. Some people care a great deal about social proof, others make decisions based on the color palette of the default theme. Some care a great deal about the programs having features they will never use. Etc.