Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RedDotRubyConf 2014: Magenta is a Lie - and other tales of abstraction

RedDotRubyConf 2014: Magenta is a Lie - and other tales of abstraction

Abstraction is a fundamental approach in programming. It shapes how we solve problems, it is a defining factor in how we view the internals of software and even the world surrounding it and us. The questions of when, how and what to abstract are some of the biggest in computer science and can make the difference between good and bad code. This talk is a fresh take on different facets of abstractions we encounter, build on and have to fight with.

Konstantin Haase

June 26, 2014
Tweet

More Decks by Konstantin Haase

Other Decks in Technology

Transcript

  1. Magenta is a Lie
    and other tales of abstraction

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. Abstraction

    View Slide

  9. –Zachary Scott
    “Too much magic… Um, you mean in general?
    It can make make stuff simpler to understand, if
    that’s your goal. But it’s easy to go too far.”

    View Slide

  10. View Slide

  11. Basis of Science

    View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. Picking the right
    abstraction is crucial

    View Slide

  17. In Computer Science,
    everything is an
    abstraction

    View Slide

  18. View Slide

  19. With a lot of room for
    interpretation

    View Slide

  20. This makes it similar to
    art

    View Slide

  21. View Slide

  22. Abstracting away
    Semantics

    View Slide

  23. Generic Algorithms

    View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. Data Abstraction

    View Slide

  29. “Dataless
    Programming”
    RM Balzer - 1967

    View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. Control Abstraction

    View Slide

  34. Subroutines

    View Slide

  35. “Go To Statement
    considered harmfull”
    Edsger Dijkstra, 1968

    View Slide

  36. “Protection in
    Programming
    Languages"
    James H. Morris Jr., 1973

    View Slide

  37. View Slide

  38. You should be able to
    reason about modules in
    isolation

    View Slide

  39. “Global Variables
    Considered Harmful”
    W.A. Wulf, M. Shaw, 1973

    View Slide

  40. Data Abstraction +
    Control Abstraction =
    Object Oriented Programming?

    View Slide

  41. View Slide

  42. #alankayholdingthings

    View Slide

  43. –Alan Kay
    “OOP to me means only messaging, local
    retention and protection and hiding of state-
    process, and extreme late-binding of all things.”

    View Slide

  44. View Slide

  45. View Slide

  46. We make the rules

    View Slide

  47. Some rules enable
    good programs
    (For some definition of good.)

    View Slide

  48. Single Responsibility
    Principle

    View Slide

  49. Liskov Substitution
    Principle

    View Slide

  50. Law of Demeter

    View Slide

  51. View Slide

  52. Don’t abstract too
    much, too early

    View Slide

  53. View Slide

  54. Is inheritance a good
    abstraction?

    View Slide

  55. Used for type hierarchy
    and implementation
    sharing

    View Slide

  56. View Slide

  57. Strong external
    abstractions allow weak
    internal abstractions

    View Slide

  58. Distributed
    Applications

    View Slide

  59. View Slide

  60. Abstraction as a
    Security Issue

    View Slide

  61. Almost all attacks rely on
    switching up or down
    abstraction levels

    View Slide

  62. View Slide

  63. Social Engineering

    View Slide

  64. View Slide

  65. Abstraction

    View Slide

  66. UI as Abstraction

    View Slide

  67. Metaphor

    View Slide

  68. View Slide

  69. Colour

    View Slide

  70. Light

    View Slide

  71. View Slide

  72. View Slide

  73. View Slide

  74. Trichromacy

    View Slide

  75. View Slide

  76. View Slide

  77. View Slide

  78. View Slide

  79. View Slide

  80. View Slide

  81. View Slide

  82. View Slide

  83. View Slide

  84. ?

    View Slide

  85. ?

    View Slide

  86. View Slide

  87. View Slide

  88. Is magenta real?

    View Slide

  89. #
    FF00FF

    View Slide

  90. View Slide

  91. View Slide

  92. Leaky abstraction?

    View Slide

  93. View Slide

  94. View Slide

  95. Space

    View Slide

  96. View Slide

  97. View Slide

  98. View Slide

  99. View Slide

  100. Tetrachromacy

    View Slide

  101. View Slide

  102. 2-3% of all women?
    50% of all women?

    View Slide

  103. Gene on X
    chromosome
    OPN1MW and OPN1MW2

    View Slide

  104. Women could have up
    to six colour cones

    View Slide

  105. Mostly dysfunctional

    View Slide

  106. At least two confirmed
    cases

    View Slide

  107. Seeing millions of
    more colours

    View Slide

  108. View Slide

  109. View Slide

  110. View Slide

  111. View Slide

  112. View Slide

  113. View Slide

  114. Why dysfunctional?
    (my own unscientific theory)

    View Slide

  115. We don’t see colours
    with our eyes

    View Slide

  116. We see colours with
    our brain

    View Slide

  117. Our brain adjusts
    colours

    View Slide

  118. We don’t see colours we
    don’t have an abstract
    concept for

    View Slide

  119. View Slide

  120. When we learn to speak, colour
    perception switches from left
    brain side to right brain side

    View Slide

  121. View Slide

  122. Himba Tribe (Namibia)

    View Slide

  123. View Slide

  124. zuzu: dark shades of blue, red, green
    and purple
    !
    vapa: white, some shades of yellow
    !
    buru: some shades of green and blue
    !
    dambu: some shades of green, red
    and brown

    View Slide

  125. View Slide

  126. View Slide

  127. View Slide

  128. Abstraction happens
    in our minds

    View Slide

  129. All abstraction

    View Slide

  130. OOP happens in our
    mind, not our computer

    View Slide

  131. UI happens in our
    mind, not our computer

    View Slide

  132. View Slide

  133. View Slide

  134. “Anything that is in the world when you’re born
    is normal and ordinary and is just a natural part
    of the way the world works.
    !
    Anything that's invented between when you’re
    fifteen and thirty-five is new and exciting and
    revolutionary and you can probably get a
    career in it.
    !
    Anything invented after you're thirty-five is
    against the natural order of things”
    –Douglas Adams

    View Slide

  135. View Slide

  136. Countries exist in our
    mind

    View Slide

  137. In our collective mind

    View Slide

  138. Changing abstractions is
    a basic principle of
    innovation and progress

    View Slide

  139. View Slide

  140. Is magenta a colour?

    View Slide

  141. View Slide

  142. Yes

    View Slide

  143. View Slide

  144. Thanks!
    @konstantinhaase
    [email protected]

    View Slide