Successfully reported this slideshow.

EtherCalc: Multiplayer Spreadsheet

6

Share

Loading in …3
×
1 of 251
1 of 251

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

EtherCalc: Multiplayer Spreadsheet

  1. EtherCalc Multiplayer Spreadsheet ethercalc.tw
  2. Personal Opinions
  3. Personal Opinions (With Infotisements)
  4. Time Limited Just Stories No Coding
  5. Time Limited Just Stories Ideas No Coding
  6. ethercalc.org ‣ npm install -g ethercalc ‣ ethercalc Please connect to: http://0:8000/ nodejs.org/#download
  7. A.O.S.A., 2011 aosabook.org aosa.tw
  8. History
  9. VisiCalc, 1979 Dan Bricklin
  10. Harvard, 1977
  11. Harvard, 1977
  12. Harvard, 1977
  13. Harvard, 1977
  14. Harvard, 1977
  15. Original Vision
  16. Original Vision Alto Workstation
  17. Original Vision Alto Calculator- Workstation Mouse
  18. Original Vision Alto Calculator- Workstation Head-mounted Mouse Display
  19. Original Vision Alto Calculator- Workstation Head-mounted Mouse Display
  20. =SUM( ) 0
  21. 10 =SUM( ) 10 0
  22. 10 20 =SUM( ) 30 10 0
  23. 10 20 30 =SUM( ) 60 30 10 0
  24. 10 20 30 =SUM( ) 60 30 10 0
  25. 1977 → 1978
  26. 1977 → 1978
  27. 1977 → 1978 + Integer BASIC
  28. 1978 → 1979
  29. 1978 → 1979 10 20 30 =SUM( ) 60
  30. 1978 → 1979 A B C D 1 10 20 30 2 =SUM( ) 60
  31. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60
  32. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 Bob & Dan
  33. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan prototypes in BASIC Bob & Dan
  34. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan prototypes in BASIC ‣ Bob codes in 6502 ASM Bob & Dan
  35. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan prototypes in BASIC ‣ Bob codes in 6502 ASM ‣ 700,000 copies in 6 years Bob & Dan
  36. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan prototypes in BASIC ‣ Bob codes in 6502 ASM ‣ 700,000 copies in 6 years ‣ The !rst “Killer App” Bob & Dan
  37. 1981
  38. 20 years passed
  39. 20 years passed
  40. 20 years passed
  41. 20 years passed
  42. 20 years passed Nothing changed
  43. “Can’t open”
  44. “Can’t open” “Garbled”
  45. “Can’t open” “Garbled” “Virus!”
  46. Wikipedia, 2001
  47. Wikipedia, 2001
  48. Wikipedia, 2001
  49. wikiCalc, 2005
  50. wikiCalc, 2005 ✓ Plain text, HTML & Wiki syntax
  51. wikiCalc, 2005 ✓ Plain text, HTML & Wiki syntax ✓ References cells on other servers
  52. wikiCalc, 2005 ✓ Plain text, HTML & Wiki syntax ✓ References cells on other servers ✓ Keeps all operations for auditing
  53. wikiCalc, 2005 ✓ Plain text, HTML & Wiki syntax ✓ References cells on other servers ✓ Keeps all operations for auditing ✓ Revert to any revision
  54. wikiCalc, 2005 ✓ Plain text, HTML & Wiki syntax ✓ References cells on other servers ✓ Keeps all operations for auditing ✓ Revert to any revision ✓ Open Source! (GPLv2)
  55. wikiCalc.pl
  56. wikiCalc.pl 網站 Sites ./wkcdata/sites/Foo ./wkcdata/sites/Bar ./wkcdata/sites/Baz
  57. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ
  58. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格
  59. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格 A1: 100
  60. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格 A1: 100 A2: =A1*2
  61. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2
  62. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2
  63. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2 B2: =YYY!D2
  64. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2 B2: =YYY!D2
  65. wikiCalc.pl 網站 Sites 頁面 Pages ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ Cells 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2 B2: =YYY!D2 Cross-page Reference
  66. wikiCalc Edit Flow
  67. wikiCalc Edit Flow A1: 100 A2: =A1*2
  68. wikiCalc Edit Flow A1: 100 A2: =A1*2
  69. wikiCalc Edit Flow A1: 100 A2: =A1*2 POST / ajaxsetcell=host:page:A1:300 wikicalc.pl
  70. wikiCalc Edit Flow A1: 100 A2: =A1*2 POST / ajaxsetcell=host:page:A1:300 wikicalc.pl 200 OK <?xml version="1.0"?> <root><![CDATA[ A1:v:300:300:right:1:1:: A2:f:600:A1*2:right:1:1:: ]]></root>
  71. “Loading…”
  72. “Loading…”
  73. “Loading…” “C100k” Problem
  74. “Loading…” “C100k” Problem
  75. Undo
  76. Undo Redo
  77. SocialCalc, 2006 Dan Bricklin Ross Mayfield
  78. Design Goals
  79. Design Goals ‣ Rewrite calc engine in JS
  80. Design Goals ‣ Rewrite calc engine in JS ‣ Real-time responsive editor
  81. Design Goals ‣ Rewrite calc engine in JS ‣ Real-time responsive editor ‣ Supports 100,000+ cells
  82. Design Goals ‣ Rewrite calc engine in JS ‣ Real-time responsive editor ‣ Supports 100,000+ cells ‣ Works on all browsers (IE6+)
  83. Design Goals ‣ Rewrite calc engine in JS ‣ Real-time responsive editor ‣ Supports 100,000+ cells ‣ Works on all browsers (IE6+) ‣ Client-side log & undo/redo
  84. Architecture
  85. Architecture SocialCalc.js HTTP Server
  86. Architecture SocialCalc.js GET HTTP Server
  87. Architecture SocialCalc.js GET HTTP Server
  88. Architecture SocialCalc.js GET GET HTTP Server
  89. Architecture SocialCalc.js GET GET ($) HTTP Server
  90. Architecture SocialCalc.js PUT GET GET ($) HTTP Server
  91. Architecture SocialCalc.js PUT GET GET ($) HTTP Server
  92. Command Pattern
  93. Command Pattern set A1 value n 42
  94. Command Pattern set A1 value n 42 set A2 formula A1*2
  95. Command Pattern set A1 value n 42 set A2 formula A1*2 merge A1:B2 cut A3 paste A4 sort A1:B9 A up B down set sheet defaultcolor blue ...
  96. Command Pattern set A1 value n 42 set A2 formula A1*2 ‣ Async recalc loop
  97. Command Pattern set A1 value n 42 set A2 formula A1*2 ‣ Async recalc loop ‣ Visible-only redraw
  98. Command Pattern set A1 value n 42 set A2 formula A1*2 ‣ Async recalc loop ‣ Visible-only redraw ‣ Unlimited undo/redo
  99. Command Pattern set A1 value n 42 set A2 formula A1*2 ‣ Async recalc loop ‣ Visible-only redraw ‣ Unlimited undo/redo ‣ UI stays responsive
  100. Command Pattern set A1 value n 42 set A2 formula A1*2 ‣ Async recalc loop ‣ Visible-only redraw ‣ Unlimited undo/redo ‣ UI stays responsive
  101. “Social”Calc
  102. “Social”Calc
  103. “Social”Calc Comment, Like, Tag, Share, Embed...
  104. Objects Relations
  105. Objects Relations
  106. Objects Relations
  107. Good !rst Pro!ts later
  108. Common Public Attribution License
  109. Common Public Attribution License ⓐ BSD, MIT
  110. Common Public Attribution License © ⓐ BSD, MIT LGPL, MPL
  111. Common Public Attribution License © ++© ⓐ BSD, MIT LGPL, MPL GPL
  112. Common Public Attribution License © ++© ⓐ BSD, MIT LGPL, MPL GPL “ASP

×