Does the browser have a future? Tim Bray tbray@textuality.com - - PowerPoint PPT Presentation

does the browser have a future
SMART_READER_LITE
LIVE PREVIEW

Does the browser have a future? Tim Bray tbray@textuality.com - - PowerPoint PPT Presentation

Does the browser have a future? Tim Bray tbray@textuality.com tbray.org @timbray +TimBray Left: 1997 Right: 2010 java.com php.net rubyonrails.org djangoproject.com nodejs.org


slide-1
SLIDE 1

Does the browser have a future?

Tim Bray tbray@textuality.com · tbray.org · @timbray · +TimBray

slide-2
SLIDE 2

Left: 1997 Right: 2010

slide-3
SLIDE 3

java.com

slide-4
SLIDE 4

php.net

slide-5
SLIDE 5

rubyonrails.org

slide-6
SLIDE 6

djangoproject.com

slide-7
SLIDE 7

nodejs.org

slide-8
SLIDE 8
slide-9
SLIDE 9
slide-10
SLIDE 10

developer.android.com/reference/android/os/Vibrator.html

slide-11
SLIDE 11
slide-12
SLIDE 12

Functional thinking with Erlang

counter_loop(Count) -> receive { incr } -> counter_loop(Count + 1); { report, To } -> To ! { count, Count }, counter_loop(Count) end. incr(Counter) -> Counter ! { incr }.

  • find_count(Counter) ->

Counter ! { report, self() }, receive { count, Count } -> Count end.

tbray.org/ongoing/When/200x/2007/09/21/Erlang

Scalable parallel counters!

slide-13
SLIDE 13

clojure.org

slide-14
SLIDE 14

scala-lang.org

slide-15
SLIDE 15

fjndIDP.appspot.com

slide-16
SLIDE 16 c := make(chan SearchResult) go timeout(c) for _, searcher := range Searchers { go searcher.Search(email, c, handles) } bestStrength := -1
  • utstanding := len(Searchers)
bestResult = SearchResult{TimeoutType, []IDP{}} for outstanding > 0 { result := <-c
  • utstanding--
if result.rtype == TimeoutType { break // timed out, don't wait for trailers } if len(result.idps) == 0 { continue // a result that found nothing, ignore it } resultClass := ResultStrengths[result.rtype] if resultClass.verified { bestResult = result break // verified results trump all others } if resultClass.strength > bestStrength { bestStrength = resultClass.strength bestResult = result } else if resultClass.strength == bestStrength { bestResult.idps = merge(bestResult.idps, result.idps) } } ... func timeout(c chan SearchResult) { time.Sleep(2000 * time.Millisecond) c <- SearchResult{rtype: TimeoutType} }
slide-17
SLIDE 17

twitter.com/levwalkin/status/510197979542614016/photo/1

slide-18
SLIDE 18

Cassandra Summit 2014

Featuring sessions on Cassandra at: Netfmix, Disney, Sony PSN, Early Warning, Instagram, Credit Suisse, FamilySearch, Orange, Demonware, ING, Apple, Fedex, Ebay, and Telefonica.

slide-19
SLIDE 19
slide-20
SLIDE 20

play.google.com/store/apps/top/category/GAME

slide-21
SLIDE 21

phonegap.com, cordova.apache.org

slide-22
SLIDE 22

www.digitaltrends.com/mobile/mobile-phone-world-population-2014/

slide-23
SLIDE 23

get.adobe.com/fmashplayer/

slide-24
SLIDE 24

www.microsoft.com/silverlight/

slide-25
SLIDE 25 www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html
slide-26
SLIDE 26

Jim…

slide-27
SLIDE 27

xkcd.com/1174/

slide-28
SLIDE 28

idontwantyourfuckingapp.tumblr.com/

slide-29
SLIDE 29

blog.codinghorror.com/app-pocalypse-now/

slide-30
SLIDE 30
slide-31
SLIDE 31

html5rocks.com

slide-32
SLIDE 32

jquery.com

slide-33
SLIDE 33

angularjs.org

slide-34
SLIDE 34

emberjs.com

slide-35
SLIDE 35

backbonejs.org

slide-36
SLIDE 36

polymer-project.org

slide-37
SLIDE 37

nermal.org/misc/javascript.jpg

slide-38
SLIDE 38

www.dartlang.org

slide-39
SLIDE 39

asmjs.org

slide-40
SLIDE 40

cofgeescript.org

slide-41
SLIDE 41

maxtaco.github.io/cofgee-script

slide-42
SLIDE 42

Vertically and horizontally centering a <div> with CSS is the hardest problem in computer science.

  • Gregor Rothfuss

plus.google.com/+GregorJRothfuss/posts/5Z1kezgiCvm

slide-43
SLIDE 43

lesscss.org

slide-44
SLIDE 44

sass-lang.com

slide-45
SLIDE 45

getbootstrap.com

slide-46
SLIDE 46

neat.bourbon.io

slide-47
SLIDE 47

zengrids.com

slide-48
SLIDE 48

∀ x ∃ x.js

slide-49
SLIDE 49
slide-50
SLIDE 50 reddit.com/r/programming/comments/1useus/software_in_2014_ongoing_by_tim_bray/celdofq I recently worked on a 6 month long project… We were tasked with building out an internal data analytics tool that would let non-technical folks slice and dice data in one of our primary data stores. I think we assumed going in that the server-side piece would be where we spent most of our time, but it was actually trivial given the incredible tool set you have to work with on the server. … We really ran into problems when it came to building a web app to display this data. All of the developers besides myself needed to fjrst learn javascript and jquery, which aren't altogether diffjcult to learn, but have some really strange quirks. And then CSS/Sass, which can be really conceptually diffjcult for newcomers ("No, you can't just do height: 100%;. Why? Well...", "Yes, it is strange that your div is behind your other div even though it has a higher z-index", "You need to clearfjx that outer div to fjx the way all those things are fmoating over each other. What's a clearfjx? It's another well accepted hack." etc). And then Backbone, and Marionette to make Backbone better. And requireJS, because javascript doesn't have a linker. And of course, you need to package and minimize this stufg together, because you wind up having to load 1MB of javascript into the page before you can click a button… Thank god this was an internal tool, because the idea of making this thing work for IE is terror-inducing. The number of WTF's per person per day was probably 5-10x higher on the frontend piece…
slide-51
SLIDE 51

Opabinia regalis

slide-52
SLIDE 52

twitter.com/timbray/status/433362625276018689

So Fix them!!!

slide-53
SLIDE 53