<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Weiqi Gao&#039;s Observations - technology tag</title>
  <link>http://www.weiqigao.com/blog/tags/technology/</link>
  <description>Sharing My Experience...</description>
  <language>en</language>
  <copyright>Weiqi Gao</copyright>
  <lastBuildDate>Fri, 11 May 2012 12:48:36 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  <image>
    <url>http://pebble.sourceforge.net/common/images/powered-by-pebble.gif</url>
    <title>Weiqi Gao&#039;s Observations</title>
    <link>http://www.weiqigao.com/blog/</link>
  </image>
  
  
  <item>
    <title>Strange Loop 2010: Two Questions, Not Answered</title>
    <link>http://www.weiqigao.com/blog/2010/10/18/strange_loop_2010_two_questions_not_answered.html</link>
    
      
        <description>
          &lt;p&gt;I attended &lt;a href= &#034;http://strangeloop2010.com/&#034; &gt;Strange Loop 2010&lt;/a&gt;, organized by &lt;a href= &#034;http://tech.puredanger.com/&#034; &gt;Alex Miller&lt;/a&gt;, in St. Louis, MO (more precisely, in the University City Loop), on Octover 14&amp;ndash;15.&lt;/p&gt;

&lt;p&gt;This is the second year of the Strange Loop conference.  It is held at the &lt;a href= &#034;http://consequenceofsound.net/wp-content/uploads/2009/04/pageant1.gif&#034; &gt;Pageant&lt;/a&gt;, the Moonrise Hotel, and the near by Regional Arts Center.  Each day starts with a morning keynote, followed by sessions spread out in six tracks, and ends with an afternoon keynote.  There is a party Thursday evening at the Pageant where the Strange Passions talks were given.  There are two lunch time panel discussions on Friday.&lt;/p&gt;

&lt;p&gt;Like &lt;a href= &#034;http://www.weiqigao.com/blog/2009/10/23/day_one_of_strange_loop_2009.html&#034; &gt;last year&lt;/a&gt;, the keynotes are thought provoking:&lt;/p&gt;

&lt;h4&gt;Hilary Mason: &lt;a href= &#034;http://strangeloop2010.com/talk/presentation_file/14442/Mason_MachineLearning.pdf&#034; &gt;Machine Learning: A Love Story&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;The Thursday morning keynote was by &lt;a href= &#034;http://twitter.com/@hmason&#034; &gt;Hilary Mason&lt;/a&gt; from &lt;a href= &#034;http://bit.ly/&#034; &gt;bit.ly&lt;/a&gt;.  The topic is machine learning, which is a part of artificial intelligence.&lt;/p&gt;

&lt;p&gt;Most of the stories I hear about AI ends with &#034;... and then came the AI Winter.&#034;  Hilary filled in what happened next: AI found the next big thing in statistics.  The probabilistic model fueled 10 years of growth of machine learning since the late 90&#039;s.&lt;/p&gt;

&lt;p&gt;This new growth, which Hilary calls &lt;i&gt;data science&lt;/i&gt; is at the confluence of engineering, mathematics, computer science, consumer demand and hacking.  It provided algorithms to satisfy on demand computing in the face of a lot of data.&lt;/p&gt;

&lt;p&gt;Key problems in this discipline are clustering, entity disambiguation and classifications.  Key applications include spam filtering and recommendations.&lt;/p&gt;

&lt;p&gt;She went into Bayes Law and some tools that she uses for her research: grwp and awk, Wikipedia, New York Times, lynx --dump.  And she ended with a description of her OSEMN research methodology:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;O&lt;/b&gt;btain&lt;/li&gt;
&lt;li&gt;&lt;b&gt;S&lt;/b&gt;crub&lt;/li&gt;
&lt;li&gt;&lt;b&gt;E&lt;/b&gt;xplore&lt;/li&gt;
&lt;li&gt;&lt;b&gt;M&lt;/b&gt;odel&lt;/li&gt;
&lt;li&gt;i&lt;b&gt;N&lt;/b&gt;terpret&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is really a thought provoking talk.  And I believe I would not have gravitated towards it had I seen a link to it on the internet.  My thanks go to Alex Miller for bringing this talk to town and to Hilary Mason for sharing this love story with us all.&lt;/p&gt;

&lt;h4&gt;Guy Steele: &lt;a href= &#034;http://strangeloop2010.com/talk/presentation_file/14299/GuySteele-parallel.pdf&#034; &gt;How To Think About Parallel Programming&amp;mdash;Not!&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;The Thursday afternoon keynote was by Guy Steele.  I personally think every programmer should know who Guy Steele is and be familiar with his contributions to programming languages.&lt;/p&gt;

&lt;p&gt;Although I have seen a variance of this presentation on line, seeing him in person is one of the things that drew me to the conference.  My only tweet during the conference was &lt;a href= &#034;http://twitter.com/#!/weiqigao/status/27341177068&#034; &gt;... Guy Steele just walked by.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Guy started off with a nostalgic reverse engineering of one of his IBM 1130 assembler programs in one punch card, noticing several places where he was squeezing the program size down by reusing a value for multiple purposes and by doubling up the duty of a code word for data.&lt;/p&gt;

&lt;p&gt;He then showed a routine for calculating sin&lt;i&gt;x&lt;/i&gt; by using the triple angle formula:&lt;/p&gt;

&lt;p style=&#034;margin-left:3em&#034;&gt;sin 3&lt;i&gt;x&lt;/i&gt; = 3 sin &lt;i&gt;x&lt;/i&gt; - 4 sin&lt;sup&gt;3&lt;/sup&gt; &lt;i&gt;x&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;He then turned to the main point of the talk, which is &#034;How to think about writing parallel applications.&#034;  His preferred answer is to &lt;b&gt;not&lt;/b&gt; think about parallelism.  But to achieve that, we have to abandon some of the habits of thinking about programming that have worked for the last 50 years.  And a theme that was hit upon again and again in the rest of the talk was the following:&lt;/p&gt;

&lt;blockquote&gt;&lt;a href= &#034;http://strangeloop2010.com/talk/presentation_file/14299/GuySteele-parallel.pdf&#034; &gt;Guy Steele (slide 41)&lt;/a&gt;: Accumulators are BAD. Divide-and-conquer is GOOD.&lt;/blockquote&gt;

&lt;p&gt;He finished the talk with an example of eliminating the accumulator thinking and instilling divide-and-conquer strategies in an algorithm for splitting a string into words.&lt;/p&gt;

&lt;p&gt;Implicit in Guy&#039;s theme is the desire that a future programming language will automatically parallelize our programs.&lt;/p&gt;



&lt;h4&gt;Billy Newport: &lt;a href= &#034;http://strangeloop2010.com/talk/presentation_file/14447/Newport-EnterpriseNoSQL.pdf&#034; &gt;Enterprise NoSQL: Silver Bullet or Poison Pill&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;The Friday morning keynote was by Billy Newport on the topic of &lt;a href= &#034;http://en.wikipedia.org/wiki/NoSQL&#034; &gt;NoSQL&lt;/a&gt;, a name I first heard at the &lt;a href= &#034;http://lambdalounge.org/&#034; &gt;St. Louis Lambda Lounge&lt;/a&gt; and assumed it&#039;s a topic I know nothing about until I read somewhere that Berkeley DB which &lt;a href= &#034;http://jnb.ociweb.com/jnb/jnbNov2006.html&#034; &gt;I wrote about 1446 days ago&lt;/a&gt; qualifies as NoSQL.&lt;/p&gt;

&lt;p&gt;For some reason, my mind associates the name Billy Newport with IBM WebSphere.  However his presentation comes across as a very reasonable account of the pros and cons of both the traditional relational database solutions and the new-fangled NoSQL solutions.  If he sounds a little bit down on NoSQL, it is not because he represent a relational database vendor (IBM also sells a number of NoSQL products), but because he has some good reasons.&lt;/p&gt;

&lt;p&gt;I highly recommend reading the presentation slides or watching the presentation video (which Alix Miller promised will show up in InfoQ in the coming months) to get the full picture of this presentation.  I&#039;ll just put up a few quotes that resonated with me (being from my notes, they may not be accurate word for word):&lt;/p&gt;

&lt;blockquote&gt;&lt;a href= &#034;http://strangeloop2010.com/talk/presentation_file/14447/Newport-EnterpriseNoSQL.pdf&#034; &gt;Billy Newport&lt;/a&gt;: 

&lt;ul&gt;
&lt;li&gt;There is a shift that has to happen in order for NoSQL to succeed&lt;/li&gt;
&lt;li&gt;Most people does not have the experience to choose from the large numbers of types of NoSQL solutions&lt;/li&gt;
&lt;li&gt;You need NoSQL in special cases.  You need to give up something with NoSQL&lt;/li&gt;
&lt;li&gt;Map-reduce is basically table scan&lt;/li&gt;
&lt;li&gt;Having a copy means there is a window of inconsistency which must be fixed in applications&lt;/li&gt;
&lt;li&gt;When I asked IBM fellow Bruce Lindsay &#034;I want to write a query engine for the grid,&#034; he said, &#034;You too, huh?&#034;&lt;/li&gt;
&lt;li&gt;Those guys a rock stars, and they are having problems!&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think I can safely sum up the talk as saying &#034;NoSQL, let the adopter beware!&#034;&lt;/p&gt;

&lt;h4&gt;Douglas Crockford: &lt;a href= &#034;http://strangeloop2010.com/talk/presentation_file/14301/Crockford-Heresy.pdf&#034; &gt;Heresy and Heretical Open Source: A Heretic&#039;s Perspective&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;&lt;a href= &#034;./images/ie6-must-die.jpg&#034; &gt;&lt;img src=&#034;http://www.weiqigao.com/blog/images/ie6-must-die.jpg&#034; align=&#034;right&#034; width=&#034;512&#034; height=&#034;384&#034;/&gt;&lt;/a&gt; The Friday afternoon keynote was delivered by Douglas Crockford of Yahoo!  I have watched numerous presentations by him on the internet, and I have read interviews with him in Coders at Work.  Plus I also read his book JavaScript: The Good Parts.  So I thought I pretty much know what I expect from this presentation.&lt;/p&gt;

&lt;p&gt;But I was wrong in my assumptions.  What Douglas delivered is an irreverent recounting of his fights against stupidity.  Anyone in his way was ridiculed: RMS, IBM, XML, Software Patents, IE6, IE7, IE8, etc.&lt;/p&gt;

&lt;p&gt;His recount of evolution of markup languages did bring back memories of &lt;a href= &#034;http://en.wikipedia.org/wiki/LaTeX&#034; &gt;&lt;i&gt;LaT&lt;sub&gt;E&lt;/sub&gt;X&lt;/i&gt;&lt;/a&gt;, which is in the heritage of &lt;a href= &#034;http://en.wikipedia.org/wiki/Scribe_%28markup_language%29&#034; &gt;Scribe&lt;/a&gt;, which he mentioned (slide 24).  The following Scribe (also &lt;i&gt;LaT&lt;sub&gt;E&lt;/sub&gt;X&lt;/i&gt;) syntax:

&lt;pre style=&#034;margin-left:3em&#034; &gt;@Begin(Quote)
    Any damn fool
@End(Quote)&lt;/pre&gt;

brought on my (solitary) applause which prompted Douglas to remark &#034;A Scribe fan in the audience.&#034;&lt;/p&gt;

&lt;p&gt;The audience laughed all the way through the presentation.  For somebody who was described repeatedly (in private as well as mailing list conversations) as &#034;not a nice person,&#034; not bad at all.&lt;/p&gt;

&lt;h4&gt;The NoSQL Panel&lt;/h4&gt;

&lt;p&gt;The first 30 minutes panel discussion was about NoSQL.  St. Louis&#039;s own Ken Sipe was the moderator.  Panelists include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Steve Harris (Terracotta)&lt;/li&gt;
&lt;li&gt;Roger Bodamer (10gen, MongoDB)&lt;/li&gt;
&lt;li&gt;Chris Biow (MarkLogic)&lt;/li&gt;
&lt;li&gt;Mike Malone (SimpleGeo)&lt;/li&gt;
&lt;li&gt;Rusty Klophaus (Riak)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I thought the questions were sharp and deliberate (good job Ken) but the answers were a little bit muddy.  Here&#039;s the question that I took note of.  The answers in my note are incoherent and makes no sense (only my notes are that way, what the panelists said made perfect sense at the time, I just can&#039;t reconstruct them from my notes) so I&#039;ll omit them and point you to the video on InfoQ.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why NoSQL?&lt;/li&gt;
&lt;li&gt;What about the DBA role in a NoSQL environment?&lt;/li&gt;
&lt;li&gt;Is the NoSQL name offensive to DBAs?  Is it true it&#039;s always developers who are looking into NoSQL?&lt;/li&gt;
&lt;li&gt;How do you categorize NoSQL products?  Which one is better?&lt;/li&gt;
&lt;li&gt;What is the value proposition of NoSQL?&lt;/li&gt;
&lt;li&gt;Does NoSQL require more code?&lt;/li&gt;
&lt;li&gt;What about security?  Is there such a thing as NoSQL injection attacks?&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;The Languages Panel&lt;/h4&gt;

&lt;p&gt;&lt;a href= &#034;./images/strangeloop2010-language-panel.jpg&#034; &gt;&lt;img src=&#034;http://www.weiqigao.com/blog/images/strangeloop2010-language-panel.jpg&#034; align=&#034;left&#034; hspace=&#034;24&#034; width=&#034;512&#034; height=&#034;384&#034;/&gt;&lt;/a&gt; The second 30 minutes panel discussion was about the future of programming languages.  Ted Neward moderated (Donahue style).  The panelists are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bruce Tate&lt;/li&gt;
&lt;li&gt;Josh Bloch&lt;/li&gt;
&lt;li&gt;Guy Steele&lt;/li&gt;
&lt;li&gt;Alex Payne&lt;/li&gt;
&lt;li&gt;Douglas Crockford&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This panel&#039;s questions and answers are more comprehensible to me.  Here&#039;s a sample of them:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: What do you see coming?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Tate&lt;/b&gt;: Erlang beam.  Transactional Memory, futures, actors.  Lazy semantics&lt;br/&gt;
&lt;b&gt;Bloch&lt;/b&gt;: Trand towards complexity.  Concurrency.  End-to-end web development language&lt;br/&gt;
&lt;b&gt;Steele&lt;/b&gt;: Crash early.  Trand towards sloppy programming.&lt;br/&gt;
&lt;b&gt;Payne&lt;/b&gt;: VM convergence: Scala, Clojure, JRuby&lt;br/&gt;
&lt;b&gt;Crockford&lt;/b&gt;: We had FORTRAN/COBOL for a while.  We had C++/Java for a while now.  We are in a more acceptable phase towards new languages.  It should have better concern for security&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: With parallel programming becoming popular, do we see us throwing out JVM and CLR?&lt;p&gt;

&lt;p&gt;&lt;b&gt;Bloch&lt;/b&gt;: Cliff Click of Azul have scaled the JVM to thousands of cores.  The VM is not the weakling here.&lt;br/&gt;
&lt;b&gt;Tate&lt;/b&gt;: The JVM does shape our thinking.&lt;br/&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: What&#039;s the future of type systems?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Payne&lt;/b&gt;: Scala can almost be programmed as if it&#039;s a dynamic language.  Clojure is have to add type hints.&lt;br/&gt;
&lt;b&gt;Steele&lt;/b&gt;: We need to put the static information somewhere.  Maybe IDEs can help us in showing the static information when we need to see them.&lt;br/&gt;
&lt;b&gt;Bloch&lt;/b&gt;: But annotations are a lot of trouble.&lt;br/&gt;
&lt;b&gt;Tate&lt;/b&gt;: There are examples of both static typing and dynamic typing getting in the way.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: Do you see static typing as beneficial in tools like FindBugs?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Bloch&lt;/b&gt;: Absolutely.&lt;br/&gt;
&lt;p&gt;&lt;b&gt;Crockford&lt;/b&gt;: Find bugs early is important.  DBC is an important tool here.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: Hasn&#039;t Design By Contract been more trouble than its worth?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Crockford&lt;/b&gt;: (&lt;i&gt;note unclear&lt;/i&gt;)&lt;br/&gt;
&lt;b&gt;Steele&lt;/b&gt;: If assert is free and does not clutter my code, I would use it everywhere.&lt;br/&gt;
&lt;b&gt;Bloch&lt;/b&gt;: Assert beautifies the code!&lt;br/&gt;
&lt;b&gt;Tate&lt;/b&gt;: I agree.&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: Can you suggest a language to learn in order to gain benefit in using another programming language?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Tate&lt;/b&gt;: IO is a beautiful language.  Prolog.&lt;br/&gt;
&lt;b&gt;Bloch&lt;/b&gt;: Scheme: it&#039;s simple, small and it informs programming in general.&lt;br/&gt;
&lt;b&gt;Steele&lt;/b&gt;: Any three.  Clojure.  Haskell.&lt;br/&gt;
&lt;b&gt;Payne&lt;/b&gt;: Forth, especially for the generation of programmers who grew up with Java.&lt;br/&gt;
&lt;b&gt;Crockford&lt;/b&gt;: Scheme.  Rebol(?).&lt;br/&gt;
&lt;b&gt;Bloch&lt;/b&gt;: So many people are disconnected from the metal.  I suggest people learn an assembly language: x86 or ARM.&lt;p&gt;

&lt;h4&gt;Other sessions&lt;/h4&gt;

&lt;p&gt;As for break out sessions, I attended the following ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The flickr architecture&lt;/li&gt;
&lt;li&gt;Virtual machines using GO&lt;/li&gt;
&lt;li&gt;Lua (Kyle Cordes)&lt;/li&gt;
&lt;li&gt;NoSQL @ Twitter&lt;/li&gt;
&lt;li&gt;Solving the expression problem with Clojure&lt;/li&gt;
&lt;li&gt;Java performance tuning (Kirk Pepperdine)&lt;/li&gt;
&lt;li&gt;HTML 5 (Scott Davis)&lt;/li&gt;
&lt;li&gt;Java puzzlers (Josh Block and Bob Lee)&lt;/li&gt;
&lt;li&gt;jQuery - RIA Miracle! (Mark Volkmann)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I liked Kyle&#039;s stick to the points delivery of his 20 minutes of Lua advocacy.  I liked Mark Volkmann&#039;s paced but content rich presentation of building a GUI application with jQuery and jQuery UI.&lt;/p&gt;

&lt;p&gt;And of course the Java Puzzler are always entertaining and educational at the same time.  Josh Bloch did make us promise not to leak the puzzlers on blogs because they will be reused later this year.&lt;/p&gt;

&lt;h4&gt;Personal delights&lt;/h4&gt;

&lt;p&gt;Meeting old friends and colleagues at conferences is always a delight.  My highlight of the conference is to have lunch with Eric Burke and Dennis Stephens, and dinner with Bob Lee, Josh Bloch and Charles Sharp at Blueberry Hill.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;PS&lt;/b&gt;.  This blog has become longer than usual because I want to convey a lot of information to you.  It also took longer to write because we are having perfect weather here at St. Louis on the Saturday and Sunday following the conference.  The kind of weather that we would be fools to not taking advantage, so we visited Forest Park and enjoyed all the Sun Sunday afternoon.&lt;/p&gt;

&lt;p&gt;It took so long that I&#039;ve forgot what my subject line is.  I just noticed that I have not mentioned anywhere in this blog what the two questions are, let alone why I though they were not answered.  So here they are.&lt;/p&gt;

&lt;p&gt;I think the two themes of this conference are concurrency and NoSQL.  Yet on the concurrency front, what we hear from the researchers is that we are not ready to let the everyday programmer to use a tool to naturally take advantages of the coming thousands of cores to the desktop machines.  And on the NoSQL front, I saw more repudiation than advocation for choosing a NoSQL solution in an &#034;enterprise&#034; environment.&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2010/10/18/strange_loop_2010_two_questions_not_answered.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2010/10/18/strange_loop_2010_two_questions_not_answered.html</guid>
    <pubDate>Mon, 18 Oct 2010 05:54:46 GMT</pubDate>
  </item>
  
  <item>
    <title>Java, Sun, Oracle, ...</title>
    <link>http://www.weiqigao.com/blog/2010/01/29/java_sun_oracle.html</link>
    
      
        <description>
          &lt;p&gt;This has been an eventful week in the tech world.  Two events stood out: one is an upbeat look into the future&amp;mdash;of PC-less computing/entertaining with Apple&#039;s new iPad; one is a painful look back at some once also world-alteringly-new technologies from Sun&amp;mdash;having found a new home at Oracle.&lt;/p&gt;

&lt;p&gt;The Sun/Oracle news hits closer to home.&lt;/p&gt;

&lt;p&gt;If you haven&#039;t been paying attention to all the accounts in the press and in blogs, all you have to do is to visit &lt;a href= &#034;http://www.sun.com/&#034; &gt;http://www.sun.com/&lt;/a&gt; to realize that the world has changed.&lt;/p&gt;

&lt;p&gt;I&#039;m grateful to Oracle for its announced strategies for Java, JavaFX, OpenOffice, etc.

&lt;p&gt;For Java, it would seem that it will be business as usual.  In answering a question at the event, Larry Ellison essentially said that &#034;Oracle is making money with Java&#034; with it&#039;s middleware products and applications, so the pressure to make money off of Sun&#039;s Java products is an non-issue.&lt;/p&gt;

&lt;p&gt;Oracle will also invest heavily in JavaFX.  Jim Weaver has a more detailed account on that front:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href= &#034;http://learnjavafx.typepad.com/weblog/2010/01/oracle-we-will-invest-heavily-in-javafx.html&#034; &gt;Jim Weaver&lt;/a&gt;: In the live Oracle/Sun Strategy webcast, I heard encouraging statements like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We will invest heavily in JavaFX&lt;/li&gt;
&lt;li&gt;Significant investment will be made in JavaFX; focus on designers; fusion of DHTML, &lt;span style=&#034;color:red&#034;&gt;JavaScript&lt;/span&gt;, Java, JavaFX&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;The JavaPosse spells out the JavaScript link to JavaFX more succinctly in &lt;a href= &#034;http://javaposse.com/index.php?post_id=576095&#034; &gt;Episode #295&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href= &#034;http://javaposse.com/index.php?post_id=576095&#034; &gt;Tor (17:07)&lt;/a&gt;: JavaFX appears to have a rosy future.  They said they would invest in it aggressively.  It&#039;s going to be developed across all platforms, including embedded.  And they also announced that there are plans to make SceneGraph access available from JavaScript.&lt;br/&gt;
&lt;a href= &#034;http://javaposse.com/index.php?post_id=576095&#034; &gt;Carl&lt;/a&gt;: Very cool.&lt;br/&gt;
&lt;a href= &#034;http://javaposse.com/index.php?post_id=576095&#034; &gt;Tor&lt;/a&gt;: That&#039;s been one of the criticisms for people who haven&#039;t learned JavaFX the language.  You don&#039;t want to learn the new language.  You don&#039;t see the point, right.  So the idea here is that you can still take advantage of the APIs in the SceneGraph, even from JavaScript.&lt;br/&gt;
&lt;a href= &#034;http://javaposse.com/index.php?post_id=576095&#034; &gt;Carl&lt;/a&gt;: That&#039;s wild.  That really gives it an advantage over all of the competition.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you come here for the Friday quiz instead of all of the above, here&#039;s one:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: In which language is the following program written?  Who invented the language?  Will it compile?  Run without errors?  What does it print?&lt;/p&gt;

&lt;pre style=&#034;margin-left:3em;color:&#034;&gt;package main

import &#034;fmt&#034;

func main() {
  fmt.Printf(&#034;Hello, 世界\n&#034;)
}&lt;/pre&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2010/01/29/java_sun_oracle.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2010/01/29/java_sun_oracle.html</guid>
    <pubDate>Fri, 29 Jan 2010 14:16:34 GMT</pubDate>
  </item>
  
  <item>
    <title>Day Two of Strange Loop 2009</title>
    <link>http://www.weiqigao.com/blog/2009/10/24/day_two_of_strange_loop_2009.html</link>
    
      
        <description>
          &lt;p&gt;St. Louis, MO, Oct 23&amp;mdash;Continuing &lt;a href= &#034;http://www.weiqigao.com/blog/2009/10/23/day_one_of_strange_loop_2009.html&#034; &gt;my coverage of Day One of Strange Loop 2009&lt;/a&gt;, here are today&#039;s happenings.&lt;/p&gt;

&lt;p&gt;The sessions started at 8:00am.  The first session I attended is Ken Sipe&#039;s The Shiny New Spring Thing.  Ken has given this talk at the St. Louis JUG back in February, but I want to get the most up-to-date information.  Ken&#039;s main theme is &#034;industry forces are driving us to annotations&#034; and emphasized that Spring 3.0 will support all industry standard annotations plus Spring specific annotations.  Ken went through a laundry list of new features in Spring 3.0, including the new MVC annotations and Spring EL.&lt;/p&gt;

&lt;p&gt;Twittable quotes: The Spring MVC guys, they apologized for their earlier MVC;  The new Spring MVC is very grails-like, I can almost do it in vi without the help of an IDE;  Unlike Sun, &#034;deprecated&#034; really means something to SpringSource&amp;mdash;old stuff will be removed.  Struts and MVC classic will be gone.&lt;/p&gt;

&lt;p&gt;I have heard Matt Taylor&#039;s talk about JQuery on a previous occasion.  So the second session I attended is Stefan Schmidt&#039;s Extreme Web productivity with Spring Roo.  I know nothing about Spring Roo when I went in the room.  When I got out, I&#039;m confident that I, too, can write a Spring MVC web app in 45 minutes if I download the 4MB Spring Roo and use its command line Roo shell.  Stefan emphasized two features of the Roo shell: context sensitive tab-completion, and workflow-aware hints.  At least half of the time is spent in the Roo shell, and Stefan essentially tab-completed his way into a complete crud web app with the SpringSource-Green theme.&lt;/p&gt;

&lt;p&gt;It&#039;s like Grails but generates a Java web app instead of a Groovy web app.  I kind of appreciate the helpful hand that Roo offers me, because without it, it would certainly take me more than 45 minutes to figure out where the applicationcontext.xml lives, let alone creating a working application.&lt;/p&gt;

&lt;p&gt;Behind the scenes, Spring Roo uses the JLine library to offer its intelligent tab-completion and hinting magic.  The generated code includes Java code with Spring MVC and Spring Roo specific annotations, and AspectJ aspects.  The Spring Roo shell continuously watch the files for modifications (which you can do, for example, in Eclipse) and regenerate the aspects accordingly.&lt;/p&gt;

&lt;p&gt;For the third session in the morning, I went to Michael Galpin&#039;s Mobile Development 101: Developping Apps for the iPhone and the Android Platform talk.  This is a high-level talk about the iPhone and the Android platforms with the exception of the small excursion into Objective-C syntax.  Michael went over things like &#034;no garbage collection&#034;, &#034;mobile Safari leaks memory like crazy&#034;, &#034;the App2App custom URL protocol hack&#034;, &#034;QA provisioning&#034;, and &#034;App Store horror stories&#034;.&lt;/p&gt;

&lt;p&gt;Twittable quote:XML is probably the worse format you can use for anything.&lt;/p&gt;

&lt;p&gt;For lunch we had Quizno sandwiches.  I managed to make a bag of Sun Chips explode.&lt;/p&gt;

&lt;p&gt;There are two panel discussions at lunch time: Distributed Work Environment and Programmers Turned Entrepreneurs.  I went to the latter.  It&#039;s an interesting discussion.  Two things made an impression on me.  First, about programmer&#039;s indecision on whether to start a start-up, a panel member said &#034;Keeping your current job is a decision, a decision not to start your own business.&#034;  The second is a story Matthew Porter told the audience, in which he overheard two of his employees chatting about a problem in some code.  One of them said &#034;we don&#039;t need to talk to Matt, he&#039;s the CEO and is not technical.&#034;  Matt has to refrain from the urge to get into the code and walk away because coding is not his role anymore.&lt;/p&gt;

&lt;p&gt;The first afternoon session I went to is Bob Lee&#039;s The Ghost in the Virtual Machine: A Reference to References talk.  As always with Crazybob&#039;s talks, this one is too hard to summary in English prose.  It&#039;s a trip to the Java language garbage collection spec and painstaking detailed analysis of some of the usage scenarios of Soft, Weak and Phantom references in Android core libraries.  Details that, according to Kyle Cordes, ordinary Java programmers would gloss over and solve the memory leak problems with added RAM and a scheduled reboot.&lt;/p&gt;

&lt;p&gt;I took notes of a couple of pieces of the code for your puzzling pleasure:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: Can the referenced &lt;tt&gt;T&lt;/tt&gt; be garbage collected at the indicated line:&lt;/p&gt;

&lt;pre style=&#034;margin-left:3em&#034;&gt;T f(WeakReference&amp;lt;T&gt; ref) {
  T t = ref.get();
  if (t == null)
    throw new NullPointerException();
  // ?
  return ref.get();
}&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: Guess what the following incomplete code does:&lt;/p&gt;

&lt;pre style=&#034;margin-left;3em&#034;&gt;new MapMaker()
  .weakKeys()
  .softValues()
  .makeComputingMap(...)&lt;/pre&gt;

&lt;p&gt;The second afternoon session I went to is Alex Buckley&#039;s Modularity in JDK 7 talk.  I missed this talk at JavaOne.  So here&#039;s my chance to catch up.  I assume everyone who should be enthused by this topic have already heard of seen the details.  One aspect of the talk is about how difficult it is to modularize the existing JDK class library (rt.jar).&lt;/p&gt;

&lt;p&gt;One fun fact shown is the composition of rt.jar: 33.10% methods, 63.94% constant pool including 56.3% UTF8 strings.&lt;/p&gt;

&lt;p&gt;One aspect of the JSR 294 module system is the elimination of the classpath command line parameter (The CLASSPATH is dead!) and the introduction of modulepath command line parameter.&lt;/p&gt;

&lt;p&gt;The conference closed with the Friday keynote by Alex Payne, API lead at Twitter.  Alex lead the audience into the theme of the keynote &#034;Minimalism&#034; through a series of paintings of artists from turn of the 20th century up to contemporary time, and introduced the notion of Minimalist arts as the reduction of arts to its rudiments.&lt;/p&gt;

&lt;p&gt;Turning to programming, Alex poses a series of questions starting with &#034;Where do we learn how to do what we do?&#034;  He then pointed out the often used software as physical architecture metaphor is leading up to complexity, which makes software slow, programs insecure, jobs harder, and users unhappy.&lt;/p&gt;

&lt;p&gt;The way out, according to Alex, can be achieved through techniques such as unification, constraint, and reduction.&lt;/p&gt;

&lt;p&gt;As an example of unification, Alex pointed out the homoiconicity (the unification of code and data) of Lisp, machine code, Lua, Factor, etc.&lt;/p&gt;

&lt;p&gt;As an example of reduction of abstraction, Alex quoted Ken Thompson, the inventor of Unix, as saying &#034;I think the major good idea in Unix was the clean and simple interfaces: open, close, read and write.&#034;&lt;/p&gt;

&lt;p&gt;As examples of constraint, Alex mentioned the constraint of project scopes, hardware limitations an operational requirements.  Alex emphasized the importance of a great extension architecture.&lt;/p&gt;

&lt;p&gt;Alex then asked a series of questions: &#034;Is it still valuable if simplicity only exists on the surface?&#034;, &#034;Would simplicity be useful if complexity worked better?&#034;, &#034;Is it possible to deliver minimalist software that meets all needs?&#034;&lt;/p&gt;

&lt;p&gt;All thought provoking questions.&lt;/p&gt;

&lt;p&gt;The conference ended with Alex Miller&#039;s &#034;See you in Strange Loop 2010!&#034; and the request that attendees turn in their evaluation sheets &lt;i&gt;_and the plastic badge holder_&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;Yeah, it&#039;s that kind of a conference.&lt;/p&gt;

&lt;p&gt;Seriously, most people I talked to at the conference think this is a wonderful conference and would like to come back next year.&lt;/p&gt;

&lt;p&gt;Alex Miller did a tremendous job in organizing this conference.&lt;/p&gt;

&lt;p&gt;Thank you, Alex!&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2009/10/24/day_two_of_strange_loop_2009.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2009/10/24/day_two_of_strange_loop_2009.html</guid>
    <pubDate>Sat, 24 Oct 2009 05:26:31 GMT</pubDate>
  </item>
  
  </channel>
</rss>

