The Artima Developer Community
Sponsored Link

Java Buzz Forum
Strange Loop 2011: We Really Don't Know How To Compute! (And Other Insights)

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
Weiqi Gao

Posts: 1808
Nickname: weiqigao
Registered: Jun, 2003

Weiqi Gao is a Java programmer.
Strange Loop 2011: We Really Don't Know How To Compute! (And Other Insights) Posted: Sep 20, 2011 11:45 PM
Reply to this message Reply

This post originated from an RSS feed registered with Java Buzz by Weiqi Gao.
Original Post: Strange Loop 2011: We Really Don't Know How To Compute! (And Other Insights)
Feed Title: Weiqi Gao's Weblog
Feed URL: http://www.weiqigao.com/blog/rss.xml
Feed Description: Sharing My Experience...
Latest Java Buzz Posts
Latest Java Buzz Posts by Weiqi Gao
Latest Posts From Weiqi Gao's Weblog

Advertisement

Before the full report, a quiz:

Q: Is the logo of this year's String Loop conference a dipiction of a Möbius band?


September 20, St. Louis, MO—The third annual Strang Loop conference concluded its last session about two hours ago (I wrote this sentence on Tue Sep 20 18:57:16 CDT 2011). Like the last two Strange Loop conferences, this year's conference is packed with thought provoking keynotes and first class presentations. The new venue at the Hilton at the Ballpark downlown worked out well for the expanded program (7-tracks) and audience (more than 900, 60% reportedly from out of town).

Alex may have heard this many times already, but I still want to say a bit thank you to Alex Miller and his team: Mario Aquino, Ryan Senior, Scott Delap, and Nick Cowan. It's a truly amazing event. Even Mayor Slay twitted about it.

I attended along with 14 other colleagues from OCI. Someone asked me why I haven't blogged lately and I said I really don't feel that I have anything say. (And indeed I last blogged 123 days ago. Long time no blog.) That changed today and here's my take on Strange Loop 2011. Alex said all session videos will be made available on infoq.com in due time. So I will not try to be super detailed about the sessions. But I do want to convey the feel of the conference to people who are not here, like @codetojoy, who participated in previous years but couldn't come this year, and the guy who twitted (I paraphrase) "By all the chatter on twitter, I really should be at the Strange Loop conference." but whose tweet I couldn't track down.

I did not attend the Sunday workshops. So I'll focus on Monday and Tuesday's sessions. There are four keynotes (Erik Meijer on Monday morning, Gerald Sussman on Monday afternoon, Allen Wirfs-Brock and Rich Hickey on Tuesday afternoons) and nine one-hour talks in seven tracks. Picking which breakout session to attend is really difficult because for every one of the time slots, I wanted to be at at least two sessions at the same time.

Erik Meijer: NoSQL is the Dual of SQL

Erik started his talk with a cube whose three dimensions represent three pairs of opposing attributes of a database system: big vs. small; push vs. pull; foreign key/primary key vs. key/value pairs and pointed out that traditional RDBMS occupy only one vertex of the eight vertices of the cube, the other seven are NoSQL's domain.

He then proceeded to focus attention on the primary key/foreign key vs. key/value pair dimension and attempted to provide a categorical justification of the NoSQL movement.

His main points include:

  • RAM is a key/value store
  • C build object graphs using pointers
  • Object graphs are intuitive to programmers
  • Relational model flattens object graphs into tables
  • Normalization is really abnormalization
  • SQL is imperative
  • Referential integrity links tables together though joins
  • Objects are composable; Tables aren't (can't put a table in a cell
  • NULL is a mess
  • Impedent mismatch; OR mapping
  • Indices are precomputed joins => give us back nested collections
  • Tables + indices produces the same model as objects + pointers; but the arrows are reversed
  • In category throry, this reversing of direction signifies duality
  • NoSQL should be coSQL!
  • The web is a key/value store
  • RAM is also a RESTful service
  • They are the yin and yang
    • yin (open -> NoSQL)
    • yang (closed -> SQL)

Weiqi's comment: If this duality is a true duality in the strict sense of category throey, then every theorem about the one can be translated into a theorem about the other. What does the decodes of relational database research results translate to?

Gerald Sussman: We Really Don't Know How to compute!

I'm very pleased that Gerald Sussman came to the Strange Loop conference. I'm a big fan of the SICP, and i watche dall twenty-two hours of the lecture.

  • Professor Sussman began his lecture with a version of the Kanizsa triangle and asked us if we know how our brains "saw" the invisible triangle.
  • He then mentioned that the human genome is roughly 1GB in size, yet it encoded your whole life. How?
  • He then gave more examples of how animals figure out how to regrow damaged parts, etc.
  • Compared to that, the programs that we wrote in so much inferior: they are full of bugs, and they are hard to change.
  • We really don't know how to compute!
  • He posits that may be accuracy is not the only true measure of programming. Utility counts more. Nobody says Google is useless if he can't find what he wants with one search. He'll just try a different search.
  • He then showed a electric circuit and showed how an expert can simply "see" the solution by making local arguments while the novice will need to write down the equations and solve them.
  • How did the expert do it? How do you teach that?
  • He then showed one possible new approach to programming in terms of "generic extensions" and "propagation networks" (which I unfortunately did not follow exactly but you can get a glimpse of it here.)

Weiqi's comment: This should be thought provoking talk. Except that the thought it provoked has not shown up in my brain yet.

Allen Wirfs-Brock: "Post-PC Computing" is Not a Vision

Allen's talk attempted to define the "Post-PC" era for the computing industry, and deduce some consequences of such a shift.

  • How computing has changed?
  • What's the nature of computing in the different "era"s?
  • The PC era is not marked by hardware evolution
  • The eras are differentiated by the impact of computing on society
  • Earlier eras are: Corporate computing ('50-'75 large corporations)
  • Personal computing (individual tasks)
  • Corporate computing did not go away
  • Personal computing era started with a vision (Alan Kay, Tel Nilsen(?))
  • What characterizes the new era:
    • Mobile?
    • Cloud?
    • Tablets?
    • Games & media players
    • Monetizing users
  • The coming era is Ambient computing:
    • Devices not computers
    • Ubiquitous access to information
    • Ambient intelligence, fades into background
    • The internet of Things
  • When we go from one era to another there are transitional technologies:
  • From corporate to personal: timeshare, minicomputers, UNIX, C
  • From personal to ambient: cell phones, www/browsers, URL, HTTP/REST
  • Growing focus on "apps" not "tools" (tools disappear)
  • Each era has a dominant platform:
  • Corporate era: IBM
  • PC era: PC
  • Ambient era: The platform that's in the browser's gut
  • Why? Market demands it; technologically good-enough; superior business execution
  • He claims there is no fundamental differences between web apps and native apps
  • Examples: Mozilla Boot to Gecko; Chrome OS; Palm/HP WebOS
  • Web API exists for some but not all capabilities
  • Battle between: Silos of proprietary platforms; Walled gardens; Standard-based open platforms
  • Each era has a canonical language:
  • Corportate era: Cobol/FORTRAN
  • PC era: C
  • Ambient era: JavaScript: It's in place; it's good-enough; it's getting better; it can't be replaced
  • JavaScript performance attained parity with C in 2011
  • Mozilla wrote a performant PDF renderer in JavaScript

Allen went on to describe the standardization work that is going on at ECMA TC39 and enumerated thing to come (ES.next = ES.6 2013):

  • modules
  • sanding-boxing module loaders
  • Proxy-Objects
  • iterators and generators
  • array comprehension
  • string interpolation
  • super references
  • gensym-like private names
  • better support for class-style inheritance
He concluded by proclaiming this is the most exciting time for the industry since the '80s and encouraged people to enjoy it.

Weiqi's comment: The realization of this vision requires the corporation of all players. Even if Microsoft and Apple decide to die in favor of the platform that's in the guts of the browser, that platform, when grown up, will be no different from Windows or Mac OS X. JavaScript is not replaceable. It will be replaced when its evolution is deemed "too slow" by the society.

Rich Hickey: Simple Made Easy

Rich Hickey's talk is the most nuanced and hinges on the strict dictionary definition of simple and easy. He went on the develop the theme that we are making programming too complex for our own sake. Some quotes:

  • Every intertwining add burden to our brain
  • Every bug was written by someone, compiled cleanly, and passed all the tests.
  • Focusing on ease, you will get complexity that kills you
  • If you go for simple, you start slow, and eventually go faster
  • OO is easy, but yields complexity
  • Incidental complexity—incidental is Latin for "your fault"
  • We can learn more things, but can't get smarter
  • Simple doesn't mean less parts. Sometimes we need to have more parts to make every part simple
  • State/Object is complex; Values are simple
  • Methods are complex; functions/namespaces are simple
  • Variables are complex; managed refs are simpler
  • Inheritance/switches are complex; polymorphism à la carte is simple
  • Syntax is complex; data is simple
  • Loops are complex; set functions are simple
  • Actors are complex; queues are simple
  • ORM is complex; declarative data manipulation is simple
  • I did years and years of stateful programming, and it sucked
  • Nothing makes state simple
  • If you take two things from this talk: the first is simple vs. easy; the second is that you do not need the complex tools
  • Use only
    • values
    • functions
    • namespaces
    • data
    • polymorphism à la carte
    • set functions
    • queues
    • learn SQL
    • rules
  • We create complex data structures around data rather than dealing with data directly. Use a map rather than defining a type
  • You have to analyse the problem and make a decision on the result
  • Abstraction should separate What, Who, How, When/Where, and Why
  • Information is simple. The only thing you can do is ruin it
  • Leave data alone
  • It's your fault if you don't have a simple system
  • Guardrails don't yield simplicity
  • Develop your sensibility around disentanglement
  • All reliability tools (tests, etc.) doesn't matter

Weiqi's comment: Keeping things simple is actually really hard. Not thinking things through is the cause of complexity. I doubt I'm in a position to abandon objects and states anytime soon, though.

The Break-Out Sessions

I can ramble on, but I doubt you have the patience to read on. So I'll be short.

Neal Ford: Functional Thinking: Very approachable tutorial on how to write more functional code: Don't do UndoCommand.execute(), just undo(); Think transformation on lists: fold, filter, map.

Attila Szegedi: JVM dynamic language interoprability: Dynalink is a linking framework based on the invokedynamic that helps JVM dynamic languages achieve interoprability.

Andrei Alexandrescue: Generic Programming Galore Using D: Andrei writes a universal generic min(...) function in D that performs as well as a hand rolled min function in all instantiations.

Bill Odom: Vim: An very entertaining deep dive into Vim: :help :helpgrep :h 42 :h holy-grail; i a c o r s I A C O R S h j k l H M L gg 123G :123 gj gk zz zt zb * # g* g# <C-N> <C-P> <C-X><C- > .; NERD tree, Command-T, PeepOpen, FuzzyFileFinder, Bufexplore, Taglist; :reg "% "# "- ". "/ ": "= "* "+ "_ <C-R><register>

Dale Schumacher: Actor Interaction Patterns: Interesting demoes of actor interaction patterns written in his own language and visuallized using Processing. Seed pattern; Future pattern; Fork/Join pattern; Circuit-breaker pattern.

David Geary: HTML5 Canvas: Author of Core HTML5 Canvas demoes the full capability of HTML5 canvas. Just like Java's Graphics2D. Immediate mode graphics; offscreen buffers, transformations, timer based animations, paths, clipings, effects, compositing. Weiqi's comment: You can do all the things that you did in Windows 3.1 20 years ago in a browser now. Progress? You be the judge.

Eric Burke: Taming Android: Brilliant tricks of the Android graphics masters disguised as a down-to-earth, matter-of-fact talk of how he "just tried different numbers until it looked good." The crowd was impressed by the hologram implementation.

Danno Ferrin: Applying principle of Stage Magic for User Experience: The creator of Griffon explains user experience principles using stage magic. Each principle is demostrated through real websites. (Playing YouTube clips in front of a live audience has its risks.)

Mike Lee: Product Engineering: Great performance by an actor in custume. Good principles of how to turn an idea to a product (therefore profit.)

The Language Panel

It wouldn't be Strange Loop without a language panel discussion. The language panel was on during lunch time on Tuesday. Dean Wampler moderated, Rich Hickey, Gerald Sussman, Andrei Alexandrescue, Allen Wirfs-Brock, Joe Palmer, and the guy who invented CoffeeScript (I did not write down his name) answered audiences questions.

Interesting questions. Interesting answers (although somewhat predictable). Wait for it on InfoQ.

Read: Strange Loop 2011: We Really Don&#039;t Know How To Compute! (And Other Insights)

Topic: Fixing Bugs in JDK 7 Previous Topic   Next Topic Topic: Yes, Virginia, Scala is hard

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use