17 ms·
To a computer science teacher, this feels like trying to walk up a down escalator. First-year CS students (middle school or high school) with experience using
by cproctor 7y ago
To a computer science teacher, this feels like trying to walk up a down escalator.
First-year CS students (middle school or high school) with experience using Apple products don't have a concept of a filesystem. The shift to auto-saving documents also corrodes the intuition that files get stored on disk in some non-magical way. In the same way that it's now easier to teach networking and graph theory because youth experience identity and relationships this way, it's now a lot harder to teach lower-level abstractions. In my experience, this has changed over the last five years.
- cproctor 7y agoSort of as a response, I'm currently developing/piloting a 9th grade CS curriculum designed around constructionism ("making with code"). The first unit spends a lot of time introducing students to Terminal. By the second unit, assignments are git repos.
- jrochkind1 7y agoHm, does "constructionism" mean a new thing in educational theory now? You don't seem to be using it like this: https://en.wikipedia.org/wiki/Constructionism_(learning_theory) https://en.wikipedia.org/wiki/Constructionism_(learning_theo... ?
- cproctor 7y agoNo, Papert's constructionism is exactly what I'm pointing at. My phrase, "making with code," was meant to suggest that like maker education, this approach to introductory CS emphasizes personal relationships with powerful ideas, through personally-meaningful projects done in a community of practice. By leading with Terminal, I hope to emphasize students' laptops as tools for making things, not just providing access to content. A lot of current approaches prioritize scalability over everything else, leading to canned and sandboxed curricula. I'm curious, though, whether this is in tension with your understanding of constructionism.
- unqueued 7y agoI have a very similar anecdote. I had a long conversation with a friend who is a high school science teacher. She told me that computer literacy has plummeted in the last ten years. She has her students go into the field and collect data in the form of photos, spreadsheets, and typed reports. She wants students to bundle these files in zip files, and email them to her. Students have no idea how to do this. Some of them struggle with emails. She has had to make her tutorials on this longer and longer. And she has also been forced to start accepting assignments as a pile of attachments, because so few students understand zip files.
- markbnj 7y ago> I have a very similar anecdote. I had a long conversation with a friend who is a high school science teacher. She told me that computer literacy has plummeted in the last ten years. I suspect it is the same progression as any other new technology that undergoes mainstreaming. Take automobiles for example. In the early days if you owned a car you either made yourself something of an expert (and if you were an early buyer you were probably kind of an enthusiast already) or you hired one. Today outside of enthusiast circles they are just an appliance: you get in, turn it on, and go do whatever it is you need to do.
- unqueued 7y agoI agree that technology will be more streamlined as it becomes more widely adopted. But people still understand that they need to put gas in their car to make their car go, and if they run out of gas, their car can not go. We don't have to know what gas is, but it is still a quantity of something. But our concept of files and data is becoming so abstracted that we do not even know where our data is anymore, how much we need, or how long it takes to transfer it. But until we have much more bandwidth and storage, there will be problems. Imagine a world where we tried optimizing our cars interfaces so much that we removed gas gauges, and just had reminders that told people that they had to go to a gas station. And as a result people would frequently run out of gas, or be shocked by how much gas costs. But gas gauges were considered a power-user feature, and everyone was convinced that users would just never be able to understand them.
- psaux 7y agoThey should teach them Terminal on OSX. I would expect most CS folks would need it per building code or Git. Maybe I am too disconnected, and life is now IDE. I showed my son at a young age terminal commands to browse the filesystem. It really seems to be helping him now that he coding.
- eecc 7y agoFrankly, we’ve been fantasizing of moving away from the file-system-as-tree abstraction since forever, wanting to embrace a metadata rich database approach. Can’t happen soon enough imho
- jjoonathan 7y agoBut we're not moving towards a metadata rich database, we're moving towards balkanized proprietary walled gardens in the cloud.
- eecc 7y agoThat's true. The problem is that even when you pay for service, the incentive is to suck your data away, data-mine the hell out of it and hold you at ransom. It's like cable TV, originally one paid a premium to avoid advertisements. Today it's just the norm, and you get the advertisements anyway.
- kccqzy 7y agoBoth of these are true. We're moving towards walled gardens in the cloud, but within these cloud, your "files" are becoming rows in a highly sophisticated database, perhaps in addition to blobs in a highly sophisticated object storage system.
- TeMPOraL 7y agoBut it doesn't matter because you - the user - aren't exposed to the benefits or even the abstraction of that database. You don't get to make arbitrary queries for metadata. You get access to whatever half-featured interface the vendor bothered to implement, whereas the database is optimized for their operational and datamining purposes.
- bcyn 7y ago> a metadata rich database approach Can you ELI5 what this means? Very curious to understand ideas on alternatives to the traditional file-system abstraction.
- _bxg1 7y agoThe same could be said about terminals; they used to be used by everybody, now they're only used by power-users. I don't think that's inherently bad. I didn't use a terminal until college, but it wasn't a barrier by any means.
- derefr 7y agoThe escalator never went down in the first place. Files are a weird, unclean semi-abstraction (growable virtual sparse block devices addressed as seekable byte-streams with heavy metadata and OS-level memory caching?) that we only feel a degree of primacy about because of how common they've been. Consider: unikernels (like, say, any old cartridge game ROM) don't have any need for files. They have precisely three abstractions they deal with data in terms of: • a .data section in ROM (maybe needing bank-switching to get in place); • some kind of byte-addressable NVRAM (like battery-backed "save RAM", or CMOS memory) either bus-mapped, or through MMIO. • tape or (floppy) disk, sometimes at an extremely low level (send commands to the drive motor, write guard nybbles, etc.), sometimes through a DOS where you can just request to seek to a given track then read or write a given sector on that track. Either way, more like a block device than a filesystem. --- For today's kids, I'd suggest: don't start with files. Teach key-value storage first. Interact with a library like LMDB without explaining where it's putting the data. They'll understand this just fine. Then, teach object storage in terms of key-value storage. Object storage—especially once you add object versioning—is much closer to the modern metaphor that user-facing apps expose. You compose a complete new version of an object in an in-memory scratch buffer, and then it atomically replaces the previous object. You can't corrupt an object by half-saving it. Etc. Again, don't bother explaining how this works yet; just give them a scripting runtime hooked up to a Minio instance. After they get that, you can ask them what they'd do if they needed to create an object that wouldn't fit in memory. Then you can explain block devices, as a "place where large scratch buffers can live"—but don't force them to figure out how to allocate those buffers from the block device! That's gonna pull in a whole bunch of prerequisite teaching. Instead, pull out another API: Linux's LVM. Logical volume management takes block devices in, and spits block devices out. The logical volumes are the scratch buffers. Explain mmap(2), and how these buffers end up a lot slower that memory buffers. Explain how these buffers survive a disk crash. After you get to that point, then you can explain that all the other ways computers durably store data are built on top of these logical-volume durable scratch buffers. You can explain how LMDB works in terms of disk pages; and then you can explain how a content-addressable storage works in terms of combining an LMDB-like KV store with hashing and splitting. And, after that—if you like—you can explain that sometimes, when we need something that's like object storage but where everything in the storage bucket is actually a tiny scratch buffer, we use filesystems. You can explain what an "extent" is by talking about how something like LMDB, that has a "freelist" of pages from its underlying logical-volume, can reserve a contiguous set of those pages and then let something else access them. Then you can explain a filesystem as a key-value store that has buckets called "inodes" with page-range keys, and extent-address values. (And an associated versioned object store of directory-objects, where each object is a serialized list of records (dirents), each containing a reference to an inode and giving it a name and other stuff.) Filesystems are hard!
- charlesism 7y agoI have a theory that in ten years or so the tide may turn. That’s enough time for this generation to have lost, or have had to deal with unpleasant migrations of, their valuable data due to online services shutting down... repeatedly. I don’t know. On the other hand, most older people like myself have had to deal with data loss from failed, obsolete or lost storage devices. There’s still no “one size fits all” very-long-term solutions for consumers.
- pm90 7y agoIf the market works its magic, we probably won't go back, but will end up with services that keep getting more reliable with time and outages. If Google/AWS end up with an outage where folks lose business critical data, there will now be a market for extremely high reliability data services. As you point out yourself, not dealing with the hassle of doing backups yourself has been a huge advantage. Ease of use and convenience will trump quality for the majority of use cases and the market will keep shifting in that direction. If I try to view this from a non-technical persons viewpoint, this shift has been transformative, really. Most folks don't care if their data has been transcoded a million times as long as its still useful and easily accessible. This has protected a ton of businesses and users from being at the mercy of their IT team.
- hakfoo 7y agoOne of the dangerous factors of cloud-first thinking is that it tends to abstract away people's concerns for redundancy. "Oh, CloudBrand handles distributed backups for me in 32 different regions, I checked the box for that." And when CloudBrand has some new scale of failure, it just takes down all your copies at once. Every service is "extremely high reliability" until it isn't. Sometimes, the causes of failure are even beyond technical ones. Look at the situation with Adobe Creative Cloud users in Venezuela-- the discs and wires are still fine, but customers are losing real value because of legal mandates. Your high availability platform can withstand a network cable cut, but can it withstand a court order? If you're still thinking local first, it encourages awareness of multiple baskets. iCloud is down? You can still pull the photos off your camera's flash card, or your workstation's SSD, or the external spinning-rust hard disc you used for cold backups, or the third-party dedicated backups service you use...
- ken 7y agoIs it a problem that students don't know abstraction layers lower than they regularly use, or that we're collectively climbing up the abstraction ladder as the years go by? I'm a full generation older than these students, and most of my colleagues can't read or write assembly language. I've worked with programmers who have never even written a compiler, database, or central processor. I'd say we're seeing that filesystems weren't a great user experience, at least the way they've been implemented in the past, and I'd place the blame on the other side. The design of computer systems today isn't the only possible way to design them. They exist to serve users. If our old systems aren't well-liked by users, and we spend all our efforts hiding their inherent design so people can actually use them, maybe our foundation is wrong. Even the most technical people in the world have been trying to replace our filesystems with object databases for a few decades now, and plenty of people use only "services" (database in the cloud) or "apps" (database on phone). Isn't it possible filesystems have outlived their usefulness? For a lot of people, they really only exist to boot the OS. Computer science students need to learn about filesystems and C and Unix, sure, like cooks and carpenters need to learn US customary units.
- incompatible 7y agoWell, I've been using and programming computers for decades now, but I have to admit I've never "written a compiler, database, or central processor". This is quite a high bar for computer competency, I think. The comments about file systems are interesting, but I doubt that programming is going to get much easier just because you store your source code in database tables instead of files.
- TeMPOraL 7y agoThere are good and bad abstractions, and the whole issue here is that filesystems are a good abstraction, both intellectually and ethically, and the "new" replacements are mutually incompatible lies that reduce your ability to accomplish what your goals with your device and simultaneously try to take ownership of the data and the device away from you.
- bsder 7y ago> it's now a lot harder to teach lower-level abstractions I now have to teach teenagers the concept of "computer". The idea that an app is a "recipe", a set of instructions, and something needs to execute that recipe, a "computer"--aka your phone, is now a foreign concept.
- rolltiide 7y agoI have similar anecdotes, I experience a lot of Gen Xers and Boomers expecting a linear progression of computer literacy, inversely correlated to age. "You're so lucky you grew up using this technology, so you're used to it whereas I have to struggle - yes, do ignore that I had more than your whole lifespan to get up to speed on this ubiquitous reality" but I encounter people under 24 that can navigate a touch screen pretty well but lack any fundamental knowledge, let alone typing on a keyboard in a proficient way. fortunately most activities no longer require this kind of thing. auto-saving, and better UI solves alot. I can see how wanting to teach these things will have challenges.
- antaviana 7y agoMy hairdresser, who knew I was into computers, once asked me “when I delete a picture on my mobile phone, where does it go?”. I first thought he was asking if there was some kind of Recycle Bin on Android, but then he said: “when we die, our body is burier or burned, that is it becomes bones or ashes, but what happens with the picture on the mobile phone, what does it become?”
- edflsafoiewq 7y agoWaste heat, maybe? (cf. Landauer's principle)
- Felz 7y agoThe real answer is actually the same in both cases: the bits (atoms) get used for something else. Although bones can linger for quite a while, not sure if there's a file parallel for that.
- TuringTest 7y agoSure there's a parallel. The bits are still there, in the same place and same order, just there's no longer an index to find and use them, so they're not "alive". And they remain in the same place until the file space they occupy is reclaimed by the OS and rewritten with new content.
- Const-me 7y agoThe most funny thing happens with SSDs. Even when same block is reclaimed and overwritten by OS, it very rarely overwrites the bits in NAND flash, due to the wear leveling implemented in SSD controller chip. When the actual bits are destroyed is unpredictable, probably that's why some vendors have hardware encryption there.
- z3t4 7y agoThere is a issue with sd cards that they can revert back to an earlier state.
- cosmodisk 7y agoI work in an office environment with relatively young people and it is absolutely shocking how little people know about computers or some underlying technologies,despite using them all day,every day.Very few if any, go beyond of the basics of how to open up a website or create a word document. The willingness to learn something new is close to zero and always downplayed with "I'm not good with computers". I've got a feeling that to most office workers pivot table in Excel is the highest possible level of technical knowledge.
- incompatible 7y agoIsn't this the way it has always been? Then they expect help from the rare few who do understand how computers work, while at the same time somehow looking down at them for not being "normal".
- cosmodisk 7y agoI agree, nothing has changed much and I even think it's going that route where the ones that "know" are awarded handsomely, while the "don't knows" are left on a side with peanuts.
- xtracto 7y agoI consider myself very knowledgeable about computers and computing. Yet I could not fix my car, my microwave or my refrigerator if my life depended on it. Does it make me less? Is it wrong that I use my car 2 hours a day and the only thing I know is to press a bunch of buttons? Not for me. I enjoy CompSci technology. I wouldn't like to spend my time fixing my car.
- cosmodisk 7y agoI don't expect an average user going about fixing their computer. It's more like they know how to drive a car, however it's always in 1st gear and in a straight line.
- bigger_cheese 7y agoI had to explain to someone in my office how URLs worked - he only knew how to get to sites by typing what he wanted to visit into google search. Our intranet is obviously not crawled by google so he had no idea how to access it. I got the same "I'm not good with computers" response. Modern web browsers are the cause of this they don't distinguish between an address and a search query -frustrating.
- kccqzy 7y agoWhat I see as most problematic is the fact that people want to become CS majors before they become computer enthusiasts. Long before I studied computer science concepts, I was enamored with computers. I was a power user then. When I was in elementary school I couldn't have Internet access any time I wanted (it was literally a call on the family telephone) so I spent lots of time playing around with the operating system and the installed applications. Many nights were spent exploring the nooks and crannies of Windows and Office. I learned about the cmd.exe and wrote batch scripts before I had any idea what computer science was about. Later when I moved from Windows to Mac in the early 00's, I did the same. The same kind of curiosity led me to naturally explore the various system utilities, from Mac-specific like hdiutil or diskutil to general Unix-y. I don't know whether this is fighting a losing battle, but I doubt anyone who's not curious enough to learn about the innards of their computers can really become successful CS majors and hackers.
- packetpirate 7y agoA lot of the people I saw in college who were CS majors didn't really seem to care about CS as a topic and only saw it as a lucrative career path. These same people would constantly struggle to understand the most basic concepts and not seem to care about understanding it beyond being able to finish their assignments. It's sad because I feel like I and a handful of other people in the program were the only ones actually enjoying it. It probably also has a lot to do with older people telling so many kids as they were growing up that they're "so good with computers" because they showed them how to setup their email accounts and it gave them a false sense of skill that made them think they should do it for a living.
- JoshMnem 7y agoURLs are also getting to be a problem. Browsers started to trim URLs, and it's resulting in web developers who are very savvy with computers who don't really understand how URLs work or that there is always a trailing slash on the root of a website and what it means. Google is in the process of making it worse by hiding URLs in the search results. (It's also a security risk. Google's site-name detection often makes terrible mistakes and points users to malware.)
- dmcdm 7y agoI also teach computer science (part-time adjunct, I have a regular industry job too), so the quality of computer literacy in the incoming student body is on my mind pretty regularly. This has been especially troublesome when teaching operating systems, because the OS is the deepest layer in the pile of abstractions students have to peel-back over the course of their CS education. The pile of abstractions is only getting higher - the day is not far off when we have to peel-back the abstraction of "persistent data generally" in terms of files before we can get on to peeling-back the abstraction of files themselves. Or who knows, maybe we'll all abandon the desktop analogy of computing altogether, with it's hierarchies of files and links, to move on to some new purely-graph-theoretical database notion of persistent data. Somebody will still have to talk to the disk controller, however, and I can only imagine how distant that reality will be (and already is) from most students' day-to-day experience with computing. At the same time, I can see a great equalizing force in all this. Computers have reduced the technical acumen demanded from their users to the point that owning a computer and using a computer and even being a "computer enthusiast" doesn't put you very much ahead of anybody else on-average when it comes to starting out towards becoming a computer scientist. I think this, in combination with that everybody wants to be a software engineer these days, will eventually put us somewhere around the 1970's in relative terms with regards to technical literacy in the cohort of incoming computer science students. This might sound nightmarish to the current establishment, but it has at least a positive side-effect: computer science is getting more accessible because teachers can no longer assume that pupils come from a background of "quasi-technical" computer literacy (again, this is because conventional computer literacy has become decreasingly technical in nature). I've heard one of the general causes behind the lack of diversity in gender and economic-background in tech workers is, at some point around the mid 1980's, CS instructors started asking of their students tasks like: "Open your editor and type..." and someone in the classroom would raise their hand and ask "Ah, um... what's an `editor'? And by the way, I don't own a computer either" and the instructor's reaction would be to privately advise that student to seek a different major, at best, or open derision at worst. So I think we're getting away from that, which is at least a way to look at the bright side. It does make the teaching job a bit more challenging. On a more personal gripe, a minor irritation of late is the number of students who want to do their OS homework in the Windows Subsystem for Linux, instead of even setting up a basic VM.