Ways to research the modern and ancient worlds
March 30, 2021 4:10 AM   Subscribe

Historian Bret Devereaux (previously) discusses "the nature of our evidence for the ancient world and its limitations". Programmer Hillel Wayne asks: "why do interviewers like to ask linked list questions?" and uses that question as an example of some ways to research the history of the software industry.
posted by brainwane (35 comments total) 30 users marked this as a favorite
 
Since referring people to a video is less accessible than just writing a blog post

I know nothing about any of this, but I love this person.
posted by pompomtom at 4:15 AM on March 30, 2021 [10 favorites]


I find that written code for linked lists is soothing and contemplative, and it's very satisfying when all your code works first time. It's almost a pity that any modern language has faster and more robust substitutes that make linked lists (and their overhead in memory management) practically useless.
posted by Joe in Australia at 5:33 AM on March 30, 2021 [5 favorites]


HWayne's choice of topics might be a little too niche for this audience, but take a look at his blog and if it's near you wheelhouse, dive in. Good guy, good writer.
posted by ocschwar at 6:22 AM on March 30, 2021 [2 favorites]


When I was in school a mate told me about how he was so happy he'd sussed out linked lists (using Turbo Pascal), and by the time I understood his point I didn't need to know.
posted by pompomtom at 6:24 AM on March 30, 2021 [2 favorites]


Pointers require a complex form of doubly-indirected thinking that some people just can’t do, and it’s pretty crucial to good programming. A lot of the “script jocks” who started programming by copying JavaScript snippets into their web pages and went on to learn Perl never learned about pointers, and they can never quite produce code of the quality you need.

I think the author dismisses this a little too fast. Understanding linked lists and being aware of data structures and memory allocation in general is definitely something which separates introductory skill from intermediate ability, and I think it's an especially useful question in fields where a domain-specific language is used and people tend to come from non-CS backgrounds. There I think the question does sufficiently test CS fundamentals and reasoning to think through a new problem.

'Implement a linked list" is definitely something I'd ask anyone coming right out of college who has MATLAB in the skills section of their resume.
posted by RonButNotStupid at 6:24 AM on March 30, 2021


Also, I think you can even describe what a linked list is to the interviewee and still get useful information out of asking them to implement one in a given language.
posted by RonButNotStupid at 6:29 AM on March 30, 2021


The Devereaux piece is the standard apologia in modern ancient history texts ("A note on sources") and not to be gainsaid. There's a school of thought that holds writing of biography of ancients in particular is a fool's errand simply because of the thinness of material and the highly tendentious nature of the surviving authors (looking at you, Tacitus).

What's a modern to do? Pick and choose. Believe this, doubt that, write the narrative accordingly. Endure the slings and arrows that inevitably will follow, especially if you attempt to debunk. Thus the always worth reading T.P. Wiseman suggested in a discussion of the Bad Emperor Domitian that "modern biographers are predisposed to minimize the despotism of emperors [because] they live in liberal democracies". He goes on to note that an academic raised in Stalinist Russia might have a different view. True enough. Imagine, however, that an historian two thousand years from now has no other text than one that assures us that the vile Hillary Clinton murdered her ex-lover Vince Foster.

(I have further thoughts on prof. Wiseman's piece, but I'll hold off for now. You see, I'm working on a piece on - Roman history.)
posted by BWA at 6:44 AM on March 30, 2021 [12 favorites]


I have to say, I guessed that the answer to the standardization of linked list questions was “C” immediately.
posted by atoxyl at 6:49 AM on March 30, 2021 [1 favorite]


In C, pointers are the most important thing not to screw up.
posted by atoxyl at 6:51 AM on March 30, 2021 [2 favorites]


I'm trying to keep the Bret Devereaux piece bookmarked for the next smartass who tries to argue that "Socrates didn't exist" or something. Come ON! There's like four independent sources! That's a MOUNTAIN of evidence for the period.
posted by TheophileEscargot at 6:52 AM on March 30, 2021 [7 favorites]


I applied for a programming position a few years ago, and instead of linked lists I was asked to implement a hash table with some specific requirements that made it an interesting twist.

The interviewer asked me based on my code if I favored C over C++, and that made me realize that these sorts of test questions make me think in a C-like way more than I normally do when programming.
posted by Foosnark at 8:45 AM on March 30, 2021 [1 favorite]


Wayne's theory on the linked list question feels pretty solid to me (and obviously "well that sounds right" is rock solid methodology); linked lists are a useful kind of object to think about conceptually for sure, but compared to that 70s/80s UNIX landrush the likelihood that a random software developer will be operating that close to the metal in daily work is a lot lower now and it is oddly specific outside of specific contexts. And yet it continues on.

It reminds me of when I went off to college as a baby programmer, enrolling in a CS program after spending most of high school doing self-directed programming instruction based on documentation cobbled together by a supportive but not really prepared-to-teach math and science teacher. I learned BASIC, and then Pascal, and then C and C++, and I certainly could write programs that would do things but because of the DIY independent study nature of things when I got to pointers I just hit the brakes hard and looked for other stuff to learn about because the text was terse and the teacher didn't know either, really. And I'd rather try to write weird little games than bash my head against some strange concept.

Got to school, was like "hey I already know C/C++, I don't need to take Intro to Programming", school was like "okay, great, take this hour long qualifying exam", and I sat down and did fine on the first couple questions and then the rest were about memory allocation and pointer management and I stared at it for five minutes and then got up and left and enrolled in Intro to Programming. (The irony is I think said intro course did a very poor cursory job of covering pointers and memory allocation and did just about no work to explain it conceptually. But still, as a litmus test it made sense in that context.)
posted by cortex at 8:48 AM on March 30, 2021 [8 favorites]


(To look at it from another angle: if I was being interviewed for a programming job that wasn't about low-level programming and they asked me to work out a linked list, I'd be pretty worried about the implication that they were having their developers reinvent war-tested data structures instead of using well-maintained libraries for that stuff. Do you want the company's code to depend on me at best not particularly fucking up while needlessly reinventing the wheel? We got a whole warehouse full of perfectly good wheels right over there. We're not wheelmasons.)
posted by cortex at 8:52 AM on March 30, 2021 [2 favorites]


OTOH understanding what algorithms can and can’t do is really useful when debugging. And William Kahan himself told me to never code in the best hours of my best days because debugging and testing are harder.

I was probably asked a linked list interview question in the late 90s but the one I remember is reversing a mixed-byte-length string in place. Which is slightly harder than anything I ever had to do for users with a mixed-byte-length string, but was helpful when the libraries made mistakes.
posted by clew at 9:41 AM on March 30, 2021 [3 favorites]


These are really interesting articles, thanks!

In my experience, the greatest indicator of success with pointers is prior experience with pointers. Seems tautological, yes?

But I think it accounts, at least in part, for bimodal observations of who is able to program and who is not. And given that pointers and the more generalized recursion are gates in continuing as programmers, it acts as a filter.
posted by SunSnork at 9:51 AM on March 30, 2021


The comments to Deveraux’ post include some from ?material? and experimental archaeologists, who are all being very polite about what "real" archaeological evidence is but I’m suspecting they don’t center documents. (Not that Deveraux is rude about non-documents! It is an elephant with many facets, the past!)
posted by clew at 9:53 AM on March 30, 2021 [1 favorite]


That linked list explanation is great. A question that can quickly establish if you've done a minimum amount of hands on work with something on your resume makes a lot of sense. Even someone like me, who is not great at reading people, could tell the difference between "Oh, let me answer this as someone who's done it a thousand times in Pascal" and "Let me try to reason this through."

And then generations of hiring managers keep asking it--because they learned how to interview from being interviewed--only the criteria shift for what a good answer is. You don't learn if someone did Java or Python or C# based on their hands on experience with linked list (in fact, it'd be a point against them.) So you accept an answer that shows they can think logically, or at least paid a little attention in Introduction to Data Structures and Algorithms. That's OK but the original utility is gone. It was an elegant question, for a more civilized time.
posted by mark k at 10:08 AM on March 30, 2021 [2 favorites]


the more generalized recursion

Is that what they are looking for? Lists with 0 and 1 nodes are already reversed, reverse the head of the list (iirc, that is what you call the sublist with all the nodes but the last node), slap the last node on the front of that, and you are done?
posted by thelonius at 10:27 AM on March 30, 2021


Indirection doesn’t need to be pointers - you can screw up a big hypertext prose corpus using the same heuristic that trips you up with C pointers. I got my first salaried job by recognizing that, and I didn’t have any pointer programming experience, I recognized it as a particular kind of mapping between sets. Which was also a hell of a filter, but it’s not purely a social one, it has something to do with how parts of the world work. Someone could have thought it out from first principles in hypertext terms, but expecting candidates to reinvent decades of math instead of learning some common abstractions is also a filter.

AIUI, generalizing extravagantly, this is a recurring theme in Chinese imperial history - there were periods in which the scholarly exams were decent predictors of competent administrators, and periods in which recognizable teaching-to-the-test undoes the civil service even though the subject matter technically hasn’t changed. Usually these are the beginning and end of stable prosperous periods, leading to massive historical arguments about the directions of causality. And now we’re back at history, by a commodious vicus...
posted by clew at 10:34 AM on March 30, 2021 [4 favorites]


What Peter Norvig said about C is that no matter how smart you are and how carefully you work, if you have a large and complicated enough C program, you are going to fuck up the memory allocation.

expecting candidates to reinvent decades of math
I'm told that asking people to do things that can't be done, to see how they try and when they give up, is something that was once in vogue at investment banks and other finance-type firms. Like open a window that is painted shut, that kind of thing. In that spirit, why not throw up a whiteboard and ask them to solve, oh, Goldbach's conjecture ("It's a simple problem, just part of our aptitude test"), instead of reversing a stupid old linked list?
posted by thelonius at 10:44 AM on March 30, 2021


My college math department used to assign open problems occasionally. I don’t think it’s unusual in math departments... and won’t be as long as it gets the occasional solution. Plus the "recognize your limitations " thing.

V tiring tho.
posted by clew at 11:02 AM on March 30, 2021


clew, you caused me to go look at the comments on ACOUP, which include this gem:
In college, one of my ancient history professors told me not to go to grad school (not that I was tempted) but to go out and make a lot of money so that I could finance the construction of a fleet of triremes with which we could do experiments in battle tactics. (Actually, you might need two fleets for this experiment.) I have made more money than a classics professor, but alas not enough for this project.
posted by brainwane at 11:24 AM on March 30, 2021 [10 favorites]


I still kind of regret not volunteering to row the first modern reconstructed trireme. Only time anyone ever wanted short rowers.

One of their Tales was that they nearly sank a sightseeing boat which was closer than it was supposed to be, was ignoring the ram, and had no idea how rapidly they could reverse course and power once they’d worked out the oar-braiding complexity of how to do it at all.
posted by clew at 11:34 AM on March 30, 2021 [1 favorite]


There's a school of thought that holds writing of biography of ancients in particular is a fool's errand simply because of the thinness of material and the highly tendentious nature of the surviving authors (looking at you, Tacitus).

We know an awful lot about Cicero and his circle of friends and enemies, though, and we do have a lot of letters via him from some big figures from the Late Republic. And we know quite a bit about individuals of lesser importance from caches of documents, especially records of legal trials and inscriptions of careers combined with other texts. So, yes, you can't really write a biography of Nero which fits the demands of a modern scholarly biography, but you could for a range of other people, at least for certain important sections of their lives.

And Deveraux says this about finding more incidental documents such as papyri: "Outside of Egypt and a handful of sites (I can think of two) in England? Almost nothing."

which forgets Roman Palestine, and other Eastern regions, from which we do have a lot, and likely will have more, going by recent finds. (See the 'Cave of Letters' for one older cache.) And then there is what we're still deciphering from Herculaneum and so forth... We might not find something about emperors, but it doesn't make the information less historical.
posted by lesbiassparrow at 12:03 PM on March 30, 2021 [3 favorites]


We know an awful lot about Cicero and his circle of friends and enemies

Well, that's true. That said, for anyone writing about someone like Nero, there's going to be a bunch of mind reading of both him and those writing about him at the time. Ronald Syme was sniffy about full blown biographies, which was kind of ironic given how much he wrote in the form of miniature portraits.
posted by BWA at 12:50 PM on March 30, 2021 [2 favorites]


Though since the excavations of the Domus Aurea you can say a lot more about Neronian Rome than you could even 20 years ago, which for some is more interesting.

I just think it is odd to set the standard for ancient history as 'can we write this modern type of biography for a famous ancient figure'. I'd be more interested in knowing where they put their interpreters in the Roman Senate, for example. But the fact that no one cares to tell us where they are appearing from when they pop out, is it's own historical information. Though we do know they did genital checks on their recruits for the army, so that tells you even more about what they thought worthy of being recorded.
posted by lesbiassparrow at 5:43 PM on March 30, 2021 [1 favorite]


Someone (Mary Beard?) pointed out that that pretty much every biography of an ancient figure starts out with a chapter or a few on their childhood, even though we almost invariably know nothing of their childhood. So it's just the same tour through what little we know of how children were raised in that period. But the modern formula for a biography starts with childhood so that's what we've got to do.
posted by TheophileEscargot at 8:24 PM on March 30, 2021 [3 favorites]


Does anyone actually still ask linked list questions for general software jobs? Yikes.

Linked list questions come out of C being pointer-heavy, sure, but specifically I have to believe they come out of the fact that a general-purpose container data structures library doesn't fit well with C. You end up with void* straggling all over the heap and it's mediocre, or you enter preprocessor hell, or some combination. So people did routinely write put a pointer into their particular struct to make a list of them.

Blaming Joel Spolsky seems pretty fair.

The funny thing about Gayle Laakman's book was that I knew people at all three of the companies she reportedly drew material from, and at each one they said "that's not really how we interview, must be from one of those others."
posted by away for regrooving at 8:36 PM on March 30, 2021 [1 favorite]


nitpick: the maclisp example in the Hillel Wayne article
(list . 1)
does not append 1 to the end of the list

it creates an improper list (aka "dotted pair") with two elements, the original list as the first and the numeral 1 holding the second position (which would need to be a list in order for the parent to be a list)

citation in the manual
posted by idiopath at 12:43 AM on March 31, 2021 [3 favorites]


Devereaux says that we should be "glad that we have any of it at all" but it is hard not to be sad when contemplating what has been lost — the Cypria, the Aethiopis, a hundred plays by Sophocles, sixty by Aeschylus, seventy by Euripedes, the Thebaid, the Epigoni, the works of Heraclitus, Hypatia's commentary on conic sections, Aristotle's treatise on comedy, Clearchus' essay on riddles, Zeno's Republic, Sappho's eight books of poetry, Bacchylides' nine, and so much more.
posted by cyanistes at 9:51 AM on March 31, 2021 [2 favorites]


Thanks for introducing me to Wayne Hillel, brainwane — I've been reading some of the other pieces on his blog, and there are some gems there:

* There's always more history — peels back a couple of layers of folklore from the questions "why does vim use hjkl for motion?" and "why does JavaScript use month numbers starting at 0?"
* Are we really engineers? — what are the differences between software engineering and "real" engineering?
* STAMPing on event-stream — a fault analysis of the npm supply-chain attack using Nancy Leveson's STAMP methodology
posted by cyanistes at 10:38 AM on March 31, 2021


Someone (Mary Beard?) pointed out that that pretty much every biography of an ancient figure starts out with a chapter or a few on their childhood, even though we almost invariably know nothing of their childhood.

Back in 1934 Ernst Kris and Otto Kurz wrote a book on how artist biographies tended to carry certain recurring leitmotifs or themes related to the childhood and early careers of many artists with minimal variation, such as how their "gift" was present from early childhood without training and discovered by chance encounter with a distinguished connoisseur of the arts, and how later the height of their abilities would be given example by how one of their works would be mistaken for the real thing, whether by expert judge like fellow artists or an animal seeking to eat or climb a painted image.

Later feminist art critics would point to how these sorts of fictions maintain the dominant ideology around "male genius" in ways that continually reinforce certain harmful or limiting stereotypes around how we think about art and artists.
posted by gusottertrout at 11:33 AM on March 31, 2021 [3 favorites]


Devereaux says that we should be "glad that we have any of it at all" but it is hard not to be sad when contemplating what has been lost — the Cypria, the Aethiopis, a hundred plays by Sophocles, sixty by Aeschylus, seventy by Euripedes, the Thebaid, the Epigoni, the works of Heraclitus, Hypatia's commentary on conic sections, Aristotle's treatise on comedy, Clearchus' essay on riddles, Zeno's Republic, Sappho's eight books of poetry, Bacchylides' nine, and so much more.

Although I would love more Sappho, the most valuable thing would be anything written by a slave about the experience of slavery. Even one account, one bit of a text would tell us more, to my mind, than the lost plays of Sophocles.

I also like to whisper 'Menander' to people who want to find an author we only have minuscule quotations from. It's always hard to find more of your literary hero and find out that they weren't actually that good. Though maybe we will find all those lost epics on Troy and find out they were quite good after all, despite people in antiquity rolling their eyes at some of them.

I think the issue here is that Deveraux, to my mind, has a very traditional view of what many people want to know about antiquity. My students tend to be far more interested in the small details of regular people than the big names of antiquity. And when they are interested in Cicero it's generally about the loss of his daughter than his public life.
posted by lesbiassparrow at 5:20 PM on March 31, 2021 [2 favorites]


I don't know; most of the rest of Deveraux's blog is pretty dedicated to exploring exactly what we do/can know about those ordinary people, especially given the constraints on the social strata we have writing from.
posted by sagc at 5:36 PM on March 31, 2021 [2 favorites]


Devereaux says that we should be "glad that we have any of it at all" but it is hard not to be sad when contemplating what has been lost

It's hard not to get angry about all those Mesoamerican codices burned by Spanish priests.
posted by Mister Cheese at 4:32 AM on April 1, 2021 [3 favorites]


« Older Who will blink first? Not me   |   Robbed of its Refreshing Elegance? Newer »


This thread has been archived and is closed to new comments