Monday, 25 November 2019

rajivprab.com: Myths Programmers Believe about CPU Caches


https://software.rajivprab.com/2018/04/29/myths-programmers-believe-about-cpu-caches/

As a computer engineer who has spent half a decade working with caches at Intel and Sun, I’ve learnt a thing or two about cache-coherency. This was one of the hardest concepts to learn back in college – but once you’ve truly understood it, it gives you a great appreciation for system design principles.
You might be wondering why you as a software developer should care about CPU cache-design. For one thing, many of the concepts learnt in cache-coherency are directly applicable to distributed-system-architecture and database-isolation-levels as well. For instance, understanding how coherency is implemented in hardware caches, can help in better understanding strong-vs-eventual consistency. It can spur ideas on how to better enforce consistency in distributed systems, using the same research and principles applied in hardware.

Monday, 18 November 2019

InfoQ: Containers in 2019: They're Calling it a [Hypervisor] Comeback

https://www.infoq.com/articles/containers-hypervisors-2019/

  • Near the close of 2018, Amazon amped up an already-increasing interest level in the marrying of container and hypervisor technology by announcing Firecracker, a Rust-based Virtual Machine Monitor
  • Around the midpoint of this year, Weaveworks introduced a new project, Ignite, which wraps Amazon’s Firecracker project with a container-lifecycle UI experience.
  • One clear use case for this new marriage of hypervisor technology and containers is to add a layer of protection and isolation to potentially sensitive (or untrusted) workloads.
  • User experience is also important within the hypervisor/container space: a growing number of companies, developers, and open source projects have become dependent on the simple life-cycle and user experience that Docker brought to the container world. 
  • Providing “isolation flexibility” within container orchestration frameworks like Kubernetes is becoming increasingly important. Can and will we have a world where clusters can provide dynamic choice based on workload type? The answer is yes!

torbjorn gannholm: The perfect programming language

https://cygni.se/the-perfect-programming-language/

I have always held that the act of programming is something that is done in an abstract realm and only later translated into a programming language. That programming should involve much more thinking than actual writing.
I mostly still stand by that but my years as a readability reviewer at Google raised my awareness of the fact that it takes time and practice to use a language well. Many were the hopeful C++ programmers who wrote fully functional and reasonably object-oriented code in Java but with a heavy C++ accent that couldn't quite meet the bar of elegance in Java (even if a C++ programmer might think it mostly elegant apart from the "flaws" of Java).
So how much does the choice of programmimg language matter? Is there or could there be a language that could be considered perfect?

Jacob Kaplan-Moss: How to Ace a Technical Interview

https://speakerdeck.com/jacobian/how-to-ace-a-technical-interview

Jacob Kaplan-Moss: My Python Development Environment, 2020 Edition

https://jacobian.org/2019/nov/11/python-environment-2020/#atom-entries

My setup pieces together pyenvpoetry, and pipx. It’s probably a tad more complex than is ideal for most Python users, but for the things I need, it’s perfect.