Tomáš Petříček, 309 (3rd floor)
petricek@d3s.mff.cuni.cz
https://tomasp.net | @tomaspetricek
Lectures: Monday 12:20, S7
https://d3s.mff.cuni.cz/teaching/nprg075
Interpreting the meaning of code, software or systems
in socio-historical context
Attention to detail
Variable names
Making broad points
Labyrinths in culture
Use history & philosophy to answer questions science itself neglects
Attention to detail
How exactly did it work
Making those relevant
New mode of interaction
// Your first C++ program
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
return 0;
}
"Close reading is the careful, sustained interpretation of a brief passage of a text"
What can we learn?
Not always educational start (Java, Haskell)
Reference to a long-term hacker culture
Why look at esoteric languages?
We must not just observe nature in the raw, but also "twist the lion's tail" to get at hidden insights
May reveal facts about normal languages too!
>++++++++[<+++++++++>-]<
.>++++[<+++++++>-]<+.+++
++++..+++.>>++++++[<++++
+++>-]<++.------------.>
++++++[<+++++++++>-]<+.<
.+++.------.--------.>>>
++++[<++++++++>-]<+.
"Like all codes, [source code] is only interpretable within the context of the overall network of relations that make its operations unstable."
Social shapes technical
Programming reflects our thinking about the world
e.g. division of labour
Technical shapes social
Abstractions define how we think about software
e.g. information hiding
(Lennon, 2018)
Cultural pointer
Akin to programming language pointers
Marks work as belonging to a particular culture
AbstractSingletonProxyFactoryBean
The real problem is that we didn't understand what was going on either.
The savu/retu mechanism (...) was fundamentally broken (...).
[It] worked on the PDP-11 because its compiler always used the same context-save mechanism (...).
[Eventually we] redid the coroutine control-passing primitives altogether,
and this code section,
and the comment, passed into history.
Cultural context of
a BASIC one-liner
The birth of microcomputers and tinkerer culture
Randomness and variations of the pattern
Recreating the one-liner in other systems
Contribute to scientific knowledge through historical and philosophical investigations
Effectiveness of science leads to dogmatism
Narrow focus can result in loss of knowledges
Heat produced by "caloric", cold maybe by another "positive" substance.
Heat is reflected by mirror!
Cold is absence of heat?
But also reflected!
Modern physicists never talk about reflection of cold!
(Ankerson, 2018)
Amateur can easily cobble something together
Hackability and familiarity of
graphical editors
Gives designers
full control
View-source, copy
and edit culture
Hosting on Geocities & creative community
Limited user protection (hacks are for fun)
Compiled code
Minified with dependencies
Custom elements
Custom pop-ups using <div>
Opaque structure
WebAssembly & Canvas
View source
Readable source code
Copy & paste
Self-contained scripts
Pop-up windows
Unchecked window.open
Boxer's naive realism
You see all there is
Smalltalk's self-sustainability
Built in itself
Pygmalion's programming
By demonstration
Hypercard's usability
From user to programmer
As evaluation
Reveals more than one may immediately see
As design tool
Think about programming from new perspectives
Close reading and complementary science
Tomáš Petříček, 309 (3rd floor)
petricek@d3s.mff.cuni.cz
https://tomasp.net | @tomaspetricek
https://d3s.mff.cuni.cz/teaching/nprg075
Critical code studies
Interesting past systems
Complementary science & programming
History of UNIX
Programming demos