• Jimmy Miller

    Jimmy Miller

    5 months ago
    Man Computer Symbiosis - J.C.R. Licklider (http://worrydream.com/refs/Licklider%20-%20Man-Computer%20Symbiosis.pdf) In our first series of episodes going through some papers (https://futureofcoding.org/episodes/055) we discuss man-computer symbiosis. If I were to put together a list of the most influential papers in computer science this would definitely make the list. The paper is really the first paper that imagines personal computing. While it may not have predicting everyone owning a computer. It definitely imagined a future that looks quite similar to the one we have today. I think the other striking thing about this paper is just how practically minded it was. It says a large vision, but also talks about a way to achieve it. In some ways it feels mundane today, but I think this mundanity is actually its virtue. If you are looking for a paper to learn from for proposing your own idea in the future of coding, this is a great paper to consider. Definitely worth a read
    Jimmy Miller
    Mariano Guerra
    3 replies
    Copy to Clipboard
  • Christopher Shank

    Christopher Shank

    5 months ago
    “Meaningful Modeling: What’s the Semantics of ‘Semantics’?” by Harel. On the importance of clear semantics for visual and modeling programming languages:
    In general, people tend to take diagrams too lightly, finding it difficult to consider a collection of graphics serious enough to be a language and profound enough to be the real thing. Perhaps the blame lies with the early failure of visual programming techniques to replace conventional programming languages.
    As a result, we often see the doodling phenomenon—a mindset that says diagrams are what an engineer scribbles on the back of a napkin, but the real work is done with textual languages.
    Sadly, too many language designers and methodologists share this view. Some find it difficult to understand why we can’t simply add more graphical notations to a visual formalism without spoiling an easy to understand semantics by introducing special cases or concept combinations that contradict each other. For example, in private communication, people have proposed all kinds of extensions to statecharts, such as (actual quotes) a new kind of arrow that “means synchronization” and a new kind of box that “means separate-thread concurrency.”
    https://researchgate.net/profile/Bernhard-Rumpe/publication/2956210_Meaningful_modeli[…]000/Meaningful-modeling-Whats-the-semantics-of-semantics.pdf
    Christopher Shank
    2 replies
    Copy to Clipboard
  • Orion Reed

    Orion Reed

    4 months ago
    Title: Technical Dimensions of Programming Systems Authors: Joel Jakubovic, Jonathan Edwards, and Tomas Petricek (who I think are @jdjakub, @jonathoda and @tomasp, respectively) This is still in review afaik, but it’s just too much of a gem for this community to wait until that’s done. If one of the authors has information about the latest revisions I’d love to know more! from the abstract:
    Many programming systems go beyond programming languages. Programming is usually done in the context of a stateful environment, beyond just writing code, by interacting with a system through a graphical user interface. Much research effort focuses on building programming systems that are easier to use, accessible to non-experts, moldable and/or powerful, but such efforts are often disconnected. They are informal, guided by the personal vision of the authors and thus are only evaluable and comparable on the basis of individual experience using them. They fail to form a coherent body of research, since it is unclear how to build on past work. In the research world, much has been said and done that allows comparison of programming languages, yet no similar theory exists for programming systems; we believe that programming systems deserve a theory too.
    This paper was one of the most exciting pieces of research I’ve discovered in the last year, can’t recommend it enough! Attached is a PDF of the paper (a version of it at least) and a great single-page table (explored in detail later in the paper) which should convey some of why this is such a good fit for our community.
    Orion Reed
    1 replies
    Copy to Clipboard
  • Christopher Shank

    Christopher Shank

    4 months ago
    “_Supporting Visual Artists in Programming through Direct Inspection and Control of Program Execution_” by Jingyi Li, Joel Brandt, Radomir Mech, Maneesh Agrawala, & Jennifer Jacobs
    Programming offers new opportunities for visual art creation, but understanding and manipulating the abstract representations that make programming powerful can pose challenges for artists who are accustomed to manual tools and concrete visual interaction. We hypothesize that we can reduce these barriers through programming environments that link state to visual artwork output. We created Demystified Dynamic Brushes (DDB), a tool that bidirectionally links code, numerical data, and artwork across the programming interface and the execution environment-i.e., the artist's in-progress artwork. DDB automatically records stylus input as artists draw, and stores a history of brush state and output in relation to the input. This structure enables artists to inspect current and past numerical input, state, and output and control program execution through the direct selection of visual geometric elements in the drawing canvas. An observational study suggests that artists engage in program inspection when they can visually access geometric state information on the drawing canvas in the process of manual drawing.
    https://ecl.mat.ucsb.edu/publication/DDB
  • Jimmy Miller

    Jimmy Miller

    3 months ago
    On the latest episode we talked about Doug Engelbart’s Augmenting Human Intellect. This is a massive work. It offers a lot to think about, but also a lot of complications. While incredibly innovative, Engelbart’s work was grounded in many of the ideas of his time; the neo-wharfian hypothesis, the emphasis on logic and argumentation. What lessons can we learn from it? What things did it get wrong? I think reading the paper critically does pay dividends, but definitely be ready to spend a lot of time to gain these insights.
    Jimmy Miller
    p
    +1
    8 replies
    Copy to Clipboard
  • Nilesh Trivedi

    Nilesh Trivedi

    2 months ago
    Started reading this book to learn about Dependent Type Theory which is used in proof-assistant systems like Lean/Coq.
    Nilesh Trivedi
    w
    +1
    4 replies
    Copy to Clipboard
  • Christopher Shank

    Christopher Shank

    3 weeks ago
    “Metaphor in Diagrams“ by Alan Frank Blackwell (1998) https://www.cl.cam.ac.uk/~afb21/publications/thesis/blackwell-thesis.pdf
    Modern computer systems routinely present information to the user as a combination of text and diagrammatic images, described as “graphical user interfaces”. Practitioners and researchers in Human-Computer Interaction (HCI) generally believe that the value of these diagrammatic representations is derived from metaphorical reasoning; they communicate abstract information by depicting a physical situation from which the abstractions can be inferred.
    This assumption has been prevalent in HCI research for over 20 years, but has seldom been tested experimentally. This thesis analyses the reasons why diagrams are believed to assist with abstract reasoning. It then presents the results of a series of experiments testing the contribution of metaphor to comprehension, problem solving, explanation and memory tasks carried out using a range of different diagrams.
    The results indicate that explicit metaphors provide surprisingly little benefit for cognitive tasks using diagrams as an external representation. The benefits are certainly small compared to the effects of general expertise in performing computational tasks. Furthermore, the benefit of metaphor in diagram use is largely restricted to mnemonic assistance. This mnemonic effect appears to be greatest when the user of the diagram constructs his or her own metaphor, rather than being presented with a systematic metaphor of the type recommended for use in HCI.
  • p

    Personal Dynamic Media

    1 month ago
    On the criteria to be used in decomposing systems into modules by D. L. Parnashttps://dl.acm.org/doi/10.1145/361598.361623 This is one of my favorite papers, and the basic concept that each design decision should be hidden within a module of some sort, where "module" can mean anything from a collection of procedures to a language specific feature, has served me well for many years. Also, the principle that programs should be broken up by concern and not by the order in which things happen has informed my design decisions for a long time. Has this paper's approach informed anyone else's design over the years? If so, how? What principles do the rest of you use to make your programs more resilient against changes in the specifications?
    p
    t
    3 replies
    Copy to Clipboard
  • Christopher Shank

    Christopher Shank

    6 days ago
    “Behavioral Programming” by Harel, Marron, and Weiss (2012)
    We describe an implementation-independent programming paradigm, behavioral programming, which allows programmers to build executable reactive systems from specifications of behavior that are aligned with the requirements. Behavioral programming simplifies the task of dealing with under- specification and conflicting requirements by enabling the addition of software modules that can not only add to but also modify existing behaviors. A behavioral program employs specialized programming idioms for expressing what must, may, or must not happen, and a novel method for the collective execution of the resulting scenarios. Behavioral programming grew out of the scenario-based language of live sequence charts (LSC), and is now implemented also in Java and in other environments. We illustrate the approach with detailed examples in Java and LSC, and also review recent work, including a visual trace-comprehension tool, model-checking assisted development, and extending behavioral programs to be adaptive.
    https://www.wisdom.weizmann.ac.il/~amarron/BP%20-%20CACM%20-%20Author%20version.pdf
    Christopher Shank
    a
    4 replies
    Copy to Clipboard
  • Christopher Shank

    Christopher Shank

    9 hours ago
    “Notes on Postmodern Programming” by Noble and Biddle (2002)
    The ultimate goal of all computer science is the program. The performance of programs was once the noblest function of computer science, and computer science was indispensable to great programs. Today, programming and computer science exist in complacent isolation, and can only be rescued by the conscious cooperation and collaboration of all programmers.
    The universities were unable to produce this unity; and how indeed, should they have done so, since creativity cannot be taught? Designers, programmers and engineers must once again come to know and comprehend the composite character of a program, both as an entity and in terms of its various parts. Then their work will be filled with that true software spirit which, as “theory of computing”, it has lost. Universities must return to programming. The worlds of the formal methods and algorithm analysis, consisting only of logic and mathematics, must become once again a world in which things are built. If the young person who rejoices in creative activity now begins his career as in the older days by learning to program, then the unproductive “scientist” will no longer be condemned to inadequate science, for their skills will be preserved for the programming in which they can achieve great things.
    Designers, programmers, engineers, we must all return to programming! There is no essential difference between the computer scientist and the programmer. The computer scientist is an exalted programmer. By the grace of Heaven and in rare moments of inspiration which transcend the will, com- puter science may unconsciously blossom from the labour of the hand, but a base in programming is essential to every computer scientist. It is there that the original source of creativity lies.
    Let us therefore create a new guild of programmers without the class-distinctions that raise an arrogant barrier between programmers and computer scientists! Let us desire, conceive, and create the new program of the future together. It will combine design, user-interfaces, and programming in a single form, and will one day rise towards the heavens from the hands of a million workers as the crystalline symbol of a new and coming faith.
    https://homepages.ecs.vuw.ac.nz/~kjx/papers/nopp.pdf
    Christopher Shank
    Konrad Hinsen
    2 replies
    Copy to Clipboard