Archive for the ‘Software’ Category
A Filesystem on Noms
Since Noms dropped last week the dev community has seemed into it. “Git for data” — it simultaneously evokes something very familiar and yet unconstrained. Something that hasn’t been well-noted is how much care the team has taken to make Noms fun to build with, and it is. Noms is a content-addressable, decentralized, append-only database. It borrows [...]
In: Software · Tagged with: APFS, btrfs, fuse, go, noms, ZFS
I Love Go; I Hate Go
I liked Go right away. It was close enough to C and Java to be instantly familiar, the examples and tutorials were straightforward, and I was quickly writing real code. I’ve wanted to learn Go since its popularity was surging few years ago. In no danger of being judged an early adopter, I happily found [...]
APFS in Detail: Conclusions
This series of posts covers APFS, Apple’s new filesystem announced at WWDC 2016. See the first post for the table of contents. Summing Up I’m not sure Apple absolutely had to replace HFS+, but likely they had passed an inflection point where continuing to maintain and evolve the 30+ year old software was more expensive than building [...]
In: Software · Tagged with: APFS
APFS in Detail: Data Integrity
This series of posts covers APFS, Apple’s new filesystem announced at WWDC 2016. See the first post for the table of contents. Data Integrity Arguably the most important job of a file system is preserving data integrity. Here’s my data, don’t lose it, don’t change it. If file systems could be trusted absolutely then the “only” reason [...]
In: Software · Tagged with: APFS, checksums, RAID
APFS in Detail: Performance
This series of posts covers APFS, Apple’s new filesystem announced at WWDC 2016. See the first post for the table of contents. Performance APFS claims to be optimized for flash. Flash memory (NAND) is the stuff in your speedy SSD. Apple changed the computing industry when it put flash into the iPod and iPhone, volumes for which [...]
In: Software · Tagged with: APFS, flash, FTL, NAND, Performance, SSD, TRIM
APFS in Detail: Space Efficiency and Clones
This series of posts covers APFS, Apple’s new filesystem announced at WWDC 2016. See the first post for the table of contents. Space Efficiency A modern trend in file systems has been to store data more efficiently to effectively increase the size of your device. Common approaches include compression (which, as noted above, is very very likely [...]
In: Software · Tagged with: APFS, snapshots
APFS in Detail: Encryption, Snapshots, and Backup
This series of posts covers APFS, Apple’s new filesystem announced at WWDC 2016. See the first post for the table of contents. Encryption Encryption is clearly a core feature of APFS. This comes from diverse requirements from the various devices, for example multiple keys within file systems on the iPhone or per-user keys on laptops. I heard [...]
APFS in Detail: Overview
Apple announced a new file system that will make its way into all of its OS variants (macOS, tvOS, iOS, watchOS) in the coming years. Media coverage to this point has been mostly breathless elongations of Apple’s developer documentation. With a dearth of detail I decided to attend the presentation and Q&A with the APFS [...]
In: Software · Tagged with: APFS
First Rust Program Pain (So you can avoid it…)
Like many programmers I like to try out new languages. After lunch with Alex Crichton, one of the Rust contributors, I started writing my favorite program in Rust. Rust is a “safe” systems language that introduces concepts of data ownership and mutability to semantically prevent whole categories of problems. It’s primarily developed at Mozilla Research [...]
In: Software · Tagged with: Rust, Scrabble
On Systems Software
A prospective new college hire recently related an odd comment from his professor: systems programming is dead. I was nonplussed; what could the professor have meant? Systems is clearly very much alive. Interesting and important projects march under the banner of systems. But as I tried to construct a less emotional rebuttal, I realized I [...]
In: Software · Tagged with: systems