Paged Out! is a new experimental (one article == one page) free magazine about programming (especially programming tricks!), hacking, security hacking, retro computers, modern computers, electronics, demoscene, and other similar topics.
Rusts type system requires that there only ever is one mutable reference to a value or one or more shared references. What happens when you need multiple references to some value, but also need to mutate through them? We use a trick called interor mutability: to the outside world you act like a value is immutable so multiple references are allowed. But internally the type is actually mutable. All types that provide interior mutability have an UnsafeCell at their core. UnsafeCell is the only primitive that allows multiple mutable pointers to its interior, without violating aliasing rules. The only way to use it safely is to only mutate the wrapped value when there are no other readers. No, the garantee has to be even stronger: we can not mutate it and can not create a mutable reference to the wrapped value while there are shared references to its value. Both the book and the std::cell module give a good alternative explanation of interor mutability. What are some patterns that have been developed to use interior mutability safely? How do multithreaded synchronization primitives that provide interior mutability follow similar principles?
This series is likewise designed to help visionary friends, but where his friends were living off-the-grid, my friends are creating the programming environments of the future. This series is democratizing access to tools one-step removed. These reviews are for the makers of tools, those that are pushing our computational interfaces forward.
When I was first introduced to quantum computing, the thought of quantum computers alone was mindblowing; it seemed more science fiction than reality. But what if I told you that real quantum…
- C and C++
- Architecture, Design Patterns and Refactoring
- Skills & Tools
- Agile Software Development and Scrum
- Operating Systems and Networking
- Embedded Systems and Computer Architecture
- Version Control
- Robotics
- Mechanical Engineering
The purpose of this text is to provide a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14/16/18 LTS (64-bit).
SQL is a programming language used for querying and managing data in databases and has become the backbone of modern analytics. Yet, there is no one go-to place for advance analytics using SQL. In…
When big data in eLearning is discussed, I often reflect on the difference in the terms data and information. Data is, of course, raw recorded information...
My Functional Programming journey was filled with dead ends, false starts, failed attempts and frustration. And I suspect that I’m not alone in this struggle. So why is this a common problem…
Learn more about how the Rust programming language shares many of the advantages offered by Haskell such as a strong type system, great tooling, polymorphism, immutability, concurrency, and great software testing methodologies. Rust is a good choice when you need to squeeze in extra performance.
This essay attempts to make Conal’s vision more understandable to less mathematically-oriented programmers, and also show how this perspective could be the foundation for a new era of programming, not just with user interfaces, but also multi-node computing, storage, machine learning, etc.