6 ms·
I teach the systems class at Montana State, where we go from transistors up to a real computing system, and I have students that don't understand what a file sy
by recursivedoubts 2y ago
I teach the systems class at Montana State, where we go from transistors up to a real computing system, and I have students that don't understand what a file system really is when they start my class
I agree that blow is wrong on some details, but I really think we need to be thinking hard around a NAND-to-Tetris style education that starts in high school for our technical students.
I use "outdated" models like Little Man Computer and a simple visual MIPS emulator which, even though they aren't realistic, at least give the students a sense of where we came from, with a level of complexity that a normal human can get their head around. When I look at modern 64 bit architecture books that get suggested for me to teach with I just laugh.
Anyway, not to say I agree 100% with Blow on everything, but connecting technology down to the roots is a hard problem.
- ixtli 2y agoI got this exact style of education at UMass Amherst's 4 year CS undergrad degree program 2005-2010 and it absolutely made me the engineer i am today. would recommend 10/10.
- layer8 2y agoThe concept of files and file systems is useful to regular computer users, even when they have no interest in knowing how things work under the hood. The issue is with mobile OSs, and that software companies like their apps to be a walled garden for your data as much as possible, and therefore resist exposing your data as files living in a normal shared file system. Even if you already work with files, they have you “import” your existing data into their storage system, and you have to manually “export” (or “share”) any modifications as a new, separate copy.
- recursivedoubts 2y agoYes, also the curse of modern desktop os’s trying to trick people into storing data in the cloud. The notion of just having files somewhere accessible and organized in a reasonable manner isn’t clear to many (most?) of my students.
- dismalaf 2y agoLast I checked Google Drive shows everything as files in folders, just like a desktop OS. And as someone who had their house (whole town actually) burn down recently, cloud storage saved all my data, thousands of baby photos, etc...
- lmz 2y agoWhich is a better security model in these days of untrusted apps vs the desktop "my screensaver can read my chrome passwords file" model.
- layer8 2y agoAccess permissions are orthogonal to having a file system. In fact, mobile apps still use the local file system, they just hide it from the user. And password files should still be encrypted with a master key, e.g. application-private secure enclave key where available.
- lupire 2y agoYour screensaver should be running as an unprivileged user.
- DiggyJohnson 2y agoIn the name of low effort, tangential, golden era HN comments: the decision to hide file format extensions on windows (and maybe other OSs) sucks soooo much. The point about mobile devices breaking the desktop metaphor and file system norms is really interesting. Higher quality discussion question: Files, buffers,file systems, file explorers, and window managers seem like useful abstractions to me for the human computer user. Why did we not end up with something like “every app has a folder with your files” or “if you have a new iPhone, just send or recover your user files from the official Reddit app on your old device and import them to carry on where you left off on your new device. Welcome back to the Reddit app.”
- layer8 2y agoHiding file name extensions is a bad default, but at least it’s just two clicks in the Explorer ribbon to permanently unhide them: https://static1.howtogeekimages.com/wordpress/wp-content/uploads/2017/03/img_58b8a4f84142d.png https://static1.howtogeekimages.com/wordpress/wp-content/upl... (Well, it’s now three clicks in Windows 11 it seems.)
- rjbwork 2y ago> Why did we not end up with something like ... Because that's anti-thetical to control. The biggest sin in a technology business is allowing your customers to stop using your product with no negative consequences for them.
- TheNewsIsHere 2y agoI have spent so much time working with users that I don't agree. I think the lock-in is simply a useful side effect for the MBAs. If you're making software or hardware for millions of users then abstraction becomes your friend in a variety of ways, some of which are immediately obvious and some of which are not. I used to work for a company which sold software for both desktop and mobile. The earliest versions of the mobile software assumed you also had the desktop software: it was more of a companion to the desktop software. That changed over time, and it was a painful migration because we had to build a lot along the way. It was kind of like in a game where you're running through the sky building a walkway in front of you as you go. Over time not having some kind of seamless syncing and handheld migration option became a liability for a variety of reasons, and a big economic one was support overhead. Asking users, at scale, to do things with files on their mobile devices (let alone with both their mobile device and computer) was asking a lot. So much so that we ended up expending an increasingly economically unjustifiable amount of time hand-holding users through very basic steps. Our technical users got it just fine, and we basically just had to provide cover when something unexpected or untested happened, but that was a minority of users. I agree with the general sense here that it's to our detriment generally that basic computer literacy for things like files and folders is decreasing, and that it's made worse by trying to abstract those primitives away. On the flip side, the market is going to serve itself best by meeting people where they are. Businesses aren't going to try to educate people, they're just going to take the path of least resistance which only serves to enable (or you like, underwrite) a continued regression in basic computer literacy.
- immibis 2y agoFiles and directories are just one of many possible abstractions for storing data. You have files and directories. Directories contain files and directories. Your whole device is one big directory. Files are identified by name. There's absolutely no reason to think this is the best possible model. Here's another: Your device contains a bunch of photos and videos. Photos are identified by looking at them. Videos are identified by a still image, or by playing the video within the video chooser. Here's another: Your device contains a bunch of apps. Apps can organize their own data however they see fit. ... Microsoft's OLE really was the most well-integrated document-centric desktop we ever got, wasn't it?
- PaulHoule 2y ago... OLE is one of those things that have been forgotten under POSIX hegemony. What people remember of the Office '95 file formats was that they were 'proprietary' but it was worse than that in the sense that these were really meta file-formats that would let you embed a 'file' inside a file which would be handled by some arbitrary EXE, so to process any Office '95 file you really need a Windows installation with all the EXEs and DLLs required by that file, thus when Microsoft came out with ActiveX [1] I was really terrified that you'd need a Windows computer to browse the web in a year or two. I find the 'app' model to be user-disempowering thing since the app chooses what you can do with the data, but 'photos' and 'videos' are something really different because there is a standard format for those so I can take photos with my DSLR or my tablet or make images with a Python program or edit them with Photoshop or MS Paint or the GIMP and view them with different apps, print them out, upload to a web server, etc. A system could provide a different API for accessing this kind of functionality but I'd say it is fundamentally a step back to have to read data with the same program you wrote it with. [1] https://en.wikipedia.org/wiki/ActiveX https://en.wikipedia.org/wiki/ActiveX
- esseph 2y ago[dead]
- PaulHoule 2y agoI'll argue that files and filesystems, as we know them, aren't such a great API. [1] Before we had the hegemony of Unix, for instance, it was expected that operating systems had richer concepts of files, such as files which a record-oriented or block structure, ISAM [2], Record Management Services [3], etc. What happened was that Unix inspired a generation of microcomputer operating systems, and on top of that, Unix implementation of its own abstractions are poor. For instance, I wouldn't trust any kind of file locking to work on Unix at short of "directory creation being atomic" but even Luu isn't so sure about that one. Contrast that to the Win '95 era in which you could run multiple copies of Microsoft Access on different machines over an SMB file system and expect locking to work properly. Post-2010 or so there has been a bifurcation between distributed systems that implement simpler but more scalable and reliable 'file-like' APIs like S3 (random access writes are like... aspirational, aren't they?) vs libraries that do what old facilities like DEC's DATATRIEVE did for which I'd include SQLite, Apache Arrow and such. It used to be those facilities had some support in the kernel whereas things like that now are almost entirely userspace. [1] https://danluu.com/deconstruct-files/ https://danluu.com/deconstruct-files/ [2] https://en.wikipedia.org/wiki/ISAM https://en.wikipedia.org/wiki/ISAM [3] https://en.wikipedia.org/wiki/Record_Management_Services https://en.wikipedia.org/wiki/Record_Management_Services [4] https://en.wikipedia.org/wiki/DATATRIEVE https://en.wikipedia.org/wiki/DATATRIEVE
- llm_trw 2y agoI'd strongly suggest having a look at the Cardiac [0] and MIX [1] computers. Shift operations are pretty important and having a dedicated multiplication/division is also very useful. The fact that all of these are (or can be) decimal machines makes it much easier for people to understand what's going on. Jumping to binary before you understand how a computer works is like learning logic in Latin. [0] https://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_Computation https://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_... [1] https://en.wikipedia.org/wiki/MIX_(abstract_machine) https://en.wikipedia.org/wiki/MIX_(abstract_machine) I've been playing around with a modern version of the cardiac, drop me an email if you'd like to collab on testing it on live students.
- mkoubaa 2y agoWe can't train every engineer with the goal of making them qualified to be the CTO of a complex systems engineering organization. People who end up in those roles learn what they need to know themselves over time, anyways.
- gerdesj 2y ago"I teach the systems class at Montana State," You teach and hence deal with this: "Information passed on between generations is diluted" Is it diluted? No it isn't. Your job is teaching and books and computers help us avoid calling you a bard 8) Mind you, being called a bard is not a bad thing! In the end this is a blog post response to another blog post. I have no idea about how "important" those bloggers are but I smell ... randomly deployed blogging for the sake of it. That's the whole point of a blog anyway. I'm being polite here ...
- pyeri 2y agoThe IT industry has gotten highly specialised over time. The NAND-to-Tetris style education helps create computer scientists who know their stuff from ground up. But tech companies are constantly on the lookout for vocational pragmatists (like "Python Engineer" or "Java Engineer") who could quickly replace another like them. I think that's why the high level language first approach has gotten so popular.
- seanmcdirmid 2y agoYou only have so many hours to teach in a course, the more kids come in with, the farther you can go. If kids have to be taught what were once taken for granted, something else has to give.
- aleph_minus_one 2y agoIn many countries, such a problem is solved via that a lot of incapable students are "weeded out" by brutal exams (in particular "math for computer scientists" exams are prone for this) in the beginning or in the first semesters - consider it to be a kind of hard "sink or swim"-style curriculum.
- seanmcdirmid 2y agoWe do that also. But this is MT state, not MIT.
- jonhohle 2y agoI learned computer architecture using MIPS when MIPS were actually used in things. It was nice then, and is nice now. I spend a lot of my free time decompiling MIPS assembly and small functions can be decompiled to matching C by “hand” without need other tools.
- mouse_ 2y agoThanks for your post. I'm always on the hunt for this sort of gritty educational material. MIT's NAND-to-Tetris first principles book seems right up my alley.
- makerdiety 2y agoThe problem is, your best minds, whom you regard as being "technical," ironically simply don't have the pedagogical and epistemological axioms needed for possessing the sensibility that can conceptualize and eventually abstract away the fundamental principles of the technology civilization presently enjoys. Not just young students, but so too is lacking the experts, leaders, teachers, and supposedly prolific and employed engineers living within the cosmopolitan nationalist tribal world-system that is none other than globalist liberal democracy. In much more simple words, the communal program of regressing education toward the mean where the average human can apprehend the secret physics of the universe always runs into the barrier where an average disposition just can't cut it in the progression of science that isn't mundane or trivial. You said you laugh at the idea of expecting the children of your community to understand and leverage an understanding of things like Intel's latest microprocessors and a web browser front-end framework like Angular? Why, that's the bare minimum needed for surviving the complex world that is arriving on the scene. Humans are physiologically incapable of doing or understanding anything significant. They inflate their status to be stuff like anything even remotely central to the universe, which is the definition of the anthropocentric. While in actuality reality can and will go on without humanity. Regardless of how life gets falsified, simplified, and dumbed down for the slow kids of the universe that is humanist society. As if the constant string of inconsistencies in quantum physics wasn't proof enough of the reliable ineffectiveness of mathematics as well as science in achieving knowledge.
- mouse_ 2y ago> Humans are physiologically incapable of doing or understanding anything significant. Absolutely terrible take -- strong subjectivity and defeatist sentiment. > While in actuality reality can and will go on without humanity. Sure but in that case you won't be here to consider it. There's no considering such a situation, so there's no use considering such a situation. Push onwards! > As if the constant string of inconsistencies in quantum physics wasn't proof enough of the ineffectiveness of mathematics as well as science in achieving knowledge. We're never going to understand everything about everything. That is half the fun! How you got from there to "Humans are physiologically incapable of doing or understanding anything significant" is beyond me. Stop paying attention to quantum mechanics, and start paying attention to what's important to you. The kinds of things that made you truly happy as a child. Make model train sets or 7 day roguelikes. Make box fortresses for your cats. Make your neighbors lives a little bit better. Talk to a neighbor you've never talked to about the weather or something.
- mp05 2y ago> I teach the systems class at Montana State, where we go from transistors up to a real computing system, and I have students that don't understand what a file system really is when they start my class Admittedly I am old grouch, but I stopped having any expectations of the current generation of "college kids". Incidentally, I'm at Montana State getting a master's in IE, and I deal daily with this one PhD student who has demonstrated an inability to perform a simple partial derivative, which you'd think is a pretty useful skill given the subject matter. Hell, last semester in a 400-level math course, one of the students didn't understand how to add two matrices, I kid you not. It is odd that a senior in CS wouldn't know what a file system is, but that seems rather quaint compared to some of the wild bullshit I've encountered here. My first stint in university in the 2000s felt a lot different than this, and it's a bit depressing. But man, I feel just great about my prospects in the job market next spring.
- seanmcdirmid 2y agoActual old fashioned file systems aren’t really in use anymore, and the computerized versions hide the details, you don’t even get a command prompt on an iPad. I’m pretty sure my 8 year old has no clue what a file system is yet (I learned at about 7 when my dad brought home an Osborne with pre-DOS CPM to play around with). Computers don’t require you to know that stuff anymore just to use apps and save/get files.
- dismalaf 2y agoThe details being hidden on toys doesn't mean they're not relevant to a course training people to be developers...
- seanmcdirmid 2y agoYes, but it does mean they might not know what they are before they take said course.
- dismalaf 2y agoDunno, that's what high school level computer courses are for. I was in high school in the early 00's and they taught us stuff like Word, Excel, HTML, basic computer literacy stuff like filesystems, how to touch type, etc... And that was a required course in a public high school...
- seanmcdirmid 2y agoComputer classes in HS don't really cover that anymore. It gets worse the less relevant file systems are to non-techies. Documents are just a thing search for these days. People also learn and retain learning of what they practice, you would have to get them to use file systems, and then get them to continue using file systems for that information to stick.
- dismalaf 2y agoThat's kind of crazy. Basic knowledge of at least one desktop OS and office suite is kind of a prerequisite to so many things that would be considered adult life... Like, are kids writing CVs on their phones? Writing essays on their phones? iPads? Paper?
- lo_zamoyski 2y agoThis depends on the specialization. Computer science vs. computer or electronics engineering, for example. Computer science, despite the misnomer, is not about computers, even if computers are an indispensable tool in the field. Computer science is all about abstraction and language modeling of a domain and their application; the computing technology of the tool, however important practically, is an implementation detail. Just as it pays for the astronomer to understand how to operate his telescope in due proportion to his needs as an astronomer, it pays for the computer science person to understand how to operate his computer to the degree that he needs to. But it is a total mistake to place the computer at the center of the universe and treat it as the point of departure for what computer science is really about. This muddles things and is a source of much historical confusion in the field, and in fact, this discussion. In fact, even the language of "low-level" programming or whatever is abstraction and language. It is simply the language of the computing device that must be used to simulate the abstractions of the domain of discourse.
- louthy 2y agoI like this description a lot, but I think it needs a caveat or two. Most people writing code today are not computer scientists and don’t understand many of the mathematical fundamentals. I’ve always thought of programming as 1 part science, 1 part craft, and 1 part art. The percentages of those parts vary depending on the job. There may be 0% science in some roles (outside of writing functions). I think the vast majority of programmers are firmly in the craft camp.
- userbinator 2y agobut I really think we need to be thinking hard around a NAND-to-Tetris style education that starts in high school for our technical students. I suggest Petzold's Code as a good example of a book that's great at teaching the bottom-up approach.
- ignoramous 2y ago> When I look at modern 64 bit architecture books that get suggested for me to teach with I just laugh Why I recommend Bryant/O'Hallaron's Computer Systems: A Programmer's Perspective (for comparch) to newbies, as coding is what most folks are likely to be doing early on. https://books.google.com/books/about/Computer_Systems.html?id=1SgrAAAAQBAJ https://books.google.com/books/about/Computer_Systems.html?i...
- itronitron 2y ago> But How Do It Know? The Basic Principles Of Computers For Everyone https://archive.org/details/jclarkscottbuthowdoitknowthebasicprinciplesofcomputersforeveryonejohnc.scott2009 https://archive.org/details/jclarkscottbuthowdoitknowthebasi...
- recursivedoubts 2y agoi teach two weeks from this book, great resource
- deleted 2y ago[deleted]
- dustbunny 2y agoWhen I was a child watching my dad fix things around the farm. I was amazed at his power to manipulate the physical world; welding, angle grinding, hammering, etc. I was always amazed by the back of the television and asked him "Dad, how does electricity work?". He didn't know. From that moment, I was imbued with purpose. When we got our first computer I sought desperately to know how it worked and how it was built. My first year of computer science at university was uninspiring. I learned to code but I wanted to know how people coded without operating systems, without using a computer. I was annoyed by the chicken and egg nature of it. In my second year we did the "hardware/software" interface and read Patterson and Hennessy's Computer Architecture and Design. When we made our way to the diagram of the basic von Neumann architecture, my childhood questions, that previously no one could answer, was answered. The world made sense. And it was the class your now teaching that finally satisfied my childhood questions.
- greybox 2y agoI completely agree, I was coaching someone recently who finished the CS50 computer science course, who had some very funny ideas about what programming was, It was very clear that they had big holes in their understanding, so I took the exact same tact with them and went through everything from Transistors to High Level Languages! I'm so glad others are thinking the same thing. It made such a huge difference to them and I was so much more confident they understood what I was saying, because it provided a baseline that I could bring them back to if they didn't understand something I was saying.