Slide 1

Slide 1 text

Pop Culture, The Pendulum and Progress Jamison Dance

Slide 2

Slide 2 text

:063104563& suddenly, you are aware of

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

How does software progress?

Slide 6

Slide 6 text

Art Science

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

A view of science wrong and dumb people had ideas smart person discovers the truth beginning of time now

Slide 10

Slide 10 text

How does science progress ?

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

TEAMWORK

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

SYNERGY

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

PARADIGM

Slide 17

Slide 17 text

PARADIGM SYNERGY TEAMWORK

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

PARADIGM

Slide 20

Slide 20 text

Kuhn's Model

Slide 21

Slide 21 text

Kuhn's Model Paradigm

Slide 22

Slide 22 text

Kuhn's Model Paradigm Anomalies

Slide 23

Slide 23 text

Kuhn's Model Exploration Paradigm Anomalies

Slide 24

Slide 24 text

Kuhn's Model Exploration Paradigm Anomalies

Slide 25

Slide 25 text

–Thomas S. Kuhn “The successive transition from one paradigm to another via revolution is the usual developmental pattern of mature science.”

Slide 26

Slide 26 text

–Tommy Kuhn “The successive transition from one paradigm to another via revolution is the usual developmental pattern of mature science.”

Slide 27

Slide 27 text

Is software science?

Slide 28

Slide 28 text

Programming R. Morris Techniques Editor On the Criteria To Be Used in Decomposing Systems into Modules D.L. Parnas Carnegie-Mellon University This paper discusses modularization as a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time. The effectiveness of a "modularization" is dependent upon the criteria used in dividing the system into modules. A system design problem is presented and both a conventional and unconventional decomposition are described. It is shown that the unconventional decompositions have distinct advantages for the goals outlined. The criteria used in arriving at the decom- positions are discussed. The unconventional decomposi- tion, if implemented with the conventional assumption that a module consists of one or more subroutines, will be less efficient in most cases. An alternative approach to implementation which does not have this effect is sketched. Key Words and Phrases: software, modules, modularity, software engineering, KWIC index, software design CR Categories: 4.0 Introduction A lucid statement of the philosophy of modular programming can be found in a 1970 textbook on the design of system programs by Gouthier and Pont [1, ¶I0.23], which we quote below: 1 A well-defined segmentation of the project effort ensures system modularity. Each task forms a separate, distinct program module. At implementation time each module and its inputs and outputs are well-defined, there is no confusion in the intended interface with other system modules. At checkout time the in- tegrity of the module is tested independently; there are few sche- duling problems in synchronizing the completion of several tasks before checkout can begin. Finally, the system is maintained in modular fashion; system errors and deficiencies can be traced to specific system modules, thus limiting the scope of detailed error searching. Usually nothing is said about the criteria to be used in dividing the system into modules. This paper will discuss that issue and, by means of examples, suggest some criteria which can be used in decomposing a system into modules. Copyright @ 1972, Association for Computing Machinery, Inc. General permission to republish, but not for profit, all or part of this material is granted, provided that reference is made to this publication, to its date of issue, and to the fact that reprinting privileges were granted by permission of the Association for Com- puting Machinery. Author's address: Department of Computer Science, Carnegie- Mellon University, Pittsburgh, PA 15213. 1053 A Brief Status Report The major advancement in the area of modular programming has been the development of coding techniques and assemblers which (l) allow one module to be written with little knowledge of the code in another module, and (2) allow modules to be reas- sembled and replaced without reassembly of the whole system. This facility is extremely valuable for the production of large pieces of code, but the systems most often used as examples of problem systems are highly- modularized programs and make use of the techniques mentioned above. 1 Reprinted by permission of Prentice-Hall, Englewood Cliffs, N.J. Communications December 1972 of Volume 15 the ACM Number 12

Slide 29

Slide 29 text

“The KWIC index system accepts a list of lines, and each line is a list of words. Any line may be "circularly shifted" by repeatedly removing the first word and appending it at the end of the line. The KWIC index system outputs a listing of all circular shifts of all lines in alphabetical order.

Slide 30

Slide 30 text

This is a small system. Except under extreme circumstances (huge data base, no supporting software), such a system could be produced by a good programmer within a week or two.”

Slide 31

Slide 31 text

function KWIC(lines) { return lines.map(circularShift) .reduce(function(m, lines) { return m.concat(lines) }, []) .sort() } function circularShift(l) { return l.split(' ').reduce(function(m, _, i, words) { if (!m.words) m.words = words m.words.push(m.words.shift()) m.res.push(m.words.join(' ')) return m }, {res: []}).res }

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

- “[Computing is] complete pop culture. [P]op culture holds a disdain for history. Pop culture is all about identity and feeling like you're participating. It has nothing to do with cooperation, the past or the future — it's living in the present. I think the same is true of most people who write code for money. They have no idea where [their culture came from] — and the Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs.”

Slide 37

Slide 37 text

- “[I]n the old days, if you reinvented the wheel, you would get your wrist slapped for not reading. But nowadays people are reinventing the flat tire. I'd personally be happy if they reinvented the wheel, because at least we'd be moving forward.”

Slide 38

Slide 38 text

1SPHSFTT

Slide 39

Slide 39 text

How does art progress?

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Who is better?

Slide 47

Slide 47 text

Not better.

Slide 48

Slide 48 text

Different.

Slide 49

Slide 49 text

Is software art?

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

–Why “I’ll be straight with you. I want you to cry. To weep. To whimper sweetly. This book is a poignant guide to Ruby. That means code so beautiful that tears are shed. That means gallant tales and somber truths that have you waking up the next morning in the arms of this book. Hugging it tightly to you all the day long. If necessary, fashion a makeshift hip holster for Why’s (Poignant) Guide to Ruby, so you can always have this book’s tender companionship.”

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

A brief timeline of JS tools

Slide 57

Slide 57 text

A brief timeline of JS tools

Slide 58

Slide 58 text

Software is art!

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Programming is a flat circle.

Slide 62

Slide 62 text

Action Reducer View Action The More Things Change

Slide 63

Slide 63 text

Action Reducer View Action WM_PAINT The More Things Change

Slide 64

Slide 64 text

Action Reducer View Action WM_PAINT WndProc The More Things Change

Slide 65

Slide 65 text

Action Reducer View Action WM_PAINT WndProc uMsg The More Things Change uMsg

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

services

Slide 69

Slide 69 text

services

Slide 70

Slide 70 text

services monolith

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

thin client

Slide 73

Slide 73 text

thin client

Slide 74

Slide 74 text

thin client thick client

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

frameworks

Slide 77

Slide 77 text

frameworks

Slide 78

Slide 78 text

frameworks libraries

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

static

Slide 81

Slide 81 text

static

Slide 82

Slide 82 text

static dynamic

Slide 83

Slide 83 text

No content

Slide 84

Slide 84 text

Make an art

Slide 85

Slide 85 text

Do a science

Slide 86

Slide 86 text

No content

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

Look for the pendulum

Slide 89

Slide 89 text

Find old good ideas

Slide 90

Slide 90 text

YOU CAN DO IT

Slide 91

Slide 91 text

YOU CAN DO IT

Slide 92

Slide 92 text

YOU CAN DO IT BELIEVE IN YOURSELF

Slide 93

Slide 93 text

References • https://github.com/FormidableLabs/react-game-kit • http://www.repl-electric.com/ • http://www.drdobbs.com/architecture-and-design/interview-with-alan-kay/240003442 • https://www.instagram.com/hedgehog_azuki/ • http://poignant.guide/ • https://bitquabit.com/post/the-more-things-change/ • https://www.nngroup.com/articles/law-of-bandwidth/ • https://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf • https://www.levelframes.com/collections/amanda-glosson-collection/bonsai • https://www.amazon.com/Structure-Scientific-Revolutions-Thomas-Kuhn/dp/0226458083 • http://worrydream.com/EarlyHistoryOfSmalltalk/ • http://www.ams.org/journals/tran/1969-146-00/S0002-9947-1969-0253905-6/S0002-9947-1969-0253905-6.pdf

Slide 94

Slide 94 text

Let's Chat @jergason http://fivestack.computer https://softskills.audio