SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
Good ideas
that
we forgot
Joe Armstrong
My goals
• To remind you of the important things
worth knowing
• Identify the stuff worth learning
• Identify some problems worth solving



[note: this is a very biased view]
What ideas has we forgotten?
I made some lists
• Collect lots of items easy
• Assign to lists difficult
• Shorten the lists to N items (N is small) very difficult

Throwing things away is much more difficult than
collecting things - but what’s left is better.
But before we get to the
lists we need some
principles to evaluate
the results
Computer
science
101
#1 - Observational Equivalence
• Two systems are equivalent if they cannot be
distinguished on the basis of their observable
inputs and outputs.
Inputs Outputs
Need Several languages:
- Describe the Inputs and
outputs
- Describe Computations
- Describe Connections
- Describe sequences of
events
#2 - Isolation
• Two systems are isolated if what happens in
one system cannot influence what happens in
the other system.
Messages
- Messages should never crash the system
- Messaging is inevitable
- The sender never knows if the message is received
#3 - Composition
• Things are composable if they can be combined
in such a way that the combination behaves in a
similar manner to the individual parts.
#4 - Causality
• Effect Follows Cause
Messages
A B
- B does not know how A IS only how it WAS
- A does not know if B received the last
message it sent
#5 - Physics
• For a computation to take place
all the data and the program must
be at the same place in space time
So you can move the data or the
program or both.
Tip: get all the data you need and
the program to one place before
doing a computation
Violating any one of these principles
will lead to brittle software that may
appear to work but will one day fail in
ways that are difficult to understand
Following these
principles has many
benefits …
isolation gives
• Fault-tolerance
• Scalability
• Security
For free :-)
What benefits
come from obeying
the other principles?
Part 2
Things to learn
which you might have forgotten
or not known about
• 2 great papers to read
• 4 old tools to learn
• 4 really bad things
• 3 great books to read
• 7 reasons why software is difficult now
• 10 reasons why software was easier back in the day
• 1 fun programming exercise
• 8 great machines from the past


… and …
80 things to do
…
• 3 performance improvements
• 5+ YouTube videos to watch
• 6 things not to do
• 5 sins
• 4 languages to learn
• 4 great forgotten ideas
• 6 areas to research
• 2 dangers
• 4 ideas that are obvious now but strange at first
• 2 fantastic programs to try
80
2 great papers to read
• A Plea for Lean Software - Niklaus Wirth
• The Emperor’s old clothes - ACM Turing award
lecture - Tony Hoare
4 old tools to learn
• emacs (vi)
• bash
• make
• shell

3 great books to read
1 fun programming exercise
Serious fun - might cause
your brain to melt
YouTube videos to watch
• The computer revolution has not happened yet

Alan Kay
• Computers for Cynics

Ted Nelson
Part 4
Four great forgotten ideas
Flow Based
Programming
Flow Based Programming
• Invented by John Paul Morrison in the early 1970’s
• Programming by “placing objects next to each
other”
• Binary distribution of components
• Account for all packets
EndStart F1 F2 F3
Start F1
F3 F4
EndSplit F2 Merge
{ok, X} | {error,W}
F(X)
{ok, F(X)}
{error, …}}
{error,W}
Errors are forwarded though the network
All “jobs” are numbered
1,2,3,… {1,ok,…},{2,error,…}
The input is a stream of messages
1,2,3,4
The output is a stream of replies
No packets are lost
• We’re building apps and websites
• We should be building components that can be
wired together
Sins
• Programs that cannot be remotely controlled
• Programs that cannot share their data
• Programs that create data in a proprietary format
• Program without a published interface
Pipes
Pipes
• The output of my program should be the input
to your program
• A | B | C
• Text-flows across the boundary
• Killed by GUIs and Apps (Apps are not pipeable)
“Doug has been explicit in saying
that he very nearly exercised
managerial control to get pipes
installed.”
“Point 1's garden hose connection
analogy, though, is the one that ultimately
whacked us on the head to best effect.”
http://cm.bell-labs.com/cm/cs/who/dmr/mdmpipe.html
M.Douglas McIIroy
“.. he conceived Unix pipes, which allow
programs to work together with no
knowledge of each other...”
Pipes
• Are formed by composing items
• Items are black box equivalent
• Items obey causality
• Individual Items are isolated
Apps
• Pads - Tablets - Phones
• Human can interact with Apps
• Apps can’t interact with each other
• You are locked inside your Apps. They all do
different things with a varying degree of success.
Linda Tuple
Spaces
Linda Tuple Spaces
• Shared Whiteboard
• Gelernter and Carriero 1986
• More declarative than message passing
• We just create jobs and don’t know who will do
them
Tuple Space Operations
• out (adds a tuple to the store)
• in (reads a tuple and removes it from the store)
• rd (reads a tuple)
• eval (create a new parallel process)
Id = random_int(),
out <fac_request,Id,50>
in <fac_response,Id,N>
in <fac_request,Id,X>
F = factorial(X),
out <fac_response,Id,N>
<fac_request,345126313,34>
<fac_request,7654212512,29>
<fac_response,23132394234,120>
…
in <fac_request,Id,X>
F = factorial(X),
out <fac_response,Id,N>
in <fac_request,Id,X>
F = factorial(X),
out <fac_response,Id,N>
in <fac_request,Id,X>
F = factorial(X),
out <fac_response,Id,N>
in <fac_request,Id,X>
F = factorial(X),
out <fac_response,Id,N>
in <fac_request,Id,X>
F = factorial(X),
out <fac_response,Id,N>
“client”
“servers”
Shared tuple space
Hypertext
Hypertext
• 1960’s - Ted Nelson - Xanadu (first approximation to
Xanadu was 1998)
• 1962 - Douglas Engelbart - NLS (oN Line System)
• 1963 - Ted Nelson coins the word “Hypertext”
• 1980 - Tim Berners Lee makes a simple hypertext system
• 1987 - TBL Makes WWW
• 1987 - Apple makes Hypercard
• WWW is not hypertext
• HTML is not hypertext
• HTML links are not hypertext links
Page not found
404
All web pages are
not writable
How to correct a typo
on a web page
Correcting a typo (1)
1. Learn GIT
2. Locate the program that creates the page
3. Locate the typo in the source code
4. Correct the typo and test
5. Send a push request to the maintainer of the site
Correcting a typo (2)
1. Select the text
2. Type in the correction
3. All people observing the page see the change
after a propagation delay
• Links can break
• Cannot write any page
• Sparse knowledge
• Few authors per page
• Gigantic
WWW Wiki
• Links cannot break
• Can write any page
• Dense knowledge
• Many authors per page
• Small
Xanadu
• Ted Nelson’s Hypertext system
• https://en.wikipedia.org/wiki/
Project_Xanadu#Original_17_rules
• No data is ever lost - no 404’s
• All data is secure
• Every user can read write and store data
• …
It’s your turn nextt
Programs that are not secure and cannot be
remotely controlled should not be written
All Apps should be scriptable
All Apps should be composable
Finally

Contenu connexe

Similaire à Good ideas that we forgot

PowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue KidPowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue KidMatthew Johnson
 
Clean code, Feb 2012
Clean code, Feb 2012Clean code, Feb 2012
Clean code, Feb 2012cobyst
 
Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015lpgauth
 
Python and Oracle : allies for best of data management
Python and Oracle : allies for best of data managementPython and Oracle : allies for best of data management
Python and Oracle : allies for best of data managementLaurent Leturgez
 
Esage on non-existent 0-days, stable binary exploits and user interaction
Esage   on non-existent 0-days, stable binary exploits and user interactionEsage   on non-existent 0-days, stable binary exploits and user interaction
Esage on non-existent 0-days, stable binary exploits and user interactionDefconRussia
 
On non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits andOn non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits andAlisa Esage Шевченко
 
TeelTech - Advancing Mobile Device Forensics (online version)
TeelTech - Advancing Mobile Device Forensics (online version)TeelTech - Advancing Mobile Device Forensics (online version)
TeelTech - Advancing Mobile Device Forensics (online version)Mike Felch
 
performing computer operations.pptx
performing computer operations.pptxperforming computer operations.pptx
performing computer operations.pptxCARMELINEPRECYLLORCA
 
Rails Tips and Best Practices
Rails Tips and Best PracticesRails Tips and Best Practices
Rails Tips and Best PracticesDavid Keener
 
Chelberg ptcuser 2010
Chelberg ptcuser 2010Chelberg ptcuser 2010
Chelberg ptcuser 2010Clay Helberg
 
Go Best Practices – Interfaces, Packages and APIs
Go Best Practices – Interfaces, Packages and APIsGo Best Practices – Interfaces, Packages and APIs
Go Best Practices – Interfaces, Packages and APIsMarcus Kohlberg
 
Pj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentalsPj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentalsSasidharaRaoMarrapu
 
Booting into functional programming
Booting into functional programmingBooting into functional programming
Booting into functional programmingDhaval Dalal
 
.NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel...
.NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel....NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel...
.NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel...Karel Zikmund
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesEdorian
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software DevelopmentNaveenkumar Muguda
 
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Fwdays
 
Case Study of the Unexplained
Case Study of the UnexplainedCase Study of the Unexplained
Case Study of the Unexplainedshannomc
 
NDC Oslo 2019 - War stories from .NET team -- Karel Zikmund
NDC Oslo 2019 - War stories from .NET team -- Karel ZikmundNDC Oslo 2019 - War stories from .NET team -- Karel Zikmund
NDC Oslo 2019 - War stories from .NET team -- Karel ZikmundKarel Zikmund
 

Similaire à Good ideas that we forgot (20)

PowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue KidPowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue Kid
 
Clean code, Feb 2012
Clean code, Feb 2012Clean code, Feb 2012
Clean code, Feb 2012
 
Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015
 
Unit no_1.pptx
Unit no_1.pptxUnit no_1.pptx
Unit no_1.pptx
 
Python and Oracle : allies for best of data management
Python and Oracle : allies for best of data managementPython and Oracle : allies for best of data management
Python and Oracle : allies for best of data management
 
Esage on non-existent 0-days, stable binary exploits and user interaction
Esage   on non-existent 0-days, stable binary exploits and user interactionEsage   on non-existent 0-days, stable binary exploits and user interaction
Esage on non-existent 0-days, stable binary exploits and user interaction
 
On non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits andOn non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits and
 
TeelTech - Advancing Mobile Device Forensics (online version)
TeelTech - Advancing Mobile Device Forensics (online version)TeelTech - Advancing Mobile Device Forensics (online version)
TeelTech - Advancing Mobile Device Forensics (online version)
 
performing computer operations.pptx
performing computer operations.pptxperforming computer operations.pptx
performing computer operations.pptx
 
Rails Tips and Best Practices
Rails Tips and Best PracticesRails Tips and Best Practices
Rails Tips and Best Practices
 
Chelberg ptcuser 2010
Chelberg ptcuser 2010Chelberg ptcuser 2010
Chelberg ptcuser 2010
 
Go Best Practices – Interfaces, Packages and APIs
Go Best Practices – Interfaces, Packages and APIsGo Best Practices – Interfaces, Packages and APIs
Go Best Practices – Interfaces, Packages and APIs
 
Pj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentalsPj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentals
 
Booting into functional programming
Booting into functional programmingBooting into functional programming
Booting into functional programming
 
.NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel...
.NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel....NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel...
.NET Core Summer event 2019 in Linz, AT - War stories from .NET team -- Karel...
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principles
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software Development
 
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
 
Case Study of the Unexplained
Case Study of the UnexplainedCase Study of the Unexplained
Case Study of the Unexplained
 
NDC Oslo 2019 - War stories from .NET team -- Karel Zikmund
NDC Oslo 2019 - War stories from .NET team -- Karel ZikmundNDC Oslo 2019 - War stories from .NET team -- Karel Zikmund
NDC Oslo 2019 - War stories from .NET team -- Karel Zikmund
 

Plus de J On The Beach

Massively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayMassively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayJ On The Beach
 
Big Data On Data You Don’t Have
Big Data On Data You Don’t HaveBig Data On Data You Don’t Have
Big Data On Data You Don’t HaveJ On The Beach
 
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...J On The Beach
 
Pushing it to the edge in IoT
Pushing it to the edge in IoTPushing it to the edge in IoT
Pushing it to the edge in IoTJ On The Beach
 
Drinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsDrinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsJ On The Beach
 
How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternJ On The Beach
 
When Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorWhen Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorJ On The Beach
 
The big data Universe. Literally.
The big data Universe. Literally.The big data Universe. Literally.
The big data Universe. Literally.J On The Beach
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EEJ On The Beach
 
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...J On The Beach
 
Pushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorPushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorJ On The Beach
 
Axon Server went RAFTing
Axon Server went RAFTingAxon Server went RAFTing
Axon Server went RAFTingJ On The Beach
 
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...J On The Beach
 
Madaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysMadaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysJ On The Beach
 
Servers are doomed to fail
Servers are doomed to failServers are doomed to fail
Servers are doomed to failJ On The Beach
 
Interaction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersInteraction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersJ On The Beach
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...J On The Beach
 
Leadership at every level
Leadership at every levelLeadership at every level
Leadership at every levelJ On The Beach
 
Machine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesMachine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesJ On The Beach
 

Plus de J On The Beach (20)

Massively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayMassively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard way
 
Big Data On Data You Don’t Have
Big Data On Data You Don’t HaveBig Data On Data You Don’t Have
Big Data On Data You Don’t Have
 
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
 
Pushing it to the edge in IoT
Pushing it to the edge in IoTPushing it to the edge in IoT
Pushing it to the edge in IoT
 
Drinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsDrinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actors
 
How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server pattern
 
Java, Turbocharged
Java, TurbochargedJava, Turbocharged
Java, Turbocharged
 
When Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorWhen Cloud Native meets the Financial Sector
When Cloud Native meets the Financial Sector
 
The big data Universe. Literally.
The big data Universe. Literally.The big data Universe. Literally.
The big data Universe. Literally.
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EE
 
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
 
Pushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorPushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and Blazor
 
Axon Server went RAFTing
Axon Server went RAFTingAxon Server went RAFTing
Axon Server went RAFTing
 
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
 
Madaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysMadaari : Ordering For The Monkeys
Madaari : Ordering For The Monkeys
 
Servers are doomed to fail
Servers are doomed to failServers are doomed to fail
Servers are doomed to fail
 
Interaction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersInteraction Protocols: It's all about good manners
Interaction Protocols: It's all about good manners
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
 
Leadership at every level
Leadership at every levelLeadership at every level
Leadership at every level
 
Machine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesMachine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind Libraries
 

Dernier

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 

Dernier (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 

Good ideas that we forgot

  • 3. • To remind you of the important things worth knowing • Identify the stuff worth learning • Identify some problems worth solving
 
 [note: this is a very biased view]
  • 4. What ideas has we forgotten?
  • 5.
  • 6. I made some lists • Collect lots of items easy • Assign to lists difficult • Shorten the lists to N items (N is small) very difficult
 Throwing things away is much more difficult than collecting things - but what’s left is better.
  • 7. But before we get to the lists we need some principles to evaluate the results
  • 9. #1 - Observational Equivalence • Two systems are equivalent if they cannot be distinguished on the basis of their observable inputs and outputs. Inputs Outputs Need Several languages: - Describe the Inputs and outputs - Describe Computations - Describe Connections - Describe sequences of events
  • 10. #2 - Isolation • Two systems are isolated if what happens in one system cannot influence what happens in the other system. Messages - Messages should never crash the system - Messaging is inevitable - The sender never knows if the message is received
  • 11. #3 - Composition • Things are composable if they can be combined in such a way that the combination behaves in a similar manner to the individual parts.
  • 12. #4 - Causality • Effect Follows Cause Messages A B - B does not know how A IS only how it WAS - A does not know if B received the last message it sent
  • 13. #5 - Physics • For a computation to take place all the data and the program must be at the same place in space time So you can move the data or the program or both. Tip: get all the data you need and the program to one place before doing a computation
  • 14. Violating any one of these principles will lead to brittle software that may appear to work but will one day fail in ways that are difficult to understand
  • 15. Following these principles has many benefits …
  • 16. isolation gives • Fault-tolerance • Scalability • Security For free :-) What benefits come from obeying the other principles?
  • 17. Part 2 Things to learn which you might have forgotten or not known about
  • 18. • 2 great papers to read • 4 old tools to learn • 4 really bad things • 3 great books to read • 7 reasons why software is difficult now • 10 reasons why software was easier back in the day • 1 fun programming exercise • 8 great machines from the past 
 … and … 80 things to do
  • 19. … • 3 performance improvements • 5+ YouTube videos to watch • 6 things not to do • 5 sins • 4 languages to learn • 4 great forgotten ideas • 6 areas to research • 2 dangers • 4 ideas that are obvious now but strange at first • 2 fantastic programs to try
  • 20. 80
  • 21. 2 great papers to read • A Plea for Lean Software - Niklaus Wirth • The Emperor’s old clothes - ACM Turing award lecture - Tony Hoare
  • 22. 4 old tools to learn • emacs (vi) • bash • make • shell

  • 23. 3 great books to read
  • 24. 1 fun programming exercise Serious fun - might cause your brain to melt
  • 25. YouTube videos to watch • The computer revolution has not happened yet
 Alan Kay • Computers for Cynics
 Ted Nelson
  • 26. Part 4 Four great forgotten ideas
  • 28. Flow Based Programming • Invented by John Paul Morrison in the early 1970’s • Programming by “placing objects next to each other” • Binary distribution of components • Account for all packets
  • 29.
  • 30. EndStart F1 F2 F3 Start F1 F3 F4 EndSplit F2 Merge
  • 31. {ok, X} | {error,W} F(X) {ok, F(X)} {error, …}} {error,W} Errors are forwarded though the network All “jobs” are numbered
  • 32. 1,2,3,… {1,ok,…},{2,error,…} The input is a stream of messages 1,2,3,4 The output is a stream of replies No packets are lost
  • 33. • We’re building apps and websites • We should be building components that can be wired together
  • 34. Sins • Programs that cannot be remotely controlled • Programs that cannot share their data • Programs that create data in a proprietary format • Program without a published interface
  • 35. Pipes
  • 36. Pipes • The output of my program should be the input to your program • A | B | C • Text-flows across the boundary • Killed by GUIs and Apps (Apps are not pipeable)
  • 37.
  • 38. “Doug has been explicit in saying that he very nearly exercised managerial control to get pipes installed.” “Point 1's garden hose connection analogy, though, is the one that ultimately whacked us on the head to best effect.” http://cm.bell-labs.com/cm/cs/who/dmr/mdmpipe.html M.Douglas McIIroy
  • 39. “.. he conceived Unix pipes, which allow programs to work together with no knowledge of each other...”
  • 40. Pipes • Are formed by composing items • Items are black box equivalent • Items obey causality • Individual Items are isolated
  • 41. Apps • Pads - Tablets - Phones • Human can interact with Apps • Apps can’t interact with each other • You are locked inside your Apps. They all do different things with a varying degree of success.
  • 43. Linda Tuple Spaces • Shared Whiteboard • Gelernter and Carriero 1986 • More declarative than message passing • We just create jobs and don’t know who will do them
  • 44. Tuple Space Operations • out (adds a tuple to the store) • in (reads a tuple and removes it from the store) • rd (reads a tuple) • eval (create a new parallel process)
  • 45. Id = random_int(), out <fac_request,Id,50> in <fac_response,Id,N> in <fac_request,Id,X> F = factorial(X), out <fac_response,Id,N> <fac_request,345126313,34> <fac_request,7654212512,29> <fac_response,23132394234,120> … in <fac_request,Id,X> F = factorial(X), out <fac_response,Id,N> in <fac_request,Id,X> F = factorial(X), out <fac_response,Id,N> in <fac_request,Id,X> F = factorial(X), out <fac_response,Id,N> in <fac_request,Id,X> F = factorial(X), out <fac_response,Id,N> in <fac_request,Id,X> F = factorial(X), out <fac_response,Id,N> “client” “servers” Shared tuple space
  • 47. Hypertext • 1960’s - Ted Nelson - Xanadu (first approximation to Xanadu was 1998) • 1962 - Douglas Engelbart - NLS (oN Line System) • 1963 - Ted Nelson coins the word “Hypertext” • 1980 - Tim Berners Lee makes a simple hypertext system • 1987 - TBL Makes WWW • 1987 - Apple makes Hypercard
  • 48. • WWW is not hypertext • HTML is not hypertext • HTML links are not hypertext links
  • 50. All web pages are not writable
  • 51. How to correct a typo on a web page
  • 52. Correcting a typo (1) 1. Learn GIT 2. Locate the program that creates the page 3. Locate the typo in the source code 4. Correct the typo and test 5. Send a push request to the maintainer of the site
  • 53. Correcting a typo (2) 1. Select the text 2. Type in the correction 3. All people observing the page see the change after a propagation delay
  • 54. • Links can break • Cannot write any page • Sparse knowledge • Few authors per page • Gigantic WWW Wiki • Links cannot break • Can write any page • Dense knowledge • Many authors per page • Small
  • 55. Xanadu • Ted Nelson’s Hypertext system • https://en.wikipedia.org/wiki/ Project_Xanadu#Original_17_rules • No data is ever lost - no 404’s • All data is secure • Every user can read write and store data • …
  • 57. Programs that are not secure and cannot be remotely controlled should not be written All Apps should be scriptable All Apps should be composable Finally